app.bsky.ageassurance.defs

bsky-lexicons.bsky.social

Schema Diff

+12 -0

From

CID
bafyreiesrww5hnn...
Indexed At
2026-07-16 14:58 UTC
View this version

To

CID
bafyreig2g6pata4...
Indexed At
2026-08-04 14:48 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@