social.colibri.voice.signal
Schema Diff
+6 -1
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
}