Files
jambonz-api-server/lib/swagger/swagger.yaml

1866 lines
52 KiB
YAML

openapi: 3.0.0
info:
title: jambonz REST API
description: jambonz REST API
contact:
email: daveh@drachtio.org
license:
name: MIT
url: https://opensource.org/licenses/MIT
version: 1.0.0
servers:
- url: /v1
description: development server
paths:
/Sbcs:
post:
summary: add an SBC address
operationId: createSbc
requestBody:
content:
application/json:
schema:
type: object
properties:
ipv4:
type: string
port:
type: number
service_provider_sid:
type: string
description: service provider scope for the generated api key
required:
- ipv4
responses:
201:
description: sbc address successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessfulApiKeyAdd'
400:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: retrieve public IP addresses of the jambonz Sbcs
operationId: listSbcs
parameters:
- in: query
name: service_provider_sid
required: false
schema:
type: string
description: return only the SBCs operated for the sole use of this service provider
responses:
200:
description: list of SBC addresses
content:
application/json:
schema:
type: array
items:
properties:
ipv4:
type: string
description: ip address of one of our Sbcs
required:
- ipv4
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/Sbcs/{SbcSid}:
parameters:
- name: SbcSid
in: path
required: true
schema:
type: string
delete:
summary: delete sbc address
operationId: deleteSbcAddress
responses:
200:
description: sbc address deleted
404:
description: sbc address not found
/ApiKeys:
post:
summary: create an api key
operationId: createApikey
requestBody:
content:
application/json:
schema:
type: object
properties:
service_provider_sid:
type: string
description: service provider scope for the generated api key
account_sid:
type: string
description: account scope for the generated api key
expiry_secs:
type: number
description: duration of key validity, in seconds
responses:
201:
description: api key successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessfulApiKeyAdd'
400:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/Apikeys/{ApiKeySid}:
parameters:
- name: ApiKeySid
in: path
required: true
schema:
type: string
delete:
summary: delete api key
operationId: deleteApiKey
responses:
200:
description: api key deleted
404:
description: api key or account not found
/login:
post:
summary: login a user and receive an api token
operationId: loginUser
requestBody:
content:
application/json:
schema:
type: object
properties:
username:
type: string
description: login username
password:
type: string
description: login password
required:
- username
- password
responses:
200:
description: login succeeded
content:
application/json:
schema: '#/components/schemas/Login'
403:
description: login failed
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/Users/{UserSid}:
parameters:
- name: UserSid
in: path
required: true
style: simple
explode: false
schema:
type: string
put:
summary: update a user password
operationId: updateUser
requestBody:
content:
application/json:
schema:
type: object
properties:
old_password:
type: string
description: existing password, which is to be replaced
new_password:
type: string
description: new password
required:
- old_password
- new_password
responses:
200:
description: password successfully changed
content:
application/json:
schema: '#/components/schemas/Login'
403:
description: password change failed
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/VoipCarriers:
post:
summary: create voip carrier
operationId: createVoipCarrier
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: voip carrier name
description:
type: string
required:
- name
responses:
201:
description: voip carrier successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessfulAdd'
400:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: list voip carriers
operationId: listVoipCarriers
responses:
200:
description: list of voip carriers
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/VoipCarrier'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/VoipCarriers/{VoipCarrierSid}:
parameters:
- name: VoipCarrierSid
in: path
required: true
style: simple
explode: false
schema:
type: string
delete:
summary: delete a voip carrier
operationId: deleteVoipCarrier
responses:
204:
description: voip carrier successfully deleted
404:
description: voip carrier not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
example:
msg: a service provider with active accounts can not be deleted
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: retrieve voip carrier
operationId: getVoipCarrier
responses:
200:
description: voip carrier found
content:
application/json:
schema:
$ref: '#/components/schemas/VoipCarrier'
404:
description: voip carrier not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
put:
summary: update voip carrier
operationId: updateVoipCarrier
parameters:
- name: VoipCarrierSid
in: path
required: true
style: simple
explode: false
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VoipCarrier'
responses:
204:
description: voip carrier updated
content:
application/json:
schema:
$ref: '#/components/schemas/VoipCarrier'
400:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
404:
description: voip carrier not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/SipGateways:
post:
summary: create sip gateway
operationId: createSipGateway
requestBody:
content:
application/json:
schema:
type: object
properties:
voip_carrier_sid:
type: string
description: voip carrier that provides this gateway
format: uuid
ipv4:
type: string
port:
type: number
is_active:
type: boolean
inbound:
type: boolean
outbound:
type: boolean
required:
- voip_carrier_sid
- ipv4
responses:
201:
description: sip gateway successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessfulAdd'
400:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: list sip gateways
operationId: listSipGateways
responses:
200:
description: list of sip gateways
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SipGateway'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/SipGateways/{SipGatewaySid}:
parameters:
- name: SipGatewaySid
in: path
required: true
style: simple
explode: false
schema:
type: string
delete:
summary: delete a sip gateway
operationId: deleteSipGateway
responses:
204:
description: sip gateway successfully deleted
404:
description: sip gateway not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: retrieve sip gateway
operationId: getSipGateway
responses:
200:
description: sip gateway found
content:
application/json:
schema:
$ref: '#/components/schemas/VoipCarrier'
404:
description: sip gateway not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
put:
summary: update sip gateway
operationId: updateSipGateway
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SipGateway'
responses:
204:
description: sip gateway updated
400:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
404:
description: sip gateway not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/PhoneNumbers:
post:
summary: provision a phone number into inventory from a Voip Carrier
operationId: provisionPhoneNumber
requestBody:
content:
application/json:
schema:
type: object
properties:
number:
type: string
description: telephone number
voip_carrier_sid:
type: string
format: uuid
required:
- number
- voip_carrier_sid
responses:
201:
description: phone number successfully provisioned
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessfulAdd'
400:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
example:
msg: invalid telephone number format
404:
description: voip carrier not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
example:
msg: the phone number provided already exists in inventory
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: list phone numbers
operationId: listProvisionedPhoneNumbers
responses:
200:
description: list of phone numbers
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PhoneNumber'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/PhoneNumbers/{PhoneNumberSid}:
parameters:
- name: PhoneNumberSid
in: path
required: true
style: simple
explode: false
schema:
type: string
delete:
summary: delete a phone number
operationId: deletePhoneNumber
responses:
204:
description: phone number successfully deleted
404:
description: phone number not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
example:
msg: phone number that is assigned to an account may not be deleted
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: retrieve phone number
operationId: getPhoneNumber
responses:
200:
description: phone number found
content:
application/json:
schema:
$ref: '#/components/schemas/PhoneNumber'
404:
description: phone number not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
put:
summary: update phone number
operationId: updatePhoneNumber
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PhoneNumber'
responses:
204:
description: phone number updated
content:
application/json:
schema:
$ref: '#/components/schemas/VoipCarrier'
400:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
404:
description: phone number not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/ServiceProviders:
post:
summary: create service provider
operationId: createServiceProvider
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: service provider name
example: fastcomms
description:
type: string
root_domain:
type: string
description: root domain for group of accounts that share a registration hook
example: example.com
registration_hook:
type: string
format: url
description: authentication webhook for registration
example: https://mycompany.com
hook_basic_auth_user:
type: string
description: username to use for http basic auth when calling hook
hook_basic_auth_password:
type: string
description: password to use for http basic auth when calling hook
required:
- name
responses:
201:
description: service provider successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessfulAdd'
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: list service providers
operationId: listServiceProviders
responses:
200:
description: list of service providers
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ServiceProvider'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/ServiceProviders/{ServiceProviderSid}:
parameters:
- name: ServiceProviderSid
in: path
required: true
style: simple
explode: false
schema:
type: string
delete:
summary: delete a service provider
operationId: deleteServiceProvider
responses:
204:
description: service provider successfully deleted
404:
description: service provider not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: retrieve service provider
operationId: getServiceProvider
responses:
200:
description: service provider found
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceProvider'
404:
description: service provider not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
put:
summary: update service provider
operationId: updateServiceProvider
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceProvider'
responses:
204:
description: service provider updated
404:
description: service provider not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/MicrosoftTeamsTenants:
post:
summary: provision a customer tenant for MS Teams
operationId: createMsTeamsTenant
requestBody:
content:
application/json:
schema:
type: object
properties:
service_provider_sid:
type: string
format: uuid
example: 85f9c036-ba61-4f28-b2f5-617c23fa68ff
account_sid:
type: string
format: uuid
example: 85f9c036-ba61-4f28-b2f5-617c23fa68ff
application_sid:
type: string
format: uuid
example: 85f9c036-ba61-4f28-b2f5-617c23fa68ff
tenant_fqdn:
type: string
example: customer.contoso.com
required:
- service_provider_sid
- account
- tenant_fqdn
responses:
201:
description: tenant successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessfulAdd'
400:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: list MS Teams tenants
operationId: listMsTeamsTenants
responses:
200:
description: list of tenants
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MsTeamsTenant'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/MicrosoftTeamsTenants/{TenantSid}:
parameters:
- name: TenantSid
in: path
required: true
schema:
type: string
format: uuid
delete:
summary: delete an MS Teams tenant
operationId: deleteTenant
responses:
204:
description: tenant successfully deleted
404:
description: tenant not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: retrieve an MS Teams tenant
operationId: getTenant
responses:
200:
description: tenant found
content:
application/json:
schema:
$ref: '#/components/schemas/MsTeamsTenant'
404:
description: account not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
put:
summary: update tenant
operationId: updateAccount
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Tenant'
responses:
204:
description: tenant updated
404:
description: tenant not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/Accounts:
post:
summary: create an account
operationId: createAccount
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: account name
example: foobar
sip_realm:
type: string
description: sip realm for registration
example: sip.mycompany.com
registration_hook:
$ref: '#/components/schemas/Webhook'
description: authentication webhook for registration
device_calling_hook:
$ref: '#/components/schemas/Webhook'
description: webhook for inbound call from registered devices
error_hook:
$ref: '#/components/schemas/Webhook'
description: webhook for reporting errors from malformed applications
service_provider_sid:
type: string
format: uuid
example: 85f9c036-ba61-4f28-b2f5-617c23fa68ff
required:
- name
- service_provider_sid
responses:
201:
description: account successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessfulAdd'
400:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
callbacks:
onRegistrationAttempt:
'{$request.body#/registrationUrl}/auth':
post:
requestBody:
description: |
provides details of the authentication request. The receiving server is responsible for authenticating the
request as per [RFC 2617](https://tools.ietf.org/html/rfc2617)
content:
application/json:
schema:
required:
- method
- realm
- username
- expires
- nonce
- uri
- response
type: object
properties:
method:
type: string
description: sip request method
example: REGISTER
realm:
type: string
description: sip realm
example: mycompany.com
username:
type: string
description: sip username provided
example: daveh
expires:
type: number
description: expiration requested, in seconds
example: 3600
scheme:
type: string
description: encryption protocol
example: digest
nonce:
type: string
description: nonce value
example: InFriVGWVoKeCckYrTx7wg=="
uri:
type: string
format: uri
description: sip uri in request
example: sip:mycompany.com
algorithm:
type: string
description: encryption algorithm used, default to MD5 if not provided
example: MD5
qop:
type: string
description: qop value
example: auth
cnonce:
type: string
description: cnonce value
example: 6b8b4567
nc:
type: string
description: nc value
example: 00000001
response:
type: string
description: digest value calculated by the client
example: be641cf7951ff23ab04c57907d59f37d
responses:
'200':
description: |
Your callback should return this HTTP status code in all cases.
if the request was authenticated and you wish to admit
the client to the network, this is indicated by setting the 'response'
attribute in the body to 'ok'
content:
application/json:
schema:
type: object
required:
- status
properties:
status:
type: string
description: indicates whether the request was successfully authenticated
enum:
- ok
- fail
example: ok
message:
type: string
description: a human-readable message
example: authentication granted
call_hook:
type: string
format: url
description: url of application to invoke when this device places a call
expires:
type: number
description: |
The expires value to grant to the requesting user.
If not provided, the expires value in the request is observed.
If provided, must be less than the requested expires value.
blacklist:
type: number
description: |
If provided, represents a period in seconds during which the source IP
address should be blacklisted by the platform (0 means forever).
get:
summary: list accounts
operationId: listAccounts
responses:
200:
description: list of accounts
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Account'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/Accounts/{AccountSid}:
parameters:
- name: AccountSid
in: path
required: true
schema:
type: string
format: uuid
delete:
summary: delete an account
operationId: deleteAccount
responses:
204:
description: account successfully deleted
404:
description: account not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: retrieve account
operationId: getAccount
responses:
200:
description: account found
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
404:
description: account not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
put:
summary: update account
operationId: updateAccount
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
responses:
204:
description: account updated
404:
description: account not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/Applications:
post:
summary: create application
operationId: createApplication
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: application name
account_sid:
type: string
format: uuid
call_hook:
$ref: '#/components/schemas/Webhook'
description: authentication webhook for inbound calls from PSTN
call_status_hook:
$ref: '#/components/schemas/Webhook'
description: webhook for call status events
speech_synthesis_vendor:
type: string
speech_synthesis_voice:
type: string
speech_recognizer_vendor:
type: string
speech_recognizer_language:
type: string
required:
- name
- account_sid
- call_hook
- call_status_hook
responses:
201:
description: application successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessfulAdd'
400:
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: list applications
operationId: listApplications
responses:
200:
description: list of applications
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Application'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/Applications/{ApplicationSid}:
parameters:
- name: ApplicationSid
in: path
required: true
style: simple
explode: false
schema:
type: string
delete:
summary: delete an application
operationId: deleteApplication
responses:
204:
description: application successfully deleted
404:
description: application not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: retrieve an application
responses:
200:
description: application found
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
404:
description: application not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
put:
summary: update application
operationId: updateApplication
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Application'
responses:
204:
description: application updated
404:
description: application not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/Accounts/{AccountSid}/Calls:
post:
summary: create a call
operationId: createCall
parameters:
- name: AccountSid
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
required:
- from
- to
type: object
properties:
application_sid:
type: string
format: uuid
description: The application to use to control this call. Either applicationSid or url is required.
call_hook:
$ref: '#/components/schemas/Webhook'
call_status_hook:
$ref: '#/components/schemas/Webhook'
example: {"url": "https://acme.com/status", "method": "POST"}
from:
type: string
description: The calling party number
example: 16172375089
timeout:
type: integer
description: the number of seconds to wait for call to be answered. Defaults to 60.
example: 30
tag:
type: object
description: initial set of customer-supplied metadata to associate with the call (see jambonz 'tag' verb)
example: {"callCount": 10}
to:
$ref: '#/components/schemas/Target'
description: destination for call
responses:
201:
description: call successfully created
content:
application/json:
schema:
required:
- callSid
properties:
callSid:
type: string
format: uuid
example: 2531329f-fb09-4ef7-887e-84e648214436
400:
description: bad request
get:
summary: list calls
operationId: listCalls
parameters:
- name: AccountSid
in: path
required: true
schema:
type: string
responses:
200:
description: list of calls for a specified account
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Call'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
/Accounts/{AccountSid}/Calls/{CallSid}:
parameters:
- name: AccountSid
in: path
required: true
style: simple
explode: false
schema:
type: string
- name: CallSid
in: path
required: true
style: simple
explode: false
schema:
type: string
delete:
summary: delete a call
operationId: deleteCall
responses:
204:
description: call successfully deleted
404:
description: call not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
get:
summary: retrieve a call
operationId: getCall
responses:
200:
description: call found
content:
application/json:
schema:
$ref: '#/components/schemas/Call'
404:
description: call not found
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
post:
summary: update a call
operationId: updateCall
requestBody:
content:
application/json:
schema:
type: object
properties:
call_hook:
$ref: '#/components/schemas/Webhook'
call_status_hook:
$ref: '#/components/schemas/Webhook'
call_status:
type: string
enum:
- completed
- no-answer
listen_status:
type: string
enum:
- pause
- resume
whisper:
$ref: '#/components/schemas/Webhook'
responses:
202:
description: Accepted
400:
description: bad request
404:
description: call not found
422:
description: unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: token
schemas:
Login:
type: object
properties:
user_sid:
type: string
api_token:
type: string
change_password:
type: boolean
required:
- user_sid
SuccessfulApiKeyAdd:
type: object
required:
- sid
- token
properties:
sid:
type: string
token:
type: string
example:
sid: 9d26a637-1679-471f-8da8-7150266e1254
token: 589cead6-de24-4689-8ac3-08ffaf102811
SuccessfulAdd:
type: object
required:
- sid
properties:
sid:
type: string
example:
sid: 9d26a637-1679-471f-8da8-7150266e1254
GeneralError:
type: object
required:
- msg
properties:
msg:
type: string
example:
msg: specific error detail will be provided here
ServiceProvider:
type: object
properties:
service_provider_sid:
type: string
format: uuid
name:
type: string
description:
type: string
root_domain:
type: string
hook_basic_auth_user:
type: string
format: url
hook_basic_auth_password:
type: string
format: url
ms_teams_fqdn:
type: string
required:
- service_provider_sid
- name
VoipCarrier:
type: object
properties:
voip_carrier_sid:
type: string
format: uuid
name:
type: string
description:
type: string
required:
- voip_carrier_sid
- name
SipGateway:
type: object
properties:
sip_gateway_sid:
type: string
format: uuid
ipv4:
type: string
port:
type: number
voip_carrier_sid:
type: string
format: uuid
is_active:
type: boolean
inbound:
type: boolean
outbound:
type: boolean
required:
- sip_gateway_sid
- voip_carrier_sid
- ipv4
- port
Account:
type: object
properties:
account_sid:
type: string
format: uuid
name:
type: string
sip_realm:
type: string
registration_hook:
$ref: '#/components/schemas/Webhook'
description: authentication webhook for registration
device_calling_hook:
$ref: '#/components/schemas/Webhook'
description: webhook for inbound call from registered devices
error_hook:
$ref: '#/components/schemas/Webhook'
description: webhook for reporting errors from malformed applications
service_provider_sid:
type: string
format: uuid
required:
- account_sid
- name
- service_provider
Application:
type: object
properties:
application_sid:
type: string
format: uuid
name:
type: string
account_sid:
type: string
format: uuid
call_hook:
$ref: '#/components/schemas/Webhook'
description: authentication webhook for registration
call_status_hook:
$ref: '#/components/schemas/Webhook'
description: authentication webhook for registration
speech_synthesis_vendor:
type: string
speech_synthesis_voice:
type: string
speech_recognizer_vendor:
type: string
speech_recognizer_language:
type: string
required:
- application_sid
- name
- account_sid
- inbound_hook
- inbound_status_hook
PhoneNumber:
type: object
properties:
phone_number_sid:
type: string
format: uuid
number:
type: string
voip_carrier_sid:
type: string
format: uuid
account_sid:
type: string
format: uuid
application_sid:
type: string
format: uuid
required:
- phone_number_sid
- number
- voip_carrier_sid
Registration:
type: object
properties:
registration_sid:
type: string
format: uuid
username:
type: string
domain:
type: string
sip_contact:
type: string
sip_user_agent:
type: string
required:
- registration_sid
- username
- domain
- sip_contact
Webhook:
type: object
properties:
url:
type: string
format: url
method:
type: string
enum:
- get
- post
username:
type: string
password:
type: string
required:
- url
example: {"url": "https://acme.com", "method": "POST"}
MsTeamsTenant:
type: object
properties:
service_provider_sid:
type: string
format: uuid
account_sid:
type: string
format: uuid
application_sid:
type: string
format: uuid
tenant_fqdn:
type: string
required:
- service_provider_sid
- tenant_fqdn
Call:
type: object
properties:
account_sid:
type: string
format: uuid
application_sid:
type: string
format: uuid
call_id:
type: string
call_sid:
type: string
format: uuid
call_status:
type: string
enum:
- trying
- ringing
- alerting
- in-progress
- completed
- busy
- no-answer
- failed
- queued
caller_name:
type: string
direction:
type: string
enum:
- inbound
- outbound
duration:
type: integer
from:
type: string
originating_sip_trunk_name:
type: string
parent_call_sid:
type: string
format: uuid
service_url:
type: string
sip_status:
type: integer
to:
type: string
required:
- account_sid
- call_id
- call_sid
- call_status
- direction
- from
- service_url
- sip_status
- to
Target:
properties:
type:
type: string
enum:
- phone
- sip
- user
number:
type: string
sipUri:
type: string
name:
type: string
auth:
type: object
properties:
username:
type: string
password:
type: string
required:
- type
example: {"type": "phone", "number": "+16172375080"}
security:
- bearerAuth: []