openapi: 3.0.0 info: title: Jambonz API description: Jambonz REST API specification contact: email: daveh@drachtio.org license: name: MIT url: https://opensource.org/licenses/MIT version: 1.0.0 servers: - url: https://api.jambonz.cloud security: - bearerAuth: [] tags: - name: Users description: User Management - name: Settings description: General Settings - name: Accounts description: Account Settings - name: Clients description: SIP Clients - name: Applications description: Applications - name: Recent Calls description: Details of calls - name: Alerts description: Alerts of Errors and failures - name: Carriers description: SIP Carriers & Trunks - name: Speech description: Text to Speech & Speech to Text Providers - name: Phone Numbers description: Routing of Phone numbers to Applications - name: Call Routing description: Least cost Call Routing paths: /Sbcs: get: tags: - Carriers 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' /ApiKeys/{ApiKeySid}: parameters: - name: ApiKeySid in: path required: true schema: type: string /Users/{UserSid}: parameters: - name: UserSid in: path required: true style: simple explode: false schema: type: string get: tags: - Users summary: retrieve user information operationId: getUser responses: '200': description: user information content: application/json: schema: $ref: '#/components/schemas/UserProfile' '403': description: user information content: application/json: schema: $ref: '#/components/schemas/GeneralError' '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' put: tags: - Users summary: update user information operationId: updateUser requestBody: content: application/json: schema: type: object properties: name: type: string email: type: string email_activation_code: type: string old_password: type: string description: existing password, which is to be replaced new_password: type: string description: new password is_active: type: boolean force_change: type: boolean scope: type: string permissions: type: array items: type: string responses: '204': description: user updated '403': description: user update failed content: application/json: schema: $ref: '#/components/schemas/GeneralError' '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' post: tags: - Users summary: create a new user operationId: createUser requestBody: content: application/json: schema: type: object properties: name: type: string email: type: string is_active: type: boolean force_change: type: boolean scope: type: string permissions: type: array items: type: string old_password: type: string description: existing password, which is to be replaced responses: '204': description: user created '403': description: user creation failed content: application/json: schema: $ref: '#/components/schemas/GeneralError' '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' delete: tags: - Users summary: delete a user operationId: deleteUser responses: '204': description: user deleted '403': description: unauthorized '404': description: user not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /Users/me: get: tags: - Users summary: retrieve details about logged-in user and associated account operationId: getMyDetails responses: '200': description: full-ish detail about the logged-in user and account content: application/json: schema: $ref: '#/components/schemas/UserAndAccountDetail' '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /Availability: get: tags: - Accounts summary: check if a limited-availability entity such as a subdomain, email or phone number is already in use operationId: checkAvailability parameters: - in: query name: type required: true schema: type: string enum: - email - phone - subdomain example: subdomain - in: query name: value required: true schema: type: string example: mycorp.sip.jambonz.cloud responses: '200': description: indicates whether value is already in use content: application/json: schema: type: object properties: available: type: boolean description: true if value requested is available required: - available '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /Webhooks/{WebhookSid}: parameters: - name: WebhookSid in: path required: true style: simple explode: false schema: type: string get: tags: - Applications summary: retrieve webhook operationId: getWebhook responses: '200': description: webhook found content: application/json: schema: $ref: '#/components/schemas/Webhook' '404': description: webhook not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /VoipCarriers: post: tags: - Carriers summary: create voip carrier operationId: createVoipCarrier requestBody: content: application/json: schema: type: object properties: name: type: string description: voip carrier name example: fastco description: type: string example: my US sip trunking provider account_sid: type: string application_sid: type: string e164_leading_plus: type: boolean description: whether a leading + is required on INVITEs to this provider example: true requires_register: type: boolean description: wehther this provider requires us to send a REGISTER to them in order to receive calls register_use_tls: type: boolean description: wehther this provider requires us to send a REGISTER use TLS protocol register_username: type: string description: sip username to authenticate with, if registration is required example: foo register_sip_realm: type: string description: sip realm to authenticate with, if registration is required example: sip.fastco.com register_password: type: string description: sip password to authenticate with, if registration is required example: bar register_from_user: type: string description: optional username to apply in From header register_from_domain: type: string description: optional domain to apply in From header register_public_ip_in_contact: type: boolean description: if true, use our public ip in Contact header; otherwise, use sip realm tech_prefix: type: string description: prefix to be applied to the called number for outbound call attempts inbound_auth_username: type: string description: challenge inbound calls with this username/password if supplied inbound_auth_password: type: string description: challenge inbound calls with this username/password if supplied diversion: type: string description: Diversion header or phone number to apply to outbound calls 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: tags: - Carriers 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: tags: - Carriers 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: tags: - Carriers 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: tags: - Carriers 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: tags: - Carriers 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: tags: - Carriers summary: list sip gateways operationId: listSipGateways parameters: - in: query name: voip_carrier_sid required: true schema: type: string description: return only the SipGateways operated for this VoipCarrier 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: tags: - Carriers 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: tags: - Carriers summary: retrieve sip gateway operationId: getSipGateway responses: '200': description: sip gateway found content: application/json: schema: $ref: '#/components/schemas/SipGateway' '404': description: sip gateway not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' put: tags: - Carriers 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' /SmppGateways/{SmppGatewaySid}: parameters: - name: SmppGatewaySid in: path required: true style: simple explode: false schema: type: string /PhoneNumbers: post: tags: - Phone Numbers summary: provision a phone number into inventory from a Voip Carrier operationId: provisionPhoneNumber requestBody: content: application/json: schema: type: object properties: account_sid: type: string format: uuid application_sid: type: string format: uuid 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: tags: - Phone Numbers 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: tags: - Phone Numbers 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: tags: - Phone Numbers 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: tags: - Phone Numbers 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: tags: - Service Providers 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: $ref: '#/components/schemas/Webhook' description: authentication webhook for registration ms_teams_fqdn: type: string description: SBC domain name for Microsoft Teams example: contoso.com 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: tags: - Service Providers 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: tags: - Service Providers 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: tags: - Service Providers 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: tags: - Service Providers 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' /ServiceProviders/{ServiceProviderSid}/Accounts: parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid get: tags: - Service Providers summary: get all accounts for a service provider operationId: getServiceProviderAccounts responses: '200': description: account listing content: application/json: schema: type: array items: $ref: '#/components/schemas/Account' '403': description: unauthorized '404': description: service provider not found /ServiceProviders/{ServiceProviderSid}/VoipCarriers: parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid get: tags: - Service Providers summary: get all carriers for a service provider operationId: getServiceProviderCarriers responses: '200': description: account listing content: application/json: schema: type: array items: $ref: '#/components/schemas/VoipCarrier' '403': description: unauthorized '404': description: service provider not found post: tags: - Service Providers summary: create a carrier operationId: createCarrierForServiceProvider requestBody: content: application/json: schema: $ref: '#/components/schemas/VoipCarrier' responses: '201': description: service provider successfully created content: application/json: schema: $ref: '#/components/schemas/SuccessfulAdd' '404': description: service provider not found /ServiceProviders/{ServiceProviderSid}/PredefinedCarriers/{PredefinedCarrierSid}: parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid - name: PredefinedCarrierSid in: path required: true schema: type: string format: uuid post: tags: - Service Providers summary: add a VoiPCarrier to a service provider based on PredefinedCarrier template operationId: createVoipCarrierFromTemplateBySP 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' /ServiceProviders/{ServiceProviderSid}/SpeechCredentials: parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid post: tags: - Service Providers summary: create a speech credential for a service provider operationId: addSpeechCredentialForSeerviceProvider requestBody: content: application/json: schema: $ref: '#/components/schemas/SpeechCredential' responses: '201': description: speech credential successfully created content: application/json: schema: $ref: '#/components/schemas/SuccessfulAdd' '404': description: credential not found /ServiceProviders/{ServiceProviderSid}/SpeechCredentials/{SpeechCredentialSid}: parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid - name: SpeechCredentialSid in: path required: true schema: type: string format: uuid get: tags: - Service Providers summary: get a specific speech credential operationId: getSpeechCredential responses: '200': description: retrieve speech credentials for a specified account content: application/json: schema: $ref: '#/components/schemas/SpeechCredential' '404': description: credential not found put: tags: - Service Providers summary: update a speech credential operationId: updateSpeechCredential requestBody: content: application/json: schema: $ref: '#/components/schemas/SpeechCredentialUpdate' responses: '204': description: credential successfully updated '404': description: credential not found '422': description: credential not found content: application/json: schema: $ref: '#/components/schemas/GeneralError' delete: tags: - Service Providers summary: delete a speech credential operationId: deleteSpeechCredential responses: '204': description: credential successfully deleted '404': description: credential not found /ServiceProviders/{ServiceProviderSid}/SpeechCredentials/speech/supportedLanguagesAndVoices: get: tags: - Service Providers summary: get supported languages, voices and models operationId: supportedLanguagesAndVoices parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid - name: vendor in: query required: true schema: type: string - name: label in: query schema: type: string responses: '200': description: get supported languages, voices and models content: application/json: schema: $ref: '#/components/schemas/SpeechLanguagesVoices' '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /ServiceProviders/{ServiceProviderSid}/SpeechCredentials/{SpeechCredentialSid}/test: get: tags: - Service Providers summary: test a speech credential operationId: testSpeechCredential parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid - name: SpeechCredentialSid in: path required: true schema: type: string format: uuid responses: '200': description: credential test results content: application/json: schema: type: object properties: tts: type: object properties: status: type: string enum: - success - fail - not tested reason: type: string stt: type: object properties: status: type: string enum: - success - fail reason: type: string '404': description: credential not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /ServiceProviders/{ServiceProviderSid}/Limits: post: tags: - Service Providers summary: create a limit for a service provider operationId: addLimitForServiceProvider parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/Limits' responses: '201': description: limit successfully created or updated content: application/json: schema: $ref: '#/components/schemas/SuccessfulAdd' '404': description: service provider not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' get: tags: - Service Providers summary: retrieve call capacity and other limits from the service provider operationId: getServiceProviderLimits parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid responses: '200': description: service provider limits content: application/json: schema: type: array items: $ref: '#/components/schemas/Limits' '404': description: service provider not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /ServiceProviders/{ServiceProviderSid}/Lcrs: parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid get: tags: - Service Providers summary: get all Least Cost Routings for a service provider operationId: getServiceProviderLcrs responses: '200': description: Least cost routing listing content: application/json: schema: type: array items: $ref: '#/components/schemas/Lcr' '403': description: unauthorized '404': description: service provider not found post: tags: - Service Providers summary: create a Lest cost routing operationId: createLcrForServiceProvider requestBody: content: application/json: schema: type: object properties: name: type: string description: name or Least Cost Routing example: twilioLcr required: - name responses: '201': description: service provider Lcr successfully created content: application/json: schema: $ref: '#/components/schemas/SuccessfulAdd' '404': description: service provider not found /MicrosoftTeamsTenants: post: tags: - Settings 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: tags: - Settings 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: tags: - Settings 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: tags: - Settings 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: tags: - Settings summary: update an MS Teams tenant operationId: putTenant requestBody: content: application/json: schema: $ref: '#/components/schemas/MsTeamsTenant' 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: tags: - Accounts 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 queue_event_hook: $ref: '#/components/schemas/Webhook' description: webhook called when members join or leave a queue 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: 1 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: tags: - Accounts 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: tags: - Accounts 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: tags: - Accounts 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: tags: - Accounts 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' /Accounts/{AccountSid}/WebhookSecret: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid - name: regenerate in: query required: false schema: type: boolean get: tags: - Accounts summary: get webhook signing secret, regenerating if requested operationId: getWebhookSecret responses: '200': description: secret content: application/json: schema: type: object properties: webhook_secret: type: string '404': description: account not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /Accounts/{AccountSid}/ApiKeys: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid get: tags: - Accounts summary: get all api keys for an account operationId: getAccountApiKeys responses: '200': description: list of api keys content: application/json: schema: type: array items: $ref: '#/components/schemas/ApiKey' '404': description: account not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /Accounts/{AccountSid}/SipRealms/{SipRealm}: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid - name: SipRealm in: path required: true schema: type: string post: tags: - Accounts summary: add or change the sip realm operationId: createSipRealm responses: '204': description: sip_realm updated and DNS entries successfully created '400': description: bad request content: application/json: schema: $ref: '#/components/schemas/GeneralError' '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /Accounts/{AccountSid}/SpeechCredentials: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid post: tags: - Speech summary: add a speech credential operationId: createSpeechCredential requestBody: content: application/json: schema: $ref: '#/components/schemas/SpeechCredential' responses: '201': description: speech credential 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: tags: - Speech summary: retrieve all speech credentials for an account operationId: listSpeechCredentials responses: '200': description: retrieve speech credentials for a specified account content: application/json: schema: type: array items: $ref: '#/components/schemas/SpeechCredential' '404': description: account not found /Accounts/{AccountSid}/SpeechCredentials/{SpeechCredentialSid}: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid - name: SpeechCredentialSid in: path required: true schema: type: string format: uuid get: tags: - Speech summary: get a specific speech credential operationId: getSpeechCredentialByAccount responses: '200': description: retrieve speech credentials for a specified account content: application/json: schema: $ref: '#/components/schemas/SpeechCredential' '404': description: credential not found put: tags: - Speech summary: update a speech credential operationId: updateSpeechCredentialByAccount requestBody: content: application/json: schema: $ref: '#/components/schemas/SpeechCredentialUpdate' responses: '204': description: credential successfully deleted '404': description: credential not found '422': description: credential not found content: application/json: schema: $ref: '#/components/schemas/GeneralError' delete: tags: - Speech summary: delete a speech credential operationId: deleteSpeechCredentialByAccount responses: '204': description: credential successfully deleted '404': description: credential not found /Accounts/{AccountSid}/SpeechCredentials/speech/supportedLanguagesAndVoices: get: tags: - Speech summary: get supported languages, voices and models operationId: supportedLanguagesAndVoicesByAccount parameters: - name: AccountSid in: path required: true schema: type: string format: uuid - name: vendor in: query required: true schema: type: string - name: label in: query schema: type: string responses: '200': description: get supported languages, voices and models content: application/json: schema: $ref: '#/components/schemas/SpeechLanguagesVoices' '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /Accounts/{AccountSid}/SpeechCredentials/{SpeechCredentialSid}/test: get: tags: - Speech summary: test a speech credential operationId: testSpeechCredentialByAccount parameters: - name: AccountSid in: path required: true schema: type: string format: uuid - name: SpeechCredentialSid in: path required: true schema: type: string format: uuid responses: '200': description: credential test results content: application/json: schema: type: object properties: tts: type: object properties: status: type: string enum: - success - fail - not tested reason: type: string stt: type: object properties: status: type: string enum: - success - fail reason: type: string '404': description: credential not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /Accounts/{AccountSid}/RecentCalls: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid - in: query name: page required: true schema: type: number format: integer description: page number of data to retrieve - in: query name: count required: true schema: type: number format: integer description: number of rows to retrieve in each page set - in: query name: days required: false schema: type: number format: integer description: number of days back to retrieve, must be ge 1 and le 30 - in: query name: start required: false schema: type: string format: date-time description: start date to retrieve - in: query name: end required: false schema: type: string format: date-time description: end date to retrieve - in: query name: answered required: false schema: type: string enum: - true - false description: retrieve only answered calls - in: query name: direction required: false schema: type: string enum: - inbound - outbound - in: query name: filter required: false schema: type: string description: Filter value can be caller ID, callee ID or call Sid get: tags: - Recent Calls summary: retrieve recent calls for an account operationId: listRecentCalls responses: '200': description: retrieve recent call records for a specified account content: application/json: schema: type: object properties: total: type: number format: integer description: total number of records in that database that match the filter criteria batch: type: number format: integer description: total number of records returned in this page set page: type: number format: integer description: page number that was requested, and is being returned data: type: array items: type: object properties: account_sid: type: string format: uuid call_sid: type: string format: uuid from: type: string to: type: string answered: type: boolean sip_call_id: type: string sip_status: type: number format: integer duration: type: number format: integer attempted_at: type: number format: integer answered_at: type: number format: integer terminated_at: type: number format: integer termination_reason: type: string host: type: string remote_host: type: string direction: type: string enum: - inbound - outbound trunk: type: string required: - account_sid - call_sid - attempted_at - terminated_at - answered - direction - from - to - sip_status - duration '404': description: account not found /Accounts/{AccountSid}/RecentCalls/{CallId}: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid - name: CallId in: path required: true schema: type: string get: tags: - Recent Calls summary: retrieve sip trace detail for a call operationId: getRecentCallTrace responses: '200': description: retrieve sip trace data content: application/json: schema: type: object '404': description: account or call not found /Accounts/{AccountSid}/PredefinedCarriers/{PredefinedCarrierSid}: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid - name: PredefinedCarrierSid in: path required: true schema: type: string format: uuid /Accounts/{AccountSid}/Limits: post: tags: - Accounts summary: create a limit for an account operationId: addLimitForAccount parameters: - name: AccountSid in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/Limits' responses: '201': description: limit successfully created or updated content: application/json: schema: $ref: '#/components/schemas/SuccessfulAdd' '404': description: account not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' get: tags: - Accounts summary: retrieve call capacity and other limits from the account operationId: getAccountLimits parameters: - name: AccountSid in: path required: true schema: type: string format: uuid responses: '200': description: account limits content: application/json: schema: type: array items: $ref: '#/components/schemas/Limits' '404': description: account not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /ServiceProviders/{ServiceProviderSid}/RecentCalls/{CallId}/pcap: parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid - name: CallId in: path required: true schema: type: string get: tags: - Service Providers summary: retrieve pcap for a call operationId: getRecentCallTraceBySP responses: '200': description: retrieve sip trace data content: application/octet-stream: schema: type: object '404': description: account or call not found /ServiceProviders/{ServiceProviderSid}/RecentCalls: parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid - in: query name: page required: true schema: type: number format: integer description: page number of data to retrieve - in: query name: count required: true schema: type: number format: integer description: number of rows to retrieve in each page set - in: query name: days required: false schema: type: number format: integer description: number of days back to retrieve, must be ge 1 and le 30 - in: query name: start required: false schema: type: string format: date-time description: start date to retrieve - in: query name: end required: false schema: type: string format: date-time description: end date to retrieve - in: query name: answered required: false schema: type: string enum: - true - false description: retrieve only answered calls - in: query name: direction required: false schema: type: string enum: - inbound - outbound - in: query name: from required: false schema: type: string description: calling number to retrieve - in: query name: to required: false schema: type: string description: called number to retrieve get: tags: - Service Providers summary: retrieve recent calls for an account operationId: listRecentCallsBySP responses: '200': description: retrieve recent call records for a specified account content: application/json: schema: type: object properties: total: type: number format: integer description: total number of records in that database that match the filter criteria batch: type: number format: integer description: total number of records returned in this page set page: type: number format: integer description: page number that was requested, and is being returned data: type: array items: type: object properties: service_provider_sid: type: string format: uuid account_sid: type: string format: uuid call_sid: type: string format: uuid from: type: string to: type: string answered: type: boolean sip_call_id: type: string sip_status: type: number format: integer duration: type: number format: integer attempted_at: type: number format: integer answered_at: type: number format: integer terminated_at: type: number format: integer termination_reason: type: string host: type: string remote_host: type: string direction: type: string enum: - inbound - outbound trunk: type: string required: - account_sid - call_sid - attempted_at - terminated_at - answered - direction - from - to - sip_status - duration '404': description: account not found /ServiceProviders/{ServiceProviderSid}/RecentCalls/{CallId}: parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid - name: CallId in: path required: true schema: type: string get: tags: - Service Providers summary: retrieve sip trace detail for a call operationId: getRecentCallTraceByCallId responses: '200': description: retrieve sip trace data content: application/json: schema: type: object '404': description: service provider or call not found /Accounts/{AccountSid}/RecentCalls/{CallId}/pcap: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid - name: CallId in: path required: true schema: type: string get: tags: - Recent Calls summary: retrieve pcap for a call operationId: getRecentCallTraceByAccount responses: '200': description: retrieve sip trace data content: application/octet-stream: schema: type: object '404': description: account or call not found /ServiceProviders/{ServiceProviderSid}/Alerts: parameters: - name: ServiceProviderSid in: path required: true schema: type: string format: uuid - in: query name: page required: true schema: type: number format: integer description: page number of data to retrieve - in: query name: count required: true schema: type: number format: integer description: number of rows to retrieve in each page set - in: query name: days required: false schema: type: number format: integer description: number of days back to retrieve, must be ge 1 and le 30 - in: query name: start required: false schema: type: string format: date-time description: start date to retrieve - in: query name: end required: false schema: type: string format: date-time description: end date to retrieve - in: query name: alert_type required: false schema: type: string enum: - webhook-failure - webhook-connection-failure - webhook-auth-failure - no-tts - no-stt - tts-failure - stt-failure - no-carrier - call-limit - device-limit - api-limit get: tags: - Service Providers summary: retrieve alerts for a service provider operationId: listAlerts responses: '200': description: retrieve alerts for a specified account content: application/json: schema: type: object properties: total: type: number format: integer description: total number of records in that database that match the filter criteria batch: type: number format: integer description: total number of records returned in this page set page: type: number format: integer description: page number that was requested, and is being returned data: type: array items: type: object properties: time: type: string format: date-time service_provider_sid: type: string format: uuid account_sid: type: string format: uuid alert_type: type: string message: type: string detail: type: string required: - time - account_sid - alert_type - message '404': description: service provider not found /Accounts/{AccountSid}/Alerts: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid - in: query name: page required: true schema: type: number format: integer description: page number of data to retrieve - in: query name: count required: true schema: type: number format: integer description: number of rows to retrieve in each page set - in: query name: days required: false schema: type: number format: integer description: number of days back to retrieve, must be ge 1 and le 30 - in: query name: start required: false schema: type: string format: date-time description: start date to retrieve - in: query name: end required: false schema: type: string format: date-time description: end date to retrieve - in: query name: alert_type required: false schema: type: string enum: - webhook-failure - webhook-connection-failure - webhook-auth-failure - no-tts - no-stt - tts-failure - stt-failure - no-carrier - call-limit - device-limit - api-limit get: tags: - Alerts summary: retrieve alerts for an account operationId: listAlertsByAccount responses: '200': description: retrieve alerts for a specified account content: application/json: schema: type: object properties: total: type: number format: integer description: total number of records in that database that match the filter criteria batch: type: number format: integer description: total number of records returned in this page set page: type: number format: integer description: page number that was requested, and is being returned data: type: array items: type: object properties: time: type: string format: date-time account_sid: type: string format: uuid alert_type: type: string message: type: string detail: type: string required: - time - account_sid - alert_type - message '404': description: account not found /Applications: post: tags: - Applications 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: application webhook to handle inbound voice calls call_status_hook: $ref: '#/components/schemas/Webhook' description: webhook to report call status events messaging_hook: $ref: '#/components/schemas/Webhook' description: application webhook to handle inbound SMS/MMS messages app_json: type: string description: Voice Application Json, call_hook will not be invoked if app_json is provided 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: tags: - Applications 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: tags: - Applications 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: tags: - Applications 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: tags: - Applications 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}/RegisteredSipUsers: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid get: tags: - Clients summary: retrieve online sip users for an account operationId: listRegisteredSipUsers responses: '200': description: retrieve online sip users for an account content: application/json: schema: type: array items: type: string post: tags: - Clients summary: retrieve online sip users for an account by list of sip username operationId: listRegisteredSipUsersByUsername requestBody: content: application/json: schema: type: array items: type: string responses: '200': description: retrieve online sip users for an account content: application/json: schema: type: array items: $ref: '#/components/schemas/RegisteredClient' /Accounts/{AccountSid}/RegisteredSipUsers/{Client}: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid - name: Client in: path required: true style: simple explode: false schema: type: string get: tags: - Clients summary: retrieve registered client registration operationId: getRegisteredClient responses: '200': description: registered client found content: application/json: schema: $ref: '#/components/schemas/RegisteredClient' /Accounts/{AccountSid}/TtsCache/Synthesize: parameters: - name: AccountSid in: path required: true schema: type: string format: uuid post: tags: - Speech summary: get TTS from provider operationId: Synthesize requestBody: content: application/json: schema: type: object properties: speech_credential_sid: type: string description: Speech credential Sid example: 553b4b6b-8918-4394-a46d-1e3c5a3c717b text: type: string description: the text to convert to audio example: Hello How are you language: type: string description: language is used in text example: en-US voice: type: string description: voice ID example: en-US-Standard-C encodingMp3: type: boolean description: convert audio to mp3. example: true required: - speech_credential_sid - text - language - voice responses: '200': description: Audio is created content: audio/mpeg: schema: type: string format: binary '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' /Lcrs: post: tags: - Call Routing summary: create a Least Cost Routing operationId: createLcr requestBody: content: application/json: schema: type: object properties: name: type: string description: name or Least Cost Routing example: twilioLcr required: - name responses: '201': description: Least Cost Routing 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: tags: - Call Routing summary: list least cost routings operationId: listLeastCostRoutings responses: '200': description: list of least cost routings content: application/json: schema: type: array items: $ref: '#/components/schemas/Lcr' '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /Lcrs/{LcrSid}: parameters: - name: LcrSid in: path required: true style: simple explode: false schema: type: string delete: tags: - Call Routing summary: delete a least cost routing operationId: deleteLeastCostRouting responses: '204': description: least cost routing successfully deleted '404': description: least cost routing 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: tags: - Call Routing summary: retrieve least cost routing operationId: getLeastCostRouting responses: '200': description: least cost routing found content: application/json: schema: $ref: '#/components/schemas/Lcr' '404': description: least cost routing not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' put: tags: - Call Routing summary: update least cost routing operationId: updateLeastCostRouting requestBody: content: application/json: schema: $ref: '#/components/schemas/Lcr' responses: '204': description: least cost routing updated content: application/json: schema: $ref: '#/components/schemas/Lcr' '400': description: bad request content: application/json: schema: $ref: '#/components/schemas/GeneralError' '404': description: least cost routing not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /Lcrs/{LcrSid}/Routes: parameters: - name: LcrSid in: path required: true style: simple explode: false schema: type: string post: tags: - Call Routing summary: Create least cost routing routes and carrier set entries operationId: createLeastCostRoutingRoutesAndCarrierEntries requestBody: content: application/json: schema: $ref: '#/components/schemas/LcrRoutes' responses: '204': description: least cost routing routes and carrier set entries created '400': description: bad request content: application/json: schema: $ref: '#/components/schemas/GeneralError' '404': description: least cost routing not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' put: tags: - Call Routing summary: update least cost routing routes and carrier set entries operationId: updateLeastCostRoutingRoutesAndCarrierEntries requestBody: content: application/json: schema: $ref: '#/components/schemas/LcrRoutes' responses: '204': description: least cost routing ruoutes and carrier entries updated '400': description: bad request content: application/json: schema: $ref: '#/components/schemas/GeneralError' '404': description: least cost routing not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /LcrRoutes: post: tags: - Call Routing summary: create a Least Cost Routing Routes operationId: createLcrRoutes requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/LcrRoute' required: - lcr_sid - regex - priority responses: '201': description: Least Cost Routing Route 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: tags: - Call Routing summary: list least cost routings routes operationId: listLeastCostRoutingRoutes responses: '200': description: list of least cost routing routes content: application/json: schema: type: array items: $ref: '#/components/schemas/LcrRoute' '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /LcrRoutes/{LcrRouteSid}: parameters: - name: LcrRouteSid in: path required: true style: simple explode: false schema: type: string delete: tags: - Call Routing summary: delete a least cost routing route operationId: deleteLeastCostRoutingRoute responses: '204': description: least cost routing route successfully deleted '404': description: least cost routing route 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: tags: - Call Routing summary: retrieve least cost routing route operationId: getLeastCostRoutingRoute responses: '200': description: least cost routing route found content: application/json: schema: $ref: '#/components/schemas/LcrRoute' '404': description: least cost routing route not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' put: tags: - Call Routing summary: update least cost routing route operationId: updateLeastCostRoutingRoute requestBody: content: application/json: schema: $ref: '#/components/schemas/LcrRoute' responses: '204': description: least cost routing route updated content: application/json: schema: $ref: '#/components/schemas/LcrRoute' '400': description: bad request content: application/json: schema: $ref: '#/components/schemas/GeneralError' '404': description: least cost routing route not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /LcrCarrierSetEntries: post: tags: - Call Routing summary: create a Least Cost Routing Carrier Set Entry operationId: createLcrCarrierSetEntry requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/LcrCarrierSetEntry' required: - lcr_route_sid - voip_carrier_sid - priority responses: '201': description: Least Cost Routing Carrier Set Entry 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: tags: - Call Routing summary: list least cost routings routes operationId: listLeastCostRoutingCarrierSetEntries responses: '200': description: list of least cost routing carrier set entries content: application/json: schema: type: array items: $ref: '#/components/schemas/LcrCarrierSetEntry' '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /LcrCarrierSetEntries/{LcrCarrierSetEntrySid}: parameters: - name: LcrCarrierSetEntrySid in: path required: true style: simple explode: false schema: type: string delete: tags: - Call Routing summary: delete a least cost routing carrier set entry operationId: deleteLeastCostRoutingCarrierSetEntry responses: '204': description: least cost routing carrier set entry successfully deleted '404': description: least cost routing carrier set entry 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: tags: - Call Routing summary: retrieve least cost routing carrier set entry operationId: getLeastCostRoutingCarrierSetEntry responses: '200': description: least cost routing carrier set entry found content: application/json: schema: $ref: '#/components/schemas/LcrCarrierSetEntry' '404': description: least cost routing carrier set entry not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' put: tags: - Call Routing summary: update least cost routing carrier set entry operationId: updateLeastCostRoutingCarrierSetEntry requestBody: content: application/json: schema: $ref: '#/components/schemas/LcrCarrierSetEntry' responses: '204': description: least cost routing carrier set entry updated content: application/json: schema: $ref: '#/components/schemas/LcrCarrierSetEntry' '400': description: bad request content: application/json: schema: $ref: '#/components/schemas/GeneralError' '404': description: least cost routing carrier set entry not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /GoogleCustomVoices: post: tags: - Speech summary: create a Google custom voice operationId: createGoogleCustomVoice requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/GoogleCustomVoice' required: - speech_credential_sid - name - reported_usage - model responses: '201': description: Least Cost Routing Carrier Set Entry 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: tags: - Speech parameters: - in: query name: service_provider_sid required: false schema: type: string description: return only the google voice custom operated belong to this service provider - in: query name: account_sid required: false schema: type: string description: return only the google voice custom operated belong to this account_sid - in: query name: speech_credential_sid required: false schema: type: string description: return only the google voice custom operated belong to this speech credential summary: list google custom voices operationId: listGoogleCustomVoices responses: '200': description: list oflist google custom voices content: application/json: schema: type: array items: $ref: '#/components/schemas/GoogleCustomVoice' '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' /GoogleCustomVoices/{GoogleCustomVoiceSid}: parameters: - name: GoogleCustomVoiceSid in: path required: true style: simple explode: false schema: type: string delete: tags: - Speech summary: delete a google custom voice operationId: deleteGoogleCustomVoice responses: '204': description: google custom voice successfully deleted '404': description: google custom voice 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: tags: - Speech summary: retrieve google custom voice operationId: getGoogleCustomVoice responses: '200': description: google custom voice found content: application/json: schema: $ref: '#/components/schemas/GoogleCustomVoice' '404': description: google custom voice not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' put: tags: - Speech summary: update google custom voice operationId: updateGoogleCustomVoice requestBody: content: application/json: schema: $ref: '#/components/schemas/GoogleCustomVoice' responses: '204': description: google custom voice updated content: application/json: schema: $ref: '#/components/schemas/GoogleCustomVoice' '400': description: bad request content: application/json: schema: $ref: '#/components/schemas/GeneralError' '404': description: least cost routing carrier set entry not found '500': description: system error content: application/json: schema: $ref: '#/components/schemas/GeneralError' components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: token schemas: SuccessfulLogin: type: object required: - username - password properties: token: type: string user_sid: type: string scope: type: string force_change: type: boolean Login: type: object properties: username: type: string password: type: string required: - username - password 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 registration_hook: $ref: '#/components/schemas/Webhook' description: authentication webhook for registration ms_teams_fqdn: type: string test_number: type: string description: used for inbound testing for accounts on free plan test_application_name: type: string description: name of test application that can be used for new signups test_application_sid: type: string description: identifies test application that can be used for new signups required: - service_provider_sid - name VoipCarrier: type: object properties: voip_carrier_sid: type: string format: uuid name: type: string description: type: string account_sid: type: string format: uuid application_sid: type: string format: uuid e164_leading_plus: type: boolean requires_register: type: boolean register_username: type: string register_sip_realm: type: string register_password: type: string tech_prefix: type: string inbound_auth_username: type: string inbound_auth_password: type: string diversion: type: string is_active: type: boolean smpp_system_id: type: string smpp_password: type: string smpp_inbound_system_id: type: string smpp_inbound_password: type: string smpp_enquire_link_interval: type: number format: integer required: - voip_carrier_sid - name SipGateway: type: object properties: sip_gateway_sid: type: string format: uuid ipv4: type: string port: type: number netmask: type: number voip_carrier_sid: type: string format: uuid inbound: type: boolean outbound: type: boolean required: - sip_gateway_sid - voip_carrier_sid - ipv4 - port - netmask SmppGateway: type: object properties: smpp_gateway_sid: type: string format: uuid ipv4: type: string port: type: number netmask: type: number voip_carrier_sid: type: string format: uuid is_primary: type: boolean use_tls: type: boolean inbound: type: boolean outbound: type: boolean required: - smpp_gateway_sid - voip_carrier_sid - ipv4 - port - netmask 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_application_sid: type: string format: uuid service_provider_sid: type: string format: uuid required: - account_sid - name - service_provider_sid 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: application webhook for inbound voice calls call_status_hook: $ref: '#/components/schemas/Webhook' description: webhhok for reporting call status events messaging_hook: $ref: '#/components/schemas/Webhook' description: application webhook for inbound SMS/MMS 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 ApiKey: type: object properties: api_key_sid: type: string format: uuid token: type: string format: uuid account_sid: type: string format: uuid service_provider_sid: type: string format: uuid expires_at: type: string format: date-time created_at: type: string format: date-time last_used: type: string format: date-time required: - api_key_sid - token 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: webhook_sid: type: string format: uuid 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 - teams number: type: string sipUri: type: string tenant: type: string description: Microsoft Teams customer tenant domain name trunk: type: string vmail: type: boolean description: Dial directly into user's voicemail to leave a message overrideTo: type: string name: type: string auth: type: object properties: username: type: string password: type: string required: - type example: type: phone number: '+16172375080' Message: properties: provider: type: string from: type: string to: type: string text: type: string media: type: string required: - from - to example: from: '13394445678' to: '16173333456' text: please call when you can SpeechCredential: properties: speech_credential_sid: type: string format: uuid account_sid: type: string format: uuid vendor: type: string enum: - google - aws service_key: type: string access_key_id: type: string secret_access_key: type: string aws_region: type: string last_used: type: string format: date-time last_tested: type: string format: date-time use_for_tts: type: boolean use_for_stt: type: boolean tts_tested_ok: type: boolean stt_tested_ok: type: boolean riva_server_uri: type: string SpeechCredentialUpdate: properties: use_for_tts: type: boolean use_for_stt: type: boolean UserAndAccountDetail: type: object properties: user: type: object properties: user_sid: type: string name: type: string email: type: string phone: type: string service_provider_sid: type: string force_change: type: boolean provider: type: string provider_userid: type: string scope: type: string email_validated: type: boolean phone_validated: type: string account: type: object properties: account_sid: type: string sip_realm: type: string service_provider_sid: type: string registration_hook_sid: type: string queue_event_hook_sid: type: string device_calling_application_sid: type: string is_active: type: boolean created_at: type: string format: date-time testapp: type: object properties: application_sid: type: string name: type: string service_provider_sid: type: string account_sid: type: string call_hook_sid: type: string call_status_hook_sid: type: string messaging_hook_sid: type: string speech_synthesis_vendor: type: string speech_synthesis_language: type: string speech_synthesis_voice: type: string speech_recognizer_vendor: type: string speech_recognizer_language: type: string balance: type: object properties: currency: type: string enum: - USD - EUR balance: type: number last_updated_at: type: string format: date-time created_at: type: string format: date-time last_transaction_id: type: string capacities: type: object properties: effective_start_date: type: string format: date-time effective_end_date: type: string format: date-time limit_sessions: type: integer limit_registrations: type: integer api_keys: type: array items: type: object properties: token: type: string last_used: type: string format: date-time created_at: type: string format: date-time products: type: array items: type: object properties: name: type: string description: type: string category: type: string quantity: type: string in_starter_set: type: boolean product_sid: type: string effective_start_date: type: string format: date-time effective_end_date: type: string format: date-time UserProfile: type: object properties: user_sid: type: string example: a5bce31e-a028-45cd-94c4-f121b72fec61 account_sid: type: string example: a5bce31e-a028-45cd-94c4-f121b72fec61 is_active: type: boolean description: indicates whether account is active example: true name: type: string description: full user name example: Dave Horton email: type: string description: email associated with user example: daveh@drachtio.org phone: type: string description: phone associated with user provider: type: string description: authentication provider enum: - github - google - local example: github scope: type: string description: scope of user permissions enum: - read-only - read-write example: read-write pristine: type: boolean description: true if account was newly created example: true email_validated: type: boolean description: indicates whether user has validated their email address example: true phone_validated: type: boolean description: indicates whether user has validated their mobile phone example: true tutorial_completion: type: number description: bitmask indicating which tutorials have been completed example: 1 jwt: type: string description: json web token to be used as bearer token in API requests required: - user_sid - provider - name - email - scope - account_validated - pristine - jwt - is_active Charge: type: object properties: charge_sid: type: string format: uuid account_sid: type: string format: uuid application_sid: type: string format: uuid billed_at: type: string format: date-time billed_activity: type: string enum: - inbound-call - outbound-call - inbound-sms - outbound-sms - inbound-mms - outbound-mms - tts - stt call_billing_record_sid: type: string format: uuid message_record_sid: type: string format: uuid call_secs_billed: type: number format: integer tts_chars_billed: type: number format: integer stt_secs_billed: type: number format: integer amount_charged: type: number format: double required: - account_sid - billed_activity - amount_charged RecentCalls: type: object properties: account_sid: type: string format: uuid call_sid: type: string format: uuid from: type: string to: type: string answered: type: boolean sip_call_id: type: string sip_status: type: number format: integer duration: type: number format: integer attempted_at: type: number format: integer answered_at: type: number format: integer terminated_at: type: number format: integer termination_reason: type: string host: type: string remote_host: type: string direction: type: string enum: - inbound - outbound trunk: type: string required: - account_sid - call_sid - attempted_at - terminated_at - answered - direction - from - to - sip_status - duration Alert: type: object properties: alert_sid: type: string format: uuid call_sid: type: string format: uuid account_sid: type: string format: uuid application_sid: type: string format: uuid occurred_at: type: string format: date-time alert_type: type: string enum: - webhook-failed - bad-application-syntax - speech-operation-failed - limit-exceeded details: type: string required: - alert_sid - account_sid - occurred_at - alert_type Product: type: object properties: product_sid: type: string name: type: string description: type: string unit_label: type: string category: type: string required: - product_sid - name - unit_label - category PredefinedCarrier: type: object properties: predefined_carrier_sid: type: string format: uuid name: type: string requires_static_ip: type: boolean e164_leading_plus: type: boolean requires_register: type: boolean register_username: type: string register_sip_realm: type: string register_password: type: string register_from_user: type: string register_from_domain: type: string register_public_ip_in_contact: type: boolean tech_prefix: type: string inbound_auth_username: type: string inbound_auth_password: type: string diversion: type: string required: - predefined_carrier_sid - name - requires_static_ip - e164_leading_plus - requires_register Limits: type: object properties: category: type: string enum: - voice_call_session - api_limit - devices Lcr: type: object properties: name: type: string example: twilioLcr default_carrier_set_entry_sid: type: string example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 required: - name LcrRoute: type: object properties: lcr_sid: type: string example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 regex: type: string description: out going call Phone number regex example: 1* priority: type: number example: 1 description: type: string example: this is example description required: - lcr_sid - regex - priority LcrCarrierSetEntry: type: object properties: workload: type: number example: 90 description: traffic distribution value lcr_route_sid: type: string example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 voip_carrier_sid: type: string example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 priority: type: number example: 1 required: - lcr_route_sid - voip_carrier_sid - priority LcrRouteAndCarrierEntries: allOf: - $ref: '#/components/schemas/LcrRoute' - type: object properties: lcr_carrier_set_entries: type: array items: $ref: '#/components/schemas/LcrCarrierSetEntry' LcrRoutes: type: array items: $ref: '#/components/schemas/LcrRouteAndCarrierEntries' GoogleCustomVoice: type: object properties: speech_credential_sid: type: string example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: type: string example: Sally reported_usage: type: string example: REALTIME model: type: string example: projects/12412312/locations/global/models/2134124123-2dbf-43be-9593-12314123 required: - speech_credential_sid - name - reported_usage - model RegisteredClient: type: object properties: name: type: string example: xhoaluu contact: type: string example: sip:0dluqjt6@od41sl9jfc9m.invalid;transport=ws expiryTime: type: number example: 1698981449173 protocol: type: string example: wss allow_direct_app_calling: type: number example: 1 allow_direct_queue_calling: type: number example: 1 allow_direct_user_calling: type: number example: 1 registered_status: type: string enum: - active - inactive required: - speech_credential_sid - name - reported_usage - model TtsModel: type: object properties: name: type: string example: Turbo v2 value: type: string example: eleven_turbo_v2 LanguageVoice: type: object properties: name: type: string example: Standard-A (Female) value: type: string example: ar-XA-Standard-A LanguageVoices: type: object properties: name: type: string example: English (US) value: type: string example: en-US voices: type: array items: $ref: '#/components/schemas/LanguageVoice' SpeechLanguagesVoices: type: object properties: tts: type: array items: $ref: '#/components/schemas/LanguageVoices' stt: type: array items: $ref: '#/components/schemas/LanguageVoice' ttsModel: type: array items: $ref: '#/components/schemas/TtsModel' UserList: type: object properties: name: type: string email: type: string is_active: type: boolean force_change: type: boolean scope: type: string permissions: type: array items: type: string