Data type definitions

Use the Realtime Media Streams (RTMS) data type definitions included here as a reference for event signaling and metadata requests and responses.

Use integers for message and event types

For data type definitions, use the representative enum integers.

Example: Send msg_type: 1 ✓ not msg_type: SIGNALING_HAND_SHAKE_REQ

RTMS_MESSAGE_TYPE

Indicates the type of message in signaling handshake requests and responses, event subscription requests, metadata exchanges, and session status control commands.

enum RTMS_MESSAGE_TYPE
{
   UNDEFINED = 0,
   SIGNALING_HAND_SHAKE_REQ = 1,   // Signaling connection handshake request
   SIGNALING_HAND_SHAKE_RESP = 2,  // Response to signaling connection handshake request
   DATA_HAND_SHAKE_REQ = 3,        // Media data connection handshake request
   DATA_HAND_SHAKE_RESP = 4,       // Response of media data connection handshake request
   EVENT_SUBSCRIPTION = 5,     	   // Events to subscribe or unsubscribe to
   EVENT_UPDATE = 6,               // Specific event occurred
   CLIENT_READY_ACK = 7,           // Client ready to receive media data
   STREAM_STATE_UPDATE = 8,        // Stream state changed
   SESSION_STATE_UPDATE = 9,       // Session state updated, e.g. paused/resumed
   SESSION_STATE_REQ = 10,    	   // Request the session state
   SESSION_STATE_RESP = 11,        // Response of the session state request
   KEEP_ALIVE_REQ = 12,            // Keep-alive request message
   KEEP_ALIVE_RESP = 13,           // Keep-alive response message
   MEDIA_DATA_AUDIO = 14,          // Audio data is being transmitted
   MEDIA_DATA_VIDEO = 15,          // Video data is being transmitted
   MEDIA_DATA_SHARE = 16,          // Sharing data is being transmitted
   MEDIA_DATA_TRANSCRIPT = 17,     // Transcripts are being transmitted
   MEDIA_DATA_CHAT = 18,           // Chat messages are being transmitted
   STREAM_STATE_REQ = 19,          // Request the stream state
   STREAM_STATE_RESP = 20,         // Response to the stream state request
   STREAM_CLOSE_REQ = 21,          // Close stream request from receiver
   STREAM_CLOSE_RESP = 22,         // Response of the close stream request
   META_DATA_AUDIO = 23,           // Audio-related metadata is being transmitted
   META_DATA_VIDEO = 24,           // Reserved. Video-related metadata is being transmitted
   META_DATA_SHARE = 25,           // Reserved. Sharing-related metadata is being transmitted
   META_DATA_TRANSCRIPT = 26,      // Reserved. Transcript-related metadata is being transmitted
   META_DATA_CHAT = 27,            // Reserved. Chat-related metadata is being transmitted
   VIDEO_SUBSCRIPTION_REQ = 28,    // Subscribe or unsubscribe from a user's video
   VIDEO_SUBSCRIPTION_RESP = 29    // Response of video subscribe/unsubscribe request
}

RTMS_EVENT_TYPE

Indicates the type of event captured in the metadata from the signaling connection.

enum RTMS_EVENT_TYPE
{
    UNDEFINED = 0,
    FIRST_PACKET_TIMESTAMP = 1,      // Indicates the first packet capture timestamp
    ACTIVE_SPEAKER_CHANGE = 2,       // Indicates the most recent active speaker
    PARTICIPANT_JOIN = 3,            // New participant joined this meeting
    PARTICIPANT_LEAVE = 4,           // Participant is leaving this meeting
    SHARING_START = 5,               // Sharing has started in the meeting
    SHARING_STOP = 6,                // Sharing has stopped in the meeting
    MEDIA_CONNECTION_INTERRUPTED = 7, // A media type connection was interrupted
    PARTICIPANT_VIDEO_ON = 8,         // A participant's camera is turned on
    PARTICIPANT_VIDEO_OFF = 9         // A participant's camera is turned off
}

RTMS_ZCC_VOICE_EVENT_TYPE

Indicates the type of event for Zoom Contact Center voice sessions.

