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

Compare Other Versions

Lexicon Garden

@