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

Compare Other Versions

Lexicon Garden

@