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

Compare Other Versions

Lexicon Garden

@