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