enum RTMS_ZCC_VOICE_EVENT_TYPE
{
    UNDEFINED = 0,
    CONSUMER_ANSWERED = 8,                   // A consumer answered a call
    CONSUMER_END = 9,                        // A consumer ended a call
    USER_ANSWERED = 10,                      // A user answered a call, e.g. Agent
    USER_END = 11,                           // A user ended a call
    USER_HOLD = 12,                          // A user placed a call on hold
    USER_UNHOLD = 13,                        // A user resumed a call from hold
    MONITOR_STARTED = 14,
    MONITOR_TRANSITIONED = 15,
    MONITOR_ENDED = 16,
    TAKEOVER_STARTED = 17,
    TRANSFER_INITIATED = 18,
    TRANSFER_CANCELED = 19,
    TRANSFER_ACCEPTED = 20,
    TRANSFER_COMPLETED = 21,
    TRANSFER_REJECTED = 22,
    TRANSFER_TIMEOUT = 23,
    CONFERENCE_CANCELED = 24,
    CONFERENCE_PARTICIPANT_CANCELED = 25,
    CONFERENCE_PARTICIPANT_INVITED = 26,
    CONFERENCE_PARTICIPANT_REJECTED = 27,
    CONFERENCE_PARTICIPANT_TIMEOUT = 28,
    CONFERENCE_PARTICIPANT_LEFT = 29,
}

RTMS_STATUS_CODE

Indicates the status of handshake requests.

enum RTMS_STATUS_CODE
{
    STATUS_OK = 0,
    STATUS_INVALID_MESSAGE_TYPE = 1,
    STATUS_INVALID_RTMS_STREAM_ID = 2,
    STATUS_INVALID_SIGNATURE = 3,
    STATUS_INVALID_PAYLOAD = 4,
    STATUS_INVALID_EVENTS = 5,
    STATUS_INVALID_EVENT_TYPE = 6,
    STATUS_INVALID_MEDIA_TYPE = 7,
    STATUS_DUPLICATE_SIGNAL_REQUEST = 8,
    STATUS_MEDIA_TYPE_AUDIO_NOT_SUPPORT = 9,
    STATUS_MEDIA_TYPE_VIDEO_NOT_SUPPORT = 10,
    STATUS_MEDIA_TYPE_DESKSHARE_NOT_SUPPORT = 11,
    STATUS_MEDIA_TYPE_TRANSCRIPT_NOT_SUPPORT = 12,
    STATUS_MEDIA_TYPE_CHAT_NOT_SUPPORT = 13,
    STATUS_MEDIA_TYPE_INVALID_VALUE = 14,
    STATUS_MEDIA_DATA_ALL_CONNECTION_EXIST = 15,
    STATUS_DUPLICATE_MEDIA_DATA_CONNECTION = 16,
    STATUS_INVALID_MEDIA_PARAMS = 17,
    STATUS_INVALID_MEDIA_AUDIO_PARAMS = 18,
    STATUS_INVALID_MEDIA_AUDIO_CONTENT_TYPE = 19,
    STATUS_INVALID_MEDIA_AUDIO_SAMPLE_RATE = 20,
    STATUS_INVALID_MEDIA_AUDIO_CHANNEL = 21,
    STATUS_INVALID_MEDIA_AUDIO_CODEC = 22,
    STATUS_INVALID_MEDIA_AUDIO_DATA_OPT = 23,
    STATUS_INVALID_MEDIA_AUDIO_SEND_RATE = 24,
    STATUS_INVALID_MEDIA_VIDEO_PARAMS = 25,
    STATUS_INVALID_MEDIA_VIDEO_CONTENT_TYPE = 26,
    STATUS_INVALID_MEDIA_VIDEO_CODEC = 27,
    STATUS_INVALID_MEDIA_VIDEO_RESOLUTION = 28,
    STATUS_INVALID_MEDIA_VIDEO_DATA_OPT = 29,
    STATUS_INVALID_MEDIA_VIDEO_FPS = 30,
    STATUS_INVALID_MEDIA_DESKSHARE_PARAMS = 31,
    STATUS_INVALID_MEDIA_DESKSHARE_CONTENT_TYPE = 32,
    STATUS_INVALID_MEDIA_DESKSHARE_CODEC = 33,
    STATUS_INVALID_MEDIA_DESKSHARE_RESOLUTION = 34,
    STATUS_INVALID_MEDIA_DESKSHARE_FPS = 35,
    STATUS_INVALID_MEDIA_TRANSCRIPT_PARAMS = 36,
    STATUS_INVALID_MEDIA_TRANSCRIPT_CONTENT_TYPE = 37,
    STATUS_INVALID_MEDIA_CHAT_PARAMS = 38,
    STATUS_INVALID_MEDIA_CHAT_CONTENT_TYPE = 39,
    STATUS_INVALID_RTMS_SESSION_ID = 40,
    STATUS_INVALID_CLIENT_READY_ACK = 41,
    STATUS_INVALID_EVENT_SUBSCRIBE = 42,
    STATUS_INVALID_MEDIA_TRANSCRIPT_SOURCE_LANGUAGE = 43,
    STATUS_DUPLICATE_VIDEO_SUBSCRIPTION = 44,
    STATUS_INTERNAL_EXCEPTION = 45,
}

