social.colibri.voice.signal

colibri.social

Schema Diff

+6 -1

From

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

To

CID
bafyreiatgdp6kr7...
Indexed At
2026-07-31 21:23 UTC
View this version

Compatibility Analysis

Backward Compatible

No changes detected.

1 1
{
2 2
  "id": "social.colibri.voice.signal",
3 3
  "defs": {
4 4
    "main": {
5 5
      "type": "subscription",
6 6
      "errors": [
7 7
        {
8 -
          "name": "AuthRequired"
8 +
          "name": "AuthRequired",
9 +
          "description": "Missing, malformed, or unverifiable service auth."
10 +
        },
11 +
        {
12 +
          "name": "Forbidden",
13 +
          "description": "The caller lacks the permission this method requires."
9 14
        },
10 15
        {
11 16
          "name": "SfuError",
12 17
          "description": "The SFU could not create the channel router or a transport."
13 18
        }
14 19
      ],
15 20
      "message": {
16 21
        "schema": {
17 22
          "refs": [
18 23
            "lex:social.colibri.voice.signal#signalMessage"
19 24
          ],
20 25
          "type": "union"
21 26
        }
22 27
      },
23 28
      "parameters": {
24 29
        "type": "params",
25 30
        "required": [
26 31
          "channel"
27 32
        ],
28 33
        "properties": {
29 34
          "channel": {
30 35
            "type": "string",
31 36
            "format": "at-uri",
32 37
            "description": "AT-URI of the voice channel to join."
33 38
          }
34 39
        }
35 40
      },
36 41
      "description": "Opens a WebSocket to the community hub AppView's embedded voice SFU (mediasoup) for a single voice channel. Bidirectional signaling: the client sends transport/produce/consume requests and the server replies and pushes producer and active-speaker events. Media itself flows over WebRTC (SRTP), not this socket. Requires service auth (aud = the community hub AppView's did:web, lxm = social.colibri.voice.signal), carried via the Sec-WebSocket-Protocol subprotocol as with subscribeEvents."
37 42
    },
38 43
    "signalMessage": {
39 44
      "type": "object",
40 45
      "required": [
41 46
        "action"
42 47
      ],
43 48
      "properties": {
44 49
        "action": {
45 50
          "type": "string",
46 51
          "knownValues": [
47 52
            "init",
48 53
            "connectProducerTransport",
49 54
            "connectedProducerTransport",
50 55
            "produce",
51 56
            "produced",
52 57
            "connectConsumerTransport",
53 58
            "connectedConsumerTransport",
54 59
            "consume",
55 60
            "consumed",
56 61
            "consumerResume",
57 62
            "producerAdded",
58 63
            "producerRemoved",
59 64
            "activeSpeakers",
60 65
            "serverMuted",
61 66
            "serverDeafened",
62 67
            "kicked",
63 68
            "superseded",
64 69
            "error"
65 70
          ]
66 71
        }
67 72
      },
68 73
      "description": "A mediasoup signaling frame. `action` discriminates the frame; the remaining fields carry opaque mediasoup structures (transport options, RTP parameters/capabilities, DTLS parameters) that the client's mediasoup-client library interprets. The AppView does not validate the nested payloads."
69 74
    }
70 75
  },
71 76
  "$type": "com.atproto.lexicon.schema",
72 77
  "lexicon": 1,
73 78
  "revision": 1
74 79
}

Compare Other Versions

Lexicon Garden

@