{ "openapi": "3.0.0", "info": { "description": "Audio high level API for AGL applications", "title": "audiohighlevel", "version": "1.0", "x-binding-c-generator": { "api": "ahl-4a", "version": 2, "prefix": "audiohlapi_", "postfix": "", "start": null, "onevent": "AhlOnEvent", "init": "AhlBindingInit", "scope": "", "private": false, "noconcurrency": false } }, "servers": [ { "url": "ws://{host}:{port}/api/audiohl", "description": "Audio high level API for AGL applications.", "variables": { "host": { "default": "localhost" }, "port": { "default": "1234" } }, "x-afb-events": [ { "$ref": "#/components/schemas/afb-event" } ] } ], "components": { "schemas": { "afb-reply": { "$ref": "#/components/schemas/afb-reply-v2" }, "afb-event": { "$ref": "#/components/schemas/afb-event-v2" }, "afb-reply-v2": { "title": "Generic response.", "type": "object", "required": ["jtype", "request"], "properties": { "jtype": { "type": "string", "const": "afb-reply" }, "request": { "type": "object", "required": ["status"], "properties": { "status": { "type": "string" }, "info": { "type": "string" }, "token": { "type": "string" }, "uuid": { "type": "string" }, "reqid": { "type": "string" } } }, "response": { "type": "object" } } }, "afb-event-v2": { "type": "object", "required": ["jtype", "event"], "properties": { "jtype": { "type": "string", "const": "afb-event" }, "event": { "type": "string" }, "data": { "type": "object" } } }, "endpoint_info": { "type": "object", "required": [ "endpoint_id", "type", "device_name", "device_uri" ], "properties": { "endpoint_id": { "type": "int" }, "type": { "type": "enum" }, "device_name": { "type": "string" }, "device_uri_type": { "type": "string" } } }, "stream_info": { "type": "object", "required": [ "stream_id", "state", "mute", "endpoint_info" ], "properties": { "stream_id": { "type": "int" }, "state": { "type": "int" }, "mute": { "type": "int" }, "device_uri": { "type": "string" }, "$ref": "#/components/schemas/endpoint_info" } } }, "x-permissions": { "streamcontrol": { "permission": "urn:AGL:permission:audio:public:streamcontrol"}, "endpointcontrol": { "permission": "urn:AGL:permission:audio:public:endpointcontrol"}, "audiostream": { "permission": "urn:AGL:permission:audio:public:audiostream"}, "soundevent": {"permission": "urn:AGL:permission:audio:public:soundevent"} }, "responses": { "200": { "description": "A complex object array response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/afb-reply" } } } }, "400": { "description": "Invalid arguments" } } }, "paths": { "/get_endpoints": { "description": "Retrieve array of available audio endpoints", "get": { "parameters": [ { "in": "query", "name": "audio_role", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "endpoint_type", "required": true, "schema": { "type": "enum" } } ], "responses": { "200": { "$ref": "#/components/responses/200", "response": { "description": "Array of endpoint info structures", "type": "array", "items": { "$ref": "#/components/schemas/endpoint_info"} } }, "400": { "$ref": "#/components/responses/400" } } } }, "/stream_open": { "description": "Request opening a stream", "get": { "x-permissions": { "$ref": "#/components/x-permissions/audiostream" }, "parameters": [ { "in": "query", "name": "audio_role", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "endpoint_type", "required": true, "schema": { "type": "enum" } }, { "in": "query", "name": "endpoint_id", "required": false, "schema": { "type": "int" } } ], "responses": { "200": { "$ref": "#/components/responses/200", "response": { "description": "Stream information structure", "$ref": "#/components/schemas/stream_info" } }, "400": { "$ref": "#/components/responses/400" } } } }, "/stream_close": { "description": "Request closing a stream", "get": { "x-permissions": { "$ref": "#/components/x-permissions/audiostream" }, "parameters": [ { "in": "query", "name": "stream_id", "required": false, "schema": { "type": "int" } } ], "responses": { "200": { "$ref": "#/components/responses/200" }, "400": { "$ref": "#/components/responses/400" } } } }, "/set_stream_state": { "description": "Change stream active and/or mute state", "get": { "x-permissions": { "$ref": "#/components/x-permissions/streamcontrol" }, "parameters": [ { "in": "query", "name": "stream_id", "required": false, "schema": {"type": "int"} }, { "in": "query", "name": "state", "required": false, "schema": {"type": "int"} }, { "in": "query", "name": "mute", "required": false, "schema": {"type": "int"} } ], "responses": { "200": { "$ref": "#/components/responses/200" }, "400": { "$ref": "#/components/responses/400" } } } }, "/get_stream_info": { "description": "Retrieve stream information", "get": { "parameters": [ { "in": "query", "name": "stream_id", "required": true, "schema": {"type": "int"} } ], "responses": { "200": { "$ref": "#/components/responses/200", "response": { "description": "Stream information structure", "$ref": "#/components/schemas/stream_info" } }, "400": { "$ref": "#/components/responses/400" } } } }, "/volume": { "description": "Set or get volume on endpoint", "get": { "x-permissions": { "$ref": "#/components/x-permissions/endpointcontrol" }, "parameters": [ { "in": "query", "name": "endpoint_type", "required": true, "schema": { "type": "enum" } }, { "in": "query", "name": "endpoint_id", "required": true, "schema": { "type": "int" } }, { "in": "query", "name": "volume", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/200" }, "400": { "$ref": "#/components/responses/400" } } } }, "/get_endpoint_info": { "description": "Retrieve endpoint information including its properties", "get": { "parameters": [ { "in": "query", "name": "endpoint_type", "required": true, "schema": { "type": "enum" } }, { "in": "query", "name": "endpoint_id", "required": true, "schema": { "type": "int" } } ], "responses": { "200": { "$ref": "#/components/responses/200" }, "400": { "$ref": "#/components/responses/400" } } } }, "/property": { "description": "Set/get endpoint property value", "get": { "x-permissions": { "$ref": "#/components/x-permissions/endpointcontrol" }, "parameters": [ { "in": "query", "name": "endpoint_type", "required": true, "schema": { "type": "enum" } }, { "in": "query", "name": "endpoint_id", "required": true, "schema": { "type": "int" } }, { "in": "query", "name": "property_name", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "value", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/200" }, "400": { "$ref": "#/components/responses/400" } } } }, "/get_list_actions": { "description": "Retrieve a list of supported actions for a particular audio role", "get": { "parameters": [ { "in": "query", "name": "audio_role", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/200" }, "400": { "$ref": "#/components/responses/400" } } } }, "/post_action": { "description": "Post sound or audio device related action event (extendable mechanism)", "get": { "x-permissions": { "$ref": "#/components/x-permissions/soundevent" }, "parameters": [ { "in": "query", "name": "action_name", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "audio_role", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "media_name", "required": false, "schema": { "type": "string"} }, { "in": "query", "name": "action_context", "required": false, "schema": { "type": "object" } } ], "responses": { "200": { "$ref": "#/components/responses/200" }, "400": { "$ref": "#/components/responses/400" } } } }, "/event_subscription": { "description": "Subscribe to audio high level events", "get": { "parameters": [ { "in": "query", "name": "events", "required": true, "schema": { "type": "array", "items": { "type": "string" } } }, { "in": "query", "name": "subscribe", "required": true, "schema": { "type": "int" } } ], "responses": { "200": { "$ref": "#/components/responses/200" }, "400": { "$ref": "#/components/responses/400" } } } } } }