app.bsky.ageassurance.defs

bsky-lexicons.bsky.social

Schema Diff

+10 -0

From

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

To

CID
bafyreiesrww5hnn...
Indexed At
2026-07-16 14:58 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.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
}

Compare Other Versions

Lexicon Garden

@