# Asterisk Project : Asterisk 12 REST Data Models

Added by dlee , edited by dlee on Aug 02, 2013

# AsteriskInfo

Asterisk system information

    {
      "properties": {
        "status": {
          "required": false,
          "type": "StatusInfo",
          "description": "Info about Asterisk status"
        },
        "config": {
          "required": false,
          "type": "ConfigInfo",
          "description": "Info about Asterisk configuration"
        },
        "build": {
          "required": false,
          "type": "BuildInfo",
          "description": "Info about how Asterisk was built"
        },
        "system": {
          "required": false,
          "type": "SystemInfo",
          "description": "Info about the system running Asterisk"
        }
      },
      "id": "AsteriskInfo",
      "description": "Asterisk system information"
    }

- build: BuildInfo (optional) - Info about how Asterisk was built
- config: ConfigInfo (optional) - Info about Asterisk configuration
- status: StatusInfo (optional) - Info about Asterisk status
- system: SystemInfo (optional) - Info about the system running Asterisk

# BuildInfo

Info about how Asterisk was built

    {
      "properties": {
        "kernel": {
          "required": true,
          "type": "string",
          "description": "Kernel version Asterisk was built on."
        },
        "machine": {
          "required": true,
          "type": "string",
          "description": "Machine architecture (x86_64, i686, ppc, etc.)"
        },
        "user": {
          "required": true,
          "type": "string",
          "description": "Username that build Asterisk"
        },
        "date": {
          "required": true,
          "type": "string",
          "description": "Date and time when Asterisk was built."
        },
        "os": {
          "required": true,
          "type": "string",
          "description": "OS Asterisk was built on."
        },
        "options": {
          "required": true,
          "type": "string",
          "description": "Compile time options, or empty string if default."
        }
      },
      "id": "BuildInfo",
      "description": "Info about how Asterisk was built"
    }

- date: string - Date and time when Asterisk was built.
- kernel: string - Kernel version Asterisk was built on.
- machine: string - Machine architecture (x86_64, i686, ppc, etc.)
- options: string - Compile time options, or empty string if default.
- os: string - OS Asterisk was built on.
- user: string - Username that build Asterisk

# ConfigInfo

Info about Asterisk configuration

    {
      "properties": {
        "name": {
          "required": true,
          "type": "string",
          "description": "Asterisk system name."
        },
        "default_language": {
          "required": true,
          "type": "string",
          "description": "Default language for media playback."
        },
        "max_load": {
          "required": false,
          "type": "double",
          "description": "Maximum load avg on system."
        },
        "setid": {
          "required": true,
          "type": "SetId",
          "description": "Effective user/group id for running Asterisk."
        },
        "max_open_files": {
          "required": false,
          "type": "int",
          "description": "Maximum number of open file handles (files, sockets)."
        },
        "max_channels": {
          "required": false,
          "type": "int",
          "description": "Maximum number of simultaneous channels."
        }
      },
      "id": "ConfigInfo",
      "description": "Info about Asterisk configuration"
    }

- default_language: string - Default language for media playback.
- max_channels: int (optional) - Maximum number of simultaneous channels.
- max_load: double (optional) - Maximum load avg on system.
- max_open_files: int (optional) - Maximum number of open file handles (files, sockets).
- name: string - Asterisk system name.
- setid: SetId - Effective user/group id for running Asterisk.

# SetId

Effective user/group id

    {
      "properties": {
        "group": {
          "required": true,
          "type": "string",
          "description": "Effective group id."
        },
        "user": {
          "required": true,
          "type": "string",
          "description": "Effective user id."
        }
      },
      "id": "SetId",
      "description": "Effective user/group id"
    }

- group: string - Effective group id.
- user: string - Effective user id.

# StatusInfo

Info about Asterisk status

    {
      "properties": {
        "last_reload_time": {
          "required": true,
          "type": "Date",
          "description": "Time when Asterisk was last reloaded."
        },
        "startup_time": {
          "required": true,
          "type": "Date",
          "description": "Time when Asterisk was started."
        }
      },
      "id": "StatusInfo",
      "description": "Info about Asterisk status"
    }

