social.colibri.beta.voice.defs

Repository @colibri.social did:plc:mprdjqjluoswa7awzggaggj3 namespace authority
Details · defs
Kinddefs
Authorityvoice.beta.colibri.social
Indexed
cid bafyreiggrwzf3cio43emxn7st7aatcv5ftf4ukc56ol5ajqf6j3yvgui6y

Checks

Valid
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "ack": {
      "description": "Answers a heartbeat.",
      "properties": {},
      "required": [],
      "type": "object"
    },
    "callElsewhere": {
      "description": "The call in the requested channel runs on another node. Clients join it there.",
      "properties": {
        "channel": {
          "description": "The voice channel.",
          "format": "space-ref",
          "type": "string"
        },
        "nodeId": {
          "description": "The node hosting the call.",
          "type": "string"
        },
        "signalingUrl": {
          "description": "Base URL for voice signaling on that node.",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "nodeId",
        "signalingUrl",
        "channel"
      ],
      "type": "object"
    },
    "closeProducer": {
      "description": "Closes a producer this connection owns.",
      "properties": {
        "producerId": {
          "description": "The producer to close.",
          "type": "string"
        }
      },
      "required": [
        "producerId"
      ],
      "type": "object"
    },
    "codecUnsupported": {
      "description": "A viewer in the voice channel can't decode the video codec of this client's screen share. The client can produce the screen share again with a more widely supported codec. Sent at most once per producer, only to the client that owns it.",
      "properties": {
        "producerId": {
          "description": "The screen share producer a viewer couldn't consume.",
          "type": "string"
        }
      },
      "required": [
        "producerId"
      ],
      "type": "object"
    },
    "connectTransport": {
      "description": "Completes DTLS negotiation for a transport this connection created.",
      "properties": {
        "dtlsParameters": {
          "description": "The opaque mediasoup DTLS parameters blob.",
          "type": "unknown"
        },
        "transportId": {
          "description": "The transport to connect.",
          "type": "string"
        }
      },
      "required": [
        "transportId",
        "dtlsParameters"
      ],
      "type": "object"
    },
    "consume": {
      "description": "Starts consuming another peer's producer on a receive transport this connection created.",
      "properties": {
        "producerId": {
          "description": "The producer to consume.",
          "type": "string"
        },
        "rtpCapabilities": {
          "description": "This connection's opaque mediasoup RTP capabilities blob.",
          "type": "unknown"
        },
        "transportId": {
          "description": "The receive transport to consume on.",
          "type": "string"
        }
      },
      "required": [
        "transportId",
        "producerId",
        "rtpCapabilities"
      ],
      "type": "object"
    },
    "consumerOptions": {
      "description": "Parameters for consuming one producer.",
      "properties": {
        "id": {
          "description": "The consumer's identifier.",
          "type": "string"
        },
        "kind": {
          "description": "The media kind.",
          "knownValues": [
            "audio",
            "video"
          ],
          "type": "string"
        },
        "producerId": {
          "description": "The producer being consumed.",
          "type": "string"
        },
        "rtpParameters": {
          "description": "The opaque mediasoup RTP parameters blob.",
          "type": "unknown"
        }
      },
      "required": [
        "id",
        "producerId",
        "kind",
        "rtpParameters"
      ],
      "type": "object"
    },
    "createTransport": {
      "description": "Requests a new WebRTC transport for the joined channel.",
      "properties": {
        "direction": {
          "description": "Whether this transport will send or receive media.",
          "knownValues": [
            "send",
            "recv"
          ],
          "type": "string"
        }
      },
      "required": [
        "direction"
      ],
      "type": "object"
    },
    "disconnected": {
      "description": "The server removed this client from the voice channel. Sent only to the client it applies to.",
      "properties": {
        "reason": {
          "description": "Why it happened. 'nodeClosed' means the node hosting the call shut down before the call could move. 'migrated' means the call moved to another node and this connection is no longer needed.",
          "knownValues": [
            "moderator",
            "superseded",
            "channelGone",
            "forbidden",
            "nodeClosed",
            "migrated"
          ],
          "type": "string"
        }
      },
      "required": [],
      "type": "object"
    },
    "error": {
      "description": "Something the client sent could not be acted on.",
      "properties": {
        "error": {
          "description": "Error name.",
          "knownValues": [
            "InvalidFrame",
            "NotJoined",
            "ChannelNotFound",
            "NotVoiceChannel",
            "Forbidden",
            "NotFound"
          ],
          "type": "string"
        },
        "message": {
          "description": "Human-readable detail.",
          "type": "string"
        }
      },
      "required": [
        "error"
      ],
      "type": "object"
    },
    "getRtpCapabilities": {
      "description": "Requests the router's RTP capabilities for the joined channel.",
      "properties": {},
      "required": [],
      "type": "object"
    },
    "heartbeat": {
      "description": "Keeps the connection alive. The server answers with an ack.",
      "properties": {},
      "required": [],
      "type": "object"
    },
    "join": {
      "description": "Joins a voice channel. A connection must join before sending any other frame, and joining a second channel leaves the first.",
      "properties": {
        "channel": {
          "description": "The voice channel to join.",
          "format": "space-ref",
          "type": "string"
        }
      },
      "required": [
        "channel"
      ],
      "type": "object"
    },
    "joined": {
      "description": "Confirms this connection has joined a voice channel.",
      "properties": {
        "channel": {
          "description": "The voice channel now joined.",
          "format": "space-ref",
          "type": "string"
        },
        "nodeId": {
          "description": "The node hosting the call.",
          "type": "string"
        },
        "region": {
          "description": "The region of the node hosting the call.",
          "type": "string"
        }
      },
      "required": [
        "channel"
      ],
      "type": "object"
    },
    "leave": {
      "description": "Leaves the voice channel this connection is joined to.",
      "properties": {},
      "required": [],
      "type": "object"
    },
    "migrateTo": {
      "description": "The call moves to another node. Clients join the same channel there, switch their media over, and then leave this node.",
      "properties": {
        "channel": {
          "description": "The voice channel.",
          "format": "space-ref",
          "type": "string"
        },
        "nodeId": {
          "description": "The node the call moves to.",
          "type": "string"
        },
        "now": {
          "description": "True when a participant asked to move right away.",
          "type": "boolean"
        },
        "signalingUrl": {
          "description": "Base URL for voice signaling on that node.",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "nodeId",
        "signalingUrl",
        "channel"
      ],
      "type": "object"
    },
    "migrationCandidate": {
      "description": "A voice node a call can move to.",
      "properties": {
        "nodeId": {
          "description": "Stable node identifier.",
          "type": "string"
        },
        "probeUrl": {
          "description": "A cheap URL to measure the round trip to that node.",
          "format": "uri",
          "type": "string"
        },
        "region": {
          "description": "Region name.",
          "type": "string"
        },
        "signalingUrl": {
          "description": "Base URL for voice signaling on that node.",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "nodeId",
        "region",
        "signalingUrl",
        "probeUrl"
      ],
      "type": "object"
    },
    "migrationProposal": {
      "description": "This node is going offline and the call has to move. Clients measure the round trip to every candidate and answer with rttReport.",
      "properties": {
        "candidates": {
          "description": "Voice nodes the call can move to.",
          "items": {
            "ref": "#migrationCandidate",
            "type": "ref"
          },
          "type": "array"
        },
        "deadline": {
          "description": "When the call moves without further notice.",
          "format": "datetime",
          "type": "string"
        }
      },
      "required": [
        "candidates",
        "deadline"
      ],
      "type": "object"
    },
    "moderationChanged": {
      "description": "A peer's mute or deafen state changed, whether they did it themselves or a moderator did it to them.",
      "properties": {
        "deafened": {
          "description": "Whether incoming audio is silenced, for any reason.",
          "type": "boolean"
        },
        "did": {
          "description": "Whose state changed.",
          "format": "did",
          "type": "string"
        },
        "muted": {
          "description": "Whether the microphone is muted, for any reason.",
          "type": "boolean"
        },
        "serverDeafened": {
          "description": "Whether a moderator deafened them. When this is true the peer cannot undeafen themselves.",
          "type": "boolean"
        },
        "serverMuted": {
          "description": "Whether a moderator muted them. When this is true the peer cannot unmute themselves.",
          "type": "boolean"
        }
      },
      "required": [
        "did",
        "muted",
        "deafened"
      ],
      "type": "object"
    },
    "moveNow": {
      "description": "Asks the node to move the call to the chosen node right away, without waiting for the deadline.",
      "properties": {},
      "required": [],
      "type": "object"
    },
    "moved": {
      "description": "A moderator moved this client to another voice channel. The server has already removed it from the previous one. Sent only to the client it applies to.",
      "properties": {
        "channel": {
          "description": "The voice channel to join.",
          "format": "space-ref",
          "type": "string"
        }
      },
      "required": [
        "channel"
      ],
      "type": "object"
    },
    "peerJoined": {
      "description": "Another peer joined the voice channel this connection is in.",
      "properties": {
        "did": {
          "description": "Who joined.",
          "format": "did",
          "type": "string"
        }
      },
      "required": [
        "did"
      ],
      "type": "object"
    },
    "peerLeft": {
      "description": "A peer left the voice channel this connection is in.",
      "properties": {
        "did": {
          "description": "Who left.",
          "format": "did",
          "type": "string"
        }
      },
      "required": [
        "did"
      ],
      "type": "object"
    },
    "produce": {
      "description": "Starts producing media on a send transport this connection created.",
      "properties": {
        "kind": {
          "description": "The media kind.",
          "knownValues": [
            "audio",
            "video"
          ],
          "type": "string"
        },
        "rtpParameters": {
          "description": "The opaque mediasoup RTP parameters blob.",
          "type": "unknown"
        },
        "source": {
          "description": "What this producer captures.",
          "knownValues": [
            "microphone",
            "camera",
            "screen"
          ],
          "type": "string"
        },
        "transportId": {
          "description": "The send transport to produce on.",
          "type": "string"
        }
      },
      "required": [
        "transportId",
        "kind",
        "rtpParameters",
        "source"
      ],
      "type": "object"
    },
    "producerInfo": {
      "description": "A media producer available to consume.",
      "properties": {
        "did": {
          "description": "Who is producing this media.",
          "format": "did",
          "type": "string"
        },
        "kind": {
          "description": "The media kind.",
          "knownValues": [
            "audio",
            "video"
          ],
          "type": "string"
        },
        "paused": {
          "description": "Whether the producer is currently paused.",
          "type": "boolean"
        },
        "producerId": {
          "description": "The producer's identifier.",
          "type": "string"
        },
        "source": {
          "description": "What the producer captures.",
          "knownValues": [
            "microphone",
            "camera",
            "screen"
          ],
          "type": "string"
        }
      },
      "required": [
        "producerId",
        "did",
        "kind"
      ],
      "type": "object"
    },
    "producerRemoved": {
      "description": "A peer's producer closed.",
      "properties": {
        "did": {
          "description": "Whose producer this was.",
          "format": "did",
          "type": "string"
        },
        "producerId": {
          "description": "The producer that closed.",
          "type": "string"
        }
      },
      "required": [
        "producerId",
        "did"
      ],
      "type": "object"
    },
    "resumeConsumer": {
      "description": "Resumes a consumer this connection created, which is created paused by default.",
      "properties": {
        "consumerId": {
          "description": "The consumer to resume.",
          "type": "string"
        }
      },
      "required": [
        "consumerId"
      ],
      "type": "object"
    },
    "rtpCapabilities": {
      "description": "The RTP capabilities a WebRTC endpoint supports.",
      "properties": {
        "payload": {
          "description": "The opaque mediasoup capability blob.",
          "type": "unknown"
        }
      },
      "type": "object"
    },
    "rttReport": {
      "description": "Round trips this client measured to the candidates of a migrationProposal.",
      "properties": {
        "results": {
          "description": "One result per candidate.",
          "items": {
            "ref": "#rttResult",
            "type": "ref"
          },
          "type": "array"
        }
      },
      "required": [
        "results"
      ],
      "type": "object"
    },
    "rttResult": {
      "description": "One measured round trip.",
      "properties": {
        "nodeId": {
          "description": "The candidate measured.",
          "type": "string"
        },
        "rttMs": {
          "description": "Round trip in milliseconds. Absent when the node could not be reached.",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "nodeId"
      ],
      "type": "object"
    },
    "setConsumerPreference": {
      "description": "Sets the highest simulcast or SVC layers a consumer this connection created should receive, and whether it should receive media at all. The server picks layers within the transport's bandwidth estimate and keeps a consumer paused while deafen silences it.",
      "properties": {
        "consumerId": {
          "description": "The consumer to update.",
          "type": "string"
        },
        "paused": {
          "description": "Whether the viewer wants this consumer paused, for example while its tile is off screen.",
          "type": "boolean"
        },
        "spatialLayer": {
          "description": "The highest spatial layer to receive, where 0 is the lowest resolution.",
          "minimum": 0,
          "type": "integer"
        },
        "temporalLayer": {
          "description": "The highest temporal layer to receive. When absent, the server uses the highest one available.",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "consumerId",
        "spatialLayer",
        "paused"
      ],
      "type": "object"
    },
    "setSelfState": {
      "description": "Updates this connection's own mute or deafen state. An absent field leaves the current value unchanged.",
      "properties": {
        "deafened": {
          "description": "Whether incoming audio is silenced.",
          "type": "boolean"
        },
        "muted": {
          "description": "Whether the microphone is muted.",
          "type": "boolean"
        }
      },
      "required": [],
      "type": "object"
    },
    "setSpeaking": {
      "description": "Reports whether this connection's user is speaking, as detected on their device. Once a connection sends this, the server stops detecting speech from its audio level. The server reports false while the user is muted.",
      "properties": {
        "speaking": {
          "description": "Whether the user is currently speaking.",
          "type": "boolean"
        }
      },
      "required": [
        "speaking"
      ],
      "type": "object"
    },
    "speakingUpdate": {
      "description": "A change in whether someone is currently speaking.",
      "properties": {
        "did": {
          "description": "Who this update is about.",
          "format": "did",
          "type": "string"
        },
        "level": {
          "description": "An audio level in dBFS.",
          "type": "integer"
        },
        "speaking": {
          "description": "Whether they are currently speaking.",
          "type": "boolean"
        }
      },
      "required": [
        "did",
        "speaking"
      ],
      "type": "object"
    },
    "transportOptions": {
      "description": "Parameters for creating one side of a WebRTC transport.",
      "properties": {
        "direction": {
          "description": "Which side of the call this transport carries.",
          "knownValues": [
            "send",
            "recv"
          ],
          "type": "string"
        },
        "dtlsParameters": {
          "description": "The opaque mediasoup DTLS parameters blob.",
          "type": "unknown"
        },
        "iceCandidates": {
          "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.",
          "items": {
            "description": "One opaque mediasoup ICE candidate.",
            "type": "unknown"
          },
          "type": "array"
        },
        "iceParameters": {
          "description": "The opaque mediasoup ICE parameters blob.",
          "type": "unknown"
        },
        "iceServers": {
          "description": "STUN and TURN servers the client should use while gathering candidates. Absent when the server has none configured.",
          "items": {
            "description": "One opaque RTCIceServer entry.",
            "type": "unknown"
          },
          "type": "array"
        },
        "id": {
          "description": "The transport's identifier.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "iceParameters",
        "iceCandidates",
        "dtlsParameters"
      ],
      "type": "object"
    }
  },
  "id": "social.colibri.beta.voice.defs",
  "lexicon": 1
}