export interface BestNodeResponse { webSocketUrl: string; id: string; apiUrl: string; } /** * @minLength 24 * @maxLength 24 * @example "6852d453a9674333e2b19fd1" */ export type ChannelId = string; /** * @minLength 24 * @maxLength 24 * @example "7852d453a9674333e2b19fd2" */ export type AppId = string; /** * @minLength 24 * @maxLength 24 * @example "8852d453a9674333e2b19fd3" */ export type PeerId = string; /** * @minLength 24 * @maxLength 100 * @example "6890c002295ed3fac7f8ad58-audio-observer" */ export type DataProducerId = string; /** * @format uuid * @pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ */ export type UuidV4 = string; export type IceTransportPolicy = "all" | "relay"; export interface RegisteredPeerResponse { channelId: ChannelId; appId: AppId; /** The role of a participant in a channel. */ role: Role; peerId: PeerId; } export type ProducerId = UuidV4; export interface RtpCapabilities { codecs?: RtpCodecCapability[]; headerExtensions?: RtpHeaderExtension[]; } export interface RtcpFeedback { type: string; parameter?: string; } export interface RtpCodecCapability { kind: MediaKind; mimeType: string; /** @format int32 */ preferredPayloadType?: number; /** @format int32 */ clockRate: number; /** @format int32 */ channels?: number; parameters?: Record; rtcpFeedback?: RtcpFeedback[]; } export type RtpHeaderExtensionUri = string; export type RtpHeaderExtensionDirection = "sendrecv" | "sendonly" | "recvonly" | "inactive"; export interface RtpHeaderExtension { kind?: MediaKind; uri: RtpHeaderExtensionUri; preferredId?: number; preferredEncrypt?: boolean; direction?: RtpHeaderExtensionDirection; } export type TransportDirection = "receive" | "send"; export type AppData = Record; export type TransportOptions = object; export interface IceParameters { usernameFragment: string; password: string; iceLite?: boolean; } export interface IceCandidate { foundation: string; priority: number; address: string; ip: string; protocol: "udp" | "tcp"; port: number; type: "host" | "srflx" | "prflx" | "relay"; tcpType?: "active" | "passive" | "so"; } export type DtlsRole = "auto" | "client" | "server"; export type FingerprintAlgorithm = "sha-1" | "sha-224" | "sha-256" | "sha-384" | "sha-512"; export interface DtlsFingerprint { algorithm: FingerprintAlgorithm; value: string; } export interface DtlsParameters { role?: DtlsRole; fingerprints: DtlsFingerprint[]; } export interface SctpParameters { port: number; OS: number; MIS: number; maxMessageSize: number; } export interface RtpEncodingParameters { active?: boolean; ssrc?: number; rid?: string; codecPayloadType?: number; rtx?: { ssrc: number; }; dtx?: boolean; scalabilityMode?: string; scaleResolutionDownBy?: number; maxBitrate?: number; maxFramerate?: number; adaptivePtime?: boolean; priority?: "very-low" | "low" | "medium" | "high"; networkPriority?: "very-low" | "low" | "medium" | "high"; } export type MediaKind = "audio" | "video"; export interface ConsumerCreateResponse { id?: string; producerId?: ProducerId; kind?: MediaKind; rtpParameters: RtpParameters; streamId?: string; /** Reference to an OnRtpReceiverCallback */ onRtpReceiver?: string; appData?: AppData; producerPaused: boolean; } export interface RtpParameters { mid?: string; msid?: string; codecs: RtpCodecParameters[]; headerExtensions?: RtpHeaderExtensionParameters[]; encodings?: RtpEncodingParameters[]; rtcp?: RtcpParameters; } export interface RtcpParameters { cname?: string; reducedSize?: boolean; mux?: boolean; } export interface RtpHeaderExtensionParameters { uri: RtpHeaderExtensionUri; id: number; encrypt?: boolean; parameters?: Record; } export interface RtpCodecParameters { mimeType: string; payloadType: number; clockRate: number; channels?: number; parameters?: Record; rtcpFeedback?: RtcpFeedback[]; } export type DataConsumerAppData = AppData & object; export type TrackLabel = "camera" | "microphone" | "screen-video" | "screen-audio" | "custom-video" | "custom-audio" | "unknown"; export interface SctpStreamParameters { streamId?: number; ordered?: boolean; maxPacketLifeTime?: number; maxRetransmits?: number; label?: string; protocol?: string; } export type TProducerAppData = AppData & { label: TrackLabel; keyFrameRequestDelay?: number; [key: string]: any; }; export type TConsumerAppData = AppData & object; export type DataProducerLabels = "consumers-scores"; export type PeerDataProducerLabels = "consumers-scores" | "channel-messages-data-producer" | "heart-beater"; export interface RTCIceServer { /** List of ICE server URLs (STUN/TURN). */ urls: string[]; /** Username for accessing the ICE server. */ username: string; /** Credential (password or token) for the ICE server. */ credential: string; } /** The role of a participant in a channel. */ export type Role = "audience" | "host"; /** A group to which a peer can belong. */ export type PeerGroup = "moderator" | "user"; /** Information about a peers in the channel. */ export interface PeersResponse { items: PeerItem[]; } export interface ProducerItem { id: ProducerId; kind: MediaKind; label: TrackLabel; peerId: string; paused: boolean; } /** Information about a peer in the channel. */ export interface PeerItem { id: string; /** IDs of channels this peer is part of. */ channelIds: string[]; /** List of media producers created by this peer. */ producers: ProducerItem[]; nodeGrpcUrl: string; uid?: string; appId?: string; /** Arbitrary application data. */ appData?: Record; /** The role of a participant in a channel. */ role: Role; /** * Timestamp when the peer logged in. * @format date-time */ loginDate: string; /** Groups this peer belongs to. */ groups: PeerGroup[]; /** Which track labels this peer is allowed to produce. */ producePermissions: TrackLabel[]; } export interface ErrorResponse { /** @example "Validation failed" */ error: string; /** @example "invalid_request" */ errorCode: "check_access_fail" | "join_room_fail" | "need_joined_to_channel" | "forbidden" | "not_found" | "invalid_request" | "already_created" | "too_many_requests" | "something_went_wrong" | "di_error" | "resources_lock_error" | "already_connected" | "timeout" | "unauthorized"; } export declare namespace Peers { /** * No description * @tags peers * @name GetPeers * @summary Get list of peers joined the call (all or by role) * @request GET:/peers * @secure */ namespace GetPeers { type RequestParams = {}; type RequestQuery = { /** @default "host" */ role?: Role; }; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = PeersResponse; } /** * No description * @tags peers * @name RegisterPeer * @summary Register peer in channel (join channel) * @request POST:/peers * @secure */ namespace RegisterPeer { type RequestParams = {}; type RequestQuery = {}; type RequestBody = { appData?: Record; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = RegisteredPeerResponse; } /** * No description * @tags peers * @name DisconnectPeer * @summary Disconnect peer from channel * @request DELETE:/peers * @secure */ namespace DisconnectPeer { type RequestParams = {}; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags peers * @name ChangePeerProducePermissions * @summary Add possibility to produce some media with specified track labels * @request PUT:/peers/{peerId}/produce-permissions * @secure */ namespace ChangePeerProducePermissions { type RequestParams = { /** ID of peer */ peerId: PeerId; }; type RequestQuery = {}; type RequestBody = { /** Which track labels this peer is allowed to produce. */ producePermissions?: TrackLabel[]; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags peers * @name AddPeerProducePermissions * @summary Add possibility to produce some media with specified track label * @request POST:/peers/{peerId}/produce-permissions/{track-label} * @secure */ namespace AddPeerProducePermissions { type RequestParams = { /** ID of peer */ peerId: PeerId; /** Track label */ trackLabel: TrackLabel; }; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags peers * @name RemovePeerProducePermissions * @summary Remove possibility to produce some media with specified track label * @request DELETE:/peers/{peerId}/produce-permissions/{track-label} * @secure */ namespace RemovePeerProducePermissions { type RequestParams = { /** ID of peer */ peerId: PeerId; /** Track label */ trackLabel: TrackLabel; }; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } } export declare namespace Router { /** * No description * @tags router * @name GetRtpCapabilities * @summary Get RTP capabilities * @request GET:/router/rtp-capabilities * @secure */ namespace GetRtpCapabilities { type RequestParams = {}; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = { rtpCapabilities: RtpCapabilities; }; } } export declare namespace Channel { /** * No description * @tags channel * @name ConfirmChannelActivity * @summary Reset auto destruction timer for active call * @request PATCH:/channel/activity * @secure */ namespace ConfirmChannelActivity { type RequestParams = {}; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags channel * @name TriggerChannelStateEvent * @summary Request the current state of peers on the server and the id of this event * @request GET:/channel/peers-state-message-id * @secure */ namespace TriggerChannelStateEvent { type RequestParams = {}; type RequestQuery = { /** @default "host" */ role?: Role; }; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = { /** @format int32 */ messageId?: number; }; } } export declare namespace Ping { /** * No description * @tags ping * @name PingPeer * @summary Some ping endpoint * @request POST:/ping * @secure */ namespace PingPeer { type RequestParams = {}; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = "Pong"; } } export declare namespace AppData { /** * No description * @tags appData * @name UpdateSelfPeerAppData * @summary Update self peer application data * @request PUT:/app-data * @secure */ namespace UpdateSelfPeerAppData { type RequestParams = {}; type RequestQuery = {}; type RequestBody = { appData: Record; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } } export declare namespace Producer { /** * No description * @tags producer * @name GetGeneralDataProducer * @summary Get general data producer * @request GET:/producer/general-data * @secure */ namespace GetGeneralDataProducer { type RequestParams = {}; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = { producerId: DataProducerId; }; } /** * No description * @tags producer * @name GetAudioObserverProducer * @summary Get audio observer producer * @request GET:/producer/audio-observer * @secure */ namespace GetAudioObserverProducer { type RequestParams = {}; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = { producerId: DataProducerId; }; } /** * No description * @tags producer * @name GetChannelStateSyncDataProducer * @summary Get channel state sync data producer * @request GET:/producer/channel-state-sync-data * @secure */ namespace GetChannelStateSyncDataProducer { type RequestParams = {}; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = { producerId: DataProducerId; }; } /** * No description * @tags producer * @name CloseProducer * @summary Close a producer * @request DELETE:/producer/{producerId} * @secure */ namespace CloseProducer { type RequestParams = { /** ID of media producer */ producerId: UuidV4; }; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags producer * @name PauseProducer * @summary Pause a producer * @request POST:/producer/{producerId}/actions/pause * @secure */ namespace PauseProducer { type RequestParams = { /** ID of media producer */ producerId: UuidV4; }; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags producer * @name ResumeProducer * @summary Resume a producer * @request POST:/producer/{producerId}/actions/resume * @secure */ namespace ResumeProducer { type RequestParams = { /** ID of media producer */ producerId: UuidV4; }; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags producer * @name RequestProducerMaxSpatialLayer * @summary Request producer max spatial layer * @request POST:/producer/{producerId}/max-spatial-layer * @secure */ namespace RequestProducerMaxSpatialLayer { type RequestParams = { /** ID of media producer */ producerId: UuidV4; }; type RequestQuery = {}; type RequestBody = { /** @format int32 */ spatialLayer: number; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags producer * @name SetProducerMaxSpatialLayer * @summary Set producer max spatial layer * @request PUT:/producer/{producerId}/max-spatial-layer * @secure */ namespace SetProducerMaxSpatialLayer { type RequestParams = { /** ID of media producer */ producerId: UuidV4; }; type RequestQuery = {}; type RequestBody = { /** @format int32 */ maxSpatialLayer: number; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } } export declare namespace Consumer { /** * No description * @tags consumer * @name CreateConsumer * @summary Create a consumer * @request POST:/consumer * @secure */ namespace CreateConsumer { type RequestParams = {}; type RequestQuery = {}; type RequestBody = { producerId: ProducerId; transportId: UuidV4; rtpCapabilities: RtpCapabilities; appData?: TConsumerAppData; producerPeerId: PeerId; /** Force close existing consumer with matching identifiers before creating a new one. */ forceCloseExisting?: boolean; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = { id?: string; producerId?: ProducerId; kind?: MediaKind; rtpParameters: RtpParameters; streamId?: string; /** Reference to an OnRtpReceiverCallback */ onRtpReceiver?: string; appData?: AppData; producerPaused: boolean; }; } /** * No description * @tags consumer * @name CloseConsumer * @summary Close a consumer * @request DELETE:/consumer/{consumerId} * @secure */ namespace CloseConsumer { type RequestParams = { /** ID of media consumer */ consumerId: UuidV4; }; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags consumer * @name PauseConsumer * @summary Pause a consumer * @request POST:/consumer/{consumerId}/actions/pause * @secure */ namespace PauseConsumer { type RequestParams = { /** ID of media consumer */ consumerId: UuidV4; }; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags consumer * @name ResumeConsumer * @summary Resume a consumer * @request POST:/consumer/{consumerId}/actions/resume * @secure */ namespace ResumeConsumer { type RequestParams = { /** ID of media consumer */ consumerId: UuidV4; }; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags consumer * @name UpdateConsumerPreferredLayers * @summary Change consumer preferred layers * @request PUT:/consumer/{consumerId}/preferred-layers * @secure */ namespace UpdateConsumerPreferredLayers { type RequestParams = { /** ID of media consumer */ consumerId: UuidV4; }; type RequestQuery = {}; type RequestBody = { /** @format int32 */ spatialLayer: number; /** @format int32 */ temporalLayer?: number; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags consumer * @name RequestConsumerKeyFrame * @summary Request a key frame * @request POST:/consumer/{consumerId}/key-frame * @secure */ namespace RequestConsumerKeyFrame { type RequestParams = { /** ID of media consumer */ consumerId: UuidV4; }; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } } export declare namespace DataConsumer { /** * No description * @tags dataConsumer * @name CreateDataConsumer * @summary Create a data consumer * @request POST:/data-consumer * @secure */ namespace CreateDataConsumer { type RequestParams = {}; type RequestQuery = {}; type RequestBody = { dataProducerId: DataProducerId; transportId: UuidV4; appData?: DataConsumerAppData; ordered?: boolean; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = { id?: string; dataProducerId?: string; sctpStreamParameters: SctpStreamParameters; label?: string; protocol?: string; appData?: AppData; }; } } export declare namespace Transport { /** * No description * @tags transport * @name CreateTransport * @summary Create a transport * @request POST:/transport * @secure */ namespace CreateTransport { type RequestParams = {}; type RequestQuery = {}; type RequestBody = { localDirection: TransportDirection; tcpOnly?: boolean; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = { id: string; iceParameters: IceParameters; iceCandidates: IceCandidate[]; dtlsParameters: DtlsParameters; sctpParameters?: SctpParameters; iceServers?: RTCIceServer[]; iceTransportPolicy?: IceTransportPolicy; appData?: AppData; }; } /** * No description * @tags transport * @name GetTransportIceParameters * @summary Get ICE parameters * @request GET:/transport/{transportId}/ice-parameters * @secure */ namespace GetTransportIceParameters { type RequestParams = { /** ID of media transport */ transportId: UuidV4; }; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = { iceParameters: IceParameters; }; } /** * No description * @tags transport * @name ConnectTransport * @summary Connect a transport (DTLS) * @request PUT:/transport/{transportId}/connect * @secure */ namespace ConnectTransport { type RequestParams = { /** ID of media transport */ transportId: UuidV4; }; type RequestQuery = {}; type RequestBody = { dtlsParameters: DtlsParameters; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } /** * No description * @tags transport * @name ProduceMediaToTransport * @summary Produce media over transport * @request PUT:/transport/{transportId}/media-producer * @secure */ namespace ProduceMediaToTransport { type RequestParams = { /** ID of media transport */ transportId: UuidV4; }; type RequestQuery = {}; type RequestBody = { kind: MediaKind; rtpParameters: RtpParameters; appData: TProducerAppData; /** Force close existing producer with matching identifiers before creating a new one. */ forceCloseExisting?: boolean; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = { id: string; }; } /** * No description * @tags transport * @name ProduceDataToTransport * @summary Produce data over transport * @request PUT:/transport/{transportId}/data-producer * @secure */ namespace ProduceDataToTransport { type RequestParams = { /** ID of media transport */ transportId: UuidV4; }; type RequestQuery = {}; type RequestBody = { label: PeerDataProducerLabels; sctpStreamParameters?: SctpStreamParameters; appData?: DataConsumerAppData; }; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = { id: string; }; } /** * No description * @tags transport * @name CloseTransport * @summary Close transport * @request DELETE:/transport/{transportId} * @secure */ namespace CloseTransport { type RequestParams = { /** ID of media transport */ transportId: UuidV4; }; type RequestQuery = {}; type RequestBody = never; type RequestHeaders = { /** * Peer API version * @format int32 * @min 1 * @example 1 */ "x-peer-api-version"?: number; /** * Data center type - for p2p or common calls * @default "common" */ "x-datacenter-type"?: "p2p" | "common"; }; type ResponseBody = void; } } import type { AxiosInstance, AxiosRequestConfig, AxiosResponse, ResponseType } from "axios"; export type QueryParamsType = Record; export interface FullRequestParams extends Omit { /** set parameter to `true` for call `securityWorker` for this request */ secure?: boolean; /** request path */ path: string; /** content type of request body */ type?: ContentType; /** query params */ query?: QueryParamsType; /** format of response (i.e. response.json() -> format: "json") */ format?: ResponseType; /** request body */ body?: unknown; } export type RequestParams = Omit; export interface ApiConfig extends Omit { securityWorker?: (securityData: SecurityDataType | null) => Promise | AxiosRequestConfig | void; secure?: boolean; format?: ResponseType; } export declare enum ContentType { Json = "application/json", FormData = "multipart/form-data", UrlEncoded = "application/x-www-form-urlencoded", Text = "text/plain" } export declare class HttpClient { instance: AxiosInstance; private securityData; private securityWorker?; private secure?; private format?; constructor({ securityWorker, secure, format, ...axiosConfig }?: ApiConfig); setSecurityData: (data: SecurityDataType | null) => void; protected mergeRequestParams(params1: AxiosRequestConfig, params2?: AxiosRequestConfig): AxiosRequestConfig; protected stringifyFormItem(formItem: unknown): string; protected createFormData(input: Record): FormData; request: ({ secure, path, type, query, format, body, ...params }: FullRequestParams) => Promise>; } /** * @title Signaling API * @version 1.0.0 * @baseUrl signaling.livedigital.space/v1 */ export declare class Api extends HttpClient { peers: { /** * No description * * @tags peers * @name GetPeers * @summary Get list of peers joined the call (all or by role) * @request GET:/peers * @secure */ getPeers: (query?: { /** @default "host" */ role?: Role; }, params?: RequestParams) => Promise>; /** * No description * * @tags peers * @name RegisterPeer * @summary Register peer in channel (join channel) * @request POST:/peers * @secure */ registerPeer: (data: { appData?: Record; }, params?: RequestParams) => Promise>; /** * No description * * @tags peers * @name DisconnectPeer * @summary Disconnect peer from channel * @request DELETE:/peers * @secure */ disconnectPeer: (params?: RequestParams) => Promise>; /** * No description * * @tags peers * @name ChangePeerProducePermissions * @summary Add possibility to produce some media with specified track labels * @request PUT:/peers/{peerId}/produce-permissions * @secure */ changePeerProducePermissions: (peerId: PeerId, data: { /** Which track labels this peer is allowed to produce. */ producePermissions?: TrackLabel[]; }, params?: RequestParams) => Promise>; /** * No description * * @tags peers * @name AddPeerProducePermissions * @summary Add possibility to produce some media with specified track label * @request POST:/peers/{peerId}/produce-permissions/{track-label} * @secure */ addPeerProducePermissions: (peerId: PeerId, trackLabel: TrackLabel, params?: RequestParams) => Promise>; /** * No description * * @tags peers * @name RemovePeerProducePermissions * @summary Remove possibility to produce some media with specified track label * @request DELETE:/peers/{peerId}/produce-permissions/{track-label} * @secure */ removePeerProducePermissions: (peerId: PeerId, trackLabel: TrackLabel, params?: RequestParams) => Promise>; }; router: { /** * No description * * @tags router * @name GetRtpCapabilities * @summary Get RTP capabilities * @request GET:/router/rtp-capabilities * @secure */ getRtpCapabilities: (params?: RequestParams) => Promise>; }; channel: { /** * No description * * @tags channel * @name ConfirmChannelActivity * @summary Reset auto destruction timer for active call * @request PATCH:/channel/activity * @secure */ confirmChannelActivity: (params?: RequestParams) => Promise>; /** * No description * * @tags channel * @name TriggerChannelStateEvent * @summary Request the current state of peers on the server and the id of this event * @request GET:/channel/peers-state-message-id * @secure */ triggerChannelStateEvent: (query?: { /** @default "host" */ role?: Role; }, params?: RequestParams) => Promise>; }; ping: { /** * No description * * @tags ping * @name PingPeer * @summary Some ping endpoint * @request POST:/ping * @secure */ pingPeer: (params?: RequestParams) => Promise>; }; appData: { /** * No description * * @tags appData * @name UpdateSelfPeerAppData * @summary Update self peer application data * @request PUT:/app-data * @secure */ updateSelfPeerAppData: (data: { appData: Record; }, params?: RequestParams) => Promise>; }; producer: { /** * No description * * @tags producer * @name GetGeneralDataProducer * @summary Get general data producer * @request GET:/producer/general-data * @secure */ getGeneralDataProducer: (params?: RequestParams) => Promise>; /** * No description * * @tags producer * @name GetAudioObserverProducer * @summary Get audio observer producer * @request GET:/producer/audio-observer * @secure */ getAudioObserverProducer: (params?: RequestParams) => Promise>; /** * No description * * @tags producer * @name GetChannelStateSyncDataProducer * @summary Get channel state sync data producer * @request GET:/producer/channel-state-sync-data * @secure */ getChannelStateSyncDataProducer: (params?: RequestParams) => Promise>; /** * No description * * @tags producer * @name CloseProducer * @summary Close a producer * @request DELETE:/producer/{producerId} * @secure */ closeProducer: (producerId: UuidV4, params?: RequestParams) => Promise>; /** * No description * * @tags producer * @name PauseProducer * @summary Pause a producer * @request POST:/producer/{producerId}/actions/pause * @secure */ pauseProducer: (producerId: UuidV4, params?: RequestParams) => Promise>; /** * No description * * @tags producer * @name ResumeProducer * @summary Resume a producer * @request POST:/producer/{producerId}/actions/resume * @secure */ resumeProducer: (producerId: UuidV4, params?: RequestParams) => Promise>; /** * No description * * @tags producer * @name RequestProducerMaxSpatialLayer * @summary Request producer max spatial layer * @request POST:/producer/{producerId}/max-spatial-layer * @secure */ requestProducerMaxSpatialLayer: (producerId: UuidV4, data: { /** @format int32 */ spatialLayer: number; }, params?: RequestParams) => Promise>; /** * No description * * @tags producer * @name SetProducerMaxSpatialLayer * @summary Set producer max spatial layer * @request PUT:/producer/{producerId}/max-spatial-layer * @secure */ setProducerMaxSpatialLayer: (producerId: UuidV4, data: { /** @format int32 */ maxSpatialLayer: number; }, params?: RequestParams) => Promise>; }; consumer: { /** * No description * * @tags consumer * @name CreateConsumer * @summary Create a consumer * @request POST:/consumer * @secure */ createConsumer: (data: { producerId: ProducerId; transportId: UuidV4; rtpCapabilities: RtpCapabilities; appData?: TConsumerAppData; producerPeerId: PeerId; /** Force close existing consumer with matching identifiers before creating a new one. */ forceCloseExisting?: boolean; }, params?: RequestParams) => Promise>; /** * No description * * @tags consumer * @name CloseConsumer * @summary Close a consumer * @request DELETE:/consumer/{consumerId} * @secure */ closeConsumer: (consumerId: UuidV4, params?: RequestParams) => Promise>; /** * No description * * @tags consumer * @name PauseConsumer * @summary Pause a consumer * @request POST:/consumer/{consumerId}/actions/pause * @secure */ pauseConsumer: (consumerId: UuidV4, params?: RequestParams) => Promise>; /** * No description * * @tags consumer * @name ResumeConsumer * @summary Resume a consumer * @request POST:/consumer/{consumerId}/actions/resume * @secure */ resumeConsumer: (consumerId: UuidV4, params?: RequestParams) => Promise>; /** * No description * * @tags consumer * @name UpdateConsumerPreferredLayers * @summary Change consumer preferred layers * @request PUT:/consumer/{consumerId}/preferred-layers * @secure */ updateConsumerPreferredLayers: (consumerId: UuidV4, data: { /** @format int32 */ spatialLayer: number; /** @format int32 */ temporalLayer?: number; }, params?: RequestParams) => Promise>; /** * No description * * @tags consumer * @name RequestConsumerKeyFrame * @summary Request a key frame * @request POST:/consumer/{consumerId}/key-frame * @secure */ requestConsumerKeyFrame: (consumerId: UuidV4, params?: RequestParams) => Promise>; }; dataConsumer: { /** * No description * * @tags dataConsumer * @name CreateDataConsumer * @summary Create a data consumer * @request POST:/data-consumer * @secure */ createDataConsumer: (data: { dataProducerId: DataProducerId; transportId: UuidV4; appData?: DataConsumerAppData; ordered?: boolean; }, params?: RequestParams) => Promise>; }; transport: { /** * No description * * @tags transport * @name CreateTransport * @summary Create a transport * @request POST:/transport * @secure */ createTransport: (data: { localDirection: TransportDirection; tcpOnly?: boolean; }, params?: RequestParams) => Promise>; /** * No description * * @tags transport * @name GetTransportIceParameters * @summary Get ICE parameters * @request GET:/transport/{transportId}/ice-parameters * @secure */ getTransportIceParameters: (transportId: UuidV4, params?: RequestParams) => Promise>; /** * No description * * @tags transport * @name ConnectTransport * @summary Connect a transport (DTLS) * @request PUT:/transport/{transportId}/connect * @secure */ connectTransport: (transportId: UuidV4, data: { dtlsParameters: DtlsParameters; }, params?: RequestParams) => Promise>; /** * No description * * @tags transport * @name ProduceMediaToTransport * @summary Produce media over transport * @request PUT:/transport/{transportId}/media-producer * @secure */ produceMediaToTransport: (transportId: UuidV4, data: { kind: MediaKind; rtpParameters: RtpParameters; appData: TProducerAppData; /** Force close existing producer with matching identifiers before creating a new one. */ forceCloseExisting?: boolean; }, params?: RequestParams) => Promise>; /** * No description * * @tags transport * @name ProduceDataToTransport * @summary Produce data over transport * @request PUT:/transport/{transportId}/data-producer * @secure */ produceDataToTransport: (transportId: UuidV4, data: { label: PeerDataProducerLabels; sctpStreamParameters?: SctpStreamParameters; appData?: DataConsumerAppData; }, params?: RequestParams) => Promise>; /** * No description * * @tags transport * @name CloseTransport * @summary Close transport * @request DELETE:/transport/{transportId} * @secure */ closeTransport: (transportId: UuidV4, params?: RequestParams) => Promise>; }; }