{
   "openapi": "3.0.0",
   "info": {
      "title": "Telephony",
      "description": "The Vonage Business Telephony API enables you to manage calls and retrieve device registration information.",
      "version": "1.0.1"
   },
   "servers": [
      {
         "url": "https://api.vonage.com/t/vbc.prod/telephony/v3"
      }
   ],
   "paths": {
      "/cc/accounts/{account_id}/calls": {
         "get": {
            "operationId": "GetCalls",
            "tags": [
               "Call"
            ],
            "summary": "Get list of active calls for a given account (paginated). Please use Reports API to get list of completed calls.",
            "parameters": [
               {
                  "name": "extension",
                  "in": "query",
                  "schema": {
                     "type": "string",
                     "example": 1234
                  }
               },
               {
                  "name": "page_size",
                  "in": "query",
                  "description": "Return max this amount of calls in the response.",
                  "schema": {
                     "type": "string",
                     "example": 100,
                     "default": 100
                  }
               },
               {
                  "name": "order",
                  "in": "query",
                  "description": "Either ascending or descending order.<br/>Must be one of `asc` or `desc`.",
                  "schema": {
                     "type": "string",
                     "example": "asc"
                  }
               },
               {
                  "name": "start_time",
                  "in": "query",
                  "description": "Return the calls that occurred after this point in time.<br/>Should be of type `epoch` with seconds precision.",
                  "schema": {
                     "type": "string",
                     "example": 1595955770
                  }
               },
               {
                  "name": "end_time",
                  "in": "query",
                  "description": "Return the calls that occurred before this point in time.<br/>Should be of type `epoch` with seconds precision.",
                  "schema": {
                     "type": "integer",
                     "example": 1595955770
                  }
               },
               {
                  "name": "account_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": 1234
                  }
               }
            ],
            "responses": {
               "200": {
                  "description": "200 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/CallsPaginated"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/CallsPaginated"
                        }
                     }
                  }
               },
               "401": {
                  "description": "401 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     }
                  }
               },
               "404": {
                  "description": "404 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/NotFoundMessage"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/NotFoundMessage"
                        }
                     }
                  }
               }
            },
            "security": [
               {
                  "bearerAuth": []
               }
            ],
            "x-auth-type": "Application & Application User",
            "x-throttling-tier": "Unlimited"
         },
         "post": {
            "operationId": "postCalls",
            "tags": [
               "Call"
            ],
            "summary": "Create a new call",
            "parameters": [
               {
                  "name": "account_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": 1234
                  }
               }
            ],
            "requestBody": {
               "description": "Request body description",
               "content": {
                  "application/json": {
                     "schema": {
                        "$ref": "#/components/schemas/CallPostRequestBody"
                     }
                  }
               },
               "required": true
            },
            "responses": {
               "200": {
                  "description": "200 response",
                  "content": {
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/StatusMessage"
                        }
                     },
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/StatusMessage"
                        }
                     }
                  }
               },
               "400": {
                  "description": "400 response",
                  "content": {
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/ValidationErrorMessage"
                        }
                     },
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/ValidationErrorMessage"
                        }
                     }
                  }
               },
               "401": {
                  "description": "401 response",
                  "content": {
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     },
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     }
                  }
               }
            },
            "security": [
               {
                  "bearerAuth": []
               }
            ],
            "x-auth-type": "Application & Application User",
            "x-throttling-tier": "Unlimited",
            "x-codegen-request-body-name": "body"
         }
      },
      "/cc/accounts/{account_id}/calls/{call_id}": {
         "get": {
            "operationId": "getCallsByCallId",
            "tags": [
               "Call"
            ],
            "summary": "Get details for a specific active call.",
            "parameters": [
               {
                  "name": "account_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": 1234
                  }
               },
               {
                  "name": "call_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                  }
               }
            ],
            "responses": {
               "200": {
                  "description": "200 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/Call"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/Call"
                        }
                     }
                  }
               },
               "401": {
                  "description": "401 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     }
                  }
               },
               "404": {
                  "description": "404 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/NotFoundMessage"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/NotFoundMessage"
                        }
                     }
                  }
               }
            },
            "security": [
               {
                  "bearerAuth": []
               }
            ],
            "x-auth-type": "Application & Application User",
            "x-throttling-tier": "Unlimited"
         },
         "put": {
            "operationId": "putCallsByCallId",
            "tags": [
               "Call"
            ],
            "summary": "Update an existing call",
            "parameters": [
               {
                  "name": "account_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": 12345
                  }
               },
               {
                  "name": "call_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": "c91150a6-8cc4-4e73-9fef-17fd925c6448"
                  }
               }
            ],
            "requestBody": {
               "description": "To answer a call: 'state' should be 'active', and 'to' should include the VH id of the device answering the call. To transfer a call: 'state' should not be specified. Both 'to' and 'from' should be specified. To park a call: 'state' should be 'parked', and 'from' should be specified.\n <br>",
               "content": {
                  "application/json": {
                     "schema": {
                        "$ref": "#/components/schemas/CallPutRequestBody"
                     }
                  }
               },
               "required": true
            },
            "responses": {
               "200": {
                  "description": "200 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/ModifyCallResponse"
                        }
                     }
                  }
               },
               "400": {
                  "description": "400 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/ValidationErrorMessage"
                        }
                     }
                  }
               },
               "401": {
                  "description": "401 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     }
                  }
               },
               "404": {
                  "description": "404 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/NotFoundMessage"
                        }
                     }
                  }
               }
            },
            "security": [
               {
                  "bearerAuth": []
               }
            ],
            "x-auth-type": "Application & Application User",
            "x-throttling-tier": "Unlimited",
            "x-codegen-request-body-name": "body"
         },
         "delete": {
            "operationId": "deleteCallByCallId",
            "tags": [
               "Call"
            ],
            "summary": "Delete a call resource",
            "parameters": [
               {
                  "name": "account_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": 1234
                  }
               },
               {
                  "name": "call_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                  }
               }
            ],
            "responses": {
               "200": {
                  "description": "200 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/ModifyCallResponse"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/ModifyCallResponse"
                        }
                     }
                  }
               },
               "401": {
                  "description": "401 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     }
                  }
               },
               "404": {
                  "description": "404 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/NotFoundMessage"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/NotFoundMessage"
                        }
                     }
                  }
               }
            },
            "security": [
               {
                  "bearerAuth": []
               }
            ],
            "x-auth-type": "Application & Application User",
            "x-throttling-tier": "Unlimited"
         }
      },
      "/cc/accounts/{account_id}/calls/{call_id}/legs": {
         "get": {
            "operationId": "getCallLegs",
            "tags": [
               "Call Leg"
            ],
            "summary": "Get list of legs for a given active call",
            "parameters": [
               {
                  "name": "account_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": 1234
                  }
               },
               {
                  "name": "call_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                  }
               }
            ],
            "responses": {
               "200": {
                  "description": "200 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/CallLegList"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/CallLegList"
                        }
                     }
                  }
               },
               "401": {
                  "description": "401 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     }
                  }
               }
            },
            "security": [
               {
                  "bearerAuth": []
               }
            ],
            "x-auth-type": "Application & Application User",
            "x-throttling-tier": "Unlimited"
         }
      },
      "/cc/accounts/{account_id}/calls/{call_id}/legs/{leg_id}": {
         "get": {
            "operationId": "getCallLegByLegId",
            "tags": [
               "Call Leg"
            ],
            "summary": "Get details for a specific active call leg",
            "parameters": [
               {
                  "name": "leg_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                  }
               },
               {
                  "name": "account_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": 1234
                  }
               },
               {
                  "name": "call_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                  }
               }
            ],
            "responses": {
               "200": {
                  "description": "200 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/CallLeg"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/CallLeg"
                        }
                     }
                  }
               },
               "401": {
                  "description": "401 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     }
                  }
               }
            },
            "security": [
               {
                  "bearerAuth": []
               }
            ],
            "x-auth-type": "Application & Application User",
            "x-throttling-tier": "Unlimited"
         },
         "put": {
            "operationId": "updateCallLegByLegId",
            "tags": [
               "Call Leg"
            ],
            "summary": "Modify a call leg.",
            "parameters": [
               {
                  "name": "account_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": 1234
                  }
               },
               {
                  "name": "call_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                  }
               },
               {
                  "name": "leg_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                  }
               }
            ],
            "requestBody": {
               "description": "Perform hold or unhold or send dtmf or transfer on the call leg.",
               "content": {
                  "application/json": {
                     "schema": {
                        "oneOf": [
                           {
                              "title": "Hold",
                              "x-tab-id": "Hold",
                              "oneOf": [
                                 {
                                    "title": "Held",
                                    "x-tab-id": "Held",
                                    "type": "object",
                                    "properties": {
                                       "state": {
                                          "type": "string",
                                          "example": "held"
                                       }
                                    }
                                 },
                                 {
                                    "title": "Unhold",
                                    "x-tab-id": "Unhold",
                                    "type": "object",
                                    "properties": {
                                       "state": {
                                          "type": "string",
                                          "example": "active"
                                       }
                                    }
                                 }
                              ]
                           },
                           {
                              "title": "DTMF",
                              "x-tab-id": "DTMF",
                              "type": "object",
                              "properties": {
                                 "dtmf": {
                                    "type": "string",
                                    "example": "*123#"
                                 }
                              }
                           },
                           {
                              "title": "Play Sound",
                              "x-tab-id": "Play Sound",
                              "type": "object",
                              "properties": {
                                 "stream": {
                                    "type": "boolean",
                                    "example": true
                                 },
                                 "stream_url": {
                                    "type": "string",
                                    "example": "https://example.com/recorded_message.wav"
                                 }
                              }
                           },
                           {
                              "title": "Stop Sound",
                              "x-tab-id": "Stop Sound",
                              "type": "object",
                              "properties": {
                                 "stream": {
                                    "type": "boolean",
                                    "example": false
                                 }
                              }
                           },
                           {
                              "title": "Blind XFER",
                              "x-tab-id": "Blind XFER",
                              "type": "object",
                              "properties": {
                                 "state": {
                                    "type": "string",
                                    "example": "active"
                                 },
                                 "to": {
                                    "type": "object",
                                    "example": "{'destination': Contact, 'type': ttype}"
                                 }
                              }
                           },
                           {
                              "title": "ATT XFER",
                              "x-tab-id": "ATT XFER",
                              "type": "object",
                              "properties": {
                                 "state": {
                                    "type": "string",
                                    "example": "active"
                                 },
                                 "to": {
                                    "type": "object",
                                    "example": "{'destination': leg_id,'type': 'leg'}"
                                 }
                              }
                           },
                           {
                              "title": "Active",
                              "x-tab-id": "Active",
                              "type": "object",
                              "properties": {
                                 "state": {
                                    "type": "string",
                                    "example": "active"
                                 }
                              }
                           },
                           {
                              "title": "Record",
                              "x-tab-id": "Record",
                              "oneOf": [
                                 {
                                    "title": "CCR Start",
                                    "x-tab-id": "CCR Start",
                                    "type": "object",
                                    "properties": {
                                       "recording": {
                                          "type": "string",
                                          "example": "start"
                                       },
                                       "service": {
                                          "type": "string",
                                          "example": "ccr"
                                       }
                                    }
                                 },
                                 {
                                    "title": "CCR Stop",
                                    "x-tab-id": "CCR Stop",
                                    "type": "object",
                                    "properties": {
                                       "recording": {
                                          "type": "string",
                                          "example": "stop"
                                       },
                                       "service": {
                                          "type": "string",
                                          "example": "ccr"
                                       }
                                    }
                                 },
                                 {
                                    "title": "OCR Start",
                                    "x-tab-id": "OCR Start",
                                    "type": "object",
                                    "properties": {
                                       "recording": {
                                          "type": "string",
                                          "example": "start"
                                       },
                                       "service": {
                                          "type": "string",
                                          "example": "ocr"
                                       }
                                    }
                                 },
                                 {
                                    "title": "OCR Stop",
                                    "x-tab-id": "OCR Stop",
                                    "type": "object",
                                    "properties": {
                                       "recording": {
                                          "type": "string",
                                          "example": "stop"
                                       },
                                       "service": {
                                          "type": "string",
                                          "example": "ocr"
                                       }
                                    }
                                 }
                              ]
                           }
                        ]
                     }
                  }
               },
               "required": true
            },
            "responses": {
               "200": {
                  "description": "200 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/ModifyLegResponse"
                        }
                     }
                  }
               },
               "400": {
                  "description": "400 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/ValidationErrorMessage"
                        }
                     }
                  }
               },
               "401": {
                  "description": "401 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     }
                  }
               },
               "404": {
                  "description": "404 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/NotFoundMessage"
                        }
                     }
                  }
               },
               "409": {
                  "description": "409 response if conflict while changing state of a leg",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/ValidationErrorMessage"
                        }
                     }
                  }
               }
            },
            "security": [
               {
                  "bearerAuth": []
               }
            ],
            "x-auth-type": "Application & Application User",
            "x-throttling-tier": "Unlimited",
            "x-codegen-request-body-name": "body"
         },
         "delete": {
            "operationId": "updateCallLeg",
            "tags": [
               "Call Leg"
            ],
            "summary": "Delete a call leg.",
            "parameters": [
               {
                  "name": "account_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": 1234
                  }
               },
               {
                  "name": "call_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                  }
               },
               {
                  "name": "leg_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                  }
               }
            ],
            "responses": {
               "204": {
                  "description": "204 response",
                  "content": {}
               },
               "400": {
                  "description": "400 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/ValidationErrorMessage"
                        }
                     }
                  }
               },
               "401": {
                  "description": "401 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     }
                  }
               },
               "404": {
                  "description": "404 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/NotFoundMessage"
                        }
                     }
                  }
               },
               "409": {
                  "description": "409 response if conflict while changing state of a leg",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/ValidationErrorMessage"
                        }
                     }
                  }
               }
            },
            "security": [
               {
                  "bearerAuth": []
               }
            ],
            "x-auth-type": "Application & Application User",
            "x-throttling-tier": "Unlimited"
         }
      },
      "/registration/accounts/{account_id}/devices": {
         "get": {
            "operationId": "getDevices",
            "tags": [
               "Device registration"
            ],
            "summary": "Get account device's registration info",
            "parameters": [
               {
                  "name": "page_size",
                  "in": "query",
                  "description": "Return max this number of devices in the response.",
                  "schema": {
                     "type": "string",
                     "default": 100,
                     "example": 10
                  }
               },
               {
                  "name": "order",
                  "in": "query",
                  "description": "Either ascending or descending order.<br/>Must be one of `asc` or `desc`.",
                  "schema": {
                     "type": "string",
                     "example": "asc"
                  }
               },
               {
                  "name": "start_time",
                  "in": "query",
                  "description": "Return the devices that were registered after this point in time.<br/>Should be of type `epoch` with seconds precision.",
                  "schema": {
                     "type": "string",
                     "example": 1595955770
                  }
               },
               {
                  "name": "end_time",
                  "in": "query",
                  "description": "Return the devices that were registered before this point in time.<br/>Should be of type `epoch` with seconds precision.",
                  "schema": {
                     "type": "integer",
                     "example": 1595955770
                  }
               },
               {
                  "name": "account_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": 1234
                  }
               }
            ],
            "responses": {
               "200": {
                  "description": "200 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AccountsRegPaginated"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/AccountsRegPaginated"
                        }
                     }
                  }
               },
               "401": {
                  "description": "401 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     }
                  }
               }
            },
            "security": [
               {
                  "bearerAuth": []
               }
            ],
            "x-auth-type": "Application & Application User",
            "x-throttling-tier": "Unlimited"
         }
      },
      "/registration/accounts/{account_id}/devices/{device_id}": {
         "get": {
            "operationId": "getDeviceByDeviceId",
            "tags": [
               "Device registration"
            ],
            "summary": "Get device registration info",
            "parameters": [
               {
                  "name": "account_id",
                  "in": "path",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": 1234
                  }
               },
               {
                  "name": "device_id",
                  "in": "path",
                  "description": "Mac address of device",
                  "required": true,
                  "schema": {
                     "type": "string",
                     "example": "38-99-62-93-E2-A9"
                  }
               }
            ],
            "responses": {
               "200": {
                  "description": "200 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/RegistrationInfo"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/RegistrationInfo"
                        }
                     }
                  }
               },
               "401": {
                  "description": "401 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/AuthorizationErrorMessage"
                        }
                     }
                  }
               },
               "404": {
                  "description": "404 response",
                  "content": {
                     "application/json": {
                        "schema": {
                           "$ref": "#/components/schemas/NotFoundMessage"
                        }
                     },
                     "text/plain": {
                        "schema": {
                           "$ref": "#/components/schemas/NotFoundMessage"
                        }
                     }
                  }
               }
            },
            "security": [
               {
                  "bearerAuth": []
               }
            ],
            "x-auth-type": "Application & Application User",
            "x-throttling-tier": "Unlimited"
         }
      }
   },
   "components": {
      "schemas": {
         "AccountsRegPaginated": {
            "type": "object",
            "properties": {
               "current_page": {
                  "type": "string",
                  "example": 1
               },
               "devices": {
                  "type": "array",
                  "items": {
                     "$ref": "#/components/schemas/RegistrationInfo"
                  }
               },
               "first_page_uri": {
                  "type": "string",
                  "example": "/registration/accounts/1234/devices?page_size=100&order=desc"
               },
               "next_page": {
                  "type": "string"
               },
               "next_page_uri": {
                  "type": "string",
                  "example": "/registration/accounts/1234/devices?page_size=100&order=desc"
               },
               "order": {
                  "type": "string",
                  "example": "desc"
               },
               "page_size": {
                  "type": "string",
                  "example": 10
               },
               "pages": {
                  "type": "string",
                  "example": 2
               },
               "previous_page_uri": {
                  "type": "string",
                  "example": "/registration/accounts/1234/devices?page_size=100&order=desc"
               }
            }
         },
         "AuthorizationErrorMessage": {
            "type": "object",
            "properties": {
               "code": {
                  "type": "integer",
                  "example": 401
               },
               "message": {
                  "type": "string",
                  "example": "User is not permitted to make a request against this account"
               }
            }
         },
         "Call": {
            "type": "object",
            "properties": {
               "account_id": {
                  "type": "string",
                  "example": 1234
               },
               "call_id": {
                  "type": "string",
                  "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
               },
               "direction": {
                  "type": "string",
                  "enum": [
                     "inbound",
                     "outbound"
                  ],
                  "example": "inbound"
               },
               "end_time": {
                  "type": "string",
                  "format": "date-time",
                  "example": 1595959736
               },
               "from": {
                  "type": "string",
                  "example": 1235551111
               },
               "legs": {
                  "type": "array",
                  "items": {
                     "$ref": "#/components/schemas/CallLeg"
                  }
               },
               "start_time": {
                  "type": "string",
                  "format": "date-time",
                  "example": 1595959736
               },
               "status": {
                  "type": "string",
                  "enum": [
                     "busy",
                     "failed",
                     "unanswered",
                     "ringing",
                     "on-call"
                  ],
                  "example": "busy"
               },
               "to": {
                  "type": "string",
                  "example": 1234567890
               }
            }
         },
         "CallLeg": {
            "type": "object",
            "properties": {
               "account_id": {
                  "type": "string",
                  "description": "Account that this call leg belongs to",
                  "example": 1234
               },
               "call_id": {
                  "type": "string",
                  "description": "Call Id this call belongs to",
                  "format": "uuid",
                  "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
               },
               "direction": {
                  "type": "string",
                  "description": "Leg direction - either \"inbound\" or \"outbound\"",
                  "enum": [
                     "inbound",
                     "outbound"
                  ],
                  "example": "inbound"
               },
               "end_time": {
                  "type": "string",
                  "description": "Call end time (if applicable)",
                  "format": "date-time",
                  "example": 1595959736
               },
               "from": {
                  "type": "string",
                  "description": "The \"from\" DID or extension",
                  "example": 1231112222
               },
               "leg_id": {
                  "type": "string",
                  "description": "Globally unique leg Id",
                  "format": "uuid",
                  "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
               },
               "start_time": {
                  "type": "string",
                  "description": "Call start time",
                  "format": "date-time",
                  "example": 1595959736
               },
               "status": {
                  "type": "string",
                  "description": "current leg status",
                  "enum": [
                     "busy",
                     "failed",
                     "unanswered",
                     "ringing",
                     "on-call"
                  ],
                  "example": "busy"
               },
               "to": {
                  "type": "string",
                  "description": "The \"to\" DID or extension",
                  "example": 1234567890
               }
            },
            "description": "Object representation of a call leg"
         },
         "CallLegList": {
            "type": "array",
            "items": {
               "$ref": "#/components/schemas/CallLeg"
            }
         },
         "CallList": {
            "type": "array",
            "items": {
               "$ref": "#/components/schemas/Call"
            }
         },
         "CallPostRequestBody": {
            "type": "object",
            "properties": {
               "from": {
                  "$ref": "#/components/schemas/CreateCallContactFrom"
               },
               "to": {
                  "$ref": "#/components/schemas/CreateCallContact"
               },
               "type": {
                  "type": "string",
                  "enum": [
                     "click2dial",
                     "click2dialme",
                     "odr",
                     "default"
                  ],
                  "example": "click2dial"
               }
            }
         },
         "CallPutRequestBody": {
            "type": "object",
            "properties": {
               "from": {
                  "$ref": "#/components/schemas/Contact"
               },
               "state": {
                  "type": "string",
                  "enum": [
                     "active",
                     "parked"
                  ]
               },
               "to": {
                  "$ref": "#/components/schemas/Contact"
               }
            }
         },
         "CallsPaginated": {
            "type": "object",
            "properties": {
               "calls": {
                  "$ref": "#/components/schemas/CallList"
               },
               "current_page": {
                  "type": "string",
                  "example": 0
               },
               "first_page_uri": {
                  "type": "string",
                  "example": "/cc/accounts/1234/calls?page_size=0&order=desc"
               },
               "next_page": {
                  "type": "string",
                  "example": 1
               },
               "next_page_uri": {
                  "type": "string",
                  "example": "/cc/accounts/1234/calls?page_size=0&order=desc"
               },
               "order": {
                  "type": "string",
                  "example": "desc"
               },
               "page_size": {
                  "type": "string",
                  "example": 1
               },
               "pages": {
                  "type": "string",
                  "example": 1
               },
               "previous_page_uri": {
                  "type": "string",
                  "example": "/cc/accounts/1234/calls?page_size=0&order=desc"
               }
            }
         },
         "Contact": {
            "type": "object",
            "properties": {
               "destination": {
                  "type": "string",
                  "example": 1234567890
               },
               "type": {
                  "type": "string",
                  "enum": [
                     "device",
                     "extension",
                     "pstn"
                  ],
                  "example": "pstn"
               }
            }
         },
         "CreateCallContact": {
            "type": "object",
            "properties": {
               "destination": {
                  "type": "string",
                  "example": 1234567890
               },
               "type": {
                  "type": "string",
                  "enum": [
                     "device",
                     "extension",
                     "pstn",
                     "feature_code"
                  ],
                  "example": "pstn"
               }
            }
         },
         "CreateCallContactFrom": {
            "type": "object",
            "properties": {
               "destination": {
                  "type": "string",
                  "example": 1234
               },
               "type": {
                  "type": "string",
                  "enum": [
                     "device",
                     "extension",
                     "feature_code"
                  ],
                  "example": "extension"
               }
            }
         },
         "LegAttTransferRequestBody": {
            "type": "object",
            "properties": {
               "to": {
                  "type": "string",
                  "format": "uuid",
                  "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
               }
            }
         },
         "LegBlindTransferRequestBody": {
            "type": "object",
            "properties": {
               "to": {
                  "$ref": "#/components/schemas/Contact"
               }
            }
         },
         "LegDTMFRequestBody": {
            "type": "object",
            "properties": {
               "dtmf": {
                  "type": "string"
               }
            }
         },
         "LegHoldRequestBody": {
            "type": "object",
            "properties": {
               "state": {
                  "type": "string",
                  "enum": [
                     "held"
                  ]
               }
            }
         },
         "LegUnholdRequestBody": {
            "type": "object",
            "properties": {
               "state": {
                  "type": "string",
                  "enum": [
                     "active"
                  ]
               }
            }
         },
         "ModifyCallResponse": {
            "type": "object",
            "properties": {
               "account_id": {
                  "type": "string",
                  "format": "integer",
                  "example": 1234
               },
               "call_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
               },
               "call_state": {
                  "type": "string"
               },
               "destination": {
                  "type": "string"
               }
            }
         },
         "ModifyLegResponse": {
            "type": "object",
            "properties": {
               "account_id": {
                  "type": "string",
                  "format": "integer",
                  "example": 1234
               },
               "call_id": {
                  "type": "string",
                  "format": "uuid"
               },
               "call_state": {
                  "type": "string"
               },
               "destination": {
                  "type": "string"
               },
               "leg_id": {
                  "type": "string",
                  "format": "uuid",
                  "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
               }
            }
         },
         "NotFoundMessage": {
            "type": "object",
            "properties": {
               "code": {
                  "type": "string",
                  "example": 401
               },
               "message": {
                  "type": "string",
                  "example": "No matching resource found for given API Request"
               }
            }
         },
         "RegistrationInfo": {
            "type": "object",
            "properties": {
               "account_id": {
                  "type": "string",
                  "example": 1234
               },
               "device_ip": {
                  "type": "string",
                  "example": "150.24.83.17"
               },
               "last_request": {
                  "type": "string",
                  "example": 1595937421
               },
               "last_success": {
                  "type": "string",
                  "example": 1595937421
               },
               "mac_address": {
                  "type": "string",
                  "example": "79-5C-7D-28-1B-B3"
               },
               "registration": {
                  "$ref": "#/components/schemas/RegistrationTime"
               },
               "provisioned": {
                  "$ref": "#/components/schemas/ProvisionedTime"
               }
            }
         },
         "RegistrationTime": {
            "type": "object",
            "properties": {
               "last_success": {
                  "type": "string",
                  "example": 1595937421
               }
            }
         },
         "ProvisionedTime": {
            "type": "object",
            "properties": {
               "last_success": {
                  "type": "string",
                  "example": 1595937421
               },
               "last_request": {
                  "type": "string",
                  "example": 1595937421
               }
            }
         },
         "StatusMessage": {
            "type": "string",
            "example": "e2610a31-88be-4f12-90c0-ee98dbfaf80b"
         },
         "ValidationErrorMessage": {
            "type": "object",
            "properties": {
               "code": {
                  "type": "string",
                  "example": 400
               },
               "message": {
                  "type": "string",
                  "example": "Invalid request parameters"
               }
            }
         }
      },
      "securitySchemes": {
         "bearerAuth": {
            "type": "http",
            "scheme": "bearer",
            "bearerFormat": "OAuth"
         }
      }
   },
   "x-components": {}
}