app.bsky.actor.defs

bsky-lexicons.bsky.social

Schema Diff

+38 -1

From

CID
bafyreigwqwhe2jx...
Indexed At
2026-02-18 17:41 UTC
View this version

To

CID
bafyreiaxduxpwdp...
Indexed At
2026-08-05 15:08 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 17 non-breaking changes.

Non-Breaking Changes (17)
  • AddedVertex AddedVertex { vertex_id: "app.bsky.actor.defs#bskyAppStatePref.isBetaUser" }
  • AddedVertex AddedVertex { vertex_id: "app.bsky.actor.defs#profileAssociatedChat.allowGroupInvites" }
  • AddedVertex AddedVertex { vertex_id: "app.bsky.actor.defs#statusView.labels" }
  • AddedVertex AddedVertex { vertex_id: "app.bsky.actor.defs#statusView.labels:items" }
  • AddedVertex AddedVertex { vertex_id: "app.bsky.actor.defs#verificationView.issuerDisplayName" }
  • AddedVertex AddedVertex { vertex_id: "app.bsky.actor.defs#verificationView.issuerHandle" }
  • AddedVertex AddedVertex { vertex_id: "app.bsky.actor.defs#viewerState.mutedOnlyQuoteposts" }
  • AddedVertex AddedVertex { vertex_id: "app.bsky.actor.defs#viewerState.mutedOnlyReposts" }
  • AddedEdge AddedEdge { src: "app.bsky.actor.defs#bskyAppStatePref", tgt: "app.bsky.actor.defs#bskyAppStatePref.isBetaUser", kind: "prop", name: Some("isBetaUser") }
  • AddedEdge AddedEdge { src: "app.bsky.actor.defs#profileAssociatedChat", tgt: "app.bsky.actor.defs#profileAssociatedChat.allowGroupInvites", kind: "prop", name: Some("allowGroupInvites") }
  • AddedEdge AddedEdge { src: "app.bsky.actor.defs#statusView", tgt: "app.bsky.actor.defs#statusView.labels", kind: "prop", name: Some("labels") }
  • AddedEdge AddedEdge { src: "app.bsky.actor.defs#statusView.labels", tgt: "app.bsky.actor.defs#statusView.labels:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.bsky.actor.defs#statusView.labels:items", tgt: "com.atproto.label.defs#label", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.bsky.actor.defs#verificationView", tgt: "app.bsky.actor.defs#verificationView.issuerDisplayName", kind: "prop", name: Some("issuerDisplayName") }
  • AddedEdge AddedEdge { src: "app.bsky.actor.defs#verificationView", tgt: "app.bsky.actor.defs#verificationView.issuerHandle", kind: "prop", name: Some("issuerHandle") }
  • AddedEdge AddedEdge { src: "app.bsky.actor.defs#viewerState", tgt: "app.bsky.actor.defs#viewerState.mutedOnlyQuoteposts", kind: "prop", name: Some("mutedOnlyQuoteposts") }
  • AddedEdge AddedEdge { src: "app.bsky.actor.defs#viewerState", tgt: "app.bsky.actor.defs#viewerState.mutedOnlyReposts", kind: "prop", name: Some("mutedOnlyReposts") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.bsky.actor.defs#bskyAppStatePref.isBetaUser" }
  • AddedVertex { vertex_id: "app.bsky.actor.defs#profileAssociatedChat.allowGroupInvites" }
  • AddedVertex { vertex_id: "app.bsky.actor.defs#statusView.labels" }
  • AddedVertex { vertex_id: "app.bsky.actor.defs#statusView.labels:items" }
  • AddedVertex { vertex_id: "app.bsky.actor.defs#verificationView.issuerDisplayName" }
  • AddedVertex { vertex_id: "app.bsky.actor.defs#verificationView.issuerHandle" }
  • AddedVertex { vertex_id: "app.bsky.actor.defs#viewerState.mutedOnlyQuoteposts" }
  • AddedVertex { vertex_id: "app.bsky.actor.defs#viewerState.mutedOnlyReposts" }

Additional Notes

  • Non-breaking: AddedEdge { src: "app.bsky.actor.defs#bskyAppStatePref", tgt: "app.bsky.actor.defs#bskyAppStatePref.isBetaUser", kind: "prop", name: Some("isBetaUser") }
  • Non-breaking: AddedEdge { src: "app.bsky.actor.defs#profileAssociatedChat", tgt: "app.bsky.actor.defs#profileAssociatedChat.allowGroupInvites", kind: "prop", name: Some("allowGroupInvites") }
  • Non-breaking: AddedEdge { src: "app.bsky.actor.defs#statusView", tgt: "app.bsky.actor.defs#statusView.labels", kind: "prop", name: Some("labels") }
  • Non-breaking: AddedEdge { src: "app.bsky.actor.defs#statusView.labels", tgt: "app.bsky.actor.defs#statusView.labels:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.bsky.actor.defs#statusView.labels:items", tgt: "com.atproto.label.defs#label", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.bsky.actor.defs#verificationView", tgt: "app.bsky.actor.defs#verificationView.issuerDisplayName", kind: "prop", name: Some("issuerDisplayName") }
  • Non-breaking: AddedEdge { src: "app.bsky.actor.defs#verificationView", tgt: "app.bsky.actor.defs#verificationView.issuerHandle", kind: "prop", name: Some("issuerHandle") }
  • Non-breaking: AddedEdge { src: "app.bsky.actor.defs#viewerState", tgt: "app.bsky.actor.defs#viewerState.mutedOnlyQuoteposts", kind: "prop", name: Some("mutedOnlyQuoteposts") }
  • Non-breaking: AddedEdge { src: "app.bsky.actor.defs#viewerState", tgt: "app.bsky.actor.defs#viewerState.mutedOnlyReposts", kind: "prop", name: Some("mutedOnlyReposts") }
1 1
{
2 2
  "id": "app.bsky.actor.defs",
3 3
  "defs": {
4 4
    "nux": {
5 5
      "type": "object",
6 6
      "required": [
7 7
        "id",
8 8
        "completed"
9 9
      ],
10 10
      "properties": {
11 11
        "id": {
12 12
          "type": "string",
13 13
          "maxLength": 100
14 14
        },
15 15
        "data": {
16 16
          "type": "string",
17 17
          "maxLength": 3000,
18 18
          "description": "Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.",
19 19
          "maxGraphemes": 300
20 20
        },
21 21
        "completed": {
22 22
          "type": "boolean",
23 23
          "default": false
24 24
        },
25 25
        "expiresAt": {
26 26
          "type": "string",
27 27
          "format": "datetime",
28 28
          "description": "The date and time at which the NUX will expire and should be considered completed."
29 29
        }
30 30
      },
31 31
      "description": "A new user experiences (NUX) storage object"
32 32
    },
33 33
    "mutedWord": {
34 34
      "type": "object",
35 35
      "required": [
36 36
        "value",
37 37
        "targets"
38 38
      ],
39 39
      "properties": {
40 40
        "id": {
41 41
          "type": "string"
42 42
        },
43 43
        "value": {
44 44
          "type": "string",
45 45
          "maxLength": 10000,
46 46
          "description": "The muted word itself.",
47 47
          "maxGraphemes": 1000
48 48
        },
49 49
        "targets": {
50 50
          "type": "array",
51 51
          "items": {
52 52
            "ref": "app.bsky.actor.defs#mutedWordTarget",
53 53
            "type": "ref"
54 54
          },
55 55
          "description": "The intended targets of the muted word."
56 56
        },
57 57
        "expiresAt": {
58 58
          "type": "string",
59 59
          "format": "datetime",
60 60
          "description": "The date and time at which the muted word will expire and no longer be applied."
61 61
        },
62 62
        "actorTarget": {
63 63
          "type": "string",
64 64
          "default": "all",
65 65
          "description": "Groups of users to apply the muted word to. If undefined, applies to all users.",
66 66
          "knownValues": [
67 67
            "all",
68 68
            "exclude-following"
69 69
          ]
70 70
        }
71 71
      },
72 72
      "description": "A word that the account owner has muted."
73 73
    },
74 74
    "savedFeed": {
75 75
      "type": "object",
76 76
      "required": [
77 77
        "id",
78 78
        "type",
79 79
        "value",
80 80
        "pinned"
81 81
      ],
82 82
      "properties": {
83 83
        "id": {
84 84
          "type": "string"
85 85
        },
86 86
        "type": {
87 87
          "type": "string",
88 88
          "knownValues": [
89 89
            "feed",
90 90
            "list",
91 91
            "timeline"
92 92
          ]
93 93
        },
94 94
        "value": {
95 95
          "type": "string"
96 96
        },
97 97
        "pinned": {
98 98
          "type": "boolean"
99 99
        }
100 100
      }
101 101
    },
102 102
    "statusView": {
103 103
      "type": "object",
104 104
      "required": [
105 105
        "status",
106 106
        "record"
107 107
      ],
108 108
      "properties": {
109 109
        "cid": {
110 110
          "type": "string",
111 111
          "format": "cid"
112 112
        },
113 113
        "uri": {
114 114
          "type": "string",
115 115
          "format": "at-uri"
116 116
        },
117 117
        "embed": {
118 118
          "refs": [
119 119
            "app.bsky.embed.external#view"
120 120
          ],
121 121
          "type": "union",
122 122
          "description": "An optional embed associated with the status."
123 123
        },
124 +
        "labels": {
125 +
          "type": "array",
126 +
          "items": {
127 +
            "ref": "com.atproto.label.defs#label",
128 +
            "type": "ref"
129 +
          }
130 +
        },
124 131
        "record": {
125 132
          "type": "unknown"
126 133
        },
127 134
        "status": {
128 135
          "type": "string",
129 136
          "description": "The status for the account.",
130 137
          "knownValues": [
131 138
            "app.bsky.actor.status#live"
132 139
          ]
133 140
        },
134 141
        "isActive": {
135 142
          "type": "boolean",
136 143
          "description": "True if the status is not expired, false if it is expired. Only present if expiration was set."
137 144
        },
138 145
        "expiresAt": {
139 146
          "type": "string",
140 147
          "format": "datetime",
141 148
          "description": "The date when this status will expire. The application might choose to no longer return the status after expiration."
142 149
        },
143 150
        "isDisabled": {
144 151
          "type": "boolean",
145 152
          "description": "True if the user's go-live access has been disabled by a moderator, false otherwise."
146 153
        }
147 154
      }
148 155
    },
149 156
    "preferences": {
150 157
      "type": "array",
151 158
      "items": {
152 159
        "refs": [
153 160
          "#adultContentPref",
154 161
          "#contentLabelPref",
155 162
          "#savedFeedsPref",
156 163
          "#savedFeedsPrefV2",
157 164
          "#personalDetailsPref",
158 165
          "#declaredAgePref",
159 166
          "#feedViewPref",
160 167
          "#threadViewPref",
161 168
          "#interestsPref",
162 169
          "#mutedWordsPref",
163 170
          "#hiddenPostsPref",
164 171
          "#bskyAppStatePref",
165 172
          "#labelersPref",
166 173
          "#postInteractionSettingsPref",
167 174
          "#verificationPrefs",
168 175
          "#liveEventPreferences"
169 176
        ],
170 177
        "type": "union"
171 178
      }
172 179
    },
173 180
    "profileView": {
174 181
      "type": "object",
175 182
      "required": [
176 183
        "did",
177 184
        "handle"
178 185
      ],
179 186
      "properties": {
180 187
        "did": {
181 188
          "type": "string",
182 189
          "format": "did"
183 190
        },
184 191
        "debug": {
185 192
          "type": "unknown",
186 193
          "description": "Debug information for internal development"
187 194
        },
188 195
        "avatar": {
189 196
          "type": "string",
190 197
          "format": "uri"
191 198
        },
192 199
        "handle": {
193 200
          "type": "string",
194 201
          "format": "handle"
195 202
        },
196 203
        "labels": {
197 204
          "type": "array",
198 205
          "items": {
199 206
            "ref": "com.atproto.label.defs#label",
200 207
            "type": "ref"
201 208
          }
202 209
        },
203 210
        "status": {
204 211
          "ref": "#statusView",
205 212
          "type": "ref"
206 213
        },
207 214
        "viewer": {
208 215
          "ref": "#viewerState",
209 216
          "type": "ref"
210 217
        },
211 218
        "pronouns": {
212 219
          "type": "string"
213 220
        },
214 221
        "createdAt": {
215 222
          "type": "string",
216 223
          "format": "datetime"
217 224
        },
218 225
        "indexedAt": {
219 226
          "type": "string",
220 227
          "format": "datetime"
221 228
        },
222 229
        "associated": {
223 230
          "ref": "#profileAssociated",
224 231
          "type": "ref"
225 232
        },
226 233
        "description": {
227 234
          "type": "string",
228 235
          "maxLength": 2560,
229 236
          "maxGraphemes": 256
230 237
        },
231 238
        "displayName": {
232 239
          "type": "string",
233 240
          "maxLength": 640,
234 241
          "maxGraphemes": 64
235 242
        },
236 243
        "verification": {
237 244
          "ref": "#verificationState",
238 245
          "type": "ref"
239 246
        }
240 247
      }
241 248
    },
242 249
    "viewerState": {
243 250
      "type": "object",
244 251
      "properties": {
245 252
        "muted": {
246 -
          "type": "boolean"
253 +
          "type": "boolean",
254 +
          "description": "Whether the account is fully muted, directly or via a mutelist. False when the mute is scoped to specific kinds; see mutedOnlyReposts and mutedOnlyQuoteposts."
247 255
        },
248 256
        "blocking": {
249 257
          "type": "string",
250 258
          "format": "at-uri"
251 259
        },
252 260
        "blockedBy": {
253 261
          "type": "boolean"
254 262
        },
255 263
        "following": {
256 264
          "type": "string",
257 265
          "format": "at-uri"
258 266
        },
259 267
        "followedBy": {
260 268
          "type": "string",
261 269
          "format": "at-uri"
262 270
        },
263 271
        "mutedByList": {
264 272
          "ref": "app.bsky.graph.defs#listViewBasic",
265 273
          "type": "ref"
266 274
        },
267 275
        "blockingByList": {
268 276
          "ref": "app.bsky.graph.defs#listViewBasic",
269 277
          "type": "ref"
270 278
        },
271 279
        "knownFollowers": {
272 280
          "ref": "#knownFollowers",
273 281
          "type": "ref",
274 282
          "description": "This property is present only in selected cases, as an optimization."
275 283
        },
284 +
        "mutedOnlyReposts": {
285 +
          "type": "boolean",
286 +
          "description": "Whether the account's reposts are muted. Scoped mutes are exclusive with muted: this can be true while muted is false. If muted is true, this will be false."
287 +
        },
288 +
        "mutedOnlyQuoteposts": {
289 +
          "type": "boolean",
290 +
          "description": "Whether the account's quote posts are muted. Scoped mutes are exclusive with muted: this can be true while muted is false. If muted is true, this will be false."
291 +
        },
276 292
        "activitySubscription": {
277 293
          "ref": "app.bsky.notification.defs#activitySubscription",
278 294
          "type": "ref",
279 295
          "description": "This property is present only in selected cases, as an optimization."
280 296
        }
281 297
      },
282 298
      "description": "Metadata about the requesting account's relationship with the subject account. Only has meaningful content for authed requests."
283 299
    },
284 300
    "feedViewPref": {
285 301
      "type": "object",
286 302
      "required": [
287 303
        "feed"
288 304
      ],
289 305
      "properties": {
290 306
        "feed": {
291 307
          "type": "string",
292 308
          "description": "The URI of the feed, or an identifier which describes the feed."
293 309
        },
294 310
        "hideReplies": {
295 311
          "type": "boolean",
296 312
          "description": "Hide replies in the feed."
297 313
        },
298 314
        "hideReposts": {
299 315
          "type": "boolean",
300 316
          "description": "Hide reposts in the feed."
301 317
        },
302 318
        "hideQuotePosts": {
303 319
          "type": "boolean",
304 320
          "description": "Hide quote posts in the feed."
305 321
        },
306 322
        "hideRepliesByLikeCount": {
307 323
          "type": "integer",
308 324
          "description": "Hide replies in the feed if they do not have this number of likes."
309 325
        },
310 326
        "hideRepliesByUnfollowed": {
311 327
          "type": "boolean",
312 328
          "default": true,
313 329
          "description": "Hide replies in the feed if they are not by followed users."
314 330
        }
315 331
      }
316 332
    },
317 333
    "labelersPref": {
318 334
      "type": "object",
319 335
      "required": [
320 336
        "labelers"
321 337
      ],
322 338
      "properties": {
323 339
        "labelers": {
324 340
          "type": "array",
325 341
          "items": {
326 342
            "ref": "#labelerPrefItem",
327 343
            "type": "ref"
328 344
          }
329 345
        }
330 346
      }
331 347
    },
332 348
    "interestsPref": {
333 349
      "type": "object",
334 350
      "required": [
335 351
        "tags"
336 352
      ],
337 353
      "properties": {
338 354
        "tags": {
339 355
          "type": "array",
340 356
          "items": {
341 357
            "type": "string",
342 358
            "maxLength": 640,
343 359
            "maxGraphemes": 64
344 360
          },
345 361
          "maxLength": 100,
346 362
          "description": "A list of tags which describe the account owner's interests gathered during onboarding."
347 363
        }
348 364
      }
349 365
    },
350 366
    "knownFollowers": {
351 367
      "type": "object",
352 368
      "required": [
353 369
        "count",
354 370
        "followers"
355 371
      ],
356 372
      "properties": {
357 373
        "count": {
358 374
          "type": "integer"
359 375
        },
360 376
        "followers": {
361 377
          "type": "array",
362 378
          "items": {
363 379
            "ref": "#profileViewBasic",
364 380
            "type": "ref"
365 381
          },
366 382
          "maxLength": 5,
367 383
          "minLength": 0
368 384
        }
369 385
      },
370 386
      "description": "The subject's followers whom you also follow"
371 387
    },
372 388
    "mutedWordsPref": {
373 389
      "type": "object",
374 390
      "required": [
375 391
        "items"
376 392
      ],
377 393
      "properties": {
378 394
        "items": {
379 395
          "type": "array",
380 396
          "items": {
381 397
            "ref": "app.bsky.actor.defs#mutedWord",
382 398
            "type": "ref"
383 399
          },
384 400
          "description": "A list of words the account owner has muted."
385 401
        }
386 402
      }
387 403
    },
388 404
    "savedFeedsPref": {
389 405
      "type": "object",
390 406
      "required": [
391 407
        "pinned",
392 408
        "saved"
393 409
      ],
394 410
      "properties": {
395 411
        "saved": {
396 412
          "type": "array",
397 413
          "items": {
398 414
            "type": "string",
399 415
            "format": "at-uri"
400 416
          }
401 417
        },
402 418
        "pinned": {
403 419
          "type": "array",
404 420
          "items": {
405 421
            "type": "string",
406 422
            "format": "at-uri"
407 423
          }
408 424
        },
409 425
        "timelineIndex": {
410 426
          "type": "integer"
411 427
        }
412 428
      }
413 429
    },
414 430
    "threadViewPref": {
415 431
      "type": "object",
416 432
      "properties": {
417 433
        "sort": {
418 434
          "type": "string",
419 435
          "description": "Sorting mode for threads.",
420 436
          "knownValues": [
421 437
            "oldest",
422 438
            "newest",
423 439
            "most-likes",
424 440
            "random",
425 441
            "hotness"
426 442
          ]
427 443
        }
428 444
      }
429 445
    },
430 446
    "declaredAgePref": {
431 447
      "type": "object",
432 448
      "properties": {
433 449
        "isOverAge13": {
434 450
          "type": "boolean",
435 451
          "description": "Indicates if the user has declared that they are over 13 years of age."
436 452
        },
437 453
        "isOverAge16": {
438 454
          "type": "boolean",
439 455
          "description": "Indicates if the user has declared that they are over 16 years of age."
440 456
        },
441 457
        "isOverAge18": {
442 458
          "type": "boolean",
443 459
          "description": "Indicates if the user has declared that they are over 18 years of age."
444 460
        }
445 461
      },
446 462
      "description": "Read-only preference containing value(s) inferred from the user's declared birthdate. Absence of this preference object in the response indicates that the user has not made a declaration."
447 463
    },
448 464
    "hiddenPostsPref": {
449 465
      "type": "object",
450 466
      "required": [
451 467
        "items"
452 468
      ],
453 469
      "properties": {
454 470
        "items": {
455 471
          "type": "array",
456 472
          "items": {
457 473
            "type": "string",
458 474
            "format": "at-uri"
459 475
          },
460 476
          "description": "A list of URIs of posts the account owner has hidden."
461 477
        }
462 478
      }
463 479
    },
464 480
    "labelerPrefItem": {
465 481
      "type": "object",
466 482
      "required": [
467 483
        "did"
468 484
      ],
469 485
      "properties": {
470 486
        "did": {
471 487
          "type": "string",
472 488
          "format": "did"
473 489
        }
474 490
      }
475 491
    },
476 492
    "mutedWordTarget": {
477 493
      "type": "string",
478 494
      "maxLength": 640,
479 495
      "knownValues": [
480 496
        "content",
481 497
        "tag"
482 498
      ],
483 499
      "maxGraphemes": 64
484 500
    },
485 501
    "adultContentPref": {
486 502
      "type": "object",
487 503
      "required": [
488 504
        "enabled"
489 505
      ],
490 506
      "properties": {
491 507
        "enabled": {
492 508
          "type": "boolean",
493 509
          "default": false
494 510
        }
495 511
      }
496 512
    },
497 513
    "bskyAppStatePref": {
498 514
      "type": "object",
499 515
      "properties": {
500 516
        "nuxs": {
501 517
          "type": "array",
502 518
          "items": {
503 519
            "ref": "app.bsky.actor.defs#nux",
504 520
            "type": "ref"
505 521
          },
506 522
          "maxLength": 100,
507 523
          "description": "Storage for NUXs the user has encountered."
508 524
        },
525 +
        "isBetaUser": {
526 +
          "type": "boolean",
527 +
          "description": "Indicates if the user is participating in the beta features program."
528 +
        },
509 529
        "queuedNudges": {
510 530
          "type": "array",
511 531
          "items": {
512 532
            "type": "string",
513 533
            "maxLength": 100
514 534
          },
515 535
          "maxLength": 1000,
516 536
          "description": "An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user."
517 537
        },
518 538
        "activeProgressGuide": {
519 539
          "ref": "#bskyAppProgressGuide",
520 540
          "type": "ref"
521 541
        }
522 542
      },
523 543
      "description": "A grab bag of state that's specific to the bsky.app program. Third-party apps shouldn't use this."
524 544
    },
525 545
    "contentLabelPref": {
526 546
      "type": "object",
527 547
      "required": [
528 548
        "label",
529 549
        "visibility"
530 550
      ],
531 551
      "properties": {
532 552
        "label": {
533 553
          "type": "string"
534 554
        },
535 555
        "labelerDid": {
536 556
          "type": "string",
537 557
          "format": "did",
538 558
          "description": "Which labeler does this preference apply to? If undefined, applies globally."
539 559
        },
540 560
        "visibility": {
541 561
          "type": "string",
542 562
          "knownValues": [
543 563
            "ignore",
544 564
            "show",
545 565
            "warn",
546 566
            "hide"
547 567
          ]
548 568
        }
549 569
      }
550 570
    },
551 571
    "profileViewBasic": {
552 572
      "type": "object",
553 573
      "required": [
554 574
        "did",
555 575
        "handle"
556 576
      ],
557 577
      "properties": {
558 578
        "did": {
559 579
          "type": "string",
560 580
          "format": "did"
561 581
        },
562 582
        "debug": {
563 583
          "type": "unknown",
564 584
          "description": "Debug information for internal development"
565 585
        },
566 586
        "avatar": {
567 587
          "type": "string",
568 588
          "format": "uri"
569 589
        },
570 590
        "handle": {
571 591
          "type": "string",
572 592
          "format": "handle"
573 593
        },
574 594
        "labels": {
575 595
          "type": "array",
576 596
          "items": {
577 597
            "ref": "com.atproto.label.defs#label",
578 598
            "type": "ref"
579 599
          }
580 600
        },
581 601
        "status": {
582 602
          "ref": "#statusView",
583 603
          "type": "ref"
584 604
        },
585 605
        "viewer": {
586 606
          "ref": "#viewerState",
587 607
          "type": "ref"
588 608
        },
589 609
        "pronouns": {
590 610
          "type": "string"
591 611
        },
592 612
        "createdAt": {
593 613
          "type": "string",
594 614
          "format": "datetime"
595 615
        },
596 616
        "associated": {
597 617
          "ref": "#profileAssociated",
598 618
          "type": "ref"
599 619
        },
600 620
        "displayName": {
601 621
          "type": "string",
602 622
          "maxLength": 640,
603 623
          "maxGraphemes": 64
604 624
        },
605 625
        "verification": {
606 626
          "ref": "#verificationState",
607 627
          "type": "ref"
608 628
        }
609 629
      }
610 630
    },
611 631
    "savedFeedsPrefV2": {
612 632
      "type": "object",
613 633
      "required": [
614 634
        "items"
615 635
      ],
616 636
      "properties": {
617 637
        "items": {
618 638
          "type": "array",
619 639
          "items": {
620 640
            "ref": "app.bsky.actor.defs#savedFeed",
621 641
            "type": "ref"
622 642
          }
623 643
        }
624 644
      }
625 645
    },
626 646
    "verificationView": {
627 647
      "type": "object",
628 648
      "required": [
629 649
        "issuer",
630 650
        "uri",
631 651
        "isValid",
632 652
        "createdAt"
633 653
      ],
634 654
      "properties": {
635 655
        "uri": {
636 656
          "type": "string",
637 657
          "format": "at-uri",
638 658
          "description": "The AT-URI of the verification record."
639 659
        },
640 660
        "issuer": {
641 661
          "type": "string",
642 662
          "format": "did",
643 663
          "description": "The user who issued this verification."
644 664
        },
645 665
        "isValid": {
646 666
          "type": "boolean",
647 667
          "description": "True if the verification passes validation, otherwise false."
648 668
        },
649 669
        "createdAt": {
650 670
          "type": "string",
651 671
          "format": "datetime",
652 672
          "description": "Timestamp when the verification was created."
673 +
        },
674 +
        "issuerHandle": {
675 +
          "type": "string",
676 +
          "format": "handle",
677 +
          "description": "The handle of the issuer."
678 +
        },
679 +
        "issuerDisplayName": {
680 +
          "type": "string",
681 +
          "description": "The display name of the issuer."
653 682
        }
654 683
      },
655 684
      "description": "An individual verification for an associated subject."
656 685
    },
657 686
    "profileAssociated": {
658 687
      "type": "object",
659 688
      "properties": {
660 689
        "chat": {
661 690
          "ref": "#profileAssociatedChat",
662 691
          "type": "ref"
663 692
        },
664 693
        "germ": {
665 694
          "ref": "#profileAssociatedGerm",
666 695
          "type": "ref"
667 696
        },
668 697
        "lists": {
669 698
          "type": "integer"
670 699
        },
671 700
        "labeler": {
672 701
          "type": "boolean"
673 702
        },
674 703
        "feedgens": {
675 704
          "type": "integer"
676 705
        },
677 706
        "starterPacks": {
678 707
          "type": "integer"
679 708
        },
680 709
        "activitySubscription": {
681 710
          "ref": "#profileAssociatedActivitySubscription",
682 711
          "type": "ref"
683 712
        }
684 713
      }
685 714
    },
686 715
    "verificationPrefs": {
687 716
      "type": "object",
688 717
      "required": [],
689 718
      "properties": {
690 719
        "hideBadges": {
691 720
          "type": "boolean",
692 721
          "default": false,
693 722
          "description": "Hide the blue check badges for verified accounts and trusted verifiers."
694 723
        }
695 724
      },
696 725
      "description": "Preferences for how verified accounts appear in the app."
697 726
    },
698 727
    "verificationState": {
699 728
      "type": "object",
700 729
      "required": [
701 730
        "verifications",
702 731
        "verifiedStatus",
703 732
        "trustedVerifierStatus"
704 733
      ],
705 734
      "properties": {
706 735
        "verifications": {
707 736
          "type": "array",
708 737
          "items": {
709 738
            "ref": "#verificationView",
710 739
            "type": "ref"
711 740
          },
712 741
          "description": "All verifications issued by trusted verifiers on behalf of this user. Verifications by untrusted verifiers are not included."
713 742
        },
714 743
        "verifiedStatus": {
715 744
          "type": "string",
716 745
          "description": "The user's status as a verified account.",
717 746
          "knownValues": [
718 747
            "valid",
719 748
            "invalid",
720 749
            "none"
721 750
          ]
722 751
        },
723 752
        "trustedVerifierStatus": {
724 753
          "type": "string",
725 754
          "description": "The user's status as a trusted verifier.",
726 755
          "knownValues": [
727 756
            "valid",
728 757
            "invalid",
729 758
            "none"
730 759
          ]
731 760
        }
732 761
      },
733 762
      "description": "Represents the verification information about the user this object is attached to."
734 763
    },
735 764
    "personalDetailsPref": {
736 765
      "type": "object",
737 766
      "properties": {
738 767
        "birthDate": {
739 768
          "type": "string",
740 769
          "format": "datetime",
741 770
          "description": "The birth date of account owner."
742 771
        }
743 772
      }
744 773
    },
745 774
    "profileViewDetailed": {
746 775
      "type": "object",
747 776
      "required": [
748 777
        "did",
749 778
        "handle"
750 779
      ],
751 780
      "properties": {
752 781
        "did": {
753 782
          "type": "string",
754 783
          "format": "did"
755 784
        },
756 785
        "debug": {
757 786
          "type": "unknown",
758 787
          "description": "Debug information for internal development"
759 788
        },
760 789
        "avatar": {
761 790
          "type": "string",
762 791
          "format": "uri"
763 792
        },
764 793
        "banner": {
765 794
          "type": "string",
766 795
          "format": "uri"
767 796
        },
768 797
        "handle": {
769 798
          "type": "string",
770 799
          "format": "handle"
771 800
        },
772 801
        "labels": {
773 802
          "type": "array",
774 803
          "items": {
775 804
            "ref": "com.atproto.label.defs#label",
776 805
            "type": "ref"
777 806
          }
778 807
        },
779 808
        "status": {
780 809
          "ref": "#statusView",
781 810
          "type": "ref"
782 811
        },
783 812
        "viewer": {
784 813
          "ref": "#viewerState",
785 814
          "type": "ref"
786 815
        },
787 816
        "website": {
788 817
          "type": "string",
789 818
          "format": "uri"
790 819
        },
791 820
        "pronouns": {
792 821
          "type": "string"
793 822
        },
794 823
        "createdAt": {
795 824
          "type": "string",
796 825
          "format": "datetime"
797 826
        },
798 827
        "indexedAt": {
799 828
          "type": "string",
800 829
          "format": "datetime"
801 830
        },
802 831
        "associated": {
803 832
          "ref": "#profileAssociated",
804 833
          "type": "ref"
805 834
        },
806 835
        "pinnedPost": {
807 836
          "ref": "com.atproto.repo.strongRef",
808 837
          "type": "ref"
809 838
        },
810 839
        "postsCount": {
811 840
          "type": "integer"
812 841
        },
813 842
        "description": {
814 843
          "type": "string",
815 844
          "maxLength": 2560,
816 845
          "maxGraphemes": 256
817 846
        },
818 847
        "displayName": {
819 848
          "type": "string",
820 849
          "maxLength": 640,
821 850
          "maxGraphemes": 64
822 851
        },
823 852
        "followsCount": {
824 853
          "type": "integer"
825 854
        },
826 855
        "verification": {
827 856
          "ref": "#verificationState",
828 857
          "type": "ref"
829 858
        },
830 859
        "followersCount": {
831 860
          "type": "integer"
832 861
        },
833 862
        "joinedViaStarterPack": {
834 863
          "ref": "app.bsky.graph.defs#starterPackViewBasic",
835 864
          "type": "ref"
836 865
        }
837 866
      }
838 867
    },
839 868
    "bskyAppProgressGuide": {
840 869
      "type": "object",
841 870
      "required": [
842 871
        "guide"
843 872
      ],
844 873
      "properties": {
845 874
        "guide": {
846 875
          "type": "string",
847 876
          "maxLength": 100
848 877
        }
849 878
      },
850 879
      "description": "If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress."
851 880
    },
852 881
    "liveEventPreferences": {
853 882
      "type": "object",
854 883
      "properties": {
855 884
        "hideAllFeeds": {
856 885
          "type": "boolean",
857 886
          "default": false,
858 887
          "description": "Whether to hide all feeds from live events."
859 888
        },
860 889
        "hiddenFeedIds": {
861 890
          "type": "array",
862 891
          "items": {
863 892
            "type": "string"
864 893
          },
865 894
          "description": "A list of feed IDs that the user has hidden from live events."
866 895
        }
867 896
      },
868 897
      "description": "Preferences for live events."
869 898
    },
870 899
    "profileAssociatedChat": {
871 900
      "type": "object",
872 901
      "required": [
873 902
        "allowIncoming"
874 903
      ],
875 904
      "properties": {
876 905
        "allowIncoming": {
877 906
          "type": "string",
878 907
          "knownValues": [
879 908
            "all",
880 909
            "none",
881 910
            "following"
882 911
          ]
912 +
        },
913 +
        "allowGroupInvites": {
914 +
          "type": "string",
915 +
          "knownValues": [
916 +
            "all",
917 +
            "none",
918 +
            "following"
919 +
          ]
883 920
        }
884 921
      }
885 922
    },
886 923
    "profileAssociatedGerm": {
887 924
      "type": "object",
888 925
      "required": [
889 926
        "showButtonTo",
890 927
        "messageMeUrl"
891 928
      ],
892 929
      "properties": {
893 930
        "messageMeUrl": {
894 931
          "type": "string",
895 932
          "format": "uri"
896 933
        },
897 934
        "showButtonTo": {
898 935
          "type": "string",
899 936
          "knownValues": [
900 937
            "usersIFollow",
901 938
            "everyone"
902 939
          ]
903 940
        }
904 941
      }
905 942
    },
906 943
    "postInteractionSettingsPref": {
907 944
      "type": "object",
908 945
      "required": [],
909 946
      "properties": {
910 947
        "threadgateAllowRules": {
911 948
          "type": "array",
912 949
          "items": {
913 950
            "refs": [
914 951
              "app.bsky.feed.threadgate#mentionRule",
915 952
              "app.bsky.feed.threadgate#followerRule",
916 953
              "app.bsky.feed.threadgate#followingRule",
917 954
              "app.bsky.feed.threadgate#listRule"
918 955
            ],
919 956
            "type": "union"
920 957
          },
921 958
          "maxLength": 5,
922 959
          "description": "Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply."
923 960
        },
924 961
        "postgateEmbeddingRules": {
925 962
          "type": "array",
926 963
          "items": {
927 964
            "refs": [
928 965
              "app.bsky.feed.postgate#disableRule"
929 966
            ],
930 967
            "type": "union"
931 968
          },
932 969
          "maxLength": 5,
933 970
          "description": "Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed."
934 971
        }
935 972
      },
936 973
      "description": "Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly."
937 974
    },
938 975
    "profileAssociatedActivitySubscription": {
939 976
      "type": "object",
940 977
      "required": [
941 978
        "allowSubscriptions"
942 979
      ],
943 980
      "properties": {
944 981
        "allowSubscriptions": {
945 982
          "type": "string",
946 983
          "knownValues": [
947 984
            "followers",
948 985
            "mutuals",
949 986
            "none"
950 987
          ]
951 988
        }
952 989
      }
953 990
    }
954 991
  },
955 992
  "$type": "com.atproto.lexicon.schema",
956 993
  "lexicon": 1
957 994
}

Compare Other Versions

Lexicon Garden

@