ARI: Add mailboxes resource for controlling and polling external MWI

Adds the following AMI commands:
PUT mailboxes/mailboxName
    modifies mailbox state and implicitly creates new mailboxes
GET mailboxes/mailboxName
    retrieves a JSON representation of a single mailbox if it exists
GET mailboxes
    retrieves a JSON array of all mailboxes
DELETE mailbox/mailboxName
    deletes a mailbox
Note that res_mwi_external must be loaded for these functions to
actually do anything.

Review: https://reviewboard.asterisk.org/r/3117/
........

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@405554 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Jonathan Rose
2014-01-14 23:44:57 +00:00
parent ed0d083596
commit aa9db707c5
11 changed files with 1044 additions and 0 deletions

View File

@@ -0,0 +1,134 @@
{
"_copyright": "Copyright (C) 2013, Digium, Inc.",
"_author": "Jonathan Rose <jrose@digium.com>",
"_svn_revision": "$Revision$",
"apiVersion": "1.0.0",
"swaggerVersion": "1.1",
"basePath": "http://localhost:8088/stasis",
"resourcePath": "/api-docs/mailboxes.{format}",
"apis": [
{
"path": "/mailboxes",
"description": "Mailboxes",
"operations": [
{
"httpMethod": "GET",
"summary": "List all mailboxes.",
"nickname": "list",
"responseClass": "List[Mailbox]"
}
]
},
{
"path": "/mailboxes/{mailboxName}",
"description": "Mailbox state",
"operations": [
{
"httpMethod": "GET",
"summary": "Retrieve the current state of a mailbox.",
"nickname": "get",
"responseClass": "Mailbox",
"parameters": [
{
"name": "mailboxName",
"description": "Name of the mailbox",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Mailbox not found"
}
]
},
{
"httpMethod": "PUT",
"summary": "Change the state of a mailbox. (Note - implicitly creates the mailbox).",
"nickname": "update",
"responseClass": "void",
"parameters": [
{
"name": "mailboxName",
"description": "Name of the mailbox",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
},
{
"name": "oldMessages",
"description": "Count of old messages in the mailbox",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "int"
},
{
"name": "newMessages",
"description": "Count of new messages in the mailbox",
"paramType": "query",
"required": true,
"allowMultiple": false,
"dataType": "int"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Mailbox not found"
}
]
},
{
"httpMethod": "DELETE",
"summary": "Destroy a mailbox.",
"nickname": "delete",
"responseClass": "void",
"parameters": [
{
"name": "mailboxName",
"description": "Name of the mailbox",
"paramType": "path",
"required": true,
"allowMultiple": false,
"dataType": "string"
}
],
"errorResponses": [
{
"code": 404,
"reason": "Mailbox not found"
}
]
}
]
}
],
"models": {
"Mailbox": {
"id": "Mailbox",
"description": "Represents the state of a mailbox.",
"properties": {
"name": {
"type": "string",
"description": "Name of the mailbox.",
"required": true
},
"old_messages": {
"type": "int",
"description": "Count of old messages in the mailbox.",
"required": true
},
"new_messages": {
"type": "int",
"description": "Count of new messages in the mailbox.",
"required": true
}
}
}
}
}