# 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. ```cpp 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. ```cpp 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. ```cpp 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. ```cpp 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. ```cpp 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. ```cpp 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. ```cpp 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. ```cpp 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. ```cpp 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. ```cpp 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. ```cpp 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. ```cpp 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. ```cpp 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. ```cpp enum AUDIO_CHANNEL { MONO = 1, STEREO = 2 } ``` ## TRANSMISSION_PROTOCOL Indicates the transmission protocol in handshake requests and responses. > Currently only WebSockets is supported. ```cpp 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. ```cpp 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. ```cpp 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 } ```