```
{
"openrpc": "1.3.2",
"info": {
"title": "AAMP Player JSON-RPC API",
"version": "1.0.0",
"description": "WebSocket-based JSON-RPC 2.0 API for controlling an AAMP media player instance.\n\nEndpoint: ws://<host>:10101\n\nSession lifecycle: openSession -> configureSession (optional) -> playback methods -> closeSession"
},
"servers": [
{
"name": "AAMPIPALauncher",
"url": "ws://localhost:10101"
}
],
"components": {
"schemas": {
"PlayerState": {
"title": "PlayerState",
"type": "string",
"description": "AAMP player lifecycle state",
"enum": [
"idle",
"initializing",
"initialized",
"preparing",
"prepared",
"buffering",
"paused",
"seeking",
"playing",
"stopping",
"stopped",
"complete",
"error",
"released",
"blocked"
]
},
"AudioTrack": {
"title": "AudioTrack",
"type": "object",
"required": [
"index",
"language"
],
"properties": {
"index": {
"type": "integer",
"description": "Zero-based track index"
},
"language": {
"type": "string",
"description": "ISO 639 language code"
},
"rendition": {
"type": "string",
"description": "Rendition label (e.g. main, alternate, commentary)"
},
"label": {
"type": "string",
"description": "Human-readable track label"
},
"codec": {
"type": "string",
"description": "Audio codec identifier (e.g. mp4a.40.2, ec-3)"
},
"type": {
"type": "string",
"description": "Audio type (e.g. AUDIO_STEREO, AUDIO_DOLBY_ATMOS)"
},
"channels": {
"type": "integer",
"description": "Number of audio channels"
},
"bitrate": {
"type": "integer",
"description": "Track bitrate in bps"
}
}
},
"TextTrack": {
"title": "TextTrack",
"type": "object",
"required": [
"index",
"language"
],
"properties": {
"index": {
"type": "integer",
"description": "Zero-based track index"
},
"language": {
"type": "string",
"description": "ISO 639 language code"
},
"rendition": {
"type": "string",
"description": "Rendition label"
},
"label": {
"type": "string",
"description": "Human-readable track label"
},
"type": {
"type": "string",
"description": "Subtitle format (e.g. CLOSED_CAPTIONS, SUBTITLES, WEBVTT, TTML)"
}
}
},
"SuccessResult": {
"title": "SuccessResult",
"type": "object",
"required": [
"success"
],
"properties": {
"success": {
"type": "boolean",
"enum": [
true
]
}
}
}
}
},
"methods": [
{
"name": "org.rdk.player.openSession",
"summary": "Open a new player session",
"description": "Allocates a player instance and associates it with the calling WebSocket connection. Must be called before any playback or configuration method. Returns a sessionId that is echoed back in all subsequent responses for correlation.",
"tags": [
{
"name": "Session Management"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "instanceId",
"required": true,
"description": "Client-supplied player instance identifier.",
"schema": {
"type": "string"
}
},
{
"name": "displayId",
"required": true,
"description": "Display/window identifier to associate with this player instance.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "openSessionResult",
"schema": {
"type": "object",
"required": [
"sessionId",
"status"
],
"properties": {
"sessionId": {
"type": "string",
"description": "Session identifier to use in subsequent calls"
},
"status": {
"type": "boolean"
}
}
}
},
"examples": [
{
"name": "openSessionExample",
"params": [
{
"name": "instanceId",
"value": "123-1232-321312-3123"
},
{
"name": "displayId",
"value": "wst-mywindow"
}
],
"result": {
"name": "openSessionResult",
"value": {
"sessionId": "session_1783267426",
"status": true
}
}
}
]
},
{
"name": "org.rdk.player.configureSession",
"summary": "Apply configuration to an open session",
"description": "Applies AAMP configuration key-value pairs to the session. Must be called after openSession and before tune.",
"tags": [
{
"name": "Session Management"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "config",
"required": true,
"description": "AAMP configuration block as a JSON object or JSON-encoded string.",
"schema": {
"oneOf": [
{
"type": "object"
},
{
"type": "string"
}
]
}
}
],
"result": {
"name": "configureSessionResult",
"schema": {
"type": "object",
"required": [
"sessionId",
"success"
],
"properties": {
"sessionId": {
"type": "string"
},
"success": {
"type": "boolean"
}
}
}
},
"examples": [
{
"name": "configureSessionExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "config",
"value": {
"networkTimeout": 10,
"downloadBuffer": 30,
"preferredDRM": "widevine",
"initialBitrate": 2000000
}
}
],
"result": {
"name": "configureSessionResult",
"value": {
"sessionId": "sess-abc-001",
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.closeSession",
"summary": "Close and release a player session",
"description": "Stops any active playback, releases decoder and DRM resources, and destroys the session. After this call the sessionId is invalid. The WebSocket connection itself is not closed.",
"tags": [
{
"name": "Session Management"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "closeSessionResult",
"schema": {
"type": "object",
"required": [
"status"
],
"properties": {
"message": {
"type": "string",
"description": "Human-readable status message"
},
"status": {
"type": "boolean"
}
}
}
},
"examples": [
{
"name": "closeSessionExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "closeSessionResult",
"value": {
"message": "Session closed successfully.",
"status": true
}
}
}
]
},
{
"name": "org.rdk.player.play",
"summary": "Start playback of a media stream",
"description": "Instructs the AAMP player to tune to the given URL. Optionally auto-starts playback and accepts a content type hint and trace UUID for diagnostics.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "url",
"required": true,
"description": "Media manifest URL (HLS, DASH, progressive MP4, etc.)",
"schema": {
"type": "string",
"format": "uri"
}
},
{
"name": "autoPlay",
"required": false,
"description": "Start playback immediately after buffering.",
"schema": {
"type": "boolean",
"default": true
}
},
{
"name": "contentType",
"required": false,
"description": "Stream type hint.",
"schema": {
"type": "string",
"enum": [
"VOD",
"LIVE",
"LINEAR_TV",
"IVOD",
"EAS",
"DVR",
"CDVR",
"IPVideo",
"OTT",
"SLE"
]
}
},
{
"name": "traceUUID",
"required": false,
"description": "Correlation UUID forwarded to AAMP diagnostics and telemetry.",
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"result": {
"name": "playResult",
"schema": {
"type": "object",
"required": [
"status"
],
"properties": {
"message": {
"type": "string",
"description": "Human-readable status message"
},
"status": {
"type": "boolean"
}
}
}
},
"examples": [
{
"name": "playExample",
"params": [
{
"name": "url",
"value": "http://dash.akamaized.net/dash264/TestCases/1a/qualcomm/1/MultiRate.mpd"
},
{
"name": "sessionId",
"value": "session_1783267426"
}
],
"result": {
"name": "playResult",
"value": {
"message": "Content playback started.",
"status": true
}
}
}
]
},
{
"name": "org.rdk.player.stop",
"summary": "Stop playback",
"description": "Stops the current playback and releases decoder resources. The player returns to the idle state.",
"tags": [
{
"name": "Playback Control"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "stopResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "stopExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "stopResult",
"value": {
"success": true
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.seek",
"summary": "Seek to a position",
"description": "Seeks to an absolute position in the stream (in seconds from the start). For live streams, position is relative to the live edge.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "position",
"required": true,
"description": "Target seek position in seconds (>= 0).",
"schema": {
"type": "number",
"minimum": 0
}
},
{
"name": "keepPaused",
"required": false,
"description": "If true, the player remains paused after seeking.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"result": {
"name": "seekResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "seekExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "position",
"value": 120.0
},
{
"name": "keepPaused",
"value": false
}
],
"result": {
"name": "seekResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.seekToLive",
"summary": "Seek to the live edge",
"description": "Moves playback to the current live edge of a live or time-shifted stream.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "keepPaused",
"required": false,
"description": "If true, the player remains paused after seeking to live.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"result": {
"name": "seekToLiveResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "seekToLiveExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "keepPaused",
"value": false
}
],
"result": {
"name": "seekToLiveResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.setRate",
"summary": "Set playback rate / trick-play speed",
"description": "Sets the playback rate for trick-play. Rate 1=normal, 0=pause, 2=2x fast-forward, -2=2x rewind.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "rate",
"required": true,
"description": "Playback rate multiplier.",
"schema": {
"type": "number"
}
},
{
"name": "overshootCorrection",
"required": false,
"description": "Overshoot correction offset in milliseconds applied during trick play.",
"schema": {
"type": "integer",
"default": 0
}
}
],
"result": {
"name": "setRateResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setRateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "rate",
"value": 2
},
{
"name": "overshootCorrection",
"value": 0
}
],
"result": {
"name": "setRateResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.setPlaybackSpeed",
"summary": "Set playback speed",
"description": "Sets the playback speed directly (equivalent to setRate without the overshoot correction option).",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "speed",
"required": true,
"description": "Playback speed multiplier (e.g. 1.0, 0.5, 2.0).",
"schema": {
"type": "number"
}
}
],
"result": {
"name": "setPlaybackSpeedResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setPlaybackSpeedExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "speed",
"value": 0.5
}
],
"result": {
"name": "setPlaybackSpeedResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.pauseAt",
"summary": "Schedule a pause at a future position",
"description": "Requests the player to automatically pause when playback reaches the specified position. Pass a negative value to cancel a previously scheduled pause.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "position",
"required": true,
"description": "Position in seconds at which to pause. Pass a negative value to cancel.",
"schema": {
"type": "number"
}
}
],
"result": {
"name": "pauseAtResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "pauseAtExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "position",
"value": 300.0
}
],
"result": {
"name": "pauseAtResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.setRateAndSeek",
"summary": "Atomically set rate and seek",
"description": "Combines a rate change and a seek into a single atomic operation, avoiding the visual glitch that can occur when calling them separately.",
"tags": [
{
"name": "Playback Control"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "rate",
"required": true,
"description": "Target playback rate (e.g. 1, -2, 4).",
"schema": {
"type": "integer"
}
},
{
"name": "position",
"required": true,
"description": "Target position in seconds (>= 0).",
"schema": {
"type": "number",
"minimum": 0
}
}
],
"result": {
"name": "setRateAndSeekResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setRateAndSeekExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "rate",
"value": 1
},
{
"name": "position",
"value": 60.0
}
],
"result": {
"name": "setRateAndSeekResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getState",
"summary": "Get current player state",
"description": "Returns the current lifecycle state of the AAMP player instance.",
"tags": [
{
"name": "Playback State"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getStateResult",
"schema": {
"type": "object",
"required": [
"state"
],
"properties": {
"state": {
"$ref": "#/components/schemas/PlayerState"
}
}
}
},
"examples": [
{
"name": "getStateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getStateResult",
"value": {
"state": "playing"
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getPlaybackPosition",
"summary": "Get current playback position",
"tags": [
{
"name": "Playback State"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getPlaybackPositionResult",
"schema": {
"type": "object",
"required": [
"position"
],
"properties": {
"position": {
"type": "number",
"description": "Current playback position in seconds"
}
}
}
},
"examples": [
{
"name": "getPlaybackPositionExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getPlaybackPositionResult",
"value": {
"position": 120.5
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getPlaybackDuration",
"summary": "Get total stream duration",
"description": "Returns -1 for live streams without a known duration.",
"tags": [
{
"name": "Playback State"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getPlaybackDurationResult",
"schema": {
"type": "object",
"required": [
"duration"
],
"properties": {
"duration": {
"type": "number",
"description": "Total stream duration in seconds; -1 for unbounded live streams"
}
}
}
},
"examples": [
{
"name": "getPlaybackDurationExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getPlaybackDurationResult",
"value": {
"duration": 3600.0
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getPlaybackRate",
"summary": "Get current playback rate",
"tags": [
{
"name": "Playback State"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getPlaybackRateResult",
"schema": {
"type": "object",
"required": [
"rate"
],
"properties": {
"rate": {
"type": "number",
"description": "Current playback rate multiplier (1.0 = normal, 0 = paused)"
}
}
}
},
"examples": [
{
"name": "getPlaybackRateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getPlaybackRateResult",
"value": {
"rate": 1.0
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.isLive",
"summary": "Check if stream is live",
"tags": [
{
"name": "Playback State"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "isLiveResult",
"schema": {
"type": "object",
"required": [
"isLive"
],
"properties": {
"isLive": {
"type": "boolean",
"description": "true if the current stream is a live broadcast"
}
}
}
},
"examples": [
{
"name": "isLiveExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "isLiveResult",
"value": {
"isLive": false
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setVideoMute",
"summary": "Mute or unmute the video plane",
"description": "Blanks (mutes) or restores the video plane without affecting audio.",
"tags": [
{
"name": "Video"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "muted",
"required": true,
"description": "true to blank the video plane; false to restore it.",
"schema": {
"type": "boolean"
}
}
],
"result": {
"name": "setVideoMuteResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setVideoMuteExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "muted",
"value": true
}
],
"result": {
"name": "setVideoMuteResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getVideoMute",
"summary": "Get video mute state",
"tags": [
{
"name": "Video"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getVideoMuteResult",
"schema": {
"type": "object",
"required": [
"muted"
],
"properties": {
"muted": {
"type": "boolean",
"description": "true if the video plane is currently muted (blanked)"
}
}
}
},
"examples": [
{
"name": "getVideoMuteExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getVideoMuteResult",
"value": {
"muted": false
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setAudioVolume",
"summary": "Set audio volume",
"tags": [
{
"name": "Audio"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "volume",
"required": true,
"description": "Volume level from 0 (muted) to 100 (maximum).",
"schema": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
}
],
"result": {
"name": "setAudioVolumeResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setAudioVolumeExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "volume",
"value": 80
}
],
"result": {
"name": "setAudioVolumeResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getAudioVolume",
"summary": "Get audio volume",
"tags": [
{
"name": "Audio"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getAudioVolumeResult",
"schema": {
"type": "object",
"required": [
"volume"
],
"properties": {
"volume": {
"type": "integer",
"description": "Current volume level (0-100)"
}
}
}
},
"examples": [
{
"name": "getAudioVolumeExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getAudioVolumeResult",
"value": {
"volume": 80
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getAudioLanguage",
"summary": "Get currently active audio language",
"tags": [
{
"name": "Audio"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getAudioLanguageResult",
"schema": {
"type": "object",
"required": [
"language"
],
"properties": {
"language": {
"type": "string",
"description": "ISO 639 language code of the active audio track (e.g. en)"
}
}
}
},
"examples": [
{
"name": "getAudioLanguageExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getAudioLanguageResult",
"value": {
"language": "en"
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getAvailableAudioTracks",
"summary": "List available audio tracks",
"description": "Returns all audio tracks present in the current manifest.",
"tags": [
{
"name": "Audio"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "allTracks",
"required": false,
"description": "true to include tracks from all DASH periods, not just the current one.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"result": {
"name": "getAvailableAudioTracksResult",
"schema": {
"type": "object",
"required": [
"tracks"
],
"properties": {
"tracks": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AudioTrack"
},
"description": "Array of available audio track descriptors"
}
}
}
},
"examples": [
{
"name": "getAvailableAudioTracksExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "allTracks",
"value": false
}
],
"result": {
"name": "getAvailableAudioTracksResult",
"value": {
"tracks": [
{
"index": 0,
"language": "en",
"rendition": "main",
"label": "English",
"codec": "mp4a.40.2",
"type": "AUDIO_STEREO",
"channels": 2,
"bitrate": 128000
},
{
"index": 1,
"language": "fra",
"rendition": "main",
"label": "French",
"codec": "mp4a.40.2",
"type": "AUDIO_STEREO",
"channels": 2,
"bitrate": 128000
}
]
}
}
}
]
},
{
"name": "org.rdk.player.setAudioTrack",
"summary": "Select an audio track by index",
"description": "Switches to the audio track at the specified index from getAvailableAudioTracks.",
"tags": [
{
"name": "Audio"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "trackId",
"required": true,
"description": "Zero-based index of the target audio track (>= 0).",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setAudioTrackResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setAudioTrackExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "trackId",
"value": 1
}
],
"result": {
"name": "setAudioTrackResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getAudioTrack",
"summary": "Get index of active audio track",
"tags": [
{
"name": "Audio"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getAudioTrackResult",
"schema": {
"type": "object",
"required": [
"trackId"
],
"properties": {
"trackId": {
"type": "integer",
"description": "Zero-based index of the currently active audio track"
}
}
}
},
"examples": [
{
"name": "getAudioTrackExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getAudioTrackResult",
"value": {
"trackId": 0
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getAudioTrackInfo",
"summary": "Get details of active audio track",
"tags": [
{
"name": "Audio"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getAudioTrackInfoResult",
"schema": {
"type": "object",
"required": [
"trackInfo"
],
"properties": {
"trackInfo": {
"$ref": "#/components/schemas/AudioTrack"
}
}
}
},
"examples": [
{
"name": "getAudioTrackInfoExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getAudioTrackInfoResult",
"value": {
"trackInfo": {
"index": 0,
"language": "en",
"rendition": "main",
"label": "English",
"codec": "mp4a.40.2",
"type": "AUDIO_STEREO",
"channels": 2,
"bitrate": 128000
}
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setSubtitleMute",
"summary": "Mute or unmute subtitles",
"description": "Enables or suppresses subtitle rendering without changing the active text track selection.",
"tags": [
{
"name": "Subtitles"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "muted",
"required": true,
"description": "true to hide subtitles; false to show them.",
"schema": {
"type": "boolean"
}
}
],
"result": {
"name": "setSubtitleMuteResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setSubtitleMuteExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "muted",
"value": true
}
],
"result": {
"name": "setSubtitleMuteResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getAvailableTextTracks",
"summary": "List available text/subtitle tracks",
"tags": [
{
"name": "Subtitles"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "allTracks",
"required": false,
"description": "true to include tracks from all DASH periods.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"result": {
"name": "getAvailableTextTracksResult",
"schema": {
"type": "object",
"required": [
"tracks"
],
"properties": {
"tracks": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TextTrack"
}
}
}
}
},
"examples": [
{
"name": "getAvailableTextTracksExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "allTracks",
"value": false
}
],
"result": {
"name": "getAvailableTextTracksResult",
"value": {
"tracks": [
{
"index": 0,
"language": "en",
"rendition": "main",
"label": "English",
"type": "SUBTITLES"
},
{
"index": 1,
"language": "spa",
"rendition": "main",
"label": "Spanish",
"type": "SUBTITLES"
}
]
}
}
}
]
},
{
"name": "org.rdk.player.setTextTrack",
"summary": "Select a text track by index",
"tags": [
{
"name": "Subtitles"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "trackId",
"required": true,
"description": "Zero-based index of the target text track (>= 0).",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setTextTrackResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setTextTrackExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "trackId",
"value": 0
}
],
"result": {
"name": "setTextTrackResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getTextTrack",
"summary": "Get index of active text track",
"tags": [
{
"name": "Subtitles"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getTextTrackResult",
"schema": {
"type": "object",
"required": [
"trackId"
],
"properties": {
"trackId": {
"type": "integer",
"description": "Zero-based index of the currently active text track"
}
}
}
},
"examples": [
{
"name": "getTextTrackExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getTextTrackResult",
"value": {
"trackId": 0
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.getVideoBitrate",
"summary": "Get current video bitrate",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getVideoBitrateResult",
"schema": {
"type": "object",
"required": [
"bitrate"
],
"properties": {
"bitrate": {
"type": "integer",
"description": "Current video bitrate in bits per second"
}
}
}
},
"examples": [
{
"name": "getVideoBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getVideoBitrateResult",
"value": {
"bitrate": 4000000
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setVideoBitrate",
"summary": "Lock the video bitrate",
"description": "Pins ABR to the profile closest to the specified bitrate. Pass 0 to re-enable automatic ABR.",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "bitrate",
"required": true,
"description": "Target bitrate in bps; 0 restores automatic ABR.",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setVideoBitrateResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setVideoBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "bitrate",
"value": 2000000
}
],
"result": {
"name": "setVideoBitrateResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getVideoBitrates",
"summary": "List all available video bitrates",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getVideoBitratesResult",
"schema": {
"type": "object",
"required": [
"bitrates"
],
"properties": {
"bitrates": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Available video bitrates in bps, ascending order"
}
}
}
},
"examples": [
{
"name": "getVideoBitratesExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getVideoBitratesResult",
"value": {
"bitrates": [
800000,
2000000,
4000000,
8000000
]
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setInitialBitrate",
"summary": "Set the startup bitrate hint",
"description": "Hints to AAMP which bitrate profile to select at the start of the next tune. ABR may switch away after the initial segments are downloaded.",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "bitrate",
"required": true,
"description": "Desired startup bitrate in bps.",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setInitialBitrateResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setInitialBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "bitrate",
"value": 2000000
}
],
"result": {
"name": "setInitialBitrateResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getInitialBitrate",
"summary": "Get the startup bitrate hint",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getInitialBitrateResult",
"schema": {
"type": "object",
"required": [
"bitrate"
],
"properties": {
"bitrate": {
"type": "integer",
"description": "Configured startup bitrate in bps"
}
}
}
},
"examples": [
{
"name": "getInitialBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getInitialBitrateResult",
"value": {
"bitrate": 2000000
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setMinimumBitrate",
"summary": "Set the ABR minimum bitrate floor",
"description": "Prevents AAMP from selecting any video profile below this bitrate during adaptive bitrate switching.",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "bitrate",
"required": true,
"description": "Minimum allowed bitrate in bps.",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setMinimumBitrateResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setMinimumBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "bitrate",
"value": 800000
}
],
"result": {
"name": "setMinimumBitrateResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getMinimumBitrate",
"summary": "Get the ABR minimum bitrate floor",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getMinimumBitrateResult",
"schema": {
"type": "object",
"required": [
"bitrate"
],
"properties": {
"bitrate": {
"type": "integer",
"description": "Configured minimum ABR bitrate in bps"
}
}
}
},
"examples": [
{
"name": "getMinimumBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getMinimumBitrateResult",
"value": {
"bitrate": 800000
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setMaximumBitrate",
"summary": "Set the ABR maximum bitrate ceiling",
"description": "Prevents AAMP from selecting any video profile above this bitrate during adaptive bitrate switching.",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "bitrate",
"required": true,
"description": "Maximum allowed bitrate in bps.",
"schema": {
"type": "integer",
"minimum": 0
}
}
],
"result": {
"name": "setMaximumBitrateResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setMaximumBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "bitrate",
"value": 8000000
}
],
"result": {
"name": "setMaximumBitrateResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getMaximumBitrate",
"summary": "Get the ABR maximum bitrate ceiling",
"tags": [
{
"name": "Bitrate / ABR"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getMaximumBitrateResult",
"schema": {
"type": "object",
"required": [
"bitrate"
],
"properties": {
"bitrate": {
"type": "integer",
"description": "Configured maximum ABR bitrate in bps"
}
}
}
},
"examples": [
{
"name": "getMaximumBitrateExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getMaximumBitrateResult",
"value": {
"bitrate": 8000000
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setLicenseServerURL",
"summary": "Set the DRM license server URL",
"description": "Overrides the license server URL for the active DRM system. Can be used to redirect license requests to a proxy.",
"tags": [
{
"name": "DRM"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "url",
"required": true,
"description": "License server URL (e.g. https://license.example.com/widevine).",
"schema": {
"type": "string",
"format": "uri"
}
}
],
"result": {
"name": "setLicenseServerURLResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setLicenseServerURLExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "url",
"value": "https://license.example.com/widevine"
}
],
"result": {
"name": "setLicenseServerURLResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getDRM",
"summary": "Get active DRM system",
"tags": [
{
"name": "DRM"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getDRMResult",
"schema": {
"type": "object",
"required": [
"drm"
],
"properties": {
"drm": {
"type": "string",
"description": "Name of the active DRM system",
"enum": [
"widevine",
"playready",
"clearkey",
"none"
]
}
}
}
},
"examples": [
{
"name": "getDRMExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getDRMResult",
"value": {
"drm": "widevine"
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setPreferredDRM",
"summary": "Set the preferred DRM system",
"description": "Tells AAMP which DRM system to prefer when multiple are available in the manifest.",
"tags": [
{
"name": "DRM"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "drmType",
"required": true,
"description": "DRM identifier.",
"schema": {
"type": "string",
"enum": [
"widevine",
"playready",
"clearkey"
]
}
}
],
"result": {
"name": "setPreferredDRMResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setPreferredDRMExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "drmType",
"value": "widevine"
}
],
"result": {
"name": "setPreferredDRMResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getAAMPConfig",
"summary": "Get current AAMP configuration",
"tags": [
{
"name": "Configuration"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getAAMPConfigResult",
"schema": {
"type": "object",
"required": [
"config"
],
"properties": {
"config": {
"type": "object",
"description": "Complete current AAMP configuration as a JSON object"
}
}
}
},
"examples": [
{
"name": "getAAMPConfigExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getAAMPConfigResult",
"value": {
"config": {
"networkTimeout": 10,
"downloadBuffer": 30
}
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.setAppName",
"summary": "Set the application name",
"description": "Sets a human-readable application name included in AAMP diagnostic logs and telemetry.",
"tags": [
{
"name": "Configuration"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "name",
"required": true,
"description": "Application name (e.g. MyStreamingApp).",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "setAppNameResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setAppNameExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "name",
"value": "MyStreamingApp"
}
],
"result": {
"name": "setAppNameResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.setPreferredLanguages",
"summary": "Set preferred audio/text language preferences",
"description": "Configures fine-grained language selection. All parameters are optional; omit to leave that dimension unchanged.",
"tags": [
{
"name": "Configuration"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "languageList",
"required": false,
"description": "Comma-separated ISO 639 language codes in priority order (e.g. en,fra,spa).",
"schema": {
"type": "string"
}
},
{
"name": "rendition",
"required": false,
"description": "Preferred rendition label (e.g. main, alternate).",
"schema": {
"type": "string"
}
},
{
"name": "type",
"required": false,
"description": "Preferred audio type (e.g. AUDIO_DOLBY_ATMOS, AUDIO_STEREO).",
"schema": {
"type": "string"
}
},
{
"name": "codecList",
"required": false,
"description": "Comma-separated preferred audio codecs (e.g. ec-3,mp4a).",
"schema": {
"type": "string"
}
},
{
"name": "labelList",
"required": false,
"description": "Comma-separated preferred HLS GROUP-ID or DASH label values.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "setPreferredLanguagesResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "setPreferredLanguagesExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
},
{
"name": "languageList",
"value": "en,fra,spa"
},
{
"name": "rendition",
"value": "main"
},
{
"name": "type",
"value": "AUDIO_STEREO"
},
{
"name": "codecList",
"value": "mp4a.40.2"
}
],
"result": {
"name": "setPreferredLanguagesResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getPreferredLanguages",
"summary": "Get the preferred language list",
"tags": [
{
"name": "Configuration"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "getPreferredLanguagesResult",
"schema": {
"type": "object",
"required": [
"languageList"
],
"properties": {
"languageList": {
"type": "string",
"description": "Comma-separated ISO 639 language codes in preference order"
}
}
}
},
"examples": [
{
"name": "getPreferredLanguagesExample",
"params": [
{
"name": "sessionId",
"value": "sess-abc-001"
}
],
"result": {
"name": "getPreferredLanguagesResult",
"value": {
"languageList": "en,fra"
}
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.register",
"summary": "Register to server-pushed event notifications",
"description": "After registering, the server pushes matching events as JSON-RPC notifications (no id field),
"tags": [
{
"name": "Event Register"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "id",
"required": true,
"description": "Identifier",
"schema": {
"type": "string"
}
},
{
"name": "event",
"required": true,
"description": "Event name (e.g. org.rdk.player.onProgress) or * for all events.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "registerResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "registerExample",
"params": [
{
"name": "id",
"value": "sess-abc-001"
},
{
"name": "event",
"value": "org.rdk.player.onProgress"
}
],
"result": {
"name": "registerResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.unregister",
"summary": "Unregister from event notifications",
"tags": [
{
"name": "Event UnRegister"
}
],
"paramStructure": "by-name",
"params": [
{
"name": "id",
"required": true,
"description": "Identifier.",
"schema": {
"type": "string"
}
},
{
"name": "event",
"required": true,
"description": "Event name to unregister from.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "unsubscribeResult",
"schema": {
"$ref": "#/components/schemas/SuccessResult"
}
},
"examples": [
{
"name": "unregisterExample",
"params": [
{
"name": "id",
"value": "sess-abc-001"
},
{
"name": "event",
"value": "org.rdk.player.onProgress"
}
],
"result": {
"name": "unregisterResult",
"value": {
"success": true
}
}
}
]
},
{
"name": "org.rdk.player.getListeners",
"summary": "List active event listeners",
"tags": [
{
"name": "Event Listeners"
}
],
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "listeners",
"schema": {
"type": "object",
"required": [
"listeners"
],
"properties": {
"eventlisteners": {
"type": "array",
"itemsdescription": {
"Active event listener registrations for this session",
"typeitems": "string"{
}"type": "object",
"descriptionrequired": ["event"Event names currently active for this client", "id"],
}
}
"properties": {
}
},
"examplesevent": [{
{
"nametype": "getListenersExamplestring",
"params": [
"description": "Registered event name (e.g. onProgress)"
{
"name": "sessionId"},
"valueid": "sess-abc-001"{
}
]"type": "string",
"result": {
"namedescription": "getListenersResult",
"value": {
Client registration identifier (e.g. events.1)"
"listeners": [ {
}
"event":
}
"org.rdk.player.onStateChanged",
"id":
"1"
}]
}
}
}
]},
"paramStructureexamples": "by-name"[
},
{
"name": "org.rdk.player.onTunedgetListenersExample",
"summaryparams": "Tune succeeded and playback is ready",[
"tags": [
{
{
"name": "NotificationssessionId",
}
],
"value": "xsess-serverabc-notification001": true,
"params": [
{}
"name": "sessionId"],
"requiredresult": true,{
"descriptionname": "Session identifier returned by openSession.getListenersResult",
"schemavalue": {
"typelisteners": "string"[
}
}
],
"result": {{ "event": "onAnomalyReport", "id": "events.1" },
"name { "event": "onBitrateChanged", "id": "onTunedParamsevents.1" },
"schema": { { "event": "onStateChanged", "id": "events.1" }
]
"type": "object" }
}
}
],
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.onTuneFailedonTuned",
"summary": "Tune failed succeeded and playback is ready",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "descriptiononTunedParams",
"schema": {
"type": "stringobject",
}
"description": "Human-readable error description" },
}
"paramStructure": "by-name"
},
{
"name": "codeonTuneFailed",
"schemasummary": {"Tune failed",
"tags": [
"type": "integer",
{
"descriptionname": "AAMP internal error codeNotifications"
}
}],
{"x-server-notification": true,
"name": "shouldRetry","params": [
{
"schemaname": {"sessionId",
"typerequired": "boolean"true,
"description": "trueSession ifidentifier thereturned application should retry the tune"by openSession.",
"schema": }{
}
"type": "string"
],
"result": { }
"name": "onTuneFailedParams"},
"schema": {
"typename": "objectdescription",
"propertiesschema": {
"descriptiontype": {"string",
"typedescription": "stringHuman-readable error description"
},
},
"code": {
{
"typename": "integercode",
},"schema": {
"shouldRetrytype": {
"integer",
"typedescription": "booleanAAMP internal error code"
}
},
}{
}
} "name": "shouldRetry",
{
"nameschema": "org.rdk.player.onStateChanged",{
"summary "type": "Player lifecycle state transition",
boolean",
"tagsdescription": [
{ "true if the application should retry the tune"
"name": "Notifications"}
}
],
"x-server-notificationresult": true,{
"params": [
{
"name"name": "sessionIdonTuneFailedParams",
"requiredschema": true,{
"descriptiontype": "Session identifier returned by openSession.object",
"schemaproperties": {
"typedescription": "string"
}
},
{
"name": "state",
"schematype": {
"$ref": "#/components/schemas/PlayerState""string"
}
},
],
"resultcode": {
"name": "onStateChangedParams",
"schema": {
"type": "objectinteger",
"properties": { },
"stateshouldRetry": {
"$reftype": "#/components/schemas/PlayerStateboolean"
}
}
}
}
},
{
"name": "org.rdk.player.onProgressonStateChanged",
"summary": "PeriodicPlayer playbacklifecycle heartbeat (~1 s interval)state transition",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "positionMsstate",
"schema": {
"type$ref": "number",#/components/schemas/PlayerState"
"description": "Current playback position in milliseconds"
}
}
}],
"result": {
"name": "durationMsonStateChangedParams",
"schema": {
"type": "numberobject",
"properties": {
"descriptionstate": "Total stream duration in ms; -1 for unbounded live"
{
"$ref": "#/components/schemas/PlayerState"
}
},
{}
}
"name": "speed"},
{
"schemaname": {"onProgress",
"summary": "Periodic playback heartbeat (~1 s interval)",
"typetags": "number",
[
{
"descriptionname": "Current playback speed multiplier""Notifications"
}
],
}"x-server-notification": true,
},"params": [
{
"name": "startMssessionId",
"schemarequired": {true,
"typedescription": "numberSession identifier returned by openSession.",
"descriptionschema": "Start of the seekable window in milliseconds {
"type": "string"
}
},
{
"name": "endMspositionMs",
"schema": {
"type": "number",
"description": "EndCurrent of the seekable windowplayback position in milliseconds"
}
},
{
"name": "videoBufferedMsdurationMs",
"schema": {
"type": "number",
"description": "VideoTotal datastream bufferedduration aheadin ofms; current-1 positionfor inunbounded mslive"
}
},
{
"name": "audioBufferedMsspeed",
"schema": {
"type": "number",
"description": "AudioCurrent dataplayback buffered ahead of current position in ms"
speed multiplier"
}
},
{
"name": "liveLatencyMsstartMs",
"schema": {
"type": "number",
"description": "DistanceStart fromof the liveseekable edgewindow in ms; 0 for VODmilliseconds"
}
},
{
"name": "profileBitrateendMs",
"schema": {
"type": "integernumber",
"description": "BitrateEnd of the selectedseekable videowindow profile in bpsmilliseconds"
}
},
{
"name": "networkBitratevideoBufferedMs",
"schema": {
"type": "integernumber",
"description": "Estimated download throughputVideo data buffered ahead of current position in bpsms"
}
},
],
{
"result": {
"name": "onProgressParamsaudioBufferedMs",
"schema": {
"type": "objectnumber",
"propertiesdescription": {
"Audio data buffered ahead of current position in ms"
}
"positionMs": {
},
{
"typename": "numberliveLatencyMs",
},"schema": {
"durationMstype": {
"number",
"typedescription": "numberDistance from the live edge in ms; 0 for VOD"
},
},
"speed": {
{
"typename": "numberprofileBitrate",
},"schema": {
"startMstype": {
"integer",
"typedescription": "numberBitrate of the selected video profile in bps"
},
},
"endMs": {
{
"typename": "numbernetworkBitrate",
},"schema": {
"videoBufferedMstype": {"integer",
"typedescription": "numberEstimated download throughput in bps"
}
}
],
"result": {
"audioBufferedMsname": {"onProgressParams",
"schema": {
"type": "numberobject",
},"properties": {
"liveLatencyMspositionMs": {
"type": "number"
},
"profileBitratedurationMs": {
"type": "integernumber"
},
"networkBitratespeed": {
"type": "integernumber"
},
}
"startMs": {
}
}
},"type": "number"
{
"name": "org.rdk.player.onEOS" },
"summary": "End of stream reached",
"tagsendMs": [{
{
"nametype": "Notificationsnumber"
},
],
"x-server-notificationvideoBufferedMs": true,{
"params": [
{"type": "number"
"name": "sessionId" },
"requiredaudioBufferedMs": true,{
"descriptiontype": "Session identifier returned by openSession.",
number"
},
"schemaliveLatencyMs": {
"type": "stringnumber"
},
}
],"profileBitrate": {
"result": {
"nametype": "onEOSParamsinteger",
"schema": },
"networkBitrate": {
"type": "objectinteger"
}
},
"paramStructure": "by-name" }
}
},
{
"name": "org.rdk.player.onSpeedChangedonEOS",
"summary": "EffectiveEnd playbackof speedstream changedreached",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "speedonEOSParams",
"schema": {
"schematype": {"object"
}
},
"typeparamStructure": "number"by-name"
},
{
"name": "onSpeedChanged",
"descriptionsummary": "NewEffective playback speed multiplier" changed",
"tags": [
{
} "name": "Notifications"
}
],
"resultx-server-notification": {true,
"nameparams": "onSpeedChangedParams",[
"schema": {
"typename": "objectsessionId",
"propertiesrequired": {true,
"speeddescription": {
"Session identifier returned by openSession.",
"typeschema": "number"{
}"type": "string"
}
},
}{
},
{
"name": "org.rdk.player.onBufferingChangedspeed",
"summaryschema": "Player entered or exited a buffering state",
{
"type": "number",
"tagsdescription": [
{"New playback speed multiplier"
"name": "Notifications"}
}
],
"x-server-notificationresult": true,{
"paramsname": ["onSpeedChangedParams",
"schema": {
"nametype": "sessionIdobject",
"requiredproperties": true,{
"descriptionspeed": "Session identifier returned by openSession.",
{
"schematype": {"number"
"type": "string"}
}
},
}
{},
{
"name": "bufferingonBufferingChanged",
"schemasummary": {
"type": "boolean"Player entered or exited a buffering state",
"description"tags": "true when actively buffering; false when buffering is complete"[
{
}"name": "Notifications"
}
],
"resultx-server-notification": {true,
"nameparams": "onBufferingChangedParams",[
"schema": {
"typename": "objectsessionId",
"propertiesrequired": {true,
"bufferingdescription": {
"Session identifier returned by openSession.",
"typeschema": "boolean"{
} "type": "string"
}
},
}
},{
{
"name": "org.rdk.player.onSeekedbuffering",
"summaryschema": "Seek operation completed",
{
"tagstype": ["boolean",
{
"name"description": "Notificationstrue when actively buffering; false when buffering is complete"
}
],}
"x-server-notification": true],
"paramsresult": [{
{
"name": "onBufferingChangedParams",
"nameschema": "sessionId",{
"requiredtype": true"object",
"descriptionproperties": "Session identifier returned by openSession.",
{
"schemabuffering": {
"type": "stringboolean"
}
},
{}
}
"name": "positionMs"},
{
"schemaname": {
"onSeeked",
"typesummary": "numberSeek operation completed",
"descriptiontags": "New playback position in milliseconds after the seek"[
{
}"name": "Notifications"
}
],
"resultx-server-notification": {true,
"nameparams": "onSeekedParams",[
"schema": {
"typename": "objectsessionId",
"propertiesrequired": {true,
"positionMsdescription": {
"Session identifier returned by openSession.",
"typeschema": "number"{
}"type": "string"
}
},
}
},{
{
"name": "org.rdk.player.onBitrateChangedpositionMs",
"summaryschema": "ABR switched to a different video profile",
{
"type": "number",
"tagsdescription": [
{"New playback position in milliseconds after the seek"
"name": "Notifications"}
}
],
"x-server-notificationresult": true,{
"paramsname": ["onSeekedParams",
"schema": {
"nametype": "sessionIdobject",
"requiredproperties": true,{
"descriptionpositionMs": "Session identifier returned by openSession.",
{
"schematype": {"number"
"type": "string"}
}
},
}
{ },
{
"name": "bitrateonBitrateChanged",
"schemasummary": {
"ABR switched to a different video profile",
"typetags": "integer",
[
{
"descriptionname": "New video bitrate in bpsNotifications"
}
}
],
"x-server-notification": true,
},"params": [
{
"name": "widthsessionId",
"schemarequired": {true,
"typedescription": "integerSession identifier returned by openSession.",
"descriptionschema": "Horizontal resolution of the new profile in pixels{
"type": "string"
}
},
{
"name": "heightbitrate",
"schema": {
"type": "integer",
"description": "VerticalNew resolution of the new profilevideo bitrate in pixelsbps"
}
},
{
"name": "descriptionwidth",
"schema": {
"type": "stringinteger",
"description": "ReasonHorizontal resolution forof the bitratenew change (e.g. NetworkCongestion)profile in pixels"
}
},
],
{
"result": {
"name": "onBitrateChangedParamsheight",
"schema": {
"type": "objectinteger",
"propertiesdescription": {
"Vertical resolution of the new profile in pixels"
}
"bitrate": {
},
{
"typename": "integerdescription",
},"schema": {
"widthtype": {
"string",
"typedescription": "integerReason for the bitrate change (e.g. NetworkCongestion)"
},
},
"height": {
{
"typename": "integerframeRate",
},"schema": {
"descriptiontype": {
"number",
"typedescription": "string"
}Frame rate of the new video profile"
}
},
}
},{
{
"name": "org.rdk.player.onMediaMetadataposition",
"summaryschema": "Stream metadata parsed after tune",
{
"tagstype": ["number",
{
"name"description": "Notifications"
}Playback position in milliseconds when the switch occurred"
],
}
"x-server-notification": true,
"params": [},
{
"name": "sessionIdcappedProfile",
"requiredschema": true,{
"descriptiontype": "Session identifier returned by openSession.boolean",
"schemadescription": {
"type": "string" "true if the selected profile was capped (e.g. by network or display constraints)"
}
},
{
"name": "durationMsdisplayWidth",
"schema": {
"type": "integer",
"description": "Total stream durationDisplay/output width in millisecondspixels"
}
},
{
"name": "widthdisplayHeight",
"schema": {
"type": "integer",
"description": "HorizontalDisplay/output resolutionheight of the highest-quality profilein pixels"
}
},
{
"name": "heightvideoScanType",
"schema": {
"type": "integer",
"description": "VerticalVideo resolutionscan of the highest-quality profiletype (0=progressive, 1=interlaced)"
}
},
{
"name": "hasDrmaspectRatioWidth",
"schema": {
"type": "booleaninteger",
"description": "trueAspect ratio ifwidth the stream is DRM protectedcomponent (e.g. 16 for 16:9)"
}
},
{
"name": "isLiveaspectRatioHeight",
"schema": {
"type": "booleaninteger",
"description": "trueAspect ifratio theheight stream is a live broadcastcomponent (e.g. 9 for 16:9)"
}
}
],
"result": {
"name": "drmTypeonBitrateChangedParams",
"schema": {
"type": "stringobject",
"descriptionproperties": "Active DRM system name, or empty string for clear"{
}
"bitrate": { "type": "integer" },
{
"name"width": { "type": "languagesinteger" },
"schemaheight": { "type": "integer" },
"description": { "type": "arraystring" },
"itemsframeRate": { "type": "number" },
"position": { "type": "stringnumber" },
"cappedProfile": { "type": "boolean" },
"descriptiondisplayWidth": { "ISO 639 language codes of all available audio tracks"type": "integer" },
}
"displayHeight": { "type": "integer" },
{
"name"videoScanType": { "type": "bitratesinteger" },
"schemaaspectRatioWidth": {
"type": "arrayinteger" },
"itemsaspectRatioHeight": { "type": "integer" }
}
"type": "integer"
}
}
},
{
"descriptionname": "Available video bitrates in bps, ascending order""onMediaMetadata",
}"summary": "Stream metadata parsed after tune",
},"tags": [
{
"name": "speedsNotifications",
"schema": {}
],
"typex-server-notification": "array"true,
"params": [
"items": {
"typename": "numbersessionId",
}"required": true,
"description": "Trick-playSession speedsidentifier supportedreturned by the streamopenSession.",
}"schema": {
}
"type": "string"
],
"result": { }
"name": "onMediaMetadataParams"},
"schema": {
"typename": "objectdurationMs",
"propertiesschema": {
"durationMstype": {
"integer",
"typedescription": "integerTotal stream duration in milliseconds"
},
},
"width": {
{
"typename": "integerwidth",
},"schema": {
"heighttype": {
"integer",
"typedescription": "integerHorizontal resolution of the highest-quality profile"
}
},
},
"hasDrm": {
"typename": "booleanheight",
},"schema": {
"isLivetype": {"integer",
"typedescription": "booleanVertical resolution of the highest-quality profile"
},
},
"drmType": {
{
"typename": "string"
}hasDrm",
"languagesschema": {
"type": "arrayboolean",
"itemsdescription": {
"true if the stream is DRM protected"
}
"type": "string"
},
}{
}"name": "programStartTime",
"bitratesschema": {
"type": "arraynumber",
"itemsdescription": {
"type": "integer"Unix timestamp of the program start time (0 for VOD)"
}
},
"speeds": {
"typename": "arraytsbDepthMs",
"itemsschema": {
"type": "number",
}
}"description": "Time-shift buffer depth in milliseconds"
}
},
}
},{
{
"name": "org.rdk.player.onAudioTracksChangedlanguages",
"summary "schema": "Available audio track list changed",
{
"tagstype": [
"array",
"items": {
"nametype": "Notificationsstring"
},
],
"x-server-notificationdescription": true, "ISO 639 language codes of all available audio tracks"
}
"params": [ },
{
"name": "sessionIdbitrates",
"requiredschema": true,{
"descriptiontype": "Session identifier returned by openSession.array",
"schemaitems": {
"type": "stringinteger"
},
"description": "Available video bitrates in bps, ascending order"
}
] },
"result": {
"name": "onAudioTracksChangedParamssupportedSpeeds",
"schema": {
"type": "objectarray",
"items": }{
},
"paramStructuretype": "by-namenumber"
},
{},
"name": "org.rdk.player.onTextTracksChanged",
"summarydescription": "Available text track list changed",
Trick-play speeds supported by the stream"
"tags": [ }
{}
],
"nameresult": "Notifications"
}{
],
"x-server-notification"name": true"onMediaMetadataParams",
"paramsschema": [
{
"nametype": "sessionIdobject",
"requiredproperties": true,{
"descriptiondurationMs": { "Session identifier returned by openSession.",
type": "integer" },
"schemawidth": { "type": "integer" },
"height": { "type": "stringinteger" },
}
"hasDrm": { "type": "boolean" },
],
"resultprogramStartTime": {
"name"type": "onTextTracksChangedParamsnumber" },
"schematsbDepthMs": {
"type": "objectnumber" },
}
},
"paramStructure"languages": { "type": "array", "items": { "type": "by-namestring"
} },
{
"name"bitrates": { "type": "org.rdk.player.onDrmMetadataarray",
"items": { "summarytype": "integer"DRM access status update"} },
"tags": [
"supportedSpeeds": {
"name "type": "array", "items": { "type": "Notificationsnumber"
} }
}
],}
"x-server-notification": true, }
"params": [}
},
{
"name": "sessionIdonAudioTracksChanged",
"requiredsummary": true"Available audio track list changed",
"descriptiontags": "Session identifier returned by openSession.",[
{
"schemaname": {"Notifications"
}
"type": "string" ],
}"x-server-notification": true,
},"params": [
{
"name": "accessStatussessionId",
"schemarequired": {true,
"typedescription": "stringSession identifier returned by openSession.",
"descriptionschema": "DRM access status string reported by the DRM system{
"type": "string"
}
}
],
"result": {
"name": "onDrmMetadataParamsonAudioTracksChangedParams",
"schema": {
"type": "object",
"properties": {}
},
"accessStatusparamStructure": {"by-name"
},
{
"typename": "stringonTextTracksChanged",
}
}"summary": "Available text track list changed",
}
"tags": [
}
},{
{
"name": "org.rdk.player.onAdReservationStart",
"summary": "SCTE-35 ad reservation window opened",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
}
],
"result": {
"name": "onAdReservationStartParamsonTextTracksChangedParams",
"schema": {
"type": "object"
}
},
"paramStructure": "by-name"
},
{
"name": "org.rdk.player.onAdReservationEndonDrmMetadata",
"summary": "SCTE-35DRM adaccess reservationstatus window closedupdate",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
],
{
"result": {
"name": "onAdReservationEndParamsfailure",
"schema": {
"type": "objectinteger",
} "description": "DRM failure code"
},
"paramStructure": "by-name" },
},
{
"name": "org.rdk.player.onAnomalyaccessStatus",
"summaryschema": "Internal diagnostic / anomaly report",
{
"tagstype": [
"string",
{
"namedescription": "Notifications"
}
DRM access status string reported by the DRM system"
],
"x-server-notification": true,}
"params": [ },
{
"name": "sessionIdaccessStatusValue",
"requiredschema": true,{
"type": "integer",
"description": "Session identifier returned by openSession.Numeric value corresponding to accessStatus"
}
},
{
"name": "responseCode",
"schema": {
"type": "integer",
"description": "stringHTTP or DRM response code"
}
},
{
"name": "severity",isSecClientError",
"schema": {
"type": "boolean",
"description": "true if the failure originated in the security client"
}
}
],
"result": {
"name": "onDrmMetadataParams",
"schema": {
"type": "integer",
"minimum": 0 "type": "object",
"properties": {
"failure": { "type": "integer" },
"accessStatus": { "type": "string" },
"accessStatusValue": { "type": "integer" },
"responseCode": { "type": "integer" },
"isSecClientError": { "type": "boolean" }
}
}
}
},
{
"name": "onAdReservationStart",
"summary": "SCTE-35 ad reservation window opened",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": { "type": "string" }
},
{
"name": "adBreakId",
"schema": { "type": "string", "description": "Identifier of the ad break" }
},
{
"name": "position",
"schema": { "type": "number", "description": "Stream position in milliseconds where the ad break starts" }
}
],
"result": {
"name": "onAdReservationStartParams",
"schema": {
"type": "object",
"properties": {
"adBreakId": { "type": "string" },
"position": { "type": "number" }
}
}
}
},
{
"name": "onAdReservationEnd",
"summary": "SCTE-35 ad reservation window closed",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": { "type": "string" }
},
{
"name": "adBreakId",
"schema": { "type": "string", "description": "Identifier of the ad break" }
},
{
"name": "position",
"schema": { "type": "number", "description": "Stream position in milliseconds where the ad break ends" }
}
],
"result": {
"name": "onAdReservationEndParams",
"schema": {
"type": "object",
"properties": {
"adBreakId": { "type": "string" },
"position": { "type": "number" }
}
}
}
},
{
"name": "onAnomalyReport",
"summary": "Internal diagnostic / anomaly report",
"tags": [
{
"name": "Notifications"
}
],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"description": "Session identifier returned by openSession.",
"schema": {
"type": "string"
}
},
{
"name": "severity",
"schema": {
"type": "integer",
"minimum": 0,
"maximum": 3,
"description": "Severity level: 0=INFO, 1=WARNING, 2=ERROR, 3=TRACE"
}
},
{
"name": "message",
"schema": {
"type": "string",
"description": "Human-readable anomaly description"
}
}
],
"result": {
"name": "onAnomalyReportParams",
"schema": {
"type": "object",
"properties": {
"severity": { "type": "integer" },
"message": { "type": "string" }
}
}
}
},
{
"name": "onCCHandleReceived",
"summary": "Closed-caption decoder handle available",
"description": "Fired when AAMP provides a handle to the CC decoder after the first decoded video frame.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"schema": { "type": "string" }
},
{
"name": "handle",
"schema": { "type": "integer", "description": "Opaque CC decoder handle" }
}
],
"result": {
"name": "onCCHandleReceivedParams",
"schema": {
"type": "object",
"properties": { "handle": { "type": "integer" } }
}
}
},
{
"name": "onTimedMetadata",
"summary": "Timed metadata cue encountered in the stream",
"description": "Emitted for each HLS #EXT-X-DATERANGE, ID3 frame, or DASH Event block encountered during playback.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"schema": { "type": "string" }
},
{
"name": "name",
"schema": { "type": "string", "description": "Metadata tag name" }
},
{
"name": "id",
"schema": { "type": "string", "description": "Unique cue identifier" }
},
{
"name": "timeMs",
"schema": { "type": "number", "description": "Stream position at which the cue fires (ms)" }
},
{
"name": "durationMs",
"schema": { "type": "number", "description": "Duration of the cue in milliseconds (-1 if unknown)" }
},
{
"name": "content",
"schema": { "type": "string", "description": "Raw cue payload (e.g. JSON-encoded SCTE data)" }
}
],
"result": {
"name": "onTimedMetadataParams",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"id": { "type": "string" },
"timeMs": { "type": "number" },
"durationMs": { "type": "number" },
"content": { "type": "string" }
}
}
}
},
{
"name": "onBulkTimedMetadata",
"summary": "Bulk timed-metadata payload",
"description": "Delivers a batch of timed-metadata cues as a single JSON-encoded string.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"schema": { "type": "string" }
},
{
"name": "content",
"schema": { "type": "string", "description": "JSON-encoded array of timed-metadata cues" }
}
],
"result": {
"name": "onBulkTimedMetadataParams",
"schema": {
"type": "object",
"properties": { "content": { "type": "string" } }
}
}
},
{
"name": "onSpeedsChanged",
"summary": "Supported trick-play speed list updated",
"description": "Emitted when the set of trick-play speeds supported by the current stream changes.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"schema": { "type": "string" }
},
{
"name": "supportedSpeeds",
"schema": {
"type": "array",
"items": { "type": "number" },
"description": "Updated list of supported playback speed multipliers"
}
}
],
"result": {
"name": "onSpeedsChangedParams",
"schema": {
"type": "object",
"properties": {
"supportedSpeeds": { "type": "array", "items": { "type": "number" } }
}
}
}
},
{
"name": "onTuneProfiling",
"summary": "Tune micro-profiling data available",
"description": "Delivers a compact encoded string containing per-stage tune timing data for diagnostics.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"schema": { "type": "string" }
},
{
"name": "profilingData",
"schema": { "type": "string", "description": "Encoded tune-profile data string" }
}
],
"result": {
"name": "onTuneProfilingParams",
"schema": {
"type": "object",
"properties": { "profilingData": { "type": "string" } }
}
}
},
{
"name": "onWebVttCueData",
"summary": "WebVTT subtitle cue received",
"description": "Emitted when a WebVTT cue is parsed and ready for rendering.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"schema": { "type": "string" }
}
],
"result": {
"name": "onWebVttCueDataParams",
"schema": { "type": "object" }
},
"paramStructure": "by-name"
},
{
"name": "onAdResolved",
"summary": "Ad creative resolved (or failed to resolve)",
"description": "Reports whether a dynamic ad insertion creative was successfully resolved by the ad server.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{
"name": "sessionId",
"required": true,
"schema": { "type": "string" }
},
{
"name": "resolveStatus",
"schema": { "type": "boolean", "description": "true if the ad was resolved successfully" }
},
{
"name": "adId",
"schema": { "type": "string", "description": "Ad creative identifier" }
},
{
"name": "startMs",
"schema": { "type": "number", "description": "Ad start position in milliseconds" }
},
{
"name": "durationMs",
"schema": { "type": "number", "description": "Ad duration in milliseconds" }
},
{
"name": "errorCode",
"schema": { "type": "string", "description": "Error code string if resolution failed, empty otherwise" }
},
{
"name": "errorDescription",
"schema": { "type": "string", "description": "Human-readable error description if resolution failed" }
}
],
"result": {
"name": "onAdResolvedParams",
"schema": {
"type": "object",
"properties": {
"resolveStatus": { "type": "boolean" },
"adId": { "type": "string" },
"startMs": { "type": "number" },
"durationMs": { "type": "number" },
"errorCode": { "type": "string" },
"errorDescription": { "type": "string" }
}
}
}
},
{
"name": "onAdPlacementStart",
"summary": "Ad placement playback started",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "adId", "schema": { "type": "string", "description": "Ad creative identifier" } },
{ "name": "position", "schema": { "type": "number", "description": "Position in ms within the ad break" } },
{ "name": "offset", "schema": { "type": "integer", "description": "Offset in ms within the ad" } },
{ "name": "durationMs","schema": { "type": "integer", "description": "Ad duration in milliseconds" } },
{ "name": "errorCode", "schema": { "type": "integer", "description": "Error code (0 = no error)" } }
],
"result": {
"name": "onAdPlacementStartParams",
"schema": {
"type": "object",
"properties": {
"adId": { "type": "string" }, "position": { "type": "number" },
"offset": { "type": "integer" }, "durationMs": { "type": "integer" },
"errorCode": { "type": "integer" }
}
}
}
},
{
"name": "onAdPlacementEnd",
"summary": "Ad placement playback ended",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "adId", "schema": { "type": "string", "description": "Ad creative identifier" } },
{ "name": "position", "schema": { "type": "number", "description": "Position in ms within the ad break" } },
{ "name": "offset", "schema": { "type": "integer", "description": "Offset in ms within the ad" } },
{ "name": "durationMs","schema": { "type": "integer", "description": "Ad duration in milliseconds" } },
{ "name": "errorCode", "schema": { "type": "integer", "description": "Error code (0 = no error)" } }
],
"result": {
"name": "onAdPlacementEndParams",
"schema": {
"type": "object",
"properties": {
"adId": { "type": "string" }, "position": { "type": "number" },
"offset": { "type": "integer" }, "durationMs": { "type": "integer" },
"errorCode": { "type": "integer" }
}
}
}
},
{
"name": "onAdPlacementError",
"summary": "Ad placement failed",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "adId", "schema": { "type": "string", "description": "Ad creative identifier" } },
{ "name": "position", "schema": { "type": "number", "description": "Position in ms within the ad break" } },
{ "name": "offset", "schema": { "type": "integer", "description": "Offset in ms within the ad" } },
{ "name": "durationMs","schema": { "type": "integer", "description": "Ad duration in milliseconds" } },
{ "name": "errorCode", "schema": { "type": "integer", "description": "Non-zero error code indicating the failure reason" } }
],
"result": {
"name": "onAdPlacementErrorParams",
"schema": {
"type": "object",
"properties": {
"adId": { "type": "string" }, "position": { "type": "number" },
"offset": { "type": "integer" }, "durationMs": { "type": "integer" },
"errorCode": { "type": "integer" }
}
}
}
},
{
"name": "onAdPlacementProgress",
"summary": "Ad placement playback progress",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "adId", "schema": { "type": "string", "description": "Ad creative identifier" } },
{ "name": "position", "schema": { "type": "number", "description": "Position in ms within the ad break" } },
{ "name": "offset", "schema": { "type": "integer", "description": "Offset in ms within the ad" } },
{ "name": "durationMs","schema": { "type": "integer", "description": "Ad duration in milliseconds" } },
{ "name": "errorCode", "schema": { "type": "integer", "description": "Error code (0 = no error)" } }
],
"result": {
"name": "onAdPlacementProgressParams",
"schema": {
"type": "object",
"properties": {
"adId": { "type": "string" }, "position": { "type": "number" },
"offset": { "type": "integer" }, "durationMs": { "type": "integer" },
"errorCode": { "type": "integer" }
}
}
}
},
{
"name": "onMetricsData",
"summary": "Player metrics data report",
"description": "Periodic metrics snapshot from AAMP containing tuning and performance data.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "type", "schema": { "type": "integer", "description": "Metrics data type identifier" } },
{ "name": "metricUUID", "schema": { "type": "string", "description": "Unique identifier for this metrics record" } },
{ "name": "data", "schema": { "type": "string", "description": "Encoded metrics payload" } }
],
"result": {
"name": "onMetricsDataParams",
"schema": {
"type": "object",
"properties": {
"type": { "type": "integer" },
"metricUUID": { "type": "string" },
"data": { "type": "string" }
}
}
}
},
{
"name": "onID3Metadata",
"summary": "ID3 metadata frame received",
"description": "Emitted when an in-band ID3 metadata frame is encountered in the media stream.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "length", "schema": { "type": "integer", "description": "Size of the raw ID3 payload in bytes" } },
{ "name": "schemeIdUri", "schema": { "type": "string", "description": "Scheme ID URI identifying the metadata type" } },
{ "name": "id3Value", "schema": { "type": "string", "description": "String value associated with the ID3 frame" } },
{ "name": "presentationTime", "schema": { "type": "integer", "description": "Presentation timestamp of the frame" } },
{ "name": "timeScale", "schema": { "type": "integer", "description": "Time scale for the presentation timestamp" } }
],
"result": {
"name": "onID3MetadataParams",
"schema": {
"type": "object",
"properties": {
"length": { "type": "integer" },
"schemeIdUri": { "type": "string" },
"id3Value": { "type": "string" },
"presentationTime": { "type": "integer" },
"timeScale": { "type": "integer" }
}
}
}
},
{
"name": "onDrmMessage",
"summary": "DRM system message",
"description": "Informational or diagnostic message emitted by the DRM subsystem.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "message", "schema": { "type": "string", "description": "DRM system message string" } }
],
"result": {
"name": "onDrmMessageParams",
"schema": {
"type": "object",
"properties": { "message": { "type": "string" } }
}
}
},
{
"name": "onContentGap",
"summary": "Content gap detected in the stream",
"description": "Fired when AAMP detects a discontinuity or missing segment in the timeline.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "timeMs", "schema": { "type": "number", "description": "Stream position in ms where the gap was detected" } },
{ "name": "durationMs", "schema": { "type": "number", "description": "Duration of the gap in milliseconds (-1 if unknown)" } }
],
"result": {
"name": "onContentGapParams",
"schema": {
"type": "object",
"properties": {
"timeMs": { "type": "number" },
"durationMs": { "type": "number" }
}
}
}
},
{
"name": "onHttpResponseHeader",
"summary": "HTTP response header received",
"description": "Exposes selected HTTP response headers from AAMP network requests.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "header", "schema": { "type": "string", "description": "HTTP header name" } },
{ "name": "response", "schema": { "type": "string", "description": "HTTP header value" } }
],
"result": {
"name": "onHttpResponseHeaderParams",
"schema": {
"type": "object",
"properties": {
"header": { "type": "string" },
"response": { "type": "string" }
}
}
}
},
{
"name": "onContentProtectionDataUpdate",
"summary": "Content protection key ID updated",
"description": "Emitted when the content protection key ID changes (e.g. key rotation in DASH).",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "streamType", "schema": { "type": "string", "description": "Stream type associated with the key update (e.g. video, audio)" } }
],
"result": {
"name": "onContentProtectionDataUpdateParams",
"schema": {
"type": "object",
"properties": { "streamType": { "type": "string" } }
}
}
},
{
"name": "onManifestRefresh",
"summary": "Manifest refreshed (live streams)",
"description": "Emitted each time AAMP successfully refreshes a live manifest.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "manifestDuration", "schema": { "type": "number", "description": "Total manifest duration in seconds" } },
{ "name": "noOfPeriods", "schema": { "type": "integer", "description": "Number of DASH periods in the manifest" } },
{ "name": "manifestPublishedTime", "schema": { "type": "number", "description": "UTC publish time from the manifest" } },
{ "name": "manifestType", "schema": { "type": "string", "description": "Manifest type string (e.g. DYNAMIC, STATIC)" } }
],
"result": {
"name": "onManifestRefreshParams",
"schema": {
"type": "object",
"properties": {
"manifestDuration": { "type": "number" },
"noOfPeriods": { "type": "integer" },
"manifestPublishedTime": { "type": "number" },
"manifestType": { "type": "string" }
}
}
}
},
{
"name": "onTuneTimeMetrics",
"summary": "Tune time metrics report",
"description": "Provides a detailed breakdown of time spent in each phase of the tune sequence.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "tuneMetricsData", "schema": { "type": "string", "description": "Encoded tune-time metrics string" } }
],
"result": {
"name": "onTuneTimeMetricsParams",
"schema": {
"type": "object",
"properties": { "tuneMetricsData": { "type": "string" } }
}
}
},
{
"name": "onMonitorAVStatus",
"summary": "AV sync / health monitor status",
"description": "Periodic report from the A/V health monitor with current video and audio positions and performance counters.",
"tags": [{ "name": "Notifications" }],
"x-server-notification": true,
"params": [
{ "name": "sessionId", "required": true, "schema": { "type": "string" } },
{ "name": "monitorAVStatus", "schema": { "type": "string", "description": "Status string from the AV monitor" } },
{ "name": "videoPositionMs", "schema": { "type": "number", "description": "Current video decoder position in ms" } },
{ "name": "audioPositionMs", "schema": { "type": "number", "description": "Current audio decoder position in ms" } },
{ "maximumname": 3"timeInStateMs",
"schema": { "type": "number", "description": "SeverityTime level: 0=INFO, 1=WARNING, 2=ERROR, 3=TRACE"
}
spent in the current AV state in ms" } },
{
"name": "messagedroppedFrames",
"schema": {
"type": "stringinteger",
"description": "Human-readable anomaly description"
}
Cumulative dropped video frames" } }
],
"result": {
"name": "onAnomalyParamsonMonitorAVStatusParams",
"schema": {
"type": "object",
"properties": {
"severitymonitorAVStatus": { "type": "string" },
"videoPositionMs": { "type": "integernumber" },
"audioPositionMs": { "type": "number" },
"messagetimeInStateMs": { "type": "number" },
"droppedFrames": { "type": "string"
integer" }
}
}
}
}
]
}
```