mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-16 09:52:24 +00:00
Swagger allows parameters to be specified as 'allowMultiple', meaning that the parameter may be specified as a comma separated list of values. I had written some of the API docs using that, but promptly forgot about implementing it. This patch finally fills in that gap. The codegen template was updated to represent 'allowMultiple' fields as array/size fields in the _args structs. It also parses the comma separated list using ast_app_separate_args(), so quoted strings in the argument will be handled properly. Review: https://reviewboard.asterisk.org/r/2698/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@396122 65c4cc65-6c06-0410-ace0-fbb531ad65f3
399 lines
9.7 KiB
JSON
399 lines
9.7 KiB
JSON
{
|
|
"_copyright": "Copyright (C) 2012 - 2013, Digium, Inc.",
|
|
"_author": "David M. Lee, II <dlee@digium.com>",
|
|
"_svn_revision": "$Revision$",
|
|
"apiVersion": "0.0.1",
|
|
"swaggerVersion": "1.1",
|
|
"basePath": "http://localhost:8088/stasis",
|
|
"resourcePath": "/api-docs/bridges.{format}",
|
|
"apis": [
|
|
{
|
|
"path": "/bridges",
|
|
"description": "Active bridges",
|
|
"operations": [
|
|
{
|
|
"httpMethod": "GET",
|
|
"summary": "List active bridges.",
|
|
"nickname": "getBridges",
|
|
"responseClass": "List[Bridge]"
|
|
},
|
|
{
|
|
"httpMethod": "POST",
|
|
"summary": "Create a new bridge.",
|
|
"notes": "This bridge persists until it has been shut down, or Asterisk has been shut down.",
|
|
"nickname": "newBridge",
|
|
"responseClass": "Bridge",
|
|
"parameters": [
|
|
{
|
|
"name": "type",
|
|
"description": "Type of bridge to create.",
|
|
"paramType": "query",
|
|
"required": false,
|
|
"allowMultiple": false,
|
|
"dataType": "string",
|
|
"allowableValues": {
|
|
"valueType": "LIST",
|
|
"values": [
|
|
"mixing",
|
|
"holding"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/bridges/{bridgeId}",
|
|
"description": "Individual bridge",
|
|
"operations": [
|
|
{
|
|
"httpMethod": "GET",
|
|
"summary": "Get bridge details.",
|
|
"nickname": "getBridge",
|
|
"responseClass": "Bridge",
|
|
"parameters": [
|
|
{
|
|
"name": "bridgeId",
|
|
"description": "Bridge's id",
|
|
"paramType": "path",
|
|
"required": true,
|
|
"allowMultiple": false,
|
|
"dataType": "string"
|
|
}
|
|
],
|
|
"errorResponses": [
|
|
{
|
|
"code": 404,
|
|
"reason": "Bridge not found"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"httpMethod": "DELETE",
|
|
"summary": "Shut down a bridge.",
|
|
"notes": "If any channels are in this bridge, they will be removed and resume whatever they were doing beforehand.",
|
|
"nickname": "deleteBridge",
|
|
"responseClass": "void",
|
|
"parameters": [
|
|
{
|
|
"name": "bridgeId",
|
|
"description": "Bridge's id",
|
|
"paramType": "path",
|
|
"required": true,
|
|
"allowMultiple": false,
|
|
"dataType": "string"
|
|
}
|
|
],
|
|
"errorResponses": [
|
|
{
|
|
"code": 404,
|
|
"reason": "Bridge not found"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/bridges/{bridgeId}/addChannel",
|
|
"description": "Add a channel to a bridge",
|
|
"operations": [
|
|
{
|
|
"httpMethod": "POST",
|
|
"summary": "Add a channel to a bridge.",
|
|
"nickname": "addChannelToBridge",
|
|
"responseClass": "void",
|
|
"parameters": [
|
|
{
|
|
"name": "bridgeId",
|
|
"description": "Bridge's id",
|
|
"paramType": "path",
|
|
"required": true,
|
|
"allowMultiple": false,
|
|
"dataType": "string"
|
|
},
|
|
{
|
|
"name": "channel",
|
|
"description": "Ids of channels to add to bridge",
|
|
"paramType": "query",
|
|
"required": true,
|
|
"allowMultiple": true,
|
|
"dataType": "string"
|
|
}
|
|
],
|
|
"errorResponses": [
|
|
{
|
|
"code": 404,
|
|
"reason": "Bridge not found"
|
|
},
|
|
{
|
|
"code": 409,
|
|
"reason": "Bridge not in Stasis application"
|
|
},
|
|
{
|
|
"code": 422,
|
|
"reason": "Channel not found, or not in Stasis application"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/bridges/{bridgeId}/removeChannel",
|
|
"description": "Remove a channel from a bridge",
|
|
"operations": [
|
|
{
|
|
"httpMethod": "POST",
|
|
"summary": "Remove a channel from a bridge.",
|
|
"nickname": "removeChannelFromBridge",
|
|
"responseClass": "void",
|
|
"parameters": [
|
|
{
|
|
"name": "bridgeId",
|
|
"description": "Bridge's id",
|
|
"paramType": "path",
|
|
"required": true,
|
|
"allowMultiple": false,
|
|
"dataType": "string"
|
|
},
|
|
{
|
|
"name": "channel",
|
|
"description": "Ids of channels to remove from bridge",
|
|
"paramType": "query",
|
|
"required": true,
|
|
"allowMultiple": true,
|
|
"dataType": "string"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/bridges/{bridgeId}/play",
|
|
"description": "Play media to the participants of a bridge",
|
|
"operations": [
|
|
{
|
|
"httpMethod": "POST",
|
|
"summary": "Start playback of media on a bridge.",
|
|
"notes": "The media URI may be any of a number of URI's. You may use http: and https: URI's, as well as sound: and recording: URI's. This operation creates a playback resource that can be used to control the playback of media (pause, rewind, fast forward, etc.)",
|
|
"nickname": "playOnBridge",
|
|
"responseClass": "Playback",
|
|
"parameters": [
|
|
{
|
|
"name": "bridgeId",
|
|
"description": "Bridge'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",
|
|
"defaultValue": 0,
|
|
"allowableValues": {
|
|
"valueType": "RANGE",
|
|
"min": 0
|
|
}
|
|
|
|
},
|
|
{
|
|
"name": "skipms",
|
|
"description": "Number of milliseconds to skip for forward/reverse operations.",
|
|
"paramType": "query",
|
|
"required": false,
|
|
"allowMultiple": false,
|
|
"dataType": "int",
|
|
"defaultValue": 3000,
|
|
"allowableValues": {
|
|
"valueType": "RANGE",
|
|
"min": 0
|
|
}
|
|
|
|
}
|
|
],
|
|
"errorResponses": [
|
|
{
|
|
"code": 404,
|
|
"reason": "Bridge not found"
|
|
},
|
|
{
|
|
"code": 409,
|
|
"reason": "Bridge not in a Stasis application"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/bridges/{bridgeId}/record",
|
|
"description": "Record audio on a bridge",
|
|
"operations": [
|
|
{
|
|
"httpMethod": "POST",
|
|
"summary": "Start a recording.",
|
|
"notes": "This records the mixed audio from all channels participating in this bridge.",
|
|
"nickname": "recordBridge",
|
|
"responseClass": "LiveRecording",
|
|
"parameters": [
|
|
{
|
|
"name": "bridgeId",
|
|
"description": "Bridge'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",
|
|
"*",
|
|
"#"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"models": {
|
|
"Bridge": {
|
|
"id": "Bridge",
|
|
"description": "The merging of media from one or more channels.\n\nEveryone on the bridge receives the same audio.",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "Unique identifier for this bridge",
|
|
"required": true
|
|
},
|
|
"technology": {
|
|
"type": "string",
|
|
"description": "Name of the current bridging technology",
|
|
"required": true
|
|
},
|
|
"bridge_type": {
|
|
"type": "string",
|
|
"description": "Type of bridge technology",
|
|
"required": true,
|
|
"allowableValues": {
|
|
"valueType": "LIST",
|
|
"values": [
|
|
"mixing",
|
|
"holding"
|
|
]
|
|
}
|
|
},
|
|
"bridge_class": {
|
|
"type": "string",
|
|
"description": "Bridging class",
|
|
"required": true
|
|
},
|
|
"channels": {
|
|
"type": "List[string]",
|
|
"description": "Ids of channels participating in this bridge",
|
|
"required": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|