Update API versions and UPGRADE/CHANGES for 12.2.0
[asterisk/asterisk.git] / rest-api / api-docs / channels.json
index 55997bb..d940f43 100644 (file)
@@ -2,7 +2,7 @@
        "_copyright": "Copyright (C) 2012 - 2013, Digium, Inc.",
        "_author": "David M. Lee, II <dlee@digium.com>",
        "_svn_revision": "$Revision$",
-       "apiVersion": "0.0.1",
+       "apiVersion": "1.2.0",
        "swaggerVersion": "1.1",
        "basePath": "http://localhost:8088/stasis",
        "resourcePath": "/api-docs/channels.{format}",
@@ -14,7 +14,7 @@
                                {
                                        "httpMethod": "GET",
                                        "summary": "List all active channels in Asterisk.",
-                                       "nickname": "getChannels",
+                                       "nickname": "list",
                                        "responseClass": "List[Channel]"
                                },
                                {
                                                        "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": [
                                {
                                        "httpMethod": "GET",
                                        "summary": "Channel details.",
-                                       "nickname": "getChannel",
+                                       "nickname": "get",
                                        "responseClass": "Channel",
                                        "parameters": [
                                                {
                                        ]
                                },
                                {
-                                       "httpMethod": "DELETE",
-                                       "summary": "Delete (i.e. hangup) a channel.",
-                                       "nickname": "deleteChannel",
-                                       "responseClass": "void",
+                                       "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": "Channel's id",
+                                                       "description": "The unique id to assign the channel on creation.",
                                                        "paramType": "path",
                                                        "required": true,
                                                        "allowMultiple": false,
                                                        "dataType": "string"
-                                               }
-                                       ],
-                                       "errorResponses": [
-                                               {
-                                                       "code": 404,
-                                                       "reason": "Channel not found"
-                                               }
-                                       ]
-                               }
-                       ]
-               },
-               {
-                       "path": "/channels/{channelId}/dial",
-                       "description": "Create a new channel (originate) and bridge to this channel",
-                       "operations": [
-                               {
-                                       "httpMethod": "POST",
-                                       "summary": "Create a new channel (originate) and bridge to this channel.",
-                                       "nickname": "dial",
-                                       "responseClass": "Dialed",
-                                       "parameters": [
+                                               },
                                                {
-                                                       "name": "channelId",
-                                                       "description": "Channel's id",
-                                                       "paramType": "path",
+                                                       "name": "endpoint",
+                                                       "description": "Endpoint to call.",
+                                                       "paramType": "query",
                                                        "required": true,
                                                        "allowMultiple": false,
                                                        "dataType": "string"
                                                },
                                                {
-                                                       "name": "endpoint",
-                                                       "description": "Endpoint to call. If not specified, dial is routed via dialplan",
+                                                       "name": "extension",
+                                                       "description": "The extension to dial after the endpoint answers",
                                                        "paramType": "query",
                                                        "required": false,
                                                        "allowMultiple": false,
                                                        "dataType": "string"
                                                },
                                                {
-                                                       "name": "extension",
-                                                       "description": "Extension to dial",
+                                                       "name": "context",
+                                                       "description": "The context to dial after the endpoint answers. If omitted, uses 'default'",
                                                        "paramType": "query",
                                                        "required": false,
                                                        "allowMultiple": false,
                                                        "dataType": "string"
                                                },
                                                {
-                                                       "name": "context",
-                                                       "description": "When routing via dialplan, the context use. If omitted, uses 'default'",
+                                                       "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,
                                                        "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": 404,
-                                                       "reason": "Channel not found"
+                                                       "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"
                                                },
                                                {
-                                                       "code": 409,
-                                                       "reason": "Channel not in a Stasis application"
+                                                       "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"
                                                }
                                        ]
                                }
                                {
                                        "httpMethod": "POST",
                                        "summary": "Answer a channel.",
-                                       "nickname": "answerChannel",
+                                       "nickname": "answer",
                                        "responseClass": "void",
                                        "parameters": [
                                                {
                        ]
                },
                {
+                       "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": "muteChannel",
+                                       "nickname": "mute",
                                        "responseClass": "void",
                                        "parameters": [
                                                {
                                                        "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}/unmute",
-                       "description": "Unmute a channel",
+                       "path": "/channels/{channelId}/hold",
+                       "description": "Put a channel on hold",
                        "operations": [
                                {
-                                       "httpMethod": "POST",
-                                       "summary": "Unmute a channel.",
-                                       "nickname": "unmuteChannel",
+                                       "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": [
                                                {
                                                        "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": [
                        ]
                },
                {
-                       "path": "/channels/{channelId}/hold",
-                       "description": "Put a channel on hold",
+                       "path": "/channels/{channelId}/silence",
+                       "description": "Play silence to a channel",
                        "operations": [
                                {
                                        "httpMethod": "POST",
-                                       "summary": "Hold a channel.",
-                                       "nickname": "holdChannel",
+                                       "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": [
                                                {
                                                        "reason": "Channel not in a Stasis application"
                                                }
                                        ]
-                               }
-                       ]
-               },
-               {
-                       "path": "/channels/{channelId}/hold",
-                       "description": "Remove a channel from hold",
-                       "operations": [
+                               },
                                {
                                        "httpMethod": "DELETE",
-                                       "summary": "Remove a channel from hold.",
-                                       "nickname": "unholdChannel",
+                                       "summary": "Stop playing silence to a channel.",
+                                       "nickname": "stopSilence",
                                        "responseClass": "void",
                                        "parameters": [
                                                {
                        ]
                },
                {
-                       "path": "/channels/{channelId}/moh",
-                       "description": "Play music on hold to a channel",
+                       "path": "/channels/{channelId}/play",
+                       "description": "Play media to a channel",
                        "operations": [
                                {
                                        "httpMethod": "POST",
-                                       "summary": "Play music on hold to a channel.",
-                                       "notes": "Using media operations such as playOnChannel 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": "mohStartChannel",
-                                       "responseClass": "void",
+                                       "summary": "Start playback of media.",
+                                       "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": "play",
+                                       "responseClass": "Playback",
                                        "parameters": [
                                                {
                                                        "name": "channelId",
                                                        "dataType": "string"
                                                },
                                                {
-                                                       "name": "mohClass",
-                                                       "description": "Music on hold class to use",
+                                                       "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"
-                                               }
-                                       ],
-                                       "errorResponses": [
+                                               },
                                                {
-                                                       "code": 404,
-                                                       "reason": "Channel not found"
+                                                       "name": "offsetms",
+                                                       "description": "Number of media to skip before playing.",
+                                                       "paramType": "query",
+                                                       "required": false,
+                                                       "allowMultiple": false,
+                                                       "dataType": "int"
                                                },
                                                {
-                                                       "code": 409,
-                                                       "reason": "Channel not in a Stasis application"
-                                               }
-                                       ]
-                               }
-                       ]
-               },
-               {
-                       "path": "/channels/{channelId}/moh",
-                       "description": "Stop playing music on hold to a channel",
-                       "operations": [
-                               {
-                                       "httpMethod": "DELETE",
-                                       "summary": "Stop playing music on hold to a channel.",
-                                       "nickname": "mohStopChannel",
-                                       "responseClass": "void",
-                                       "parameters": [
+                                                       "name": "skipms",
+                                                       "description": "Number of milliseconds to skip for forward/reverse operations.",
+                                                       "paramType": "query",
+                                                       "required": false,
+                                                       "allowMultiple": false,
+                                                       "dataType": "int",
+                                                       "defaultValue": 3000
+                                               },
                                                {
-                                                       "name": "channelId",
-                                                       "description": "Channel's id",
-                                                       "paramType": "path",
-                                                       "required": true,
+                                                       "name": "playbackId",
+                                                       "description": "Playback ID.",
+                                                       "paramType": "query",
+                                                       "required": false,
                                                        "allowMultiple": false,
                                                        "dataType": "string"
                                                }
                        ]
                },
                {
-                       "path": "/channels/{channelId}/play",
+                       "path": "/channels/{channelId}/play/{playbackId}",
                        "description": "Play media to a channel",
                        "operations": [
                                {
                                        "httpMethod": "POST",
-                                       "summary": "Start playback of media.",
+                                       "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": "playOnChannel",
+                                       "nickname": "playWithId",
                                        "responseClass": "Playback",
                                        "parameters": [
                                                {
                                                        "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",
                                        "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": "recordChannel",
+                                       "nickname": "record",
                                        "responseClass": "LiveRecording",
                                        "parameters": [
                                                {
                                                },
                                                {
                                                        "code": 409,
-                                                       "reason": "Channel is not in a Stasis application; the channel is currently bridged with other channels; A recording with the same name is currently in progress."
+                                                       "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}/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": {