RTMS_SESSION_STATE

Indicates the current session state during RTMS session updates.

enum RTMS_SESSION_STATE
{
   INACTIVE = 0,     // Default state
   INITIALIZE = 1,   // A new session is initializing
   STARTED = 2,      // A new session is started
   PAUSED = 3,       // A session is paused
   RESUMED = 4,      // A session is resumed
   STOPPED = 5       // A session is stopped
}

RTMS_STREAM_STATE

Indicates the current state of the RTMS stream.

enum RTMS_STREAM_STATE
{
   INACTIVE = 0,     // Default state
   ACTIVE = 1,       // Media data has started to transmit, RTMS -> client
   INTERRUPTED = 2,  // Signal or data connection encountered a problem
   TERMINATING = 3,  // Notifying client stream needs to be terminated
   TERMINATED = 4,   // Stream is terminated
   PAUSED = 5,       // Stream is paused
   RESUMED = 6       // Stream is resumed
}

RTMS_STOP_REASON

Indicates the failure status for handshake requests or the reasons for a session to end.

enum RTMS_STOP_REASON
{
   // Default value, means no value
   UNDEFINED = 0,
   // Stopped when triggered by host, returned on session update message
   STOP_BC_HOST_TRIGGERED = 1,
   // Stopped when triggered by user, returned on session update message
   STOP_BC_USER_TRIGGERED = 2,
   // Stopped when app user left meeting, returned on session update message
   STOP_BC_USER_LEFT = 3,
   // Stopped when app user ejected by meeting host, returned on session update message
   STOP_BC_USER_EJECTED = 4,
   // Stopped when host disabled app user or entire app in the meeting, returned on session or stream update message
   STOP_BC_HOST_DISABLED_APP = 5,
   // Stopped when meeting is ended, returned on stream update message
   STOP_BC_MEETING_ENDED = 6,
   // Stopped when stream canceled by participant request, returned on stream update message
   STOP_BC_STREAM_CANCELED = 7,
   // Stopped when stream is revoked and assets must be deleted immediately, returned on stream update message
   STOP_BC_STREAM_REVOKED = 8,
   // Stopped when host disabled all apps in the meeting, returned on stream update message
   STOP_BC_ALL_APPS_DISABLED = 9,
   // Stopped due to internal exceptions, e.g. post asyncmq message failed, returned on stream update message
   STOP_BC_INTERNAL_EXCEPTION = 10,
   // Stopped when the connection timed out, returned on stream update message
   STOP_BC_CONNECTION_TIMEOUT = 11,
   // Stopped when an instance call connection is interrupted, e.g. media sessions, returned on stream update message
   STOP_BC_INSTANCE_CONNECTION_INTERRUPTED = 12,
   // Stopped when RTMS signaling connection is interrupted, returned on stream update message
   STOP_BC_SIGNAL_CONNECTION_INTERRUPTED = 13,
   // Stopped when RTMS data connection is interrupted, returned on stream update message
   STOP_BC_DATA_CONNECTION_INTERRUPTED = 14,
   // Stopped when RTMS signaling connection is closed abnormally by app, returned on stream update message
   STOP_BC_SIGNAL_CONNECTION_CLOSED_ABNORMALLY = 15,
   // Stopped when RTMS data connection is closed abnormally by app, returned on stream update message
   STOP_BC_DATA_CONNECTION_CLOSED_ABNORMALLY = 16,
   // Stopped when received exit signal, returned on stream update message
   STOP_BC_EXIT_SIGNAL = 17,
   // Stopped due to authentication failure
   STOP_BC_AUTHENTICATION_FAILURE = 18,
   // Stopped when awaiting reconnection timed out, e.g. signal connection interrupted
   STOP_BC_AWAIT_RECONNECTION_TIMEOUT = 19,
   // Stopped when received stream close request from receiver
   STOP_BC_RECEIVER_REQUEST_CLOSE = 20,
   // Stopped when triggered by customer, used for Zoom Contact Center Voice
   STOP_BC_CUSTOMER_DISCONNECTED = 21,
   // Stopped when triggered by agent, used for Zoom Contact Center Voice
   STOP_BC_AGENT_DISCONNECTED = 22,
   // Stopped when admin disabled app
   STOP_BC_ADMIN_DISABLED_APP = 23,
   // Stopped when no response for three consecutive keep-alive requests
   STOP_BC_KEEP_ALIVE_TIMEOUT = 24,
   // Stopped when triggered by API, for Zoom Contact Center Voice
   STOP_BC_MANUAL_API_TRIGGERED = 25,
   // Stopped when the queue doesn't support streaming, for Zoom Contact Center Voice
   STOP_BC_STREAMING_NOT_SUPPORTED = 26,
}

