Files
asterisk/rest-api/api-docs/channels.json
Matthew Jordan 6107712857 AMI/ARI: Update version numbers
Update the semantic versioning of ARI to 1.3.0 and AMI to 2.3.0 to account for
backwards compatible changes going from 12.2.0 to 12.3.0.
........

Merged revisions 414765 from http://svn.asterisk.org/svn/asterisk/branches/12


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@414766 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-05-28 17:46:37 +00:00

1457 lines
36 KiB
JSON

{
"_copyright": "Copyright (C) 2012 - 2013, Digium, Inc.",
"_author": "David M. Lee, II <dlee@digium.com>",
"_svn_revision": "$Revision$",
"apiVersion": "1.3.0",
"swaggerVersion": "1.1",
"basePath": "http://localhost:8088/stasis",
"resourcePath": "/api-docs/channels.{format}",
"apis": [
{
"path": "/channels",
"description": "Active channels",
"operations": [
{
"httpMethod": "GET",
"summary": "List all active channels in Asterisk.",
"nickname": "list",
"responseClass": "List[Channel]"
},
{
"httpMethod": "POST",
"summary": "Create a new channel (originate).",
"notes": "The new channel is created immediately and a snapshot of it returned. If a Stasis application is provided it will be automatically subscribed to the originated channel for further events and updates.",
"nickname": "originate",
"responseClass": "Channel",
"parameters": [
{
"name": "endpoint",
"description": "Endpoint to call.",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "extension",
"description": "The extension to dial after the endpoint answers",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "context",
"description": "The context to dial after the endpoint answers. If omitted, uses 'default'",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "priority",
"description": "The priority to dial after the endpoint answers. If omitted, uses 1",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "long"
},
{
"name": "app",
"description": "The application that is subscribed to the originated channel, and passed to the Stasis application.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "appArgs",
"description": "The application arguments to pass to the Stasis application.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "callerId",
"description": "CallerID to use when dialing the endpoint or extension.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "timeout",
"description": "Timeout (in seconds) before giving up dialing, or -1 for no timeout.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int",
"defaultValue": 30
},
{
"name": "variables",
"description": "The 'variables' key in the body object holds variable key/value pairs to set on the channel on creation. Other keys in the body object are interpreted as query parameters. Ex. { 'endpoint': 'SIP/Alice', 'variables': { 'CALLERID(name)': 'Alice' } }",
"paramType": "body",
"required": false,
"dataType": "containers",
"allowMultiple": false
},
{
"name": "channelId",
"description": "The unique id to assign the channel on creation.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "otherChannelId",
"description": "The unique id to assign the second channel when using local channels.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 400,
"reason": "Invalid parameters for originating a channel."
}
]
}
]
},
{
"path": "/channels/{channelId}",
"description": "Active channel",
"operations": [
{
"httpMethod": "GET",
"summary": "Channel details.",
"nickname": "get",
"responseClass": "Channel",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
}
]
},
{
"httpMethod": "POST",
"summary": "Create a new channel (originate with id).",
"notes": "The new channel is created immediately and a snapshot of it returned. If a Stasis application is provided it will be automatically subscribed to the originated channel for further events and updates.",
"nickname": "originateWithId",
"responseClass": "Channel",
"parameters": [
{
"name": "channelId",
"description": "The unique id to assign the channel on creation.",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "endpoint",
"description": "Endpoint to call.",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "extension",
"description": "The extension to dial after the endpoint answers",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "context",
"description": "The context to dial after the endpoint answers. If omitted, uses 'default'",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "priority",
"description": "The priority to dial after the endpoint answers. If omitted, uses 1",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "long"
},
{
"name": "app",
"description": "The application that is subscribed to the originated channel, and passed to the Stasis application.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "appArgs",
"description": "The application arguments to pass to the Stasis application.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "callerId",
"description": "CallerID to use when dialing the endpoint or extension.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "timeout",
"description": "Timeout (in seconds) before giving up dialing, or -1 for no timeout.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int",
"defaultValue": 30
},
{
"name": "variables",
"description": "The 'variables' key in the body object holds variable key/value pairs to set on the channel on creation. Other keys in the body object are interpreted as query parameters. Ex. { 'endpoint': 'SIP/Alice', 'variables': { 'CALLERID(name)': 'Alice' } }",
"paramType": "body",
"required": false,
"dataType": "containers",
"allowMultiple": false
},
{
"name": "otherChannelId",
"description": "The unique id to assign the second channel when using local channels.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 400,
"reason": "Invalid parameters for originating a channel."
}
]
},
{
"httpMethod": "DELETE",
"summary": "Delete (i.e. hangup) a channel.",
"nickname": "hangup",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "reason",
"description": "Reason for hanging up the channel",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string",
"defalutValue": "normal",
"allowableValues": {
"valueType": "LIST",
"values": [
"normal",
"busy",
"congestion"
]
}
}
],
"errorResponses": [
{
"code": 400,
"reason": "Invalid reason for hangup provided"
},
{
"code": 404,
"reason": "Channel not found"
}
]
}
]
},
{
"path": "/channels/{channelId}/continue",
"description": "Exit application; continue execution in the dialplan",
"operations": [
{
"httpMethod": "POST",
"summary": "Exit application; continue execution in the dialplan.",
"nickname": "continueInDialplan",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "context",
"description": "The context to continue to.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "extension",
"description": "The extension to continue to.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "priority",
"description": "The priority to continue to.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
}
]
},
{
"path": "/channels/{channelId}/answer",
"description": "Answer a channel",
"operations": [
{
"httpMethod": "POST",
"summary": "Answer a channel.",
"nickname": "answer",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
}
]
},
{
"path": "/channels/{channelId}/ring",
"description": "Send a ringing indication to a channel",
"operations": [
{
"httpMethod": "POST",
"summary": "Indicate ringing to a channel.",
"nickname": "ring",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
},
{
"httpMethod": "DELETE",
"summary": "Stop ringing indication on a channel if locally generated.",
"nickname": "ringStop",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
}
]
},
{
"path": "/channels/{channelId}/dtmf",
"description": "Send DTMF to a channel",
"operations": [
{
"httpMethod": "POST",
"summary": "Send provided DTMF to a given channel.",
"nickname": "sendDTMF",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "dtmf",
"description": "DTMF To send.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "before",
"description": "Amount of time to wait before DTMF digits (specified in milliseconds) start.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int",
"defaultValue": 0
},
{
"name": "between",
"description": "Amount of time in between DTMF digits (specified in milliseconds).",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int",
"defaultValue": 100
},
{
"name": "duration",
"description": "Length of each DTMF digit (specified in milliseconds).",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int",
"defaultValue": 100
},
{
"name": "after",
"description": "Amount of time to wait after DTMF digits (specified in milliseconds) end.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int",
"defaultValue": 0
}
],
"errorResponses": [
{
"code": 400,
"reason": "DTMF is required"
},
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
}
]
},
{
"path": "/channels/{channelId}/mute",
"description": "Mute a channel",
"operations": [
{
"httpMethod": "POST",
"summary": "Mute a channel.",
"nickname": "mute",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "direction",
"description": "Direction in which to mute audio",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string",
"defaultValue": "both",
"allowableValues": {
"valueType": "LIST",
"values": [
"both",
"in",
"out"
]
}
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
},
{
"httpMethod": "DELETE",
"summary": "Unmute a channel.",
"nickname": "unmute",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "direction",
"description": "Direction in which to unmute audio",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string",
"defaultValue": "both",
"allowableValues": {
"valueType": "LIST",
"values": [
"both",
"in",
"out"
]
}
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
}
]
},
{
"path": "/channels/{channelId}/hold",
"description": "Put a channel on hold",
"operations": [
{
"httpMethod": "POST",
"summary": "Hold a channel.",
"nickname": "hold",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
},
{
"httpMethod": "DELETE",
"summary": "Remove a channel from hold.",
"nickname": "unhold",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
}
]
},
{
"path": "/channels/{channelId}/moh",
"description": "Play music on hold to a channel",
"operations": [
{
"httpMethod": "POST",
"summary": "Play music on hold to a channel.",
"notes": "Using media operations such as /play on a channel playing MOH in this manner will suspend MOH without resuming automatically. If continuing music on hold is desired, the stasis application must reinitiate music on hold.",
"nickname": "startMoh",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "mohClass",
"description": "Music on hold class to use",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
},
{
"httpMethod": "DELETE",
"summary": "Stop playing music on hold to a channel.",
"nickname": "stopMoh",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
}
]
},
{
"path": "/channels/{channelId}/silence",
"description": "Play silence to a channel",
"operations": [
{
"httpMethod": "POST",
"summary": "Play silence to a channel.",
"notes": "Using media operations such as /play on a channel playing silence in this manner will suspend silence without resuming automatically.",
"nickname": "startSilence",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
},
{
"httpMethod": "DELETE",
"summary": "Stop playing silence to a channel.",
"nickname": "stopSilence",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
}
]
},
{
"path": "/channels/{channelId}/play",
"description": "Play media to a channel",
"operations": [
{
"httpMethod": "POST",
"summary": "Start playback of media.",
"notes": "The media URI may be any of a number of URI's. Currently sound:, recording:, number:, digits:, characters:, and tone: URI's are supported. This operation creates a playback resource that can be used to control the playback of media (pause, rewind, fast forward, etc.)",
"nickname": "play",
"responseClass": "Playback",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "media",
"description": "Media's URI to play.",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "lang",
"description": "For sounds, selects language for sound.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "offsetms",
"description": "Number of media to skip before playing.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int"
},
{
"name": "skipms",
"description": "Number of milliseconds to skip for forward/reverse operations.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int",
"defaultValue": 3000
},
{
"name": "playbackId",
"description": "Playback ID.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
}
]
},
{
"path": "/channels/{channelId}/play/{playbackId}",
"description": "Play media to a channel",
"operations": [
{
"httpMethod": "POST",
"summary": "Start playback of media and specify the playbackId.",
"notes": "The media URI may be any of a number of URI's. Currently sound: and recording: URI's are supported. This operation creates a playback resource that can be used to control the playback of media (pause, rewind, fast forward, etc.)",
"nickname": "playWithId",
"responseClass": "Playback",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "playbackId",
"description": "Playback ID.",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "media",
"description": "Media's URI to play.",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "lang",
"description": "For sounds, selects language for sound.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "offsetms",
"description": "Number of media to skip before playing.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int"
},
{
"name": "skipms",
"description": "Number of milliseconds to skip for forward/reverse operations.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int",
"defaultValue": 3000
}
],
"errorResponses": [
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
}
]
},
{
"path": "/channels/{channelId}/record",
"description": "Record audio from a channel",
"operations": [
{
"httpMethod": "POST",
"summary": "Start a recording.",
"notes": "Record audio from a channel. Note that this will not capture audio sent to the channel. The bridge itself has a record feature if that's what you want.",
"nickname": "record",
"responseClass": "LiveRecording",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "name",
"description": "Recording's filename",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "format",
"description": "Format to encode audio in",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "maxDurationSeconds",
"description": "Maximum duration of the recording, in seconds. 0 for no limit",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int",
"defaultValue": 0,
"allowableValues": {
"valueType": "RANGE",
"min": 0
}
},
{
"name": "maxSilenceSeconds",
"description": "Maximum duration of silence, in seconds. 0 for no limit",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "int",
"defaultValue": 0,
"allowableValues": {
"valueType": "RANGE",
"min": 0
}
},
{
"name": "ifExists",
"description": "Action to take if a recording with the same name already exists.",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string",
"defaultValue": "fail",
"allowableValues": {
"valueType": "LIST",
"values": [
"fail",
"overwrite",
"append"
]
}
},
{
"name": "beep",
"description": "Play beep when recording begins",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "boolean",
"defaultValue": false
},
{
"name": "terminateOn",
"description": "DTMF input to terminate recording",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string",
"defaultValue": "none",
"allowableValues": {
"valueType": "LIST",
"values": [
"none",
"any",
"*",
"#"
]
}
}
],
"errorResponses": [
{
"code": 400,
"reason": "Invalid parameters"
},
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel is not in a Stasis application; the channel is currently bridged with other hcannels; A recording with the same name already exists on the system and can not be overwritten because it is in progress or ifExists=fail"
},
{
"code": 422,
"reason": "The format specified is unknown on this system"
}
]
}
]
},
{
"path": "/channels/{channelId}/variable",
"description": "Variables on a channel",
"operations": [
{
"httpMethod": "GET",
"summary": "Get the value of a channel variable or function.",
"nickname": "getChannelVar",
"responseClass": "Variable",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "variable",
"description": "The channel variable or function to get",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 400,
"reason": "Missing variable parameter."
},
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
},
{
"httpMethod": "POST",
"summary": "Set the value of a channel variable or function.",
"nickname": "setChannelVar",
"responseClass": "void",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "variable",
"description": "The channel variable or function to set",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "value",
"description": "The value to set the variable to",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 400,
"reason": "Missing variable parameter."
},
{
"code": 404,
"reason": "Channel not found"
},
{
"code": 409,
"reason": "Channel not in a Stasis application"
}
]
}
]
},
{
"path": "/channels/{channelId}/snoop",
"description": "Snoop (spy/whisper) on a channel",
"operations": [
{
"httpMethod": "POST",
"summary": "Start snooping.",
"notes": "Snoop (spy/whisper) on a specific channel.",
"nickname": "snoopChannel",
"responseClass": "Channel",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "spy",
"description": "Direction of audio to spy on",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string",
"defaultValue": "none",
"allowableValues": {
"valueType": "LIST",
"values": [
"none",
"both",
"out",
"in"
]
}
},
{
"name": "whisper",
"description": "Direction of audio to whisper into",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string",
"defaultValue": "none",
"allowableValues": {
"valueType": "LIST",
"values": [
"none",
"both",
"out",
"in"
]
}
},
{
"name": "app",
"description": "Application the snooping channel is placed into",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "appArgs",
"description": "The application arguments to pass to the Stasis application",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "snoopId",
"description": "Unique ID to assign to snooping channel",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 400,
"reason": "Invalid parameters"
},
{
"code": 404,
"reason": "Channel not found"
}
]
}
]
},
{
"path": "/channels/{channelId}/snoop/{snoopId}",
"description": "Snoop (spy/whisper) on a channel",
"operations": [
{
"httpMethod": "POST",
"summary": "Start snooping.",
"notes": "Snoop (spy/whisper) on a specific channel.",
"nickname": "snoopChannelWithId",
"responseClass": "Channel",
"parameters": [
{
"name": "channelId",
"description": "Channel's id",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "snoopId",
"description": "Unique ID to assign to snooping channel",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "spy",
"description": "Direction of audio to spy on",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string",
"defaultValue": "none",
"allowableValues": {
"valueType": "LIST",
"values": [
"none",
"both",
"out",
"in"
]
}
},
{
"name": "whisper",
"description": "Direction of audio to whisper into",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string",
"defaultValue": "none",
"allowableValues": {
"valueType": "LIST",
"values": [
"none",
"both",
"out",
"in"
]
}
},
{
"name": "app",
"description": "Application the snooping channel is placed into",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "appArgs",
"description": "The application arguments to pass to the Stasis application",
"paramType": "query",
"required": false,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 400,
"reason": "Invalid parameters"
},
{
"code": 404,
"reason": "Channel not found"
}
]
}
]
}
],
"models": {
"Dialed": {
"id": "Dialed",
"description": "Dialed channel information.",
"properties": {}
},
"DialplanCEP": {
"id": "DialplanCEP",
"description": "Dialplan location (context/extension/priority)",
"properties": {
"context": {
"required": true,
"type": "string",
"description": "Context in the dialplan"
},
"exten": {
"required": true,
"type": "string",
"description": "Extension in the dialplan"
},
"priority": {
"required": true,
"type": "long",
"description": "Priority in the dialplan"
}
}
},
"CallerID": {
"id": "CallerID",
"description": "Caller identification",
"properties": {
"name": {
"required": true,
"type": "string"
},
"number": {
"required": true,
"type": "string"
}
}
},
"Channel": {
"id": "Channel",
"description": "A specific communication connection between Asterisk and an Endpoint.",
"properties": {
"id": {
"required": true,
"type": "string",
"description": "Unique identifier of the channel.\n\nThis is the same as the Uniqueid field in AMI."
},
"name": {
"required": true,
"type": "string",
"description": "Name of the channel (i.e. SIP/foo-0000a7e3)"
},
"state": {
"required": true,
"type": "string",
"allowableValues": {
"valueType": "LIST",
"values": [
"Down",
"Rsrved",
"OffHook",
"Dialing",
"Ring",
"Ringing",
"Up",
"Busy",
"Dialing Offhook",
"Pre-ring",
"Unknown"
]
}
},
"caller": {
"required": true,
"type": "CallerID"
},
"connected": {
"required": true,
"type": "CallerID"
},
"accountcode": {
"required": true,
"type": "string"
},
"dialplan": {
"required": true,
"type": "DialplanCEP",
"description": "Current location in the dialplan"
},
"creationtime": {
"required": true,
"type": "Date",
"description": "Timestamp when channel was created"
}
}
}
}
}