app.bsky.ageassurance.defs

bsky-lexicons.bsky.social

Schema Diff

+22 -0

From

CID
bafyreie42q2533t...
Indexed At
2026-02-18 17:43 UTC
View this version

To

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

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
}

Compare Other Versions

Lexicon Garden

@