social.colibri.beta.sync.defs

colibri.social

Schema Diff

+14 -0

From

CID
bafyreicrkbh5tdv...
Indexed At
2026-08-23 12:32 UTC
View this version

To

CID
bafyreicxg2ihgym...
Indexed At
2026-08-24 08:22 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 4 non-breaking changes.

Breaking Changes (1)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.beta.sync.defs#preferencesEvent", src: "social.colibri.beta.sync.defs#preferencesEvent", tgt: "social.colibri.beta.sync.defs#preferencesEvent.preferences", kind: "prop", name: Some("preferences") }
Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "social.colibri.beta.actor.defs#preferences" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.beta.sync.defs#preferencesEvent" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.beta.sync.defs#preferencesEvent.preferences" }
  • AddedEdge AddedEdge { src: "social.colibri.beta.sync.defs#preferencesEvent.preferences", tgt: "social.colibri.beta.actor.defs#preferences", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "social.colibri.beta.actor.defs#preferences" }
  • AddedVertex { vertex_id: "social.colibri.beta.sync.defs#preferencesEvent" }
  • AddedVertex { vertex_id: "social.colibri.beta.sync.defs#preferencesEvent.preferences" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.beta.sync.defs#preferencesEvent", src: "social.colibri.beta.sync.defs#preferencesEvent", tgt: "social.colibri.beta.sync.defs#preferencesEvent.preferences", kind: "prop", name: Some("preferences") }
  • Non-breaking: AddedEdge { src: "social.colibri.beta.sync.defs#preferencesEvent.preferences", tgt: "social.colibri.beta.actor.defs#preferences", kind: "ref", name: None }
1 1
{
2 2
  "id": "social.colibri.beta.sync.defs",
3 3
  "defs": {
4 4
    "ack": {
5 5
      "type": "object",
6 6
      "required": [],
7 7
      "properties": {},
8 8
      "description": "Answers a heartbeat."
9 9
    },
10 10
    "error": {
11 11
      "type": "object",
12 12
      "required": [
13 13
        "error"
14 14
      ],
15 15
      "properties": {
16 16
        "error": {
17 17
          "type": "string",
18 18
          "description": "Error name.",
19 19
          "knownValues": [
20 20
            "InvalidFrame",
21 21
            "Forbidden",
22 22
            "NotFound",
23 23
            "RateLimited"
24 24
          ]
25 25
        },
26 26
        "message": {
27 27
          "type": "string",
28 28
          "description": "Human-readable detail."
29 29
        }
30 30
      },
31 31
      "description": "Something the client sent could not be acted on."
32 32
    },
33 33
    "typing": {
34 34
      "type": "object",
35 35
      "required": [
36 36
        "channel"
37 37
      ],
38 38
      "properties": {
39 39
        "channel": {
40 40
          "type": "string",
41 41
          "format": "space-ref",
42 42
          "description": "The channel being typed in."
43 43
        }
44 44
      },
45 45
      "description": "Reports that the user is typing in a channel."
46 46
    },
47 47
    "heartbeat": {
48 48
      "type": "object",
49 49
      "required": [],
50 50
      "properties": {},
51 51
      "description": "Keeps the connection alive and tells the AppView the user is still present. The server answers with an ack."
52 52
    },
53 53
    "roleEvent": {
54 54
      "type": "object",
55 55
      "required": [
56 56
        "event",
57 57
        "community"
58 58
      ],
59 59
      "properties": {
60 60
        "rkey": {
61 61
          "type": "string",
62 62
          "format": "record-key",
63 63
          "description": "Which role, for deletes."
64 64
        },
65 65
        "role": {
66 66
          "ref": "social.colibri.beta.community.defs#roleView",
67 67
          "type": "ref",
68 68
          "description": "The role. Absent on delete."
69 69
        },
70 70
        "event": {
71 71
          "type": "string",
72 72
          "description": "What happened.",
73 73
          "knownValues": [
74 74
            "create",
75 75
            "update",
76 76
            "delete"
77 77
          ]
78 78
        },
79 79
        "community": {
80 80
          "type": "string",
81 81
          "format": "did",
82 82
          "description": "The community it belongs to."
83 83
        }
84 84
      },
85 85
      "description": "A role was created, changed, or deleted."
86 86
    },
87 87
    "seenEvent": {
88 88
      "type": "object",
89 89
      "required": [
90 90
        "unread"
91 91
      ],
92 92
      "properties": {
93 93
        "seenAt": {
94 94
          "type": "string",
95 95
          "format": "datetime",
96 96
          "description": "The point everything was marked seen up to."
97 97
        },
98 98
        "unread": {
99 99
          "type": "integer",
100 100
          "description": "The user's remaining unread count."
101 101
        },
102 102
        "channel": {
103 103
          "type": "string",
104 104
          "format": "space-ref",
105 105
          "description": "The channel that was marked seen, when it was a single channel."
106 106
        }
107 107
      },
108 108
      "description": "The connected user marked notifications seen somewhere else, so this client should clear the same badges."
109 109
    },
110 110
    "subscribe": {
111 111
      "type": "object",
112 112
      "required": [],
113 113
      "properties": {
114 114
        "channels": {
115 115
          "type": "array",
116 116
          "items": {
117 117
            "type": "string",
118 118
            "format": "space-ref",
119 119
            "description": "A channel."
120 120
          },
121 121
          "description": "Channels to start receiving messages for."
122 122
        },
123 123
        "communities": {
124 124
          "type": "array",
125 125
          "items": {
126 126
            "type": "string",
127 127
            "format": "did",
128 128
            "description": "A community."
129 129
          },
130 130
          "description": "Communities to start receiving events for."
131 131
        }
132 132
      },
133 133
      "description": "Adds communities and channels to what this connection receives. Subscription is explicit: a connection is sent nothing it did not ask for."
134 134
    },
135 135
    "labelEvent": {
136 136
      "type": "object",
137 137
      "required": [
138 138
        "event",
139 139
        "space",
140 140
        "subject",
141 141
        "val",
142 142
        "src"
143 143
      ],
144 144
      "properties": {
145 145
        "src": {
146 146
          "type": "string",
147 147
          "format": "did",
148 148
          "description": "The labeler."
149 149
        },
150 150
        "val": {
151 151
          "type": "string",
152 152
          "description": "The label value."
153 153
        },
154 154
        "event": {
155 155
          "type": "string",
156 156
          "description": "What happened.",
157 157
          "knownValues": [
158 158
            "create",
159 159
            "negate"
160 160
          ]
161 161
        },
162 162
        "space": {
163 163
          "type": "string",
164 164
          "format": "space-ref",
165 165
          "description": "The space the labelled record lives in."
166 166
        },
167 167
        "subject": {
168 168
          "ref": "social.colibri.beta.label#subject",
169 169
          "type": "ref",
170 170
          "description": "The labelled record."
171 171
        }
172 172
      },
173 173
      "description": "A label was applied or retracted on a record in a subscribed space."
174 174
    },
175 175
    "subscribed": {
176 176
      "type": "object",
177 177
      "required": [
178 178
        "communities",
179 179
        "channels"
180 180
      ],
181 181
      "properties": {
182 182
        "channels": {
183 183
          "type": "array",
184 184
          "items": {
185 185
            "type": "string",
186 186
            "format": "space-ref",
187 187
            "description": "A channel."
188 188
          },
189 189
          "description": "Channels being received."
190 190
        },
191 191
        "communities": {
192 192
          "type": "array",
193 193
          "items": {
194 194
            "type": "string",
195 195
            "format": "did",
196 196
            "description": "A community."
197 197
          },
198 198
          "description": "Communities being received."
199 199
        }
200 200
      },
201 201
      "description": "Confirms what this connection is now receiving, after a subscribe or unsubscribe. Anything the user is not entitled to read is silently absent."
202 202
    },
203 203
    "voiceEvent": {
204 204
      "type": "object",
205 205
      "required": [
206 206
        "event",
207 207
        "channel",
208 208
        "did"
209 209
      ],
210 210
      "properties": {
211 211
        "did": {
212 212
          "type": "string",
213 213
          "format": "did",
214 214
          "description": "Who."
215 215
        },
216 216
        "event": {
217 217
          "type": "string",
218 218
          "description": "What happened.",
219 219
          "knownValues": [
220 220
            "join",
221 221
            "leave",
222 222
            "update",
223 223
            "speaking"
224 224
          ]
225 225
        },
226 226
        "voice": {
227 227
          "ref": "social.colibri.beta.actor.defs#voiceState",
228 228
          "type": "ref",
229 229
          "description": "Their voice state. Absent on leave."
230 230
        },
231 231
        "channel": {
232 232
          "type": "string",
233 233
          "format": "space-ref",
234 234
          "description": "The voice channel."
235 235
        },
236 236
        "speaking": {
237 237
          "type": "boolean",
238 238
          "description": "Whether they are currently speaking, on speaking events."
239 239
        }
240 240
      },
241 241
      "description": "A voice channel's participants changed."
242 242
    },
243 243
    "memberEvent": {
244 244
      "type": "object",
245 245
      "required": [
246 246
        "event",
247 247
        "community"
248 248
      ],
249 249
      "properties": {
250 250
        "event": {
251 251
          "type": "string",
252 252
          "description": "What happened. A kick or a ban arrives as a leave.",
253 253
          "knownValues": [
254 254
            "join",
255 255
            "leave",
256 256
            "update"
257 257
          ]
258 258
        },
259 259
        "member": {
260 260
          "ref": "social.colibri.beta.community.defs#memberView",
261 261
          "type": "ref",
262 262
          "description": "The member. Absent on leave."
263 263
        },
264 264
        "subject": {
265 265
          "type": "string",
266 266
          "format": "did",
267 267
          "description": "Who, for leaves."
268 268
        },
269 269
        "community": {
270 270
          "type": "string",
271 271
          "format": "did",
272 272
          "description": "The community."
273 273
        }
274 274
      },
275 275
      "description": "Someone joined, left, or had their roles changed."
276 276
    },
277 277
    "setPresence": {
278 278
      "type": "object",
279 279
      "required": [],
280 280
      "properties": {
281 281
        "voice": {
282 282
          "ref": "#voiceSelfState",
283 283
          "type": "ref",
284 284
          "description": "The user's own voice state, when connected to a voice channel."
285 285
        },
286 286
        "onlineState": {
287 287
          "type": "string",
288 288
          "description": "Requested online state.",
289 289
          "knownValues": [
290 290
            "online",
291 291
            "away",
292 292
            "dnd",
293 293
            "offline"
294 294
          ]
295 295
        }
296 296
      },
297 297
      "description": "Updates the user's own presence over the socket."
298 298
    },
299 299
    "typingEvent": {
300 300
      "type": "object",
301 301
      "required": [
302 302
        "did",
303 303
        "channel"
304 304
      ],
305 305
      "properties": {
306 306
        "did": {
307 307
          "type": "string",
308 308
          "format": "did",
309 309
          "description": "Who is typing."
310 310
        },
311 311
        "channel": {
312 312
          "type": "string",
313 313
          "format": "space-ref",
314 314
          "description": "Where."
315 315
        }
316 316
      },
317 317
      "description": "Someone is typing in a subscribed channel."
318 318
    },
319 319
    "unsubscribe": {
320 320
      "type": "object",
321 321
      "required": [],
322 322
      "properties": {
323 323
        "channels": {
324 324
          "type": "array",
325 325
          "items": {
326 326
            "type": "string",
327 327
            "format": "space-ref",
328 328
            "description": "A channel."
329 329
          },
330 330
          "description": "Channels to stop receiving messages for."
331 331
        },
332 332
        "communities": {
333 333
          "type": "array",
334 334
          "items": {
335 335
            "type": "string",
336 336
            "format": "did",
337 337
            "description": "A community."
338 338
          },
339 339
          "description": "Communities to stop receiving events for."
340 340
        }
341 341
      },
342 342
      "description": "Removes communities and channels from what this connection receives."
343 343
    },
344 344
    "viewChannel": {
345 345
      "type": "object",
346 346
      "required": [],
347 347
      "properties": {
348 348
        "channel": {
349 349
          "type": "string",
350 350
          "format": "space-ref",
351 351
          "description": "The channel now in view."
352 352
        }
353 353
      },
354 354
      "description": "Reports which channel the user is looking at, which drives read state and away detection. An absent channel means they are looking at none."
355 355
    },
356 356
    "channelEvent": {
357 357
      "type": "object",
358 358
      "required": [
359 359
        "event",
360 360
        "community"
361 361
      ],
362 362
      "properties": {
363 363
        "event": {
364 364
          "type": "string",
365 365
          "description": "What happened.",
366 366
          "knownValues": [
367 367
            "create",
368 368
            "update",
369 369
            "delete"
370 370
          ]
371 371
        },
372 372
        "space": {
373 373
          "type": "string",
374 374
          "format": "space-ref",
375 375
          "description": "Which channel, for deletes."
376 376
        },
377 377
        "channel": {
378 378
          "ref": "social.colibri.beta.community.defs#channelView",
379 379
          "type": "ref",
380 380
          "description": "The channel. Absent on delete."
381 381
        },
382 382
        "community": {
383 383
          "type": "string",
384 384
          "format": "did",
385 385
          "description": "The community it belongs to."
386 386
        }
387 387
      },
388 388
      "description": "A channel was created, changed, or deleted."
389 389
    },
390 390
    "messageEvent": {
391 391
      "type": "object",
392 392
      "required": [
393 393
        "event",
394 394
        "channel"
395 395
      ],
396 396
      "properties": {
397 397
        "event": {
398 398
          "type": "string",
399 399
          "description": "What happened.",
400 400
          "knownValues": [
401 401
            "create",
402 402
            "update",
403 403
            "delete"
404 404
          ]
405 405
        },
406 406
        "channel": {
407 407
          "type": "string",
408 408
          "format": "space-ref",
409 409
          "description": "The channel it happened in."
410 410
        },
411 411
        "message": {
412 412
          "ref": "social.colibri.beta.channel.defs#messageView",
413 413
          "type": "ref",
414 414
          "description": "The message. Absent on delete, where the reference alone identifies it."
415 415
        },
416 416
        "subject": {
417 417
          "ref": "social.colibri.beta.defs#recordRef",
418 418
          "type": "ref",
419 419
          "description": "Which message, for deletes."
420 420
        }
421 421
      },
422 422
      "description": "A message was written, edited, or deleted in a subscribed channel."
423 423
    },
424 424
    "categoryEvent": {
425 425
      "type": "object",
426 426
      "required": [
427 427
        "event",
428 428
        "community"
429 429
      ],
430 430
      "properties": {
431 431
        "rkey": {
432 432
          "type": "string",
433 433
          "format": "record-key",
434 434
          "description": "Which category, for deletes."
435 435
        },
436 436
        "event": {
437 437
          "type": "string",
438 438
          "description": "What happened.",
439 439
          "knownValues": [
440 440
            "create",
441 441
            "update",
442 442
            "delete"
443 443
          ]
444 444
        },
445 445
        "category": {
446 446
          "ref": "social.colibri.beta.community.defs#categoryView",
447 447
          "type": "ref",
448 448
          "description": "The category. Absent on delete."
449 449
        },
450 450
        "community": {
451 451
          "type": "string",
452 452
          "format": "did",
453 453
          "description": "The community it belongs to."
454 454
        }
455 455
      },
456 456
      "description": "A category was created, changed, or deleted."
457 457
    },
458 458
    "presenceEvent": {
459 459
      "type": "object",
460 460
      "required": [
461 461
        "did",
462 462
        "presence"
463 463
      ],
464 464
      "properties": {
465 465
        "did": {
466 466
          "type": "string",
467 467
          "format": "did",
468 468
          "description": "Whose presence changed."
469 469
        },
470 470
        "presence": {
471 471
          "ref": "social.colibri.beta.actor.defs#presence",
472 472
          "type": "ref",
473 473
          "description": "Their new presence."
474 474
        }
475 475
      },
476 476
      "description": "Someone's presence changed."
477 477
    },
478 478
    "reactionEvent": {
479 479
      "type": "object",
480 480
      "required": [
481 481
        "event",
482 482
        "channel",
483 483
        "target",
484 484
        "emoji",
485 485
        "actor"
486 486
      ],
487 487
      "properties": {
488 488
        "actor": {
489 489
          "type": "string",
490 490
          "format": "did",
491 491
          "description": "Who reacted."
492 492
        },
493 493
        "emoji": {
494 494
          "type": "string",
495 495
          "description": "The emoji or custom shortcode."
496 496
        },
497 497
        "event": {
498 498
          "type": "string",
499 499
          "description": "What happened.",
500 500
          "knownValues": [
501 501
            "create",
502 502
            "delete"
503 503
          ]
504 504
        },
505 505
        "target": {
506 506
          "ref": "social.colibri.beta.defs#recordRef",
507 507
          "type": "ref",
508 508
          "description": "The message reacted to."
509 509
        },
510 510
        "channel": {
511 511
          "type": "string",
512 512
          "format": "space-ref",
513 513
          "description": "The channel it happened in."
514 514
        }
515 515
      },
516 516
      "description": "A reaction was added or removed in a subscribed channel."
517 517
    },
518 518
    "communityEvent": {
519 519
      "type": "object",
520 520
      "required": [
521 521
        "event",
522 522
        "community"
523 523
      ],
524 524
      "properties": {
525 525
        "view": {
526 526
          "ref": "social.colibri.beta.community.defs#communityView",
527 527
          "type": "ref",
528 528
          "description": "The community. Absent on delete."
529 529
        },
530 530
        "event": {
531 531
          "type": "string",
532 532
          "description": "What happened.",
533 533
          "knownValues": [
534 534
            "update",
535 535
            "delete"
536 536
          ]
537 537
        },
538 538
        "community": {
539 539
          "type": "string",
540 540
          "format": "did",
541 541
          "description": "The community."
542 542
        }
543 543
      },
544 544
      "description": "A community's profile or settings changed."
545 545
    },
546 546
    "voiceSelfState": {
547 547
      "type": "object",
548 548
      "required": [
549 549
        "channel"
550 550
      ],
551 551
      "properties": {
552 552
        "muted": {
553 553
          "type": "boolean",
554 554
          "description": "Whether the microphone is muted."
555 555
        },
556 556
        "channel": {
557 557
          "type": "string",
558 558
          "format": "space-ref",
559 559
          "description": "The voice channel."
560 560
        },
561 561
        "deafened": {
562 562
          "type": "boolean",
563 563
          "description": "Whether the user has deafened themselves."
564 564
        }
565 565
      },
566 566
      "description": "A user's own voice state."
567 567
    },
568 568
    "moderationEvent": {
569 569
      "type": "object",
570 570
      "required": [
571 571
        "community",
572 572
        "entry"
573 573
      ],
574 574
      "properties": {
575 575
        "entry": {
576 576
          "ref": "social.colibri.beta.community.defs#moderationView",
577 577
          "type": "ref",
578 578
          "description": "The log entry."
579 579
        },
580 580
        "community": {
581 581
          "type": "string",
582 582
          "format": "did",
583 583
          "description": "The community."
584 584
        }
585 585
      },
586 586
      "description": "A moderation action was logged. Only sent to members who can read the log."
587 587
    },
588 588
    "applicationEvent": {
589 589
      "type": "object",
590 590
      "required": [
591 591
        "event",
592 592
        "community",
593 593
        "subject"
594 594
      ],
595 595
      "properties": {
596 596
        "event": {
597 597
          "type": "string",
598 598
          "description": "What happened.",
599 599
          "knownValues": [
600 600
            "create",
601 601
            "approve",
602 602
            "dismiss",
603 603
            "undismiss"
604 604
          ]
605 605
        },
606 606
        "subject": {
607 607
          "type": "string",
608 608
          "format": "did",
609 609
          "description": "The applicant."
610 610
        },
611 611
        "community": {
612 612
          "type": "string",
613 613
          "format": "did",
614 614
          "description": "The community."
615 615
        },
616 616
        "application": {
617 617
          "ref": "social.colibri.beta.community.defs#applicationView",
618 618
          "type": "ref",
619 619
          "description": "The application. Absent on approve."
620 620
        }
621 621
      },
622 622
      "description": "The pending-application queue changed. Only sent to members who can manage approvals."
623 623
    },
624 +
    "preferencesEvent": {
625 +
      "type": "object",
626 +
      "required": [
627 +
        "preferences"
628 +
      ],
629 +
      "properties": {
630 +
        "preferences": {
631 +
          "ref": "social.colibri.beta.actor.defs#preferences",
632 +
          "type": "ref",
633 +
          "description": "Their preferences as they now stand."
634 +
        }
635 +
      },
636 +
      "description": "The connected user changed their own preferences somewhere else."
637 +
    },
624 638
    "notificationEvent": {
625 639
      "type": "object",
626 640
      "required": [
627 641
        "notification"
628 642
      ],
629 643
      "properties": {
630 644
        "notification": {
631 645
          "ref": "social.colibri.beta.notification.defs#notificationView",
632 646
          "type": "ref",
633 647
          "description": "The notification."
634 648
        }
635 649
      },
636 650
      "description": "A notification was raised for the connected user."
637 651
    },
638 652
    "communityProgressEvent": {
639 653
      "type": "object",
640 654
      "required": [
641 655
        "step",
642 656
        "completed",
643 657
        "total"
644 658
      ],
645 659
      "properties": {
646 660
        "step": {
647 661
          "type": "string",
648 662
          "description": "What the AppView is doing now.",
649 663
          "knownValues": [
650 664
            "creatingAccount",
651 665
            "creatingSpaces",
652 666
            "writingProfile",
653 667
            "creatingOwnerRole",
654 668
            "creatingStarterChannels",
655 669
            "done",
656 670
            "failed"
657 671
          ]
658 672
        },
659 673
        "total": {
660 674
          "type": "integer",
661 675
          "description": "Steps in total."
662 676
        },
663 677
        "message": {
664 678
          "type": "string",
665 679
          "description": "Human-readable detail, set on failure."
666 680
        },
667 681
        "community": {
668 682
          "type": "string",
669 683
          "format": "did",
670 684
          "description": "The community, once its account exists."
671 685
        },
672 686
        "completed": {
673 687
          "type": "integer",
674 688
          "description": "Steps finished."
675 689
        }
676 690
      },
677 691
      "description": "Progress while a community is being created, which takes several PDS round-trips."
678 692
    }
679 693
  },
680 694
  "$type": "com.atproto.lexicon.schema",
681 695
  "lexicon": 1
682 696
}

Compare Other Versions

Lexicon Garden

@