- last_reload_time: Date - Time when Asterisk was last reloaded.
- startup_time: Date - Time when Asterisk was started.

# SystemInfo

Info about Asterisk

    {
      "properties": {
        "entity_id": {
          "required": true,
          "type": "string",
          "description": ""
        },
        "version": {
          "required": true,
          "type": "string",
          "description": "Asterisk version."
        }
      },
      "id": "SystemInfo",
      "description": "Info about Asterisk"
    }

- entity_id: string
- version: string - Asterisk version.

# Variable

The value of a channel variable

    {
      "properties": {
        "value": {
          "required": true,
          "type": "string",
          "description": "The value of the variable requested"
        }
      },
      "id": "Variable",
      "description": "The value of a channel variable"
    }

- value: string - The value of the variable requested

# Endpoint

An external device that may offer/accept calls to/from Asterisk.

Unlike most resources, which have a single unique identifier, an endpoint is uniquely identified by the technology/resource pair.

    {
      "properties": {
        "resource": {
          "required": true,
          "type": "string",
          "description": "Identifier of the endpoint, specific to the given technology."
        },
        "state": {
          "allowableValues": {
            "valueType": "LIST",
            "values": [
              "unknown",
              "offline",
              "online"
            ]
          },
          "required": false,
          "type": "string",
          "description": "Endpoint's state"
        },
        "technology": {
          "required": true,
          "type": "string",
          "description": "Technology of the endpoint"
        },
        "channel_ids": {
          "required": true,
          "type": "List[string]",
          "description": "Id's of channels associated with this endpoint"
        }
      },
      "id": "Endpoint",
      "description": "An external device that may offer/accept calls to/from Asterisk.\n\nUnlike most resources, which have a single unique identifier, an endpoint is uniquely identified by the technology/resource pair."
    }

- channel_ids: List[string] - Id's of channels associated with this endpoint
- resource: string - Identifier of the endpoint, specific to the given technology.
- state: string (optional) - Endpoint's state
- technology: string - Technology of the endpoint

# CallerID

Caller identification

    {
      "properties": {
        "name": {
          "required": true,
          "type": "string"
        },
        "number": {
          "required": true,
          "type": "string"
        }
      },
      "id": "CallerID",
      "description": "Caller identification"
    }

- name: string
- number: string

# Channel

A specific communication connection between Asterisk and an Endpoint.

    {
      "properties": {
        "accountcode": {
          "required": true,
          "type": "string"
        },
        "name": {
          "required": true,
          "type": "string",
          "description": "Name of the channel (i.e. SIP/foo-0000a7e3)"
        },
        "caller": {
          "required": true,
          "type": "CallerID"
        },
        "creationtime": {
          "required": true,
          "type": "Date",
          "description": "Timestamp when channel was created"
        },
        "state": {
          "allowableValues": {
            "valueType": "LIST",
            "values": [
              "Down",
              "Rsrved",
              "OffHook",
              "Dialing",
              "Ring",
              "Ringing",
              "Up",
              "Busy",
              "Dialing Offhook",
              "Pre-ring",
              "Unknown"
            ]
          },
          "required": true,
          "type": "string"
        },
        "connected": {
          "required": true,
          "type": "CallerID"
        },
        "dialplan": {
          "required": true,
          "type": "DialplanCEP",
          "description": "Current location in the dialplan"
        },
        "id": {
          "required": true,
          "type": "string",
          "description": "Unique identifier of the channel.\n\nThis is the same as the Uniqueid field in AMI."
        }
      },
      "id": "Channel",
      "description": "A specific communication connection between Asterisk and an Endpoint."
    }

- accountcode: string
- caller: CallerID
- connected: CallerID
- creationtime: Date - Timestamp when channel was created
- dialplan: DialplanCEP - Current location in the dialplan
- id: string - Unique identifier of the channel.

This is the same as the Uniqueid field in AMI.

- name: string - Name of the channel (i.e. SIP/foo-0000a7e3)
- state: string

# Dialed

Dialed channel information.

    {
      "properties": {},
      "id": "Dialed",
      "description": "Dialed channel information."
    }

# DialplanCEP

