social.colibri.beta.voice.defs

colibri.social

Schema Diff

+10 -1

From

CID
bafyreihqd5l5cc2...
Indexed At
2026-08-24 09:45 UTC
View this version

To

CID
bafyreiegpe7igcq...
Indexed At
2026-08-25 14:45 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 4 non-breaking changes.

Breaking Changes (1)
  • ConstraintTightened ConstraintTightened { vertex_id: "social.colibri.beta.voice.defs#disconnected.reason", sort: "knownValues", old_value: "[\"moderator\",\"superseded\",\"channelGone\"]", new_value: "[\"moderator\",\"superseded\",\"channelGone\",\"forbidden\"]" }
Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "social.colibri.beta.voice.defs#transportOptions.iceServers" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.beta.voice.defs#transportOptions.iceServers:items" }
  • AddedEdge AddedEdge { src: "social.colibri.beta.voice.defs#transportOptions", tgt: "social.colibri.beta.voice.defs#transportOptions.iceServers", kind: "prop", name: Some("iceServers") }
  • AddedEdge AddedEdge { src: "social.colibri.beta.voice.defs#transportOptions.iceServers", tgt: "social.colibri.beta.voice.defs#transportOptions.iceServers:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "social.colibri.beta.voice.defs#transportOptions.iceServers" }
  • AddedVertex { vertex_id: "social.colibri.beta.voice.defs#transportOptions.iceServers:items" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "social.colibri.beta.voice.defs#disconnected.reason", sort: "knownValues", old_value: "[\"moderator\",\"superseded\",\"channelGone\"]", new_value: "[\"moderator\",\"superseded\",\"channelGone\",\"forbidden\"]" }

Additional Notes

  • Non-breaking: AddedEdge { src: "social.colibri.beta.voice.defs#transportOptions", tgt: "social.colibri.beta.voice.defs#transportOptions.iceServers", kind: "prop", name: Some("iceServers") }
  • Non-breaking: AddedEdge { src: "social.colibri.beta.voice.defs#transportOptions.iceServers", tgt: "social.colibri.beta.voice.defs#transportOptions.iceServers:items", kind: "items", name: None }
1 1
{
2 2
  "id": "social.colibri.beta.voice.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
    "join": {
11 11
      "type": "object",
12 12
      "required": [
13 13
        "channel"
14 14
      ],
15 15
      "properties": {
16 16
        "channel": {
17 17
          "type": "string",
18 18
          "format": "space-ref",
19 19
          "description": "The voice channel to join."
20 20
        }
21 21
      },
22 22
      "description": "Joins a voice channel. A connection must join before sending any other frame, and joining a second channel leaves the first."
23 23
    },
24 24
    "error": {
25 25
      "type": "object",
26 26
      "required": [
27 27
        "error"
28 28
      ],
29 29
      "properties": {
30 30
        "error": {
31 31
          "type": "string",
32 32
          "description": "Error name.",
33 33
          "knownValues": [
34 34
            "InvalidFrame",
35 35
            "NotJoined",
36 36
            "ChannelNotFound",
37 37
            "NotVoiceChannel",
38 38
            "Forbidden",
39 39
            "NotFound"
40 40
          ]
41 41
        },
42 42
        "message": {
43 43
          "type": "string",
44 44
          "description": "Human-readable detail."
45 45
        }
46 46
      },
47 47
      "description": "Something the client sent could not be acted on."
48 48
    },
49 49
    "leave": {
50 50
      "type": "object",
51 51
      "required": [],
52 52
      "properties": {},
53 53
      "description": "Leaves the voice channel this connection is joined to."
54 54
    },
55 55
    "joined": {
56 56
      "type": "object",
57 57
      "required": [
58 58
        "channel"
59 59
      ],
60 60
      "properties": {
61 61
        "channel": {
62 62
          "type": "string",
63 63
          "format": "space-ref",
64 64
          "description": "The voice channel now joined."
65 65
        }
66 66
      },
67 67
      "description": "Confirms this connection has joined a voice channel."
68 68
    },
69 69
    "consume": {
70 70
      "type": "object",
71 71
      "required": [
72 72
        "transportId",
73 73
        "producerId",
74 74
        "rtpCapabilities"
75 75
      ],
76 76
      "properties": {
77 77
        "producerId": {
78 78
          "type": "string",
79 79
          "description": "The producer to consume."
80 80
        },
81 81
        "transportId": {
82 82
          "type": "string",
83 83
          "description": "The receive transport to consume on."
84 84
        },
85 85
        "rtpCapabilities": {
86 86
          "type": "unknown",
87 87
          "description": "This connection's opaque mediasoup RTP capabilities blob."
88 88
        }
89 89
      },
90 90
      "description": "Starts consuming another peer's producer on a receive transport this connection created."
91 91
    },
92 92
    "produce": {
93 93
      "type": "object",
94 94
      "required": [
95 95
        "transportId",
96 96
        "kind",
97 97
        "rtpParameters",
98 98
        "source"
99 99
      ],
100 100
      "properties": {
101 101
        "kind": {
102 102
          "type": "string",
103 103
          "description": "The media kind.",
104 104
          "knownValues": [
105 105
            "audio",
106 106
            "video"
107 107
          ]
108 108
        },
109 109
        "source": {
110 110
          "type": "string",
111 111
          "description": "What this producer captures.",
112 112
          "knownValues": [
113 113
            "microphone",
114 114
            "camera",
115 115
            "screen"
116 116
          ]
117 117
        },
118 118
        "transportId": {
119 119
          "type": "string",
120 120
          "description": "The send transport to produce on."
121 121
        },
122 122
        "rtpParameters": {
123 123
          "type": "unknown",
124 124
          "description": "The opaque mediasoup RTP parameters blob."
125 125
        }
126 126
      },
127 127
      "description": "Starts producing media on a send transport this connection created."
128 128
    },
129 129
    "peerLeft": {
130 130
      "type": "object",
131 131
      "required": [
132 132
        "did"
133 133
      ],
134 134
      "properties": {
135 135
        "did": {
136 136
          "type": "string",
137 137
          "format": "did",
138 138
          "description": "Who left."
139 139
        }
140 140
      },
141 141
      "description": "A peer left the voice channel this connection is in."
142 142
    },
143 143
    "heartbeat": {
144 144
      "type": "object",
145 145
      "required": [],
146 146
      "properties": {},
147 147
      "description": "Keeps the connection alive. The server answers with an ack."
148 148
    },
149 149
    "peerJoined": {
150 150
      "type": "object",
151 151
      "required": [
152 152
        "did"
153 153
      ],
154 154
      "properties": {
155 155
        "did": {
156 156
          "type": "string",
157 157
          "format": "did",
158 158
          "description": "Who joined."
159 159
        }
160 160
      },
161 161
      "description": "Another peer joined the voice channel this connection is in."
162 162
    },
163 163
    "disconnected": {
164 164
      "type": "object",
165 165
      "required": [],
166 166
      "properties": {
167 167
        "reason": {
168 168
          "type": "string",
169 169
          "description": "Why it happened.",
170 170
          "knownValues": [
171 171
            "moderator",
172 172
            "superseded",
173 -
            "channelGone"
173 +
            "channelGone",
174 +
            "forbidden"
174 175
          ]
175 176
        }
176 177
      },
177 178
      "description": "The server removed this client from the voice channel. Sent only to the client it applies to."
178 179
    },
179 180
    "producerInfo": {
180 181
      "type": "object",
181 182
      "required": [
182 183
        "producerId",
183 184
        "did",
184 185
        "kind"
185 186
      ],
186 187
      "properties": {
187 188
        "did": {
188 189
          "type": "string",
189 190
          "format": "did",
190 191
          "description": "Who is producing this media."
191 192
        },
192 193
        "kind": {
193 194
          "type": "string",
194 195
          "description": "The media kind.",
195 196
          "knownValues": [
196 197
            "audio",
197 198
            "video"
198 199
          ]
199 200
        },
200 201
        "paused": {
201 202
          "type": "boolean",
202 203
          "description": "Whether the producer is currently paused."
203 204
        },
204 205
        "source": {
205 206
          "type": "string",
206 207
          "description": "What the producer captures.",
207 208
          "knownValues": [
208 209
            "microphone",
209 210
            "camera",
210 211
            "screen"
211 212
          ]
212 213
        },
213 214
        "producerId": {
214 215
          "type": "string",
215 216
          "description": "The producer's identifier."
216 217
        }
217 218
      },
218 219
      "description": "A media producer available to consume."
219 220
    },
220 221
    "setSelfState": {
221 222
      "type": "object",
222 223
      "required": [],
223 224
      "properties": {
224 225
        "muted": {
225 226
          "type": "boolean",
226 227
          "description": "Whether the microphone is muted."
227 228
        },
228 229
        "deafened": {
229 230
          "type": "boolean",
230 231
          "description": "Whether incoming audio is silenced."
231 232
        }
232 233
      },
233 234
      "description": "Updates this connection's own mute or deafen state. An absent field leaves the current value unchanged."
234 235
    },
235 236
    "closeProducer": {
236 237
      "type": "object",
237 238
      "required": [
238 239
        "producerId"
239 240
      ],
240 241
      "properties": {
241 242
        "producerId": {
242 243
          "type": "string",
243 244
          "description": "The producer to close."
244 245
        }
245 246
      },
246 247
      "description": "Closes a producer this connection owns."
247 248
    },
248 249
    "resumeConsumer": {
249 250
      "type": "object",
250 251
      "required": [
251 252
        "consumerId"
252 253
      ],
253 254
      "properties": {
254 255
        "consumerId": {
255 256
          "type": "string",
256 257
          "description": "The consumer to resume."
257 258
        }
258 259
      },
259 260
      "description": "Resumes a consumer this connection created, which is created paused by default."
260 261
    },
261 262
    "speakingUpdate": {
262 263
      "type": "object",
263 264
      "required": [
264 265
        "did",
265 266
        "speaking"
266 267
      ],
267 268
      "properties": {
268 269
        "did": {
269 270
          "type": "string",
270 271
          "format": "did",
271 272
          "description": "Who this update is about."
272 273
        },
273 274
        "level": {
274 275
          "type": "integer",
275 276
          "description": "An audio level in dBFS."
276 277
        },
277 278
        "speaking": {
278 279
          "type": "boolean",
279 280
          "description": "Whether they are currently speaking."
280 281
        }
281 282
      },
282 283
      "description": "A change in whether someone is currently speaking."
283 284
    },
284 285
    "consumerOptions": {
285 286
      "type": "object",
286 287
      "required": [
287 288
        "id",
288 289
        "producerId",
289 290
        "kind",
290 291
        "rtpParameters"
291 292
      ],
292 293
      "properties": {
293 294
        "id": {
294 295
          "type": "string",
295 296
          "description": "The consumer's identifier."
296 297
        },
297 298
        "kind": {
298 299
          "type": "string",
299 300
          "description": "The media kind.",
300 301
          "knownValues": [
301 302
            "audio",
302 303
            "video"
303 304
          ]
304 305
        },
305 306
        "producerId": {
306 307
          "type": "string",
307 308
          "description": "The producer being consumed."
308 309
        },
309 310
        "rtpParameters": {
310 311
          "type": "unknown",
311 312
          "description": "The opaque mediasoup RTP parameters blob."
312 313
        }
313 314
      },
314 315
      "description": "Parameters for consuming one producer."
315 316
    },
316 317
    "createTransport": {
317 318
      "type": "object",
318 319
      "required": [
319 320
        "direction"
320 321
      ],
321 322
      "properties": {
322 323
        "direction": {
323 324
          "type": "string",
324 325
          "description": "Whether this transport will send or receive media.",
325 326
          "knownValues": [
326 327
            "send",
327 328
            "recv"
328 329
          ]
329 330
        }
330 331
      },
331 332
      "description": "Requests a new WebRTC transport for the joined channel."
332 333
    },
333 334
    "producerRemoved": {
334 335
      "type": "object",
335 336
      "required": [
336 337
        "producerId",
337 338
        "did"
338 339
      ],
339 340
      "properties": {
340 341
        "did": {
341 342
          "type": "string",
342 343
          "format": "did",
343 344
          "description": "Whose producer this was."
344 345
        },
345 346
        "producerId": {
346 347
          "type": "string",
347 348
          "description": "The producer that closed."
348 349
        }
349 350
      },
350 351
      "description": "A peer's producer closed."
351 352
    },
352 353
    "rtpCapabilities": {
353 354
      "type": "object",
354 355
      "properties": {
355 356
        "payload": {
356 357
          "type": "unknown",
357 358
          "description": "The opaque mediasoup capability blob."
358 359
        }
359 360
      },
360 361
      "description": "The RTP capabilities a WebRTC endpoint supports."
361 362
    },
362 363
    "connectTransport": {
363 364
      "type": "object",
364 365
      "required": [
365 366
        "transportId",
366 367
        "dtlsParameters"
367 368
      ],
368 369
      "properties": {
369 370
        "transportId": {
370 371
          "type": "string",
371 372
          "description": "The transport to connect."
372 373
        },
373 374
        "dtlsParameters": {
374 375
          "type": "unknown",
375 376
          "description": "The opaque mediasoup DTLS parameters blob."
376 377
        }
377 378
      },
378 379
      "description": "Completes DTLS negotiation for a transport this connection created."
379 380
    },
380 381
    "transportOptions": {
381 382
      "type": "object",
382 383
      "required": [
383 384
        "id",
384 385
        "iceParameters",
385 386
        "iceCandidates",
386 387
        "dtlsParameters"
387 388
      ],
388 389
      "properties": {
389 390
        "id": {
390 391
          "type": "string",
391 392
          "description": "The transport's identifier."
392 393
        },
393 394
        "direction": {
394 395
          "type": "string",
395 396
          "description": "Which side of the call this transport carries.",
396 397
          "knownValues": [
397 398
            "send",
398 399
            "recv"
399 400
          ]
400 401
        },
402 +
        "iceServers": {
403 +
          "type": "array",
404 +
          "items": {
405 +
            "type": "unknown",
406 +
            "description": "One opaque RTCIceServer entry."
407 +
          },
408 +
          "description": "STUN and TURN servers the client should use while gathering candidates. Absent when the server has none configured."
409 +
        },
401 410
        "iceCandidates": {
402 411
          "type": "array",
403 412
          "items": {
404 413
            "type": "unknown",
405 414
            "description": "One opaque mediasoup ICE candidate."
406 415
          },
407 416
          "description": "The mediasoup ICE candidates, one opaque blob per candidate. This is an array, not a single object, because that is what a WebRTC transport hands back."
408 417
        },
409 418
        "iceParameters": {
410 419
          "type": "unknown",
411 420
          "description": "The opaque mediasoup ICE parameters blob."
412 421
        },
413 422
        "dtlsParameters": {
414 423
          "type": "unknown",
415 424
          "description": "The opaque mediasoup DTLS parameters blob."
416 425
        }
417 426
      },
418 427
      "description": "Parameters for creating one side of a WebRTC transport."
419 428
    },
420 429
    "moderationChanged": {
421 430
      "type": "object",
422 431
      "required": [
423 432
        "did",
424 433
        "muted",
425 434
        "deafened"
426 435
      ],
427 436
      "properties": {
428 437
        "did": {
429 438
          "type": "string",
430 439
          "format": "did",
431 440
          "description": "Whose state changed."
432 441
        },
433 442
        "muted": {
434 443
          "type": "boolean",
435 444
          "description": "Whether the microphone is muted, for any reason."
436 445
        },
437 446
        "deafened": {
438 447
          "type": "boolean",
439 448
          "description": "Whether incoming audio is silenced, for any reason."
440 449
        },
441 450
        "serverMuted": {
442 451
          "type": "boolean",
443 452
          "description": "Whether a moderator muted them. When this is true the peer cannot unmute themselves."
444 453
        },
445 454
        "serverDeafened": {
446 455
          "type": "boolean",
447 456
          "description": "Whether a moderator deafened them. When this is true the peer cannot undeafen themselves."
448 457
        }
449 458
      },
450 459
      "description": "A peer's mute or deafen state changed, whether they did it themselves or a moderator did it to them."
451 460
    },
452 461
    "getRtpCapabilities": {
453 462
      "type": "object",
454 463
      "required": [],
455 464
      "properties": {},
456 465
      "description": "Requests the router's RTP capabilities for the joined channel."
457 466
    }
458 467
  },
459 468
  "$type": "com.atproto.lexicon.schema",
460 469
  "lexicon": 1
461 470
}

Compare Other Versions

Lexicon Garden

@