ARI: Rotate log channels.
[asterisk/asterisk.git] / rest-api / api-docs / asterisk.json
index cbed189..5109419 100644 (file)
        "_copyright": "Copyright (C) 2012 - 2013, Digium, Inc.",
        "_author": "David M. Lee, II <dlee@digium.com>",
        "_svn_revision": "$Revision$",
-       "apiVersion": "0.0.1",
+       "apiVersion": "1.7.0",
        "swaggerVersion": "1.1",
-       "basePath": "http://localhost:8088/stasis",
+       "basePath": "http://localhost:8088/ari",
        "resourcePath": "/api-docs/asterisk.{format}",
        "apis": [
                {
+                       "path": "/asterisk/config/dynamic/{configClass}/{objectType}/{id}",
+                       "description": "Asterisk dynamic configuration",
+                       "operations": [
+                               {
+                                       "httpMethod": "GET",
+                                       "summary": "Retrieve a dynamic configuration object.",
+                                       "nickname": "getObject",
+                                       "responseClass": "List[ConfigTuple]",
+                                       "parameters": [
+                                               {
+                                                       "name": "configClass",
+                                                       "description": "The configuration class containing dynamic configuration objects.",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               },
+                                               {
+                                                       "name": "objectType",
+                                                       "description": "The type of configuration object to retrieve.",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               },
+                                               {
+                                                       "name": "id",
+                                                       "description": "The unique identifier of the object to retrieve.",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 404,
+                                                       "reason": "{configClass|objectType|id} not found"
+                                               }
+                                       ]
+                               },
+                               {
+                                       "httpMethod": "PUT",
+                                       "summary": "Create or update a dynamic configuration object.",
+                                       "nickname": "updateObject",
+                                       "responseClass": "List[ConfigTuple]",
+                                       "parameters": [
+                                               {
+                                                       "name": "configClass",
+                                                       "description": "The configuration class containing dynamic configuration objects.",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               },
+                                               {
+                                                       "name": "objectType",
+                                                       "description": "The type of configuration object to create or update.",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               },
+                                               {
+                                                       "name": "id",
+                                                       "description": "The unique identifier of the object to create or update.",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               },
+                                               {
+                                                       "name": "fields",
+                                                       "description": "The body object should have a value that is a list of ConfigTuples, which provide the fields to update. Ex. [ { \"attribute\": \"directmedia\", \"value\": \"false\" } ]",
+                                                       "paramType": "body",
+                                                       "required": false,
+                                                       "dataType": "containers",
+                                                       "allowMultiple": false
+                                               }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 400,
+                                                       "reason": "Bad request body"
+                                               },
+                                               {
+                                                       "code": 403,
+                                                       "reason": "Could not create or update object"
+                                               },
+                                               {
+                                                       "code": 404,
+                                                       "reason": "{configClass|objectType} not found"
+                                               }
+                                       ]
+                               },
+                               {
+                                       "httpMethod": "DELETE",
+                                       "summary": "Delete a dynamic configuration object.",
+                                       "nickname": "deleteObject",
+                                       "responseClass": "void",
+                                       "parameters": [
+                                               {
+                                                       "name": "configClass",
+                                                       "description": "The configuration class containing dynamic configuration objects.",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               },
+                                               {
+                                                       "name": "objectType",
+                                                       "description": "The type of configuration object to delete.",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               },
+                                               {
+                                                       "name": "id",
+                                                       "description": "The unique identifier of the object to delete.",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 403,
+                                                       "reason": "Could not delete object"
+                                               },
+                                               {
+                                                       "code": 404,
+                                                       "reason": "{configClass|objectType|id} not found"
+                                               }
+                                       ]
+                               }
+                       ]
+               },
+               {
                        "path": "/asterisk/info",
                        "description": "Asterisk system information (similar to core show settings)",
                        "operations": [
                                {
                                        "httpMethod": "GET",
                                        "summary": "Gets Asterisk system information.",
-                                       "nickname": "getAsteriskInfo",
+                                       "nickname": "getInfo",
                                        "responseClass": "AsteriskInfo",
                                        "parameters": [
                                                {
                                                        "allowableValues": {
                                                                "valueType": "LIST",
                                                                "values": [
-                                                                       "version",
-                                                                       "modules",
-                                                                       "uptime"
+                                                                       "build",
+                                                                       "system",
+                                                                       "config",
+                                                                       "status"
                                                                ]
                                                        }
                                                }
                        ]
                },
                {
+                       "path": "/asterisk/modules",
+                       "description": "Asterisk modules",
+                       "operations": [
+                               {
+                                       "httpMethod": "GET",
+                                       "summary": "List Asterisk modules.",
+                                       "nickname": "listModules",
+                                       "responseClass": "List[Module]"
+                               }
+                       ]
+               },
+               {
+                       "path": "/asterisk/modules/{moduleName}",
+                       "description": "Asterisk module",
+                       "operations": [
+                               {
+                                       "httpMethod": "GET",
+                                       "summary": "Get Asterisk module information.",
+                                       "nickname": "getModule",
+                                       "responseClass": "Module",
+                                       "parameters": [
+                                               {
+                                                       "name": "moduleName",
+                                                       "description": "Module's name",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 404,
+                                                       "reason": "Module could not be found in running modules."
+                                               },
+                                               {
+                                                       "code": 409,
+                                                       "reason": "Module information could not be retrieved."
+                                               }
+                                       ]
+                               },
+                               {
+                                       "httpMethod": "POST",
+                                       "summary": "Load an Asterisk module.",
+                                       "nickname": "loadModule",
+                                       "responseClass": "void",
+                                       "parameters": [
+                                               {
+                                                       "name": "moduleName",
+                                                       "description": "Module's name",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 409,
+                                                       "reason": "Module could not be loaded."
+                                               }
+                                       ]
+                               },
+                               {
+                                       "httpMethod": "DELETE",
+                                       "summary": "Unload an Asterisk module.",
+                                       "nickname": "unloadModule",
+                                       "responseClass": "void",
+                                       "parameters": [
+                                               {
+                                                       "name": "moduleName",
+                                                       "description": "Module's name",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 404,
+                                                       "reason": "Module not found in running modules."
+                                               },
+                                               {
+                                                       "code": 409,
+                                                       "reason": "Module could not be unloaded."
+                                               }
+                                       ]
+                               },
+                               {
+                                       "httpMethod": "PUT",
+                                       "summary": "Reload an Asterisk module.",
+                                       "nickname": "reloadModule",
+                                       "responseClass": "void",
+                                       "parameters": [
+                                               {
+                                                       "name": "moduleName",
+                                                       "description": "Module's name",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 404,
+                                                       "reason": "Module not found in running modules."
+                                               },
+                                               {
+                                                       "code": 409,
+                                                       "reason": "Module could not be reloaded."
+                                               }
+                                       ]
+                               }
+                       ]
+               },
+               {
+                       "path": "/asterisk/logging/{logChannelName}/rotate",
+                       "description": "Asterisk log channel",
+                       "operations": [
+                               {
+                                       "httpMethod": "PUT",
+                                       "summary": "Rotates a log channel.",
+                                       "nickname": "rotateLog",
+                                       "responseClass": "void",
+                                       "parameters": [
+                                               {
+                                                       "name": "logChannelName",
+                                                       "description": "Log channel's name",
+                                                       "paramType": "path",
+                                                       "required": true,
+                                                       "allowMultiple": false,
+                                                       "dataType": "string"
+                                               }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 404,
+                                                       "reason": "Log channel does not exist."
+                                               }
+                                       ]
+                               }
+                       ]
+               },
+               {
                        "path": "/asterisk/variable",
                        "description": "Global variables",
                        "operations": [
                                                        "allowMultiple": false,
                                                        "dataType": "string"
                                                }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 400,
+                                                       "reason": "Missing variable parameter."
+                                               }
                                        ]
                                },
                                {
                                                        "allowMultiple": false,
                                                        "dataType": "string"
                                                }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 400,