MEDIA_CONTENT_TYPE

Indicates the media formats in handshake requests and responses.

enum MEDIA_CONTENT_TYPE
{
   UNDEFINED = 0,
   RTP = 1,         // Real-time audio and video
   RAW_AUDIO = 2,   // Real-time audio
   RAW_VIDEO = 3,   // Real-time video
   FILE_STREAM = 4, // File stream
   TEXT = 5         // Media data is text based, such as Chat and Transcripts
}

MEDIA_DATA_TYPE

Indicates the media data formats in handshake requests and responses.

enum MEDIA_DATA_TYPE
{
   UNDEFINED = 0,
   AUDIO = 0x01,           // 1
   VIDEO = 0x01 << 1,      // 2
   DESKSHARE = 0x01 << 2,  // 4
   TRANSCRIPT = 0x01 << 3, // 8
   CHAT = 0x01 << 4,       // 16
   ALL = 0x01 << 5,        // 32
}

MEDIA_DATA_OPTION

Indicates the media parameters for the audio and video media connections in handshake requests and responses.

enum MEDIA_DATA_OPTION
{
   UNDEFINED = 0,
   // Data will be a mixed audio stream, only one data packet message will be sent out within a specific transmission interval
   AUDIO_MIXED_STREAM = 1,
   // Data will be multiple user audio streams, one or multiple data packet message(s) will be sent out within a specific transmission interval
   AUDIO_MULTI_STREAMS = 2,
   // Data will be single video stream of present active speaker, no subscription needed
   VIDEO_SINGLE_ACTIVE_STREAM = 3,
   // Data will be single video stream of a specified individual, manual subscription is required and allows subscription to only one individual at a time
   VIDEO_SINGLE_INDIVIDUAL_STREAM = 4,
}

MEDIA_PAYLOAD_TYPE

Indicates the media payload formats in handshake requests and responses.

enum MEDIA_PAYLOAD_TYPE
{
   UNDEFINED = 0,
   L16 = 1,  // Audio, uncompressed raw data
   G711 = 2, // Audio,
   G722 = 3, // Audio,
   OPUS = 4, // Audio,
   JPG = 5,  // Video and Sharing, when fps <= 5
   PNG = 6,  // Video and Sharing, when fps <= 5
   H264 = 7  // Video and Sharing, when fps > 5
}