Dialplan location (context/extension/priority)

    {
      "properties": {
        "priority": {
          "required": true,
          "type": "long",
          "description": "Priority in the dialplan"
        },
        "exten": {
          "required": true,
          "type": "string",
          "description": "Extension in the dialplan"
        },
        "context": {
          "required": true,
          "type": "string",
          "description": "Context in the dialplan"
        }
      },
      "id": "DialplanCEP",
      "description": "Dialplan location (context/extension/priority)"
    }

- context: string - Context in the dialplan
- exten: string - Extension in the dialplan
- priority: long - Priority in the dialplan

# Bridge

The merging of media from one or more channels.

Everyone on the bridge receives the same audio.

    {
      "properties": {
        "channels": {
          "required": true,
          "type": "List[string]",
          "description": "Ids of channels participating in this bridge"
        },
        "bridge_type": {
          "allowableValues": {
            "valueType": "LIST",
            "values": [
              "mixing",
              "holding"
            ]
          },
          "required": true,
          "type": "string",
          "description": "Type of bridge technology"
        },
        "technology": {
          "required": true,
          "type": "string",
          "description": "Name of the current bridging technology"
        },
        "id": {
          "required": true,
          "type": "string",
          "description": "Unique identifier for this bridge"
        },
        "bridge_class": {
          "required": true,
          "type": "string",
          "description": "Bridging class"
        }
      },
      "id": "Bridge",
      "description": "The merging of media from one or more channels.\n\nEveryone on the bridge receives the same audio."
    }

- bridge_class: string - Bridging class
- bridge_type: string - Type of bridge technology
- channels: List[string] - Ids of channels participating in this bridge
- id: string - Unique identifier for this bridge
- technology: string - Name of the current bridging technology

# LiveRecording

A recording that is in progress

    {
      "properties": {
        "state": {
          "required": true,
          "type": "string"
        },
        "name": {
          "required": true,
          "type": "string"
        },
        "format": {
          "required": true,
          "type": "string"
        }
      },
      "id": "LiveRecording",
      "description": "A recording that is in progress"
    }

- format: string
- name: string
- state: string

# StoredRecording

A past recording that may be played back.

    {
      "properties": {
        "time": {
          "required": false,
          "type": "Date",
          "description": "Time recording was started"
        },
        "id": {
          "required": true,
          "type": "string"
        },
        "duration_seconds": {
          "required": false,
          "type": "int"
        },
        "formats": {
          "required": true,
          "type": "List[string]"
        }
      },
      "id": "StoredRecording",
      "description": "A past recording that may be played back."
    }

- duration_seconds: int (optional)
- formats: List[string]
- id: string
- time: Date (optional) - Time recording was started

# FormatLangPair

Identifies the format and language of a sound file

    {
      "properties": {
        "language": {
          "required": true,
          "type": "string"
        },
        "format": {
          "required": true,
          "type": "string"
        }
      },
      "id": "FormatLangPair",
      "description": "Identifies the format and language of a sound file"
    }

- format: string
- language: string

# Sound

A media file that may be played back.

    {
      "properties": {
        "text": {
          "required": false,
          "type": "string",
          "description": "Text description of the sound, usually the words spoken."
        },
        "id": {
          "required": true,
          "type": "string",
          "description": "Sound's identifier."
        },
        "formats": {
          "required": true,
          "type": "List[FormatLangPair]",
          "description": "The formats and languages in which this sound is available."
        }
      },
      "id": "Sound",
      "description": "A media file that may be played back."
    }

- formats: List[FormatLangPair] - The formats and languages in which this sound is available.
- id: string - Sound's identifier.
- text: string (optional) - Text description of the sound, usually the words spoken.

# Playback

Object representing the playback of media to a channel

    {
      "properties": {
        "language": {
          "type": "string",
          "description": "For media types that support multiple languages, the language requested for playback."
        },
        "media_uri": {
          "required": true,
          "type": "string",
          "description": "URI for the media to play back."
        },
        "id": {
          "required": true,
          "type": "string",
          "description": "ID for this playback operation"
        },
        "target_uri": {
          "required": true,
          "type": "string",
          "description": "URI for the channel or bridge to play the media on"
        },
        "state": {
          "allowableValues": {
            "valueType": "LIST",
            "values": [
              "queued",
              "playing",
              "complete"
            ]
          },
          "required": true,
          "type": "string",
          "description": "Current state of the playback operation."
        }
      },
      "id": "Playback",
      "description": "Object representing the playback of media to a channel"
    }