+                                                       "reason": "Missing variable parameter."
+                                               }
                                        ]
                                }
                        ]
                                }
                        }
                },
+               "Module": {
+                       "id": "Module",
+                       "description": "Details of an Asterisk module",
+                       "properties": {
+                               "name": {
+                                       "type": "string",
+                                       "description": "The name of this module",
+                                       "required": true
+                               },
+                               "description": {
+                                       "type": "string",
+                                       "description": "The description of this module",
+                                       "required": true
+                               },
+                               "use_count": {
+                                       "type": "int",
+                                       "description": "The number of times this module is being used",
+                                       "required": true
+                               },
+                               "status": {
+                                       "type": "string",
+                                       "description": "The running status of this module",
+                                       "required": true
+                               },
+                               "support_level": {
+                                       "type": "string",
+                                       "description": "The support state of this module",
+                                       "required": true
+                               }
+                       }
+               },
+               "LogChannel": {
+                       "id": "LogChannel",
+                       "description": "Details of an Asterisk log channel",
+                       "properties": {
+                               "name": {
+                                       "type": "string",
+                                       "description": "The log channel path",
+                                       "required": true
+                               },
+                               "type": {
+                                       "type": "string",
+                                       "description": "Types of logs for the log channel",
+                                       "required": true
+                               },
+                               "status": {
+                                       "type": "string",
+                                       "description": "Whether or not a log type is enabled",
+                                       "required": true
+                               },
+                               "configuration": {
+                                       "type": "string",
+                                       "description": "The various log levels",
+                                       "required": true
+                               }
+                       }
+               },
                "Variable": {
                        "id": "Variable",
                        "description": "The value of a channel variable",
                                        "description": "The value of the variable requested"
                                }
                        }
+               },
+               "ConfigTuple": {
+                       "id": "ConfigTuple",
+                       "description": "A key/value pair that makes up part of a configuration object.",
+                       "properties": {
+                               "attribute": {
+                                       "required": true,
+                                       "type": "string",
+                                       "description": "A configuration object attribute."
+                               },
+                               "value": {
+                                       "required": true,
+                                       "type": "string",
+                                       "description": "The value for the attribute."
+                               }
+                       }
                }
        }
 }