social.colibri.sync.subscribeEvents

colibri.social

Schema Diff

+94 -1

From

CID
bafyreifdlnjyvog...
Indexed At
2026-04-19 12:22 UTC
View this version

To

CID
bafyreieqxnnyqnm...
Indexed At
2026-07-24 14:44 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@