app.bsky.ageassurance.defs
Schema Diff
+10 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 4 non-breaking changes.
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods" }
- AddedVertex AddedVertex { vertex_id: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods:items" }
- AddedEdge AddedEdge { src: "app.bsky.ageassurance.defs#configRegion", tgt: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods", kind: "prop", name: Some("additionalVerificationMethods") }
- AddedEdge AddedEdge { src: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods", tgt: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods" }AddedVertex { vertex_id: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods:items" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.bsky.ageassurance.defs#configRegion", tgt: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods", kind: "prop", name: Some("additionalVerificationMethods") }
- Non-breaking: AddedEdge { src: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods", tgt: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods:items", kind: "items", name: None }
1
1
{
2
2
"id": "app.bsky.ageassurance.defs",
3
3
"defs": {
4
4
"event": {
5
5
"type": "object",
6
6
"required": [
7
7
"createdAt",
8
8
"status",
9
9
"access",
10
10
"attemptId",
11
11
"countryCode"
12
12
],
13
13
"properties": {
14
14
"email": {
15
15
"type": "string",
16
16
"description": "The email used for Age Assurance."
17
17
},
18
18
"access": {
19
19
"type": "string",
20
20
"description": "The access level granted based on Age Assurance data we've processed.",
21
21
"knownValues": [
22
22
"unknown",
23
23
"none",
24
24
"safe",
25
25
"full"
26
26
]
27
27
},
28
28
"initIp": {
29
29
"type": "string",
30
30
"description": "The IP address used when initiating the Age Assurance flow."
31
31
},
32
32
"initUa": {
33
33
"type": "string",
34
34
"description": "The user agent used when initiating the Age Assurance flow."
35
35
},
36
36
"status": {
37
37
"type": "string",
38
38
"description": "The status of the Age Assurance process.",
39
39
"knownValues": [
40
40
"unknown",
41
41
"pending",
42
42
"assured",
43
43
"blocked"
44
44
]
45
45
},
46
46
"attemptId": {
47
47
"type": "string",
48
48
"description": "The unique identifier for this instance of the Age Assurance flow, in UUID format."
49
49
},
50
50
"createdAt": {
51
51
"type": "string",
52
52
"format": "datetime",
53
53
"description": "The date and time of this write operation."
54
54
},
55
55
"completeIp": {
56
56
"type": "string",
57
57
"description": "The IP address used when completing the Age Assurance flow."
58
58
},
59
59
"completeUa": {
60
60
"type": "string",
61
61
"description": "The user agent used when completing the Age Assurance flow."
62
62
},
63
63
"regionCode": {
64
64
"type": "string",
65
65
"description": "The ISO 3166-2 region code provided when beginning the Age Assurance flow."
66
66
},
67
67
"countryCode": {
68
68
"type": "string",
69
69
"description": "The ISO 3166-1 alpha-2 country code provided when beginning the Age Assurance flow."
70
70
}
71
71
},
72
72
"description": "Object used to store Age Assurance data in stash."
73
73
},
74
74
"state": {
75
75
"type": "object",
76
76
"required": [
77
77
"status",
78
78
"access"
79
79
],
80
80
"properties": {
81
81
"access": {
82
82
"ref": "app.bsky.ageassurance.defs#access",
83
83
"type": "ref"
84
84
},
85
85
"status": {
86
86
"ref": "app.bsky.ageassurance.defs#status",
87
87
"type": "ref"
88
88
},
89
89
"lastInitiatedAt": {
90
90
"type": "string",
91
91
"format": "datetime",
92
92
"description": "The timestamp when this state was last updated."
93
93
}
94
94
},
95
95
"description": "The user's computed Age Assurance state."
96
96
},
97
97
"access": {
98
98
"type": "string",
99
99
"description": "The access level granted based on Age Assurance data we've processed.",
100
100
"knownValues": [
101
101
"unknown",
102
102
"none",
103
103
"safe",
104
104
"full"
105
105
]
106
106
},
107
107
"config": {
108
108
"type": "object",
109
109
"required": [
110
110
"regions"
111
111
],
112
112
"properties": {
113
113
"regions": {
114
114
"type": "array",
115
115
"items": {
116
116
"ref": "app.bsky.ageassurance.defs#configRegion",
117
117
"type": "ref"
118
118
},
119
119
"description": "The per-region Age Assurance configuration."
120
120
}
121
121
},
122
122
"description": ""
123
123
},
124
124
"status": {
125
125
"type": "string",
126
126
"description": "The status of the Age Assurance process.",
127
127
"knownValues": [
128
128
"unknown",
129
129
"pending",
130
130
"assured",
131
131
"blocked"
132
132
]
133
133
},
134
134
"configRegion": {
135
135
"type": "object",
136
136
"required": [
137
137
"countryCode",
138
138
"minAccessAge",
139
139
"rules"
140
140
],
141
141
"properties": {
142
142
"rules": {
143
143
"type": "array",
144
144
"items": {
145
145
"refs": [
146
146
"#configRegionRuleDefault",
147
147
"#configRegionRuleIfDeclaredOverAge",
148
148
"#configRegionRuleIfDeclaredUnderAge",
149
149
"#configRegionRuleIfAssuredOverAge",
150
150
"#configRegionRuleIfAssuredUnderAge",
151
151
"#configRegionRuleIfAccountNewerThan",
152
152
"#configRegionRuleIfAccountOlderThan"
153
153
],
154
154
"type": "union"
155
155
},
156
156
"description": "The ordered list of Age Assurance rules that apply to this region. Rules should be applied in order, and the first matching rule determines the access level granted. The rules array should always include a default rule as the last item."
157
157
},
158
158
"regionCode": {
159
159
"type": "string",
160
160
"description": "The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country."
161
161
},
162
162
"countryCode": {
163
163
"type": "string",
164
164
"description": "The ISO 3166-1 alpha-2 country code this configuration applies to."
165
165
},
166
166
"minAccessAge": {
167
167
"type": "integer",
168
168
"description": "The minimum age (as a whole integer) required to use Bluesky in this region."
169
+
},
170
+
"additionalVerificationMethods": {
171
+
"type": "array",
172
+
"items": {
173
+
"type": "string",
174
+
"knownValues": [
175
+
"device"
176
+
]
177
+
},
178
+
"description": "Verification methods permitted in this region in addition to the third-party (KWS) flow, which is always supported. `device` permits using the native on-device age APIs (e.g. Apple Declared Age Range, Google Play Age Signals)."
169
179
}
170
180
},
171
181
"description": "The Age Assurance configuration for a specific region."
172
182
},
173
183
"stateMetadata": {
174
184
"type": "object",
175
185
"required": [],
176
186
"properties": {
177
187
"accountCreatedAt": {
178
188
"type": "string",
179
189
"format": "datetime",
180
190
"description": "The account creation timestamp."
181
191
}
182
192
},
183
193
"description": "Additional metadata needed to compute Age Assurance state client-side."
184
194
},
185
195
"configRegionRuleDefault": {
186
196
"type": "object",
187
197
"required": [
188
198
"access"
189
199
],
190
200
"properties": {
191
201
"access": {
192
202
"ref": "app.bsky.ageassurance.defs#access",
193
203
"type": "ref"
194
204
}
195
205
},
196
206
"description": "Age Assurance rule that applies by default."
197
207
},
198
208
"configRegionRuleIfAssuredOverAge": {
199
209
"type": "object",
200
210
"required": [
201
211
"age",
202
212
"access"
203
213
],
204
214
"properties": {
205
215
"age": {
206
216
"type": "integer",
207
217
"description": "The age threshold as a whole integer."
208
218
},
209
219
"access": {
210
220
"ref": "app.bsky.ageassurance.defs#access",
211
221
"type": "ref"
212
222
}
213
223
},
214
224
"description": "Age Assurance rule that applies if the user has been assured to be equal-to or over a certain age."
215
225
},
216
226
"configRegionRuleIfAssuredUnderAge": {
217
227
"type": "object",
218
228
"required": [
219
229
"age",
220
230
"access"
221
231
],
222
232
"properties": {
223
233
"age": {
224
234
"type": "integer",
225
235
"description": "The age threshold as a whole integer."
226
236
},
227
237
"access": {
228
238
"ref": "app.bsky.ageassurance.defs#access",
229
239
"type": "ref"
230
240
}
231
241
},
232
242
"description": "Age Assurance rule that applies if the user has been assured to be under a certain age."
233
243
},
234
244
"configRegionRuleIfDeclaredOverAge": {
235
245
"type": "object",
236
246
"required": [
237
247
"age",
238
248
"access"
239
249
],
240
250
"properties": {
241
251
"age": {
242
252
"type": "integer",
243
253
"description": "The age threshold as a whole integer."
244
254
},
245
255
"access": {
246
256
"ref": "app.bsky.ageassurance.defs#access",
247
257
"type": "ref"
248
258
}
249
259
},
250
260
"description": "Age Assurance rule that applies if the user has declared themselves equal-to or over a certain age."
251
261
},
252
262
"configRegionRuleIfAccountNewerThan": {
253
263
"type": "object",
254
264
"required": [
255
265
"date",
256
266
"access"
257
267
],
258
268
"properties": {
259
269
"date": {
260
270
"type": "string",
261
271
"format": "datetime",
262
272
"description": "The date threshold as a datetime string."
263
273
},
264
274
"access": {
265
275
"ref": "app.bsky.ageassurance.defs#access",
266
276
"type": "ref"
267
277
}
268
278
},
269
279
"description": "Age Assurance rule that applies if the account is equal-to or newer than a certain date."
270
280
},
271
281
"configRegionRuleIfAccountOlderThan": {
272
282
"type": "object",
273
283
"required": [
274
284
"date",
275
285
"access"
276
286
],
277
287
"properties": {
278
288
"date": {
279
289
"type": "string",
280
290
"format": "datetime",
281
291
"description": "The date threshold as a datetime string."
282
292
},
283
293
"access": {
284
294
"ref": "app.bsky.ageassurance.defs#access",
285
295
"type": "ref"
286
296
}
287
297
},
288
298
"description": "Age Assurance rule that applies if the account is older than a certain date."
289
299
},
290
300
"configRegionRuleIfDeclaredUnderAge": {
291
301
"type": "object",
292
302
"required": [
293
303
"age",
294
304
"access"
295
305
],
296
306
"properties": {
297
307
"age": {
298
308
"type": "integer",
299
309
"description": "The age threshold as a whole integer."
300
310
},
301
311
"access": {
302
312
"ref": "app.bsky.ageassurance.defs#access",
303
313
"type": "ref"
304
314
}
305
315
},
306
316
"description": "Age Assurance rule that applies if the user has declared themselves under a certain age."
307
317
}
308
318
},
309
319
"$type": "com.atproto.lexicon.schema",
310
320
"lexicon": 1
311
321
}