app.bsky.ageassurance.defs
Schema Diff
+22 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 8 non-breaking changes.
Non-Breaking Changes (8)
- AddedVertex AddedVertex { vertex_id: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods" }
- AddedVertex AddedVertex { vertex_id: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods:items" }
- AddedVertex AddedVertex { vertex_id: "app.bsky.ageassurance.defs#configRegion.platforms" }
- AddedVertex AddedVertex { vertex_id: "app.bsky.ageassurance.defs#configRegion.platforms: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", tgt: "app.bsky.ageassurance.defs#configRegion.platforms", kind: "prop", name: Some("platforms") }
- AddedEdge AddedEdge { src: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods", tgt: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "app.bsky.ageassurance.defs#configRegion.platforms", tgt: "app.bsky.ageassurance.defs#configRegion.platforms: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" }AddedVertex { vertex_id: "app.bsky.ageassurance.defs#configRegion.platforms" }AddedVertex { vertex_id: "app.bsky.ageassurance.defs#configRegion.platforms: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", tgt: "app.bsky.ageassurance.defs#configRegion.platforms", kind: "prop", name: Some("platforms") }
- Non-breaking: AddedEdge { src: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods", tgt: "app.bsky.ageassurance.defs#configRegion.additionalVerificationMethods:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "app.bsky.ageassurance.defs#configRegion.platforms", tgt: "app.bsky.ageassurance.defs#configRegion.platforms: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
+
"platforms": {
159
+
"type": "array",
160
+
"items": {
161
+
"type": "string",
162
+
"knownValues": [
163
+
"web",
164
+
"ios",
165
+
"android"
166
+
]
167
+
},
168
+
"description": "The platforms this configuration applies to. If omitted, the configuration applies to all platforms."
169
+
},
158
170
"regionCode": {
159
171
"type": "string",
160
172
"description": "The ISO 3166-2 region code this configuration applies to. If omitted, the configuration applies to the entire country."
161
173
},
162
174
"countryCode": {
163
175
"type": "string",
164
176
"description": "The ISO 3166-1 alpha-2 country code this configuration applies to."
165
177
},
166
178
"minAccessAge": {
167
179
"type": "integer",
168
180
"description": "The minimum age (as a whole integer) required to use Bluesky in this region."
181
+
},
182
+
"additionalVerificationMethods": {
183
+
"type": "array",
184
+
"items": {
185
+
"type": "string",
186
+
"knownValues": [
187
+
"device"
188
+
]
189
+
},
190
+
"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
191
}
170
192
},
171
193
"description": "The Age Assurance configuration for a specific region."
172
194
},
173
195
"stateMetadata": {
174
196
"type": "object",
175
197
"required": [],
176
198
"properties": {
177
199
"accountCreatedAt": {
178
200
"type": "string",
179
201
"format": "datetime",
180
202
"description": "The account creation timestamp."
181
203
}
182
204
},
183
205
"description": "Additional metadata needed to compute Age Assurance state client-side."
184
206
},
185
207
"configRegionRuleDefault": {
186
208
"type": "object",
187
209
"required": [
188
210
"access"
189
211
],
190
212
"properties": {
191
213
"access": {
192
214
"ref": "app.bsky.ageassurance.defs#access",
193
215
"type": "ref"
194
216
}
195
217
},
196
218
"description": "Age Assurance rule that applies by default."
197
219
},
198
220
"configRegionRuleIfAssuredOverAge": {
199
221
"type": "object",
200
222
"required": [
201
223
"age",
202
224
"access"
203
225
],
204
226
"properties": {
205
227
"age": {
206
228
"type": "integer",
207
229
"description": "The age threshold as a whole integer."
208
230
},
209
231
"access": {
210
232
"ref": "app.bsky.ageassurance.defs#access",
211
233
"type": "ref"
212
234
}
213
235
},
214
236
"description": "Age Assurance rule that applies if the user has been assured to be equal-to or over a certain age."
215
237
},
216
238
"configRegionRuleIfAssuredUnderAge": {
217
239
"type": "object",
218
240
"required": [
219
241
"age",
220
242
"access"
221
243
],
222
244
"properties": {
223
245
"age": {
224
246
"type": "integer",
225
247
"description": "The age threshold as a whole integer."
226
248
},
227
249
"access": {
228
250
"ref": "app.bsky.ageassurance.defs#access",
229
251
"type": "ref"
230
252
}
231
253
},
232
254
"description": "Age Assurance rule that applies if the user has been assured to be under a certain age."
233
255
},
234
256
"configRegionRuleIfDeclaredOverAge": {
235
257
"type": "object",
236
258
"required": [
237
259
"age",
238
260
"access"
239
261
],
240
262
"properties": {
241
263
"age": {
242
264
"type": "integer",
243
265
"description": "The age threshold as a whole integer."
244
266
},
245
267
"access": {
246
268
"ref": "app.bsky.ageassurance.defs#access",
247
269
"type": "ref"
248
270
}
249
271
},
250
272
"description": "Age Assurance rule that applies if the user has declared themselves equal-to or over a certain age."
251
273
},
252
274
"configRegionRuleIfAccountNewerThan": {
253
275
"type": "object",
254
276
"required": [
255
277
"date",
256
278
"access"
257
279
],
258
280
"properties": {
259
281
"date": {
260
282
"type": "string",
261
283
"format": "datetime",
262
284
"description": "The date threshold as a datetime string."
263
285
},
264
286
"access": {
265
287
"ref": "app.bsky.ageassurance.defs#access",
266
288
"type": "ref"
267
289
}
268
290
},
269
291
"description": "Age Assurance rule that applies if the account is equal-to or newer than a certain date."
270
292
},
271
293
"configRegionRuleIfAccountOlderThan": {
272
294
"type": "object",
273
295
"required": [
274
296
"date",
275
297
"access"
276
298
],
277
299
"properties": {
278
300
"date": {
279
301
"type": "string",
280
302
"format": "datetime",
281
303
"description": "The date threshold as a datetime string."
282
304
},
283
305
"access": {
284
306
"ref": "app.bsky.ageassurance.defs#access",
285
307
"type": "ref"
286
308
}
287
309
},
288
310
"description": "Age Assurance rule that applies if the account is older than a certain date."
289
311
},
290
312
"configRegionRuleIfDeclaredUnderAge": {
291
313
"type": "object",
292
314
"required": [
293
315
"age",
294
316
"access"
295
317
],
296
318
"properties": {
297
319
"age": {
298
320
"type": "integer",
299
321
"description": "The age threshold as a whole integer."
300
322
},
301
323
"access": {
302
324
"ref": "app.bsky.ageassurance.defs#access",
303
325
"type": "ref"
304
326
}
305
327
},
306
328
"description": "Age Assurance rule that applies if the user has declared themselves under a certain age."
307
329
}
308
330
},
309
331
"$type": "com.atproto.lexicon.schema",
310
332
"lexicon": 1
311
333
}