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