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