MEDIA_RESOLUTION

Indicates the media resolution for the audio, video, and screenshare media connections in handshake requests and responses.

enum MEDIA_RESOLUTION
{
   SD = 1,    // 480p or 360p, 854x480 or 640x360
   HD = 2,    // 720p, 1280 x 720
   FHD = 3,   // 1080p, 1920 x 1080
   QHD = 4    // 2K, 2560 x 1440
}

AUDIO_SAMPLE_RATE

Indicates the audio sample rate for the audio object in handshake requests and responses.

enum AUDIO_SAMPLE_RATE
{
   SR_8K = 0,
   SR_16K = 1,
   SR_32K = 2,
   SR_48K = 3
}

AUDIO_CHANNEL

Indicates the audio channel configuration for the audio object in handshake requests and responses.

enum AUDIO_CHANNEL
{
   MONO = 1,
   STEREO = 2
}

TRANSMISSION_PROTOCOL

Indicates the transmission protocol in handshake requests and responses.

Currently only WebSockets is supported.

enum TRANSMISSION_PROTOCOL
{
   WEBSOCKET = 1,
   RTMP = 2,
   UDP = 3,
   WEBRTC = 4
}

RTMS_DATA_MESSAGE_ATTRIBUTE

Indicates the attribute of a data message, used to signal whether the data is new, an update, or a deletion.

enum RTMS_DATA_MESSAGE_ATTRIBUTE
{
    ATTR_NONE = 0,
    ATTR_NEW = 1,
    ATTR_UPDATE = 2,
    ATTR_DELETE = 3,
}

RTMS_TRANSCRIPT_LANGUAGE

Indicates the language of the transcript in handshake requests and responses.

enum RTMS_TRANSCRIPT_LANGUAGE
{
    LANGUAGE_ID_NONE = -1,
    LANGUAGE_ID_ARABIC = 0,
    LANGUAGE_ID_BENGALI = 1,
    LANGUAGE_ID_CANTONESE = 2,
    LANGUAGE_ID_CATALAN = 3,
    LANGUAGE_ID_CHINESE_SIMPLIFIED = 4,
    LANGUAGE_ID_CHINESE_TRADITIONAL = 5,
    LANGUAGE_ID_CZECH = 6,
    LANGUAGE_ID_DANISH = 7,
    LANGUAGE_ID_DUTCH = 8,
    LANGUAGE_ID_ENGLISH = 9,
    LANGUAGE_ID_ESTONIAN = 10,
    LANGUAGE_ID_FINNISH = 11,
    LANGUAGE_ID_FRENCH_CANADA = 12,
    LANGUAGE_ID_FRENCH_FRANCE = 13,
    LANGUAGE_ID_GERMAN = 14,
    LANGUAGE_ID_HEBREW = 15,
    LANGUAGE_ID_HINDI = 16,
    LANGUAGE_ID_HUNGARIAN = 17,
    LANGUAGE_ID_INDONESIAN = 18,
    LANGUAGE_ID_ITALIAN = 19,
    LANGUAGE_ID_JAPANESE = 20,
    LANGUAGE_ID_KOREAN = 21,
    LANGUAGE_ID_MALAY = 22,
    LANGUAGE_ID_PERSIAN = 23,
    LANGUAGE_ID_POLISH = 24,
    LANGUAGE_ID_PORTUGUESE = 25,
    LANGUAGE_ID_ROMANIAN = 26,
    LANGUAGE_ID_RUSSIAN = 27,
    LANGUAGE_ID_SPANISH = 28,
    LANGUAGE_ID_SWEDISH = 29,
    LANGUAGE_ID_TAGALOG = 30,
    LANGUAGE_ID_TAMIL = 31,
    LANGUAGE_ID_TELUGU = 32,
    LANGUAGE_ID_THAI = 33,
    LANGUAGE_ID_TURKISH = 34,
    LANGUAGE_ID_UKRAINIAN = 35,
    LANGUAGE_ID_VIETNAMESE = 36
}