social.colibri.sync.subscribeEvents
Schema Diff
+94 -1
Compatibility Analysis
Breaking Changes Detected
11 breaking changes, 28 non-breaking changes.
Breaking Changes (11)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent", src: "social.colibri.sync.subscribeEvents#voicePresenceEvent", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEvent.type", kind: "prop", name: Some("type") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent", src: "social.colibri.sync.subscribeEvents#voicePresenceEvent", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data", kind: "prop", name: Some("data") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.ttl", kind: "prop", name: Some("ttl") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.origin", kind: "prop", name: Some("origin") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.subject", kind: "prop", name: Some("subject") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.community", kind: "prop", name: Some("community") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.id", kind: "prop", name: Some("id") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event", kind: "prop", name: Some("event") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.did", kind: "prop", name: Some("did") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.channel", kind: "prop", name: Some("channel") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.event", kind: "prop", name: Some("event") }
Non-Breaking Changes (28)
- AddedVertex AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#typingEvent" }
- AddedVertex AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#userEvent" }
- AddedVertex AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent" }
- AddedVertex AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.community" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.id" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.origin" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.subject" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.ttl" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent.type" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.channel" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.did" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.event" }
- AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#userEvent") }
- AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#typingEvent") }
- AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#voicePresenceEvent") }
- AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0", tgt: "lex:social.colibri.sync.subscribeEvents#userEvent", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1", tgt: "lex:social.colibri.sync.subscribeEvents#typingEvent", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2", tgt: "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data", tgt: "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#typingEvent" }AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#userEvent" }AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent" }AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.community" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.id" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.origin" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.subject" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.ttl" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent.type" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.channel" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.did" }AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.event" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent", src: "social.colibri.sync.subscribeEvents#voicePresenceEvent", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEvent.type", kind: "prop", name: Some("type") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent", src: "social.colibri.sync.subscribeEvents#voicePresenceEvent", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data", kind: "prop", name: Some("data") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.did", kind: "prop", name: Some("did") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.channel", kind: "prop", name: Some("channel") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.event", kind: "prop", name: Some("event") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.ttl", kind: "prop", name: Some("ttl") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.origin", kind: "prop", name: Some("origin") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.subject", kind: "prop", name: Some("subject") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.community", kind: "prop", name: Some("community") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.id", kind: "prop", name: Some("id") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event", kind: "prop", name: Some("event") }
- Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#userEvent") }
- Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#typingEvent") }
- Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#voicePresenceEvent") }
- Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0", tgt: "lex:social.colibri.sync.subscribeEvents#userEvent", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1", tgt: "lex:social.colibri.sync.subscribeEvents#typingEvent", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2", tgt: "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data", tgt: "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData", kind: "ref", name: None }
1
1
{
2
2
"id": "social.colibri.sync.subscribeEvents",
3
3
"defs": {
4
4
"ack": {
5
5
"type": "object",
6
6
"required": [
7
7
"type"
8
8
],
9
9
"properties": {
10
10
"type": {
11
11
"type": "string",
12
12
"const": "ack"
13
13
}
14
14
},
15
15
"description": "Sent in response to a heartbeat message."
16
16
},
17
17
"main": {
18
18
"type": "subscription",
19
19
"errors": [
20
20
{
21
21
"name": "AuthRequired"
22
22
}
23
23
],
24
24
"message": {
25
25
"schema": {
26
26
"refs": [
27
27
"lex:social.colibri.sync.subscribeEvents#ack",
28
28
"lex:social.colibri.sync.subscribeEvents#communityEvent",
29
29
"lex:social.colibri.sync.subscribeEvents#memberEvent",
30
30
"lex:social.colibri.sync.subscribeEvents#categoryEvent",
31
31
"lex:social.colibri.sync.subscribeEvents#channelEvent",
32
32
"lex:social.colibri.sync.subscribeEvents#messageEvent",
33
33
"lex:social.colibri.sync.subscribeEvents#reactionEvent",
34
34
"lex:social.colibri.sync.subscribeEvents#userEvent",
35
-
"lex:social.colibri.sync.subscribeEvents#typingEvent"
35
+
"lex:social.colibri.sync.subscribeEvents#typingEvent",
36
+
"lex:social.colibri.sync.subscribeEvents#voicePresenceEvent"
36
37
],
37
38
"type": "union"
38
39
}
39
40
},
40
41
"description": "Opens a WebSocket stream that transmits relevant events for the authenticated user."
41
42
},
42
43
"userEvent": {
43
44
"type": "object",
44
45
"required": [
45
46
"type",
46
47
"data"
47
48
],
48
49
"properties": {
49
50
"data": {
50
51
"ref": "lex:social.colibri.sync.subscribeEvents#userEventData",
51
52
"type": "ref"
52
53
},
53
54
"type": {
54
55
"type": "string",
55
56
"const": "user_event"
56
57
}
57
58
},
58
59
"description": "Sent when a known user has updated their profile or Colibri status."
59
60
},
60
61
"userStatus": {
61
62
"type": "object",
62
63
"required": [
63
64
"state",
64
65
"text"
65
66
],
66
67
"properties": {
67
68
"text": {
68
69
"type": "string"
69
70
},
70
71
"emoji": {
71
72
"type": "string"
72
73
},
73
74
"state": {
74
75
"type": "string",
75
76
"knownValues": [
76
77
"online",
77
78
"away",
78
79
"dnd",
79
80
"offline"
80
81
]
81
82
}
82
83
}
83
84
},
85
+
"humEnvelope": {
86
+
"type": "object",
87
+
"required": [
88
+
"origin",
89
+
"id",
90
+
"ttl",
91
+
"subject",
92
+
"community",
93
+
"event"
94
+
],
95
+
"properties": {
96
+
"id": {
97
+
"type": "string",
98
+
"maxLength": 64,
99
+
"description": "Unique id for this Hum, used by receivers to dedup across relay paths."
100
+
},
101
+
"ttl": {
102
+
"type": "integer",
103
+
"maximum": 8,
104
+
"minimum": 0,
105
+
"description": "Remaining relay hops. Decremented on each forward; a Hum at ttl 0 is delivered locally but never relayed."
106
+
},
107
+
"event": {
108
+
"refs": [
109
+
"lex:social.colibri.sync.subscribeEvents#userEvent",
110
+
"lex:social.colibri.sync.subscribeEvents#typingEvent",
111
+
"lex:social.colibri.sync.subscribeEvents#voicePresenceEvent"
112
+
],
113
+
"type": "union",
114
+
"description": "Ephemeral event payload. Only off-protocol types are permitted."
115
+
},
116
+
"origin": {
117
+
"type": "string",
118
+
"format": "did",
119
+
"description": "DID of the AppView that first emitted this Hum."
120
+
},
121
+
"subject": {
122
+
"type": "string",
123
+
"format": "did",
124
+
"description": "The user this event is about. Receiver MUST verify origin equals subject's declared presenceService before trusting or relaying."
125
+
},
126
+
"community": {
127
+
"type": "string",
128
+
"format": "at-uri",
129
+
"description": "Community the event is scoped to. Receiver relays to local clients only if they are members of this community."
130
+
}
131
+
},
132
+
"description": "An off-protocol event relayed between AppViews. The authenticated sender (inter-service auth JWT: aud = receiving AppView did:web, lxm = social.colibri.sync.sendHum) is the origin of record; `origin` is echoed for relay/loop control and MUST match the JWT issuer. Only off-protocol event types are permitted — on-protocol events are never carried by a Hum and are derived from the firehose instead."
133
+
},
84
134
"memberEvent": {
85
135
"type": "object",
86
136
"required": [
87
137
"type",
88
138
"data"
89
139
],
90
140
"properties": {
91
141
"data": {
92
142
"ref": "lex:social.colibri.sync.subscribeEvents#memberEventData",
93
143
"type": "ref"
94
144
},
95
145
"type": {
96
146
"type": "string",
97
147
"const": "member_event"
98
148
}
99
149
},
100
150
"description": "Sent when a member has joined or left a community."
101
151
},
102
152
"typingEvent": {
103
153
"type": "object",
104
154
"required": [
105
155
"type",
106
156
"data"
107
157
],
108
158
"properties": {
109
159
"data": {
110
160
"ref": "lex:social.colibri.sync.subscribeEvents#typingEventData",
111
161
"type": "ref"
112
162
},
113
163
"type": {
114
164
"type": "string",
115
165
"const": "typing_event"
116
166
}
117
167
},
118
168
"description": "Sent when a user is typing in a channel the client is viewing."
119
169
},
120
170
"userProfile": {
121
171
"type": "object",
122
172
"required": [
123
173
"handle"
124
174
],
125
175
"properties": {
126
176
"avatar": {
127
177
"type": "blob"
128
178
},
129
179
"banner": {
130
180
"type": "blob"
131
181
},
132
182
"handle": {
133
183
"type": "string",
134
184
"format": "handle"
135
185
},
136
186
"description": {
137
187
"type": "string"
138
188
},
139
189
"displayName": {
140
190
"type": "string"
141
191
}
142
192
}
143
193
},
144
194
"channelEvent": {
145
195
"type": "object",
146
196
"required": [
147
197
"type",
148
198
"data"
149
199
],
150
200
"properties": {
151
201
"data": {
152
202
"ref": "lex:social.colibri.sync.subscribeEvents#channelEventData",
153
203
"type": "ref"
154
204
},
155
205
"type": {
156
206
"type": "string",
157
207
"const": "channel_event"
158
208
}
159
209
},
160
210
"description": "Sent when a channel has been created, updated, or deleted."
161
211
},
162
212
"messageEvent": {
163
213
"type": "object",
164
214
"required": [
165
215
"type",
166
216
"data"
167
217
],
168
218
"properties": {
169
219
"data": {
170
220
"ref": "lex:social.colibri.sync.subscribeEvents#messageEventData",
171
221
"type": "ref"
172
222
},
173
223
"type": {
174
224
"type": "string",
175
225
"const": "message_event"
176
226
}
177
227
},
178
228
"description": "Sent when a message has been sent, edited, or deleted."
179
229
},
180
230
"categoryEvent": {
181
231
"type": "object",
182
232
"required": [
183
233
"type",
184
234
"data"
185
235
],
186
236
"properties": {
187
237
"data": {
188
238
"ref": "lex:social.colibri.sync.subscribeEvents#categoryEventData",
189
239
"type": "ref"
190
240
},
191
241
"type": {
192
242
"type": "string",
193
243
"const": "category_event"
194
244
}
195
245
},
196
246
"description": "Sent when a category has been created, updated, or deleted."
197
247
},
198
248
"reactionEvent": {
199
249
"type": "object",
200
250
"required": [
201
251
"type",
202
252
"data"
203
253
],
204
254
"properties": {
205
255
"data": {
206
256
"ref": "lex:social.colibri.sync.subscribeEvents#reactionEventData",
207
257
"type": "ref"
208
258
},
209
259
"type": {
210
260
"type": "string",
211
261
"const": "reaction_event"
212
262
}
213
263
},
214
264
"description": "Sent when a reaction has been added to or removed from a message."
215
265
},
216
266
"userEventData": {
217
267
"type": "object",
218
268
"required": [
219
269
"did",
220
270
"profile"
221
271
],
222
272
"properties": {
223
273
"did": {
224
274
"type": "string",
225
275
"format": "did"
226
276
},
227
277
"status": {
228
278
"ref": "lex:social.colibri.sync.subscribeEvents#userStatus",
229
279
"type": "ref"
230
280
},
231
281
"profile": {
232
282
"ref": "lex:social.colibri.sync.subscribeEvents#userProfile",
233
283
"type": "ref"
234
284
}
235
285
}
236
286
},
237
287
"communityEvent": {
238
288
"type": "object",
239
289
"required": [
240
290
"type",
241
291
"data"
242
292
],
243
293
"properties": {
244
294
"data": {
245
295
"ref": "lex:social.colibri.sync.subscribeEvents#communityEventData",
246
296
"type": "ref"
247
297
},
248
298
"type": {
249
299
"type": "string",
250
300
"const": "community_event"
251
301
}
252
302
},
253
303
"description": "Sent when a community has been updated or deleted."
254
304
},
255
305
"memberEventData": {
256
306
"type": "object",
257
307
"required": [
258
308
"event",
259
309
"community",
260
310
"membership"
261
311
],
262
312
"properties": {
263
313
"event": {
264
314
"type": "string",
265
315
"knownValues": [
266
316
"join",
267
317
"leave"
268
318
]
269
319
},
270
320
"community": {
271
321
"type": "string",
272
322
"format": "at-uri"
273
323
},
274
324
"membership": {
275
325
"type": "string",
276
326
"format": "at-uri"
277
327
}
278
328
}
279
329
},
280
330
"typingEventData": {
281
331
"type": "object",
282
332
"required": [
283
333
"event",
284
334
"channel",
285
335
"did"
286
336
],
287
337
"properties": {
288
338
"did": {
289
339
"type": "string",
290
340
"format": "did"
291
341
},
292
342
"event": {
293
343
"type": "string",
294
344
"knownValues": [
295
345
"start",
296
346
"stop"
297
347
]
298
348
},
299
349
"channel": {
300
350
"type": "string",
301
351
"format": "at-uri"
302
352
}
303
353
}
304
354
},
305
355
"channelEventData": {
306
356
"type": "object",
307
357
"required": [
308
358
"event",
309
359
"uri",
310
360
"community"
311
361
],
312
362
"properties": {
313
363
"uri": {
314
364
"type": "string",
315
365
"format": "at-uri"
316
366
},
317
367
"name": {
318
368
"type": "string"
319
369
},
320
370
"type": {
321
371
"type": "string"
322
372
},
323
373
"event": {
324
374
"type": "string",
325
375
"knownValues": [
326
376
"upsert",
327
377
"delete"
328
378
]
329
379
},
330
380
"community": {
331
381
"type": "string",
332
382
"format": "at-uri"
333
383
},
334
384
"description": {
335
385
"type": "string"
336
386
}
337
387
}
338
388
},
339
389
"messageEventData": {
340
390
"type": "object",
341
391
"required": [
342
392
"event",
343
393
"uri",
344
394
"channel"
345
395
],
346
396
"properties": {
347
397
"uri": {
348
398
"type": "string",
349
399
"format": "at-uri"
350
400
},
351
401
"text": {
352
402
"type": "string"
353
403
},
354
404
"event": {
355
405
"type": "string",
356
406
"knownValues": [
357
407
"upsert",
358
408
"delete"
359
409
]
360
410
},
361
411
"edited": {
362
412
"type": "boolean"
363
413
},
364
414
"facets": {
365
415
"type": "array",
366
416
"items": {
367
417
"ref": "lex:social.colibri.richtext.facet",
368
418
"type": "ref"
369
419
}
370
420
},
371
421
"parent": {
372
422
"type": "string",
373
423
"format": "at-uri"
374
424
},
375
425
"channel": {
376
426
"type": "string",
377
427
"format": "at-uri"
378
428
},
379
429
"createdAt": {
380
430
"type": "string",
381
431
"format": "datetime"
382
432
},
383
433
"indexedAt": {
384
434
"type": "string",
385
435
"format": "datetime"
386
436
},
387
437
"attachments": {
388
438
"type": "array",
389
439
"items": {
390
440
"type": "blob"
391
441
}
392
442
}
393
443
}
394
444
},
395
445
"categoryEventData": {
396
446
"type": "object",
397
447
"required": [
398
448
"event",
399
449
"uri",
400
450
"community"
401
451
],
402
452
"properties": {
403
453
"uri": {
404
454
"type": "string",
405
455
"format": "at-uri"
406
456
},
407
457
"name": {
408
458
"type": "string"
409
459
},
410
460
"event": {
411
461
"type": "string",
412
462
"knownValues": [
413
463
"upsert",
414
464
"delete"
415
465
]
416
466
},
417
467
"community": {
418
468
"type": "string",
419
469
"format": "at-uri"
420
470
},
421
471
"channelOrder": {
422
472
"type": "array",
423
473
"items": {
424
474
"type": "string"
425
475
}
426
476
}
427
477
}
428
478
},
429
479
"reactionEventData": {
430
480
"type": "object",
431
481
"required": [
432
482
"event",
433
483
"uri",
434
484
"emoji",
435
485
"target",
436
486
"channel"
437
487
],
438
488
"properties": {
439
489
"uri": {
440
490
"type": "string",
441
491
"format": "at-uri"
442
492
},
443
493
"emoji": {
444
494
"type": "string"
445
495
},
446
496
"event": {
447
497
"type": "string",
448
498
"knownValues": [
449
499
"added",
450
500
"removed"
451
501
]
452
502
},
453
503
"target": {
454
504
"type": "string",
455
505
"format": "at-uri"
456
506
},
457
507
"channel": {
458
508
"type": "string",
459
509
"format": "at-uri"
460
510
}
461
511
}
462
512
},
463
513
"communityEventData": {
464
514
"type": "object",
465
515
"required": [
466
516
"event",
467
517
"uri"
468
518
],
469
519
"properties": {
470
520
"uri": {
471
521
"type": "string",
472
522
"format": "at-uri"
473
523
},
474
524
"name": {
475
525
"type": "string"
476
526
},
477
527
"event": {
478
528
"type": "string",
479
529
"knownValues": [
480
530
"upsert",
481
531
"delete"
482
532
]
483
533
},
484
534
"picture": {
485
535
"type": "blob"
486
536
},
487
537
"description": {
488
538
"type": "string"
489
539
},
490
540
"categoryOrder": {
491
541
"type": "array",
492
542
"items": {
493
543
"type": "string"
494
544
}
495
545
}
496
546
}
547
+
},
548
+
"voicePresenceEvent": {
549
+
"type": "object",
550
+
"required": [
551
+
"type",
552
+
"data"
553
+
],
554
+
"properties": {
555
+
"data": {
556
+
"ref": "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData",
557
+
"type": "ref"
558
+
},
559
+
"type": {
560
+
"type": "string",
561
+
"const": "voice_presence_event"
562
+
}
563
+
},
564
+
"description": "Sent when a user joins or leaves a voice channel."
565
+
},
566
+
"voicePresenceEventData": {
567
+
"type": "object",
568
+
"required": [
569
+
"event",
570
+
"channel",
571
+
"did"
572
+
],
573
+
"properties": {
574
+
"did": {
575
+
"type": "string",
576
+
"format": "did"
577
+
},
578
+
"event": {
579
+
"type": "string",
580
+
"knownValues": [
581
+
"join",
582
+
"leave"
583
+
]
584
+
},
585
+
"channel": {
586
+
"type": "string",
587
+
"format": "at-uri"
588
+
}
589
+
}
497
590
}
498
591
},
499
592
"$type": "com.atproto.lexicon.schema",
500
593
"lexicon": 1,
501
594
"revision": 1
502
595
}