- id: string - ID for this playback operation
- language: string (optional) - For media types that support multiple languages, the language requested for playback.
- media_uri: string - URI for the media to play back.
- state: string - Current state of the playback operation.
- target_uri: string - URI for the channel or bridge to play the media on

# ApplicationReplaced

Base type: Event

Notification that another WebSocket has taken over for an application.

An application may only be subscribed to by a single WebSocket at a time. If multiple WebSockets attempt to subscribe to the same application, the newer WebSocket wins, and the older one receives this event.

    {
      "properties": {},
      "extends": "Event",
      "id": "ApplicationReplaced",
      "description": "Notification that another WebSocket has taken over for an application.\n\nAn application may only be subscribed to by a single WebSocket at a time. If multiple WebSockets attempt to subscribe to the same application, the newer WebSocket wins, and the older one receives this event."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.

# BridgeCreated

Base type: Event

Notification that a bridge has been created.

    {
      "properties": {
        "bridge": {
          "required": true,
          "type": "Bridge"
        }
      },
      "extends": "Event",
      "id": "BridgeCreated",
      "description": "Notification that a bridge has been created."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- bridge: Bridge

# BridgeDestroyed

Base type: Event

Notification that a bridge has been destroyed.

    {
      "properties": {
        "bridge": {
          "required": true,
          "type": "Bridge"
        }
      },
      "extends": "Event",
      "id": "BridgeDestroyed",
      "description": "Notification that a bridge has been destroyed."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- bridge: Bridge

# BridgeMerged

Base type: Event

Notification that one bridge has merged into another.

    {
      "properties": {
        "bridge": {
          "required": true,
          "type": "Bridge"
        },
        "bridge_from": {
          "required": true,
          "type": "Bridge"
        }
      },
      "extends": "Event",
      "id": "BridgeMerged",
      "description": "Notification that one bridge has merged into another."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- bridge: Bridge
- bridge_from: Bridge

# ChannelCallerId

Base type: Event

Channel changed Caller ID.

    {
      "properties": {
        "caller_presentation_txt": {
          "required": true,
          "type": "string",
          "description": "The text representation of the Caller Presentation value."
        },
        "caller_presentation": {
          "required": true,
          "type": "int",
          "description": "The integer representation of the Caller Presentation value."
        },
        "channel": {
          "required": true,
          "type": "Channel",
          "description": "The channel that changed Caller ID."
        }
      },
      "extends": "Event",
      "id": "ChannelCallerId",
      "description": "Channel changed Caller ID."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- caller_presentation: int - The integer representation of the Caller Presentation value.
- caller_presentation_txt: string - The text representation of the Caller Presentation value.
- channel: Channel - The channel that changed Caller ID.

# ChannelCreated

Base type: Event

Notification that a channel has been created.

    {
      "properties": {
        "channel": {
          "required": true,
          "type": "Channel"
        }
      },
      "extends": "Event",
      "id": "ChannelCreated",
      "description": "Notification that a channel has been created."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- channel: Channel

# ChannelDestroyed

Base type: Event

Notification that a channel has been destroyed.

    {
      "properties": {
        "cause": {
          "required": true,
          "type": "int",
          "description": "Integer representation of the cause of the hangup"
        },
        "cause_txt": {
          "required": true,
          "type": "string",
          "description": "Text representation of the cause of the hangup"
        },
        "channel": {
          "required": true,
          "type": "Channel"
        }
      },
      "extends": "Event",
      "id": "ChannelDestroyed",
      "description": "Notification that a channel has been destroyed."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- cause: int - Integer representation of the cause of the hangup
- cause_txt: string - Text representation of the cause of the hangup
- channel: Channel

# ChannelDialplan

Base type: Event

Channel changed location in the dialplan.

    {
      "properties": {
        "dialplan_app_data": {
          "required": true,
          "type": "string",
          "description": "The data to be passed to the application."
        },
        "channel": {
          "required": true,
          "type": "Channel",
          "description": "The channel that changed dialplan location."
        },
        "dialplan_app": {
          "required": true,
          "type": "string",
          "description": "The application about to be executed."
        }
      },
      "extends": "Event",
      "id": "ChannelDialplan",
      "description": "Channel changed location in the dialplan."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- channel: Channel - The channel that changed dialplan location.
- dialplan_app: string - The application about to be executed.
- dialplan_app_data: string - The data to be passed to the application.

# ChannelDtmfReceived

Base type: Event

DTMF received on a channel.

This event is sent when the DTMF ends. There is no notification about the start of DTMF

    {
      "properties": {
        "duration_ms": {
          "required": true,
          "type": "int",
          "description": "Number of milliseconds DTMF was received"
        },
        "digit": {
          "required": true,
          "type": "string",
          "description": "DTMF digit received (0-9, A-E, # or *)"
        },
        "channel": {
          "required": true,
          "type": "Channel",
          "description": "The channel on which DTMF was received"
        }
      },
      "extends": "Event",
      "id": "ChannelDtmfReceived",
      "description": "DTMF received on a channel.\n\nThis event is sent when the DTMF ends. There is no notification about the start of DTMF"
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- channel: Channel - The channel on which DTMF was received
- digit: string - DTMF digit received (0-9, A-E, # or *)
- duration_ms: int - Number of milliseconds DTMF was received

# ChannelEnteredBridge

Base type: Event

Notification that a channel has entered a bridge.

    {
      "properties": {
        "bridge": {
          "required": true,
          "type": "Bridge"
        },
        "channel": {
          "type": "Channel"
        }
      },
      "extends": "Event",
      "id": "ChannelEnteredBridge",
      "description": "Notification that a channel has entered a bridge."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- bridge: Bridge
- channel: Channel (optional)

# ChannelHangupRequest

Base type: Event

A hangup was requested on the channel.

    {
      "properties": {
        "soft": {
          "type": "boolean",
          "description": "Whether the hangup request was a soft hangup request."
        },
        "cause": {
          "type": "int",
          "description": "Integer representation of the cause of the hangup."
        },
        "channel": {
          "required": true,
          "type": "Channel",
          "description": "The channel on which the hangup was requested."
        }
      },
      "extends": "Event",
      "id": "ChannelHangupRequest",
      "description": "A hangup was requested on the channel."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- cause: int (optional) - Integer representation of the cause of the hangup.
- channel: Channel - The channel on which the hangup was requested.
- soft: boolean (optional) - Whether the hangup request was a soft hangup request.

# ChannelLeftBridge

Base type: Event

Notification that a channel has left a bridge.

    {
      "properties": {
        "bridge": {
          "required": true,
          "type": "Bridge"
        },
        "channel": {
          "required": true,
          "type": "Channel"
        }
      },
      "extends": "Event",
      "id": "ChannelLeftBridge",
      "description": "Notification that a channel has left a bridge."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- bridge: Bridge
- channel: Channel

# ChannelStateChange

Base type: Event

Notification of a channel's state change.

    {
      "properties": {
        "channel": {
          "required": true,
          "type": "Channel"
        }
      },
      "extends": "Event",
      "id": "ChannelStateChange",
      "description": "Notification of a channel's state change."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- channel: Channel

# ChannelUserevent

Base type: Event

User-generated event with additional user-defined fields in the object.

    {
      "properties": {
        "eventname": {
          "required": true,
          "type": "string",
          "description": "The name of the user event."
        },
        "channel": {
          "required": true,
          "type": "Channel",
          "description": "The channel that signaled the user event."
        }
      },
      "extends": "Event",
      "id": "ChannelUserevent",
      "description": "User-generated event with additional user-defined fields in the object."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- channel: Channel - The channel that signaled the user event.
- eventname: string - The name of the user event.

# ChannelVarset

Base type: Event

Channel variable changed.

    {
      "properties": {
        "variable": {
          "required": true,
          "type": "string",
          "description": "The variable that changed."
        },
        "channel": {
          "required": false,
          "type": "Channel",
          "description": "The channel on which the variable was set.\n\nIf missing, the variable is a global variable."
        },
        "value": {
          "required": true,
          "type": "string",
          "description": "The new value of the variable."
        }
      },
      "extends": "Event",
      "id": "ChannelVarset",
      "description": "Channel variable changed."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- channel: Channel (optional) - The channel on which the variable was set.

If missing, the variable is a global variable.

- value: string - The new value of the variable.
- variable: string - The variable that changed.

# Event

Base type: Message
Subtypes: ApplicationReplaced BridgeCreated BridgeDestroyed BridgeMerged ChannelCallerId ChannelCreated ChannelDestroyed ChannelDialplan ChannelDtmfReceived ChannelEnteredBridge ChannelHangupRequest ChannelLeftBridge ChannelStateChange ChannelUserevent ChannelVarset PlaybackFinished PlaybackStarted StasisEnd StasisStart

Base type for asynchronous events from Asterisk.

    {
      "properties": {
        "application": {
          "required": true,
          "type": "string",
          "description": "Name of the application receiving the event."
        },
        "timestamp": {
          "required": false,
          "type": "Date",
          "description": "Time at which this event was created."
        }
      },
      "extends": "Message",
      "id": "Event",
      "description": "Base type for asynchronous events from Asterisk."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.

# Message

Subtypes: ApplicationReplaced BridgeCreated BridgeDestroyed BridgeMerged ChannelCallerId ChannelCreated ChannelDestroyed ChannelDialplan ChannelDtmfReceived ChannelEnteredBridge ChannelHangupRequest ChannelLeftBridge ChannelStateChange ChannelUserevent ChannelVarset Event MissingParams PlaybackFinished PlaybackStarted StasisEnd StasisStart

Base type for errors and events

    {
      "discriminator": "type",
      "properties": {
        "type": {
          "required": true,
          "type": "string",
          "description": "Indicates the type of this message."
        }
      },
      "id": "Message",
      "description": "Base type for errors and events"
    }

- type: string - Indicates the type of this message.

# MissingParams

Base type: Message

Error event sent when required params are missing.

    {
      "properties": {
        "params": {
          "required": true,
          "type": "List[string]",
          "description": "A list of the missing parameters"
        }
      },
      "extends": "Message",
      "id": "MissingParams",
      "description": "Error event sent when required params are missing."
    }

- type: string - Indicates the type of this message.
- params: List[string] - A list of the missing parameters

# PlaybackFinished

Base type: Event

Event showing the completion of a media playback operation.

    {
      "properties": {
        "playback": {
          "required": true,
          "type": "Playback",
          "description": "Playback control object"
        }
      },
      "extends": "Event",
      "id": "PlaybackFinished",
      "description": "Event showing the completion of a media playback operation."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- playback: Playback - Playback control object

# PlaybackStarted

Base type: Event

Event showing the start of a media playback operation.

    {
      "properties": {
        "playback": {
          "required": true,
          "type": "Playback",
          "description": "Playback control object"
        }
      },
      "extends": "Event",
      "id": "PlaybackStarted",
      "description": "Event showing the start of a media playback operation."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- playback: Playback - Playback control object

# StasisEnd

Base type: Event

Notification that a channel has left a Stasis appliction.

    {
      "properties": {
        "channel": {
          "required": true,
          "type": "Channel"
        }
      },
      "extends": "Event",
      "id": "StasisEnd",
      "description": "Notification that a channel has left a Stasis appliction."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- channel: Channel

# StasisStart

Base type: Event

Notification that a channel has entered a Stasis appliction.

    {
      "properties": {
        "args": {
          "required": true,
          "type": "List[string]",
          "description": "Arguments to the application"
        },
        "channel": {
          "required": true,
          "type": "Channel"
        }
      },
      "extends": "Event",
      "id": "StasisStart",
      "description": "Notification that a channel has entered a Stasis appliction."
    }

- type: string - Indicates the type of this message.
- application: string - Name of the application receiving the event.
- timestamp: Date (optional) - Time at which this event was created.
- args: List[string] - Arguments to the application
- channel: Channel