openapi: 3.0.0
info:
  title: Phoenix API by Phone.com
  description: API
  version: 4.7.1
servers:
  - url: https://api.phone.com
    description: Main production server
paths:
  "/v4/accounts/{voip_id}/10dlc/campaigns":
    get:
      summary: List Capmaigns
      description: Returns list of registered campaigns
      tags:
        - 10 DLC
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Register Campaign
      description: Registers campaign with 10 DLC
      tags:
        - 10 DLC
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Registers campaign with 10 DLC
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MessageTenDlcCampaign"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/10dlc/brands":
    get:
      summary: List Registered Brands
      description: Returns list of registered brands
      tags:
        - 10 DLC
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Register Brand
      description: Registers brand with 10 DLC
      tags:
        - 10 DLC
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Registers brand with 10 DLC
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MessageTenDlcBrand"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/10dlc/phone-numbers":
    get:
      summary: List Registered Phone Numbers
      description: Returns list of phone number registered for SMS
      tags:
        - 10 DLC
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[campaign_id]
          schema:
            type: string
          required: false
          description: Campaign ID
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/api-statistics":
    get:
      summary: Shows API usage statistics
      description: Returns statistics of endpoints used by account.  Your token should
        have 'oauth-management' scope to perform this request.
      tags:
        - API Endpoint Statistics
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: From time (unix timestamp, including)
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: To time (unix timestamp, not including)
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/api-errors":
    get:
      summary: List API Errors
      description: Get a list of API errors related to your account. Your token should
        have 'oauth-management' scope to perform this request.
      tags:
        - API Errors
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: From time (unix timestamp; including)
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: To time (unix timestamp; not including)
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/oauth/access-tokens":
    get:
      summary: List Access Tokens
      description: Get a list of access tokens for an account
      tags:
        - Access Tokens
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/oauth/access-tokens/{id}":
    get:
      summary: Get Access Token
      description: Get Access Token
      tags:
        - Access Tokens
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Access Token
      description: Delete Access Token
      tags:
        - Access Tokens
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/oauth/access-tokens":
    get:
      summary: List Access Tokens for extension
      description: Get a list of access tokens for an extension and account
      tags:
        - Access Tokens
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/oauth/access-tokens/{id}":
    get:
      summary: Get Access Token for extension
      description: Get Access Token for extension
      tags:
        - Access Tokens
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Access Token for extension
      description: Delete Access Token for extension
      tags:
        - Access Tokens
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/contacts":
    get:
      summary: List Contacts
      description: Get list of account contacts
      tags:
        - Account Contacts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[require_address]
          schema:
            type: string
          required: false
          description: Require address
        - in: query
          name: filters[contact_source]
          schema:
            type: string
          required: false
          description: "Contact source. Possible values: account, payment-methods,
            device-emergency"
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Contact
      description: Add new account contact
      tags:
        - Account Contacts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Add new account contact
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Contact"
      security:
        - bearerAuth: []
  /v4/accounts:
    get:
      summary: List Accounts
      description: Get a list of accounts visible to the authenticated user or client
      tags:
        - Accounts
      parameters:
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name (or company) of the account
        - in: query
          name: filters[username]
          schema:
            type: string
          required: false
          description: Username
        - in: query
          name: filters[email]
          schema:
            type: string
          required: false
          description: Email of the account
        - in: query
          name: filters[phone]
          schema:
            type: string
          required: false
          description: Phone number of the account
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}":
    get:
      summary: Get Account
      description: Retrieve details of an individual account
      tags:
        - Accounts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update Account
      description: Update setting of the account
      tags:
        - Accounts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update setting of the account
        required: true
        content:
          application/json:
            schema:
              title: Account
              type: object
              properties:
                contact:
                  nullable: true
                  type: object
                  properties:
                    id:
                      nullable: true
                      type: integer
                      description: Contact ID. Read-only
                    name:
                      type: string
                      description: Name
                    company:
                      nullable: true
                      type: string
                      maxLength: 70
                      description: Name of the contact's company
                    address:
                      properties:
                        line_1:
                          type: string
                          maxLength: 55
                          description: Address line 1
                        line_2:
                          nullable: true
                          type: string
                          maxLength: 55
                          description: Address line 2
                        city:
                          type: string
                          maxLength: 40
                          description: City
                        province:
                          nullable: true
                          type: string
                          maxLength: 40
                          description: Contact province
                        postal_code:
                          nullable: true
                          type: string
                          maxLength: 40
                          description: Contact postal code
                        country:
                          type: string
                          minLength: 2
                          maxLength: 2
                          description: Country name
                      required:
                        - line_1
                        - city
                        - country
                      description: Contact Address
                    phone:
                      type: string
                      pattern: ^\+?([0-9\-\(\)\s]*)$
                      description: Contact phone number
                    fax:
                      nullable: true
                      type: string
                      maxLength: 25
                      description: Contact fax number
                    primary_email:
                      type: string
                      maxLength: 100
                      description: Primary email
                    alternate_email:
                      nullable: true
                      type: string
                      maxLength: 100
                      description: Alternate email
                  required:
                    - name
                    - phone
                    - primary_email
                  description: Contact Objects
                billing_contact:
                  nullable: true
                  type: object
                  properties:
                    id:
                      nullable: true
                      type: integer
                      description: Billing contact ID. Read-only
                    name:
                      type: string
                      description: Billing contact name
                    company:
                      nullable: true
                      type: string
                      maxLength: 70
                      description: Billing contact company
                    address:
                      properties:
                        line_1:
                          type: string
                          maxLength: 55
                          description: Billing contact street address
                        line_2:
                          nullable: true
                          type: string
                          maxLength: 55
                          description: Billing contact street address 2
                        city:
                          type: string
                          maxLength: 40
                          description: Billing contact city
                        province:
                          nullable: true
                          type: string
                          maxLength: 40
                          description: Billing contact province
                        postal_code:
                          nullable: true
                          type: string
                          maxLength: 40
                          description: Billing contact postal code
                        country:
                          type: string
                          minLength: 2
                          maxLength: 2
                          description: Billing contact country
                      required:
                        - line_1
                        - city
                        - country
                      description: Billing contact address
                    phone:
                      type: string
                      pattern: ^\+?([0-9\-\(\)\s]*)$
                      description: Billing contact phone
                    fax:
                      nullable: true
                      type: string
                      maxLength: 25
                      description: Billing contact fax
                    primary_email:
                      type: string
                      maxLength: 100
                      description: Billing contact email
                    alternate_email:
                      nullable: true
                      type: string
                      maxLength: 100
                      description: Billing contact alternate email
                  required:
                    - name
                    - phone
                    - primary_email
                  description: Billing Contact Objects
                hold_music:
                  nullable: true
                  type: object
                  description: Default hold music
                timezone:
                  nullable: true
                  type: string
                  description: Timezone
                directory_type:
                  nullable: true
                  type: string
                  enum:
                    - last_name
                    - first_name
                  description: Dial-by-Name Directory Type
                dial_prefix:
                  nullable: true
                  type: string
                  minLength: 0
                  maxLength: 1
                  description: Prefix for Dialing Out
                call_recording_beep:
                  nullable: true
                  type: boolean
                  description: Call Recording Beep (Every 15 sec)
                default_voip_phone_id:
                  nullable: true
                  type: integer
                  minimum: 0
                  description: ID of default extension
                record_all_calls:
                  nullable: true
                  type: string
                  enum:
                    - none
                    - incoming
                    - outgoing
                    - all
                    - custom
                  description: Call Recording policy
                is_restricted:
                  nullable: true
                  type: boolean
                  description: Defines if Caller ID of account's extension restricted to the
                    numbers associated with this extension
                features:
                  nullable: true
                  type: object
                  properties:
                    premium-music:
                      nullable: true
                      type: boolean
                      description: Access to premium hold music
                    call-recording-300:
                      nullable: true
                      type: boolean
                      description: Call recordings (300 minutes block)
                    call-recording-1000:
                      nullable: true
                      type: boolean
                      description: Call recordings (1000 minutes block)
                    call-recording-300-transcribe:
                      nullable: true
                      type: boolean
                      description: Call recordings with transcription (300 minutes block)
                    call-recording-1000-transcribe:
                      nullable: true
                      type: boolean
                      description: Call recordings with transcription (1000 minutes block)
                  description: Accounts features
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/cancellation":
    post:
      summary: Account cancellation
      description: Creates account cancellation request
      tags:
        - Accounts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Creates account cancellation request
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AccountCancellation"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/async-call-logs":
    get:
      summary: Get List of Call Log Files
      description: This endpoint provides access to asynchronously generated files
        with call logs.
      tags:
        - Asynchronous Call Logs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  /v4/phone-numbers/available:
    get:
      summary: List Available Phone Numbers
      description: Get a list of available phone numbers
      tags:
        - Available Phone Numbers
      parameters:
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[city]
          schema:
            type: string
          required: false
          description: City filter
        - in: query
          name: filters[country]
          schema:
            type: string
          required: false
          description: Country filter (code like "US" or "CA")
        - in: query
          name: filters[country_code]
          schema:
            type: string
          required: false
          description: Country Code filter (like "1" or "972")
        - in: query
          name: filters[is_toll_free]
          schema:
            type: string
          required: false
          description: Toll free filter (1 for toll free numbers only, 0 for local numbers
            only)
        - in: query
          name: filters[npa]
          schema:
            type: string
          required: false
          description: NANP NPA filter (+1-NPA-nxx-xxxx)
        - in: query
          name: filters[nxx]
          schema:
            type: string
          required: false
          description: NANP NXX filter (+1-npa-NXX-xxxx)
        - in: query
          name: filters[phone_number]
          schema:
            type: string
          required: false
          description: Phone Number filter. You can also provide value as "contains:1234"
            (numbers with "1234" will be returned)
        - in: query
          name: filters[price]
          schema:
            type: string
          required: false
          description: Price filter. You can provide the exact price in cents or use
            operators like "lte:", "gte:", "lt:", "gt:", "between:".
        - in: query
          name: filters[province]
          schema:
            type: string
          required: false
          description: State or Province (code like "NY", "CA" or "TX")
        - in: query
          name: filters[xxxx]
          schema:
            type: string
          required: false
          description: NANP XXXX filter (+1-npa-nxx-XXXX)
        - in: query
          name: filters[description]
          schema:
            type: string
          required: false
          description: Phrase for AI-based numbers search
        - in: query
          name: filters[tf_pc]
          schema:
            type: string
          required: false
          description: Percent of Toll free numbers in the output (0-100). Requires "npa"
            or "description" filters to be defined.
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  /v4/public/phone-numbers/available:
    get:
      summary: List Available Phone Numbers (Public)
      description: Get a list of available phone numbers (public endpoint)
      tags:
        - Available Phone Numbers
      parameters:
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[city]
          schema:
            type: string
          required: false
          description: City filter
        - in: query
          name: filters[country]
          schema:
            type: string
          required: false
          description: Country filter (code like "US" or "CA")
        - in: query
          name: filters[country_code]
          schema:
            type: string
          required: false
          description: Country Code filter (like "1" or "972")
        - in: query
          name: filters[is_toll_free]
          schema:
            type: string
          required: false
          description: Toll free filter (1 for toll free numbers only, 0 for local numbers
            only)
        - in: query
          name: filters[npa]
          schema:
            type: string
          required: false
          description: NANP NPA filter (+1-NPA-nxx-xxxx)
        - in: query
          name: filters[nxx]
          schema:
            type: string
          required: false
          description: NANP NXX filter (+1-npa-NXX-xxxx)
        - in: query
          name: filters[phone_number]
          schema:
            type: string
          required: false
          description: Phone Number filter. You can also provide value as "contains:1234"
            (numbers with "1234" will be returned)
        - in: query
          name: filters[price]
          schema:
            type: string
          required: false
          description: Price filter. You can provide the exact price in cents or use
            operators like "lte:", "gte:", "lt:", "gt:", "between:".
        - in: query
          name: filters[province]
          schema:
            type: string
          required: false
          description: State or Province (code like "NY", "CA" or "TX")
        - in: query
          name: filters[xxxx]
          schema:
            type: string
          required: false
          description: NANP XXXX filter (+1-npa-nxx-XXXX)
        - in: query
          name: filters[description]
          schema:
            type: string
          required: false
          description: Phrase for AI-based numbers search
        - in: query
          name: filters[tf_pc]
          schema:
            type: string
          required: false
          description: Percent of Toll free numbers in the output (0-100). Requires "npa"
            or "description" filters to be defined.
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/blocked-calls":
    post:
      summary: Create Blocked Call
      description: Create a blocked call pattern
      tags:
        - Blocked Calls
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create a blocked call pattern
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VoipBlacklist"
      security:
        - bearerAuth: []
    get:
      summary: List Blocked Calls
      description: Get a list of pattern used to block incoming or outgoing calls
      tags:
        - Blocked Calls
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[type]
          schema:
            type: string
          required: false
          description: Type of blocked call - 'incoming' or 'outgoing'
        - in: query
          name: filters[pattern_type]
          schema:
            type: string
          required: false
          description: Type of pattern - 'equals' or 'starts_with'
        - in: query
          name: filters[pattern]
          schema:
            type: string
          required: false
          description: Pattern of phone number. Starts with '+', followed by digits up to
            14 characters
        - in: query
          name: filters[number]
          schema:
            type: string
          required: false
          description: Phone number for being tested by patterns (matched patterns will be
            returned)
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/blocked-calls/{id}":
    get:
      summary: Get Blocked Call
      description: Show details of an individual blocked call pattern
      tags:
        - Blocked Calls
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Blocked Call
      description: Delete a blocked call pattern
      tags:
        - Blocked Calls
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/blocked-calls":
    post:
      summary: Create Blocked Call for extension
      description: Create a blocked call pattern for extension
      tags:
        - Blocked Calls
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create a blocked call pattern for extension
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VoipBlacklist"
      security:
        - bearerAuth: []
    get:
      summary: List Blocked Call for extension
      description: Get a list of pattern used to block incoming or outgoing calls for
        extension
      tags:
        - Blocked Calls
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[type]
          schema:
            type: string
          required: false
          description: Type of blocked call - 'incoming' or 'outgoing'
        - in: query
          name: filters[pattern_type]
          schema:
            type: string
          required: false
          description: Type of pattern - 'equals' or 'starts_with'
        - in: query
          name: filters[pattern]
          schema:
            type: string
          required: false
          description: Pattern of phone number. Starts with '+', followed by digits up to
            14 characters
        - in: query
          name: filters[number]
          schema:
            type: string
          required: false
          description: Phone number for being tested by patterns (matched patterns will be
            returned)
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/blocked-calls/{id}":
    get:
      summary: Get Blocked Call for extension
      description: Show details of an individual blocked call pattern for extension
      tags:
        - Blocked Calls
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Blocked Call for extension
      description: Delete a blocked call pattern for extension
      tags:
        - Blocked Calls
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/call-logs":
    get:
      summary: List Call Logs
      description: Get a list of call details associated with your account
      tags:
        - Call Logs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[id]
          schema:
            type: string
          required: false
          description: Call UUID
        - in: query
          name: filters[start_time]
          schema:
            type: string
          required: false
          description: 'Call start time filter. Expected value is UNIX timestamp with
            operator like "gt" (greater than), "gte" (greater than or equals),
            "lt" (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Call log creation time filter. Expected value is UNIX timestamp
            with operator like "gt" (greater than), "gte" (greater than or
            equals), "lt" (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[direction]
          schema:
            type: string
          required: false
          description: "Call direction filter: in or out"
        - in: query
          name: filters[type]
          schema:
            type: string
          required: false
          description: Call type, such as 'call', 'fax', 'audiogram'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Account extension filter
        - in: query
          name: filters[called_number]
          schema:
            type: string
          required: false
          description: Called number
        - in: query
          name: filters[caller]
          schema:
            type: string
          required: false
          description: Number of the caller
        - in: query
          name: filters[number]
          schema:
            type: string
          required: false
          description: 'Filter by your number (no matter if it is inbound or outbound
            call). Accepts list of numbers: "in:%2B15555550001,%2B15555550002"
            ("%2B" stands for "+" in query string).'
        - in: query
          name: filters[other_number]
          schema:
            type: string
          required: false
          description: "Filter by other party's number (no matter if it is inbound or
            outbound call). Accepts list of numbers:
            \"in:%2B15555550001,%2B15555550002\" (\"%2B\" stands for \"+\" in
            query string)."
        - in: query
          name: filters[call_duration]
          schema:
            type: string
          required: false
          description: Duration of the call
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/call-logs/{id}":
    get:
      summary: Get Call Log
      description: Show details of an individual Call Log entry
      tags:
        - Call Logs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/call-logs/{id}/recording/download":
    get:
      summary: Download Call Log
      description: Download a call log record
      tags:
        - Call Logs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            image/png:
              schema:
                type: string
                format: binary
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/call-logs":
    get:
      summary: List Call Logs for extension
      description: Get a list of call details associated with your account and extension
      tags:
        - Call Logs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[id]
          schema:
            type: string
          required: false
          description: Call UUID
        - in: query
          name: filters[start_time]
          schema:
            type: string
          required: false
          description: 'Call start time filter. Expected value is UNIX timestamp with
            operator like "gt" (greater than), "gte" (greater than or equals),
            "lt" (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Call log creation time filter. Expected value is UNIX timestamp
            with operator like "gt" (greater than), "gte" (greater than or
            equals), "lt" (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[direction]
          schema:
            type: string
          required: false
          description: "Call direction filter: in or out"
        - in: query
          name: filters[type]
          schema:
            type: string
          required: false
          description: Call type, such as 'call', 'fax', 'audiogram'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Account extension filter
        - in: query
          name: filters[called_number]
          schema:
            type: string
          required: false
          description: Called number
        - in: query
          name: filters[caller]
          schema:
            type: string
          required: false
          description: Number of the caller
        - in: query
          name: filters[number]
          schema:
            type: string
          required: false
          description: 'Filter by your number (no matter if it is inbound or outbound
            call). Accepts list of numbers: "in:%2B15555550001,%2B15555550002"
            ("%2B" stands for "+" in query string).'
        - in: query
          name: filters[other_number]
          schema:
            type: string
          required: false
          description: "Filter by other party's number (no matter if it is inbound or
            outbound call). Accepts list of numbers:
            \"in:%2B15555550001,%2B15555550002\" (\"%2B\" stands for \"+\" in
            query string)."
        - in: query
          name: filters[call_duration]
          schema:
            type: string
          required: false
          description: Duration of the call
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/call-logs/{id}":
    get:
      summary: Get Call Log for extension
      description: Show details of an individual Call Log entry for extension
      tags:
        - Call Logs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/call-logs/{id}/recording/download":
    get:
      summary: Download Call Log for extension
      description: Download a call log record for extension
      tags:
        - Call Logs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            image/png:
              schema:
                type: string
                format: binary
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/call-reports":
    get:
      summary: Get Call Report
      description: Returns data about usage of phone service
      tags:
        - Call Reports
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - &a1
          in: query
          name: group_by
          schema:
            type: string
            enum:
              - date
              - hour
              - minute
              - week
              - duration
              - npa
              - direction
              - number
              - extension
            default: date
          required: false
          description: Grouping parameter
        - &a2
          in: query
          name: fields
          schema:
            type: string
            default: count_incoming,count_outgoing,total
          required: false
          description: 'List of fields for report (comma-separated). Available values:
            "min_call_duration", "avg_call_duration", "max_call_duration",
            "total_call_duration", "min_amount", "avg_amount", "max_amount",
            "total_amount", "first_time", "last_time", "count_incoming",
            "count_outgoing", "total"'
        - &a3
          in: query
          name: tz_offset
          schema:
            type: string
            default: count_incoming,count_outgoing,total
          required: false
          description: By default grouping by date (week), will be based on GMT. You can
            adjust it by providing timezone offset in seconds (like "-18000" for
            New York)
        - in: query
          name: filters[start_time]
          schema:
            type: string
          required: false
          description: 'Call start time. Expected value is UNIX timestamp with operator
            like "gt" (greater than), "gte" (greater than or equals), "lt"
            (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: "Call log creation time. This filter is required and can be defined
            like this: filters[created_at]=between:1613999999,1614100000 (values
            are UNIX timestamps; not included into selection)"
        - in: query
          name: filters[direction]
          schema:
            type: string
          required: false
          description: Call direction (in seconds)
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension ID
        - in: query
          name: filters[called_number]
          schema:
            type: string
          required: false
          description: Called number
        - in: query
          name: filters[call_duration]
          schema:
            type: string
          required: false
          description: Call duration
        - in: query
          name: filters[number]
          schema:
            type: string
          required: false
          description: Phone number (called number for inbound, caller id for outbound)
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/call-reports":
    get:
      summary: Get Call Report for extension
      description: Returns data about usage of phone service for extension
      tags:
        - Call Reports
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - *a1
        - *a2
        - *a3
        - in: query
          name: filters[start_time]
          schema:
            type: string
          required: false
          description: 'Call start time. Expected value is UNIX timestamp with operator
            like "gt" (greater than), "gte" (greater than or equals), "lt"
            (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: "Call log creation time. This filter is required and can be defined
            like this: filters[created_at]=between:1613999999,1614100000 (values
            are UNIX timestamps; not included into selection)"
        - in: query
          name: filters[direction]
          schema:
            type: string
          required: false
          description: Call direction (in seconds)
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension ID
        - in: query
          name: filters[called_number]
          schema:
            type: string
          required: false
          description: Called number
        - in: query
          name: filters[call_duration]
          schema:
            type: string
          required: false
          description: Call duration
        - in: query
          name: filters[number]
          schema:
            type: string
          required: false
          description: Phone number (called number for inbound, caller id for outbound)
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/caller-ids":
    get:
      summary: List Caller IDs
      description: Show the Caller ID options a given extension can use.
      tags:
        - Caller IDs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: filters[number]
          schema:
            type: string
          required: false
          description: Number filter
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/calls":
    post:
      summary: Create Calls
      description: >-
        Make a phone call. You need to provide caller and callee information.
        You can provide different payload, so different parameters may be
        required. These are supported scenarios:

        1. caller_phone_number + callee_extension.

        2. caller_phone_number + callee_phone_number + caller_extension.

        3. caller_extension + callee_phone_number.
      tags:
        - Calls
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: >-
          Make a phone call. You need to provide caller and callee information.
          You can provide different payload, so different parameters may be
          required. These are supported scenarios:

          1. caller_phone_number + callee_extension.

          2. caller_phone_number + callee_phone_number + caller_extension.

          3. caller_extension + callee_phone_number.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Call"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/calls":
    post:
      summary: Create calls for extension
      description: >-
        Make a phone call for extension. You need to provide caller and callee
        information. You can provide different payload, so different parameters
        may be required. These are supported scenarios:

        1. caller_phone_number + callee_extension.

        2. caller_phone_number + callee_phone_number + caller_extension.

        3. caller_extension + callee_phone_number.
      tags:
        - Calls
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: >-
          Make a phone call for extension. You need to provide caller and callee
          information. You can provide different payload, so different
          parameters may be required. These are supported scenarios:

          1. caller_phone_number + callee_extension.

          2. caller_phone_number + callee_phone_number + caller_extension.

          3. caller_extension + callee_phone_number.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Call"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/oauth/clients":
    get:
      summary: List OAuth Clients
      description: Get a list of OAuth clients for an account. Your token should have
        'oauth-management' scope to perform this request.
      tags:
        - Clients
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[voip_id]
          schema:
            type: string
          required: false
          description: Account filter
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/oauth/clients/{id}":
    get:
      summary: Get OAuth Client
      description: Show details of an individual OAuth client. Your token should have
        'oauth-management' scope to perform this request.
      tags:
        - Clients
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete OAuth Client
      description: Delete an individual OAuth client. Your token should have
        'oauth-management' scope to perform this request.
      tags:
        - Clients
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/conversations":
    get:
      summary: List Conversations
      description: This service is used to get the conversations for given filters
      tags:
        - Conversations
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[id]
          schema:
            type: string
          required: false
          description: ID filter
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/conversations":
    get:
      summary: List Conversations for extension
      description: This service is used to get the conversations for given filters for
        extension
      tags:
        - Conversations
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[id]
          schema:
            type: string
          required: false
          description: ID filter
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/conversations/{id}":
    get:
      summary: Get Conversation for extension
      description: Get Conversation for extension.
      tags:
        - Conversations
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update Conversation for extension
      description: Update Conversation for extension
      tags:
        - Conversations
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update Conversation for extension
        required: true
        content:
          application/json:
            schema:
              title: Conversation
              type: object
              properties:
                read:
                  type: boolean
                  enum:
                    - true
                  description: Update conversation is readed can be true or false
      security:
        - bearerAuth: []
    delete:
      summary: Delete Conversation for extension
      description: This service is used to delete a conversation i.e. to delete all
        the messages of a conversation for extension
      tags:
        - Conversations
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/devices":
    post:
      summary: Create device
      description: >-
        The Create Device API allows you to add a Generic SIP device. You may
        use the extension API to associate the device with the extension, which
        is required for the device to be operational.  NOTE: If you use the
        Create Device and at the same request, ask to associate the device to an
        extension (using the "Lines" Param). The Call Handling Rules (CHR) of
        the Extension, if existed, will be deleted. 


        To ensure proper operation of the SIP device, you must add some call handling rules to the extension. Adding CHR is usually done by using the extension API.
      tags:
        - Devices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: >-
          The Create Device API allows you to add a Generic SIP device. You may
          use the extension API to associate the device with the extension,
          which is required for the device to be operational.  NOTE: If you use
          the Create Device and at the same request, ask to associate the device
          to an extension (using the "Lines" Param). The Call Handling Rules
          (CHR) of the Extension, if existed, will be deleted. 


          To ensure proper operation of the SIP device, you must add some call handling rules to the extension. Adding CHR is usually done by using the extension API.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Device"
      security:
        - bearerAuth: []
    get:
      summary: List Devices
      description: Get a list of VoIP devices associated with your account
      tags:
        - Devices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: filters[type]
          schema:
            type: string
          required: false
          description: "Device type filter, array or string. Available values: other,
            generic, softphone, iphone, communicator"
        - in: query
          name: filters[sip_username]
          schema:
            type: string
          required: false
          description: SIP username filter
        - in: query
          name: filters[extension_name]
          schema:
            type: string
          required: false
          description: Extension name
        - in: query
          name: filters[extension_number]
          schema:
            type: string
          required: false
          description: Extension number
        - in: query
          name: filters[mac_address]
          schema:
            type: string
          required: false
          description: MAC address
        - in: query
          name: filters[serial_number]
          schema:
            type: string
          required: false
          description: Serial number
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/devices/{id}":
    get:
      summary: Get Device
      description: Show details of an individual VoIP device
      tags:
        - Devices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Device
      description: Update the details of an individual VoIP device
      tags:
        - Devices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the details of an individual VoIP device
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Device"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Device
      description: Replace parameters on an individual device, only provided
        parameters will be replaced.
      tags:
        - Devices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters on an individual device, only provided
          parameters will be replaced.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Device"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Device
      description: Delete a VoIP device
      tags:
        - Devices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/devices/{id}/e911":
    get:
      summary: Get e911 address
      description: Get current e911 address associated with the device
      tags:
        - Devices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Sync e911 address
      description: Syncronize device's e911 address
      tags:
        - Devices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Syncronize device's e911 address
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeviceE911"
      security:
        - bearerAuth: []
    post:
      summary: Set new e911 address
      description: Set new e911 address and syncronize it
      tags:
        - Devices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Set new e911 address and syncronize it
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeviceE911"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/callbacks":
    get:
      summary: Get list of callbacks
      description: Returns list of callbacks you have on account (extension)
      tags:
        - Events Callbacks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Filter callbacks by name
        - in: query
          name: filters[profile_id]
          schema:
            type: string
          required: false
          description: Filter callbacks by the ID of the profile
        - in: query
          name: filters[fallback_callback_id]
          schema:
            type: string
          required: false
          description: Filter by the ID of the fallback-callback
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create callback
      description: Create callback
      tags:
        - Events Callbacks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create callback
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsCallback"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/callbacks/{id}":
    get:
      summary: Get callback
      description: Returns callback
      tags:
        - Events Callbacks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update callback
      description: Updates some properties of the callback
      tags:
        - Events Callbacks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Updates some properties of the callback
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsCallback"
      security:
        - bearerAuth: []
    delete:
      summary: Delete callback
      description: Deletes callback. Pay attention, that API will not allow you to
        delete callback which is used for some listener of as fallback for
        another callback
      tags:
        - Events Callbacks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/integrations/events/callbacks":
    get:
      summary: Get list of callbacks for extension
      description: Returns list of callbacks you have on account (extension)
      tags:
        - Events Callbacks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Filter callbacks by name
        - in: query
          name: filters[profile_id]
          schema:
            type: string
          required: false
          description: Filter callbacks by the ID of the profile
        - in: query
          name: filters[fallback_callback_id]
          schema:
            type: string
          required: false
          description: Filter by the ID of the fallback-callback
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create callback for extension
      description: Create callback for extension
      tags:
        - Events Callbacks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create callback for extension
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsCallback"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/integrations/events/callbacks/{id}":
    get:
      summary: Get callback for extension
      description: Returns callback for extension
      tags:
        - Events Callbacks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update callback for extension
      description: Updates some properties of the callback.
      tags:
        - Events Callbacks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Updates some properties of the callback.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsCallback"
      security:
        - bearerAuth: []
    delete:
      summary: Delete callback
      description: Deletes callback. Pay attention, that API will not allow you to
        delete callback which is used for some listener of as fallback for
        another callback
      tags:
        - Events Callbacks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/callbacks/{callback_id}/health":
    get:
      summary: Get Statistics
      description: Returns statistics aggregated per time period.
      tags:
        - Events Callbacks Health Status
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: callback_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/integrations/events/callbacks/{id}/health":
    get:
      summary: Get Statistics
      description: Returns statistics aggregated per time period.
      tags:
        - Events Callbacks Health Status
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/overview":
    get:
      summary: Events integration overview
      description: Returns list of listeners with callbacks, profiles and subscriptions.
      tags:
        - Events Integrations Overview
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Events Integration
      description: This endpoint allows to create listener, callback and subscriptions
        with one API request
      tags:
        - Events Integrations Overview
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: This endpoint allows to create listener, callback and subscriptions
          with one API request
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsOverview"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/integrations/events/overview":
    get:
      summary: Events integration overview for extension
      description: Returns list of listeners with callbacks, profiles and
        subscriptions for extension.
      tags:
        - Events Integrations Overview
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Events Integration for extension
      description: This endpoint allows to create listener, callback and subscriptions
        with one API request for extension
      tags:
        - Events Integrations Overview
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: This endpoint allows to create listener, callback and subscriptions
          with one API request for extension
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsOverview"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/listeners":
    get:
      summary: Get list of listeners
      description: Returns list of listeners you have on account (extension)
      tags:
        - Events Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[callback_id]
          schema:
            type: string
          required: false
          description: Filters listeners based on a given callback ID
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Listener
      description: Create a Listener.
      tags:
        - Events Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create a Listener.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsListener"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/listeners/{id}":
    get:
      summary: Get listener
      description: Returns listener
      tags:
        - Events Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update listener
      description: Updates some properties of the listener.
      tags:
        - Events Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Updates some properties of the listener.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsListener"
      security:
        - bearerAuth: []
    delete:
      summary: Delete listener
      description: Delete listener
      tags:
        - Events Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/integrations/events/listeners":
    get:
      summary: Get list of listeners for extension
      description: Returns list of listeners you have on account (extension)
      tags:
        - Events Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[callback_id]
          schema:
            type: string
          required: false
          description: Filters listeners based on a given callback ID
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Creates listener for extension
      description: Creates listener for extension
      tags:
        - Events Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Creates listener for extension
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsListener"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/integrations/events/listeners/{id}":
    get:
      summary: Get listener for extension
      description: Returns listener for extension
      tags:
        - Events Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update listener for extension
      description: Updates some properties of the listener for extension.
      tags:
        - Events Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Updates some properties of the listener for extension.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsListener"
      security:
        - bearerAuth: []
    delete:
      summary: Delete listener for extension
      description: Delete listener for extension
      tags:
        - Events Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/listeners/{listener_id}/filters":
    get:
      summary: Get list of listener's filters
      description: Returns list of filters associated with the listener
      tags:
        - Events Listeners Filters
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create listener's filter
      description: Creates filter, associated with the listener
      tags:
        - Events Listeners Filters
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Creates filter, associated with the listener
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsListenerFilter"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/listeners/{listener_id}/filters/{id}":
    get:
      summary: Get listener's filter
      description: Get filter, associated with the listener
      tags:
        - Events Listeners Filters
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update listener's filter
      description: Update filter, associated with the listener
      tags:
        - Events Listeners Filters
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update filter, associated with the listener
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsListenerFilter"
      security:
        - bearerAuth: []
    delete:
      summary: Delete listener's filter
      description: Removes filter, associated with the listener
      tags:
        - Events Listeners Filters
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/listeners/{listener_id}/subscriptions":
    get:
      summary: Get list of subscriptions
      description: Returns list of subscriptions for listener.
      tags:
        - Events Listeners Subscriptions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create subscription
      description: Creates subscription
      tags:
        - Events Listeners Subscriptions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Creates subscription
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsListenerSubscription"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/listeners/{listener_id}/subscriptions/{id}":
    get:
      summary: Get subscription
      description: Returns subscription.
      tags:
        - Events Listeners Subscriptions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete subscription
      description: Deletes subscription.
      tags:
        - Events Listeners Subscriptions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/integrations/events/listeners/{listener_id}/subscriptions":
    get:
      summary: Get list of subscriptions
      description: Returns list of subscriptions
      tags:
        - Events Listeners Subscriptions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create subscription
      description: Creates subscription
      tags:
        - Events Listeners Subscriptions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Creates subscription
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsListenerSubscription"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/integrations/events/listeners/{listener_id}/subscriptions/{id}":
    get:
      summary: Get subscription
      description: Returns subscription
      tags:
        - Events Listeners Subscriptions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update subscription
      description: Updates some properties of the subscription.
      tags:
        - Events Listeners Subscriptions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Updates some properties of the subscription.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsListenerSubscription"
      security:
        - bearerAuth: []
    delete:
      summary: Delete subscription
      description: Deletes subscription.
      tags:
        - Events Listeners Subscriptions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: listener_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/profiles":
    get:
      summary: Get list of profiles
      description: Returns list of profiles you have on account (extension)
      tags:
        - Events Profiles
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create profile
      description: Create profile
      tags:
        - Events Profiles
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create profile
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsProfile"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/integrations/events/profiles/{id}":
    get:
      summary: Get profile
      description: Returns profile
      tags:
        - Events Profiles
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update profile
      description: Updates some properties of the profile.
      tags:
        - Events Profiles
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Updates some properties of the profile.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsProfile"
      security:
        - bearerAuth: []
    delete:
      summary: Delete profile
      description: Deletes profile. Pay attention, that API will not allow you to
        delete profile which is used for some callback.
      tags:
        - Events Profiles
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/integrations/events/profiles":
    get:
      summary: Get list of profiles
      description: Returns list of profiles you have on account (extension)
      tags:
        - Events Profiles
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create profile
      description: Creates profile
      tags:
        - Events Profiles
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Creates profile
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsProfile"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/integrations/events/profiles/{id}":
    get:
      summary: Get profile
      description: Returns profile
      tags:
        - Events Profiles
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update profile
      description: Updates some properties of the profile.
      tags:
        - Events Profiles
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Updates some properties of the profile.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EventsProfile"
      security:
        - bearerAuth: []
    delete:
      summary: Delete profile
      description: Deletes profile. Pay attention, that API will not allow you to
        delete profile which is used for some callback.
      tags:
        - Events Profiles
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/express-service-codes":
    get:
      summary: List Express Service Codes
      description: Get the Express Service Code associated with your account in list format
      tags:
        - Express Service Codes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/express-service-codes/{id}":
    get:
      summary: Get Express Service Codes
      description: Show details of an account Express Service Code.
      tags:
        - Express Service Codes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/express-service-codes":
    get:
      summary: List Express Service Codes for extension
      description: Get the Express Service Code associated with your extension in list
        format
      tags:
        - Express Service Codes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/express-service-codes/{id}":
    get:
      summary: Get Express Service Codes for extension
      description: Get Express Service Codes for extension
      tags:
        - Express Service Codes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/contact-groups":
    get:
      summary: List Groups
      description: Show a list of contact groups belonging to an extension.
      tags:
        - Extension Contact Groups
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Group
      description: Add a new contact group to an account extension.
      tags:
        - Extension Contact Groups
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Add a new contact group to an account extension.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ContactGroups"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/contact-groups/{id}":
    get:
      summary: Get Group
      description: Retrieve the information of a contact group.
      tags:
        - Extension Contact Groups
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Group
      description: Update the information of a contact group.
      tags:
        - Extension Contact Groups
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the information of a contact group.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ContactGroups"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Group
      description: Delete a contact group from the address book.
      tags:
        - Extension Contact Groups
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: force
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
          required: false
          description: Allows to delete record without validating object's usage (force=1)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/contacts":
    get:
      summary: List Contacts
      description: Show a list of address book contacts.
      tags:
        - Extension Contacts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Contact name = first name + middle name + last name
        - in: query
          name: filters[group_id]
          schema:
            type: string
          required: false
          description: Group filter
        - in: query
          name: filters[phone]
          schema:
            type: string
          required: false
          description: Phone Number
        - in: query
          name: filters[updated_at]
          schema:
            type: string
          required: false
          description: Filters by update date
        - in: query
          name: filters[include_trashed]
          schema:
            type: string
          required: false
          description: only=deleted contacts; ignore=existing contacts; with=both deleted
            and existing contacts
        - in: query
          name: filters[duplications]
          schema:
            type: string
          required: false
          description: >-
            Use this filter to return contacts which have duplications. You can
            analyze them and resolve duplications the way you want on your side
            via other contacts endpoints. Possible values:

            intersection - any match (name, email or number)

            name - name is the same

            email - email is the same

            number - phone number is the same

            number-or-email - email and/or number is the same
        - in: query
          name: filters[deleted_at]
          schema:
            type: string
          required: false
          description: Filters by deletion date. Deleted records will be included
            automatically
        - in: query
          name: filters[modified_at]
          schema:
            type: string
          required: false
          description: Filters by update or deletion date. Deleted records are not
            included by default.
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Contact
      description: This API lets you add a new address book contact for an extension.
      tags:
        - Extension Contacts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: This API lets you add a new address book contact for an extension.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ExtensionContact"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/contacts/{id}":
    get:
      summary: Get Contact
      description: Retrieve the details of an address book contact.
      tags:
        - Extension Contacts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Contact
      description: Update the info of a contact in the address book.
      tags:
        - Extension Contacts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the info of a contact in the address book.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ExtensionContact"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Contact
      description: Delete a contact from the address book.
      tags:
        - Extension Contacts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: force
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
          required: false
          description: Allows to delete record without validating object's usage (force=1)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Contact
      description: Update the info of a contact in the address book.
      tags:
        - Extension Contacts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the info of a contact in the address book.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ExtensionContact"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions":
    get:
      summary: List Extensions
      description: Get a list of detailed extension information visible to the
        authenticated user or client.
      tags:
        - Extensions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension filter
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: filters[full_name]
          schema:
            type: string
          required: false
          description: Full Name filter
        - in: query
          name: filters[virtual]
          schema:
            type: string
          required: false
          description: 1 for virtual extensions; 0 for non-virtual extensions.
        - in: query
          name: filters[has_real_route]
          schema:
            type: string
          required: false
          description: 1 for extensions with meaningful routes (not just 'disconnect') or
            attached to devices (non-virtual); 0 for other extensions.
        - in: query
          name: filters[eligible_for_device]
          schema:
            type: string
          required: false
          description: Eligibility to be used with device. 1 for extensions which can be
            used with device; 0 for extensions which can't.
        - in: query
          name: filters[role]
          schema:
            type: string
          required: false
          description: "Extension role. Available values: 'device', 'virtual',
            'company-inbox', 'nxt-user', 'common-area', 'app', 'softphone'"
        - in: query
          name: filters[nxt_extensions]
          schema:
            type: string
          required: false
          description: Define generation of extensions to be returned. 1 for NXT
            extensions, 0 for classic extensions.
        - in: query
          name: filters[name-or-extension]
          schema:
            type: string
          required: false
          description: Name or Extension filter
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Extension
      description: Create an individual extension.
      tags:
        - Extensions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create an individual extension.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Extension"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}":
    get:
      summary: Get Extension
      description: Show details of an individual extension.
      tags:
        - Extensions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Extension
      description: Replace parameters on an individual extension, any missing
        parameters will be replaced with default values.
      tags:
        - Extensions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters on an individual extension, any missing
          parameters will be replaced with default values.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Extension"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Extension
      description: Replace parameters on an individual extension, only provided
        parameters will be replaced.
      tags:
        - Extensions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters on an individual extension, only provided
          parameters will be replaced.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Extension"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Extension
      description: Delete an individual extension.
      tags:
        - Extensions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: force
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
          required: false
          description: Allows to delete record without validating object's usage (force=1)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/extensions":
    get:
      summary: List Extensions for extension
      description: Allows extension user to receive list of extensions on account
        without exposing sensitive information like voicemail PINs, etc.
      tags:
        - Extensions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/fax":
    get:
      summary: List Fax
      description: Get a list of Fax for an account.
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[is_new]
          schema:
            type: string
          required: false
          description: List only un-read Fax
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number from which Fax was sent.
            Note: you must encode the + as %2B"
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to which Fax was sent.
            Note you must encode the + as %2B
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that sms was created.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension id where Fax is stored
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: "Deleted filter: only=Gives only the not deleted messages;
            with=Gives the messages no matter if they are deleted; ignore=Gives
            only the soft deleted messages;"
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Fax
      description: The Create Fax API allows users to send a Fax.
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: The Create Fax API allows users to send a Fax.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Fax"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/fax/{id}":
    get:
      summary: Get Fax
      description: This service shows the details of an individual Fax.
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Fax Status
      description: Update the is_new parameter in a Fax record.
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the is_new parameter in a Fax record.
        required: true
        content:
          application/json:
            schema:
              title: Fax
              type: object
              properties:
                is_new:
                  nullable: true
                  type: boolean
                  description: True when Fax is new; False when Fax has been viewed or downloaded
      security:
        - bearerAuth: []
    delete:
      summary: Delete Fax
      description: Delete an individual Fax record.
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/fax/{id}/download":
    get:
      summary: Download Fax
      description: Download an individual Fax record into a file in PDF format.
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            image/png:
              schema:
                type: string
                format: binary
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/fax":
    get:
      summary: List Fax for extension
      description: Get a list of Fax for extension.
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[is_new]
          schema:
            type: string
          required: false
          description: List only un-read Fax
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number from which Fax was sent.
            Note: you must encode the + as %2B"
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to which Fax was sent.
            Note you must encode the + as %2B
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that sms was created.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension id where Fax is stored
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: "Deleted filter: only=Gives only the not deleted messages;
            with=Gives the messages no matter if they are deleted; ignore=Gives
            only the soft deleted messages;"
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Fax for extension
      description: The Create Fax API allows users to send a Fax for extension
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: The Create Fax API allows users to send a Fax for extension
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Fax"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/fax/{id}":
    get:
      summary: Get Fax for extension
      description: Get Fax for extension
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Fax Status for extension
      description: Update the is_new parameter in a Fax record for extension
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the is_new parameter in a Fax record for extension
        required: true
        content:
          application/json:
            schema:
              title: Fax
              type: object
              properties:
                is_new:
                  nullable: true
                  type: boolean
                  description: True when Fax is new; False when Fax has been viewed or downloaded
      security:
        - bearerAuth: []
    delete:
      summary: Delete Fax for extension
      description: Delete an individual Fax record for extension
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/fax/{id}/download":
    get:
      summary: Download Fax for extension
      description: Download Fax for extension
      tags:
        - Fax
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            image/png:
              schema:
                type: string
                format: binary
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/help-requests":
    post:
      summary: Request help
      description: Endpoint returns AI-generated response about Phone.com services
      tags:
        - Help Requests
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Endpoint returns AI-generated response about Phone.com services
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/HelpRequest"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/invoices":
    get:
      summary: List Invoices
      description: Get a list of billing statements for an account
      tags:
        - Invoices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/invoices/{id}":
    get:
      summary: Get Invoice
      description: Show details of an individual billing statement
      tags:
        - Invoices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/listeners":
    get:
      summary: List Listeners
      description: Get a list of listeners for an account.
      tags:
        - Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
    post:
      summary: Create Listener
      description: Add a listener object to your account that can be used to subscribe
        an event.
      tags:
        - Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Add a listener object to your account that can be used to subscribe
          an event.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Listener"
      security:
        - bearerAuth: []
      deprecated: true
  "/v4/accounts/{voip_id}/listeners/{id}":
    get:
      summary: Get Listener
      description: Show details of an individual event listener.
      tags:
        - Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
    put:
      summary: Replace Listener
      description: Update the settings of an individual event listener.
      tags:
        - Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the settings of an individual event listener.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Listener"
      security:
        - bearerAuth: []
      deprecated: true
    delete:
      summary: Delete Listener
      description: Delete an individual event listener.
      tags:
        - Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
  "/v4/accounts/{voip_id}/extensions/{extension_id}/listeners":
    get:
      summary: List Listeners for extension
      description: Get a list of listeners for extension
      tags:
        - Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
    post:
      summary: Create Listener for extension
      description: Add a listener object to your extension that can be used to
        subscribe an event
      tags:
        - Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Add a listener object to your extension that can be used to
          subscribe an event
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Listener"
      security:
        - bearerAuth: []
      deprecated: true
  "/v4/accounts/{voip_id}/extensions/{extension_id}/listeners/{id}":
    get:
      summary: Get Listener for extension
      description: Show details of an individual event listener for extension
      tags:
        - Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
    put:
      summary: Replace Listener for extension
      description: Update the settings of an individual event listener for extension
      tags:
        - Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the settings of an individual event listener for extension
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Listener"
      security:
        - bearerAuth: []
      deprecated: true
    delete:
      summary: Delete Listener for extension
      description: Delete an individual event listener for extension
      tags:
        - Listeners
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
  "/v4/accounts/{voip_id}/live-answer":
    get:
      summary: List Live Answer Scripts
      description: Returns list of live answer scripts
      tags:
        - Live Answer
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: filters[enabled]
          schema:
            type: string
          required: false
          description: Send '1' if you want to be returned only scripts that are active,
            '0' for deactivated scripts.
        - in: query
          name: filters[vendor_id]
          schema:
            type: string
          required: false
          description: Vendor ID
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Live Answer Script
      description: Add a live answer script to your account
      tags:
        - Live Answer
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Add a live answer script to your account
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LiveAnswer"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/live-answer/{id}":
    get:
      summary: Get Live Answer Script
      description: Get an individual live answer script
      tags:
        - Live Answer
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Live Answer
      description: Delete an individual live answer
      tags:
        - Live Answer
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: force
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
          required: false
          description: Allows to delete record without validating object's usage (force=1)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Live Answer
      description: Replace parameters on an individual live answer script, only
        provided partamteres will be replaced
      tags:
        - Live Answer
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters on an individual live answer script, only
          provided partamteres will be replaced
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LiveAnswer"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/live-answer/{id}/usage":
    get:
      summary: List Live Answer Script Usage
      description: Shows which objects in the system use an individual Live Answer Script
      tags:
        - Live Answer Usage
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/live-answer-vendors":
    get:
      summary: List Live Answer Vendors
      description: Get a list of live available vendors for a live answer
      tags:
        - Live Answer Vendor
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/live-answer-vendors/{vendor_id}/tokens":
    post:
      summary: Create Live Answer Vendor Token
      description: Creates token for some Live Answer integrations
      tags:
        - Live Answer Vendor Token
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: vendor_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Creates token for some Live Answer integrations
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LiveAnswerVendorToken"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/media":
    post:
      summary: Create Media
      description: "Add a media object to your account that can be used as a greeting
        or hold music. Users may create a media by using the built-in
        Text-to-speech (TTS) facility or upload a file of their choice. (Note:
        The maximum size for media files or JSON objects included with a POST or
        PUT request is 10 MB)"
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: "Add a media object to your account that can be used as a greeting
          or hold music. Users may create a media by using the built-in
          Text-to-speech (TTS) facility or upload a file of their choice. (Note:
          The maximum size for media files or JSON objects included with a POST
          or PUT request is 10 MB)"
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Recording"
      security:
        - bearerAuth: []
    get:
      summary: List Media
      description: Get a list of media recordings for an account.
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: filters[type]
          schema:
            type: string
          required: false
          description: "Type filter: hold_music or greeting"
        - in: query
          name: filters[ownership]
          schema:
            type: string
          required: false
          description: Provide 'user' to exclude generic hold music
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/media/{id}":
    put:
      summary: Replace Media
      description: "Update a media object to your account. Note: The maximum size for
        media files or JSON objects included with a POST or PUT request is 10
        MB."
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: "Update a media object to your account. Note: The maximum size for
          media files or JSON objects included with a POST or PUT request is 10
          MB."
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Recording"
      security:
        - bearerAuth: []
    get:
      summary: Get Media
      description: Show details of an individual media recording (Greeting or Hold Music).
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Media
      description: Delete an individual media record.
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/media/{id}/download":
    get:
      summary: Download Media
      description: Download an individual media recording
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            image/png:
              schema:
                type: string
                format: binary
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/media":
    post:
      summary: Create Media for extension
      description: "Add a media object to your extension that can be used as a
        greeting or hold music. Users may create a media by using the built-in
        Text-to-speech (TTS) facility or upload a file of their choice. (Note:
        The maximum size for media files or JSON objects included with a POST or
        PUT request is 10 MB)"
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: "Add a media object to your extension that can be used as a
          greeting or hold music. Users may create a media by using the built-in
          Text-to-speech (TTS) facility or upload a file of their choice. (Note:
          The maximum size for media files or JSON objects included with a POST
          or PUT request is 10 MB)"
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Recording"
      security:
        - bearerAuth: []
    get:
      summary: List Media for extension
      description: Get a list of media recordings for extension
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: filters[type]
          schema:
            type: string
          required: false
          description: "Type filter: hold_music or greeting"
        - in: query
          name: filters[ownership]
          schema:
            type: string
          required: false
          description: Provide 'user' to exclude generic hold music
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/media/{id}":
    get:
      summary: Get Media for extension
      description: Show details of an individual media recording (Greeting or Hold
        Music) for extension
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Media for extension
      description: "Update a media object to your extension. Note: The maximum size
        for media files or JSON objects included with a POST or PUT request is
        10 MB."
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: "Update a media object to your extension. Note: The maximum size
          for media files or JSON objects included with a POST or PUT request is
          10 MB."
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Recording"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Media for extension
      description: Delete an individual media record for extension
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/media/{id}/download":
    get:
      summary: Download Media for extension
      description: Download an individual media recording for extension
      tags:
        - Media
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            image/png:
              schema:
                type: string
                format: binary
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/media/{id}/usage":
    get:
      summary: List Media Usage
      description: Shows which objects in the system use an individual media (Greeting
        or Hold Music)
      tags:
        - Media Usage
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/media/{id}/usage":
    get:
      summary: List Media Usage for extension
      description: Shows which objects in the system use an individual media (Greeting
        or Hold Music) for extension
      tags:
        - Media Usage
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/menus":
    post:
      summary: Create Menu
      description: Create an individual menu
      tags:
        - Menus
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create an individual menu
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Menu"
      security:
        - bearerAuth: []
    get:
      summary: List Menus
      description: Get a list of menus for an account
      tags:
        - Menus
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/menus/{id}":
    get:
      summary: Get Menu
      description: Show details of an individual menu
      tags:
        - Menus
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Menu
      description: Replace an individual menu
      tags:
        - Menus
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace an individual menu
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Menu"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Menu
      description: Delete an individual menu
      tags:
        - Menus
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: force
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
          required: false
          description: Allows to delete record without validating object's usage (force=1)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/messages":
    post:
      summary: Send Message
      description: >-
        This service is used to send a message.


        The maximum message size (along with the attachments) is generally limited to 300KB (MMS 1.2), but recently the MMS 1.3 standard has allowed for a maximum size of 600KB. Wireless carriers, however, can impose their own size restrictions. Phone.com will try to send the file provided via the API as is; however, different vendors might reject the message according to their own policy.


        This API endpoint is designated for Person to Person (P2P) communications. Improper use for marketing type purposes or Application to Person (A2P) will cause upstream cellular companies to block the “From” number for SMS use.  If you plan to use this endpoint for A2P or A2A applications that might also entail high volume, i.e., above the FREE limits set by the Phone.com plan, please contact our API support team at apisupport@phone.com to discuss other options.
      tags:
        - Messages
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: >-
          This service is used to send a message.


          The maximum message size (along with the attachments) is generally limited to 300KB (MMS 1.2), but recently the MMS 1.3 standard has allowed for a maximum size of 600KB. Wireless carriers, however, can impose their own size restrictions. Phone.com will try to send the file provided via the API as is; however, different vendors might reject the message according to their own policy.


          This API endpoint is designated for Person to Person (P2P) communications. Improper use for marketing type purposes or Application to Person (A2P) will cause upstream cellular companies to block the “From” number for SMS use.  If you plan to use this endpoint for A2P or A2A applications that might also entail high volume, i.e., above the FREE limits set by the Phone.com plan, please contact our API support team at apisupport@phone.com to discuss other options.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Message"
      security:
        - bearerAuth: []
    get:
      summary: List Messages
      description: This service is used to get messages for given filters.
      tags:
        - Messages
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[message_id]
          schema:
            type: string
          required: false
          description: Message ID filter
        - in: query
          name: filters[direction]
          schema:
            type: string
          required: false
          description: "Message direction filter: in or out"
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to which Message was sent.
            Note you must encode the + as %2B
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number from which Message was
            sent. Note: you must encode the + as %2B"
        - in: query
          name: filters[extension_id]
          schema:
            type: string
          required: false
          description: Account extension filter
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: "Deleted filter: only=Gives only the not deleted messages;
            with=Gives the messages no matter if they are deleted; ignore=Gives
            only the soft deleted messages;"
        - in: query
          name: filters[read]
          schema:
            type: string
          required: false
          description: "Read filter: only=Gives only the not deleted messages; with=Gives
            the messages no matter if they are deleted; ignore=Gives only the
            soft deleted messages;"
        - in: query
          name: filters[conversation_id]
          schema:
            type: string
          required: false
          description: Conversation ID filter
        - in: query
          name: filters[updated_at]
          schema:
            type: string
          required: false
          description: 'Updated At filter. Expected value is UNIX timestamp with operator
            like "gt" (greater than), "gte" (greater than or equals), "lt"
            (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Created At filter. Expected value is UNIX timestamp with operator
            like "gt" (greater than), "gte" (greater than or equals), "lt"
            (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[archived_at]
          schema:
            type: string
          required: false
          description: Archived At filter
        - in: query
          name: filters[created_after]
          schema:
            type: string
          required: false
          description: Created after filter
        - in: query
          name: filters[created_before]
          schema:
            type: string
          required: false
          description: Created before filter
        - in: query
          name: filters[updated_after]
          schema:
            type: string
          required: false
          description: Updated after filter
        - in: query
          name: filters[updated_before]
          schema:
            type: string
          required: false
          description: Updated before filter
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/messages/{id}":
    get:
      summary: Get Message
      description: Get Message.
      tags:
        - Messages
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update Message
      description: This service is used to mark a message to read, by setting when it
        was read, or unread
      tags:
        - Messages
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: This service is used to mark a message to read, by setting when it
          was read, or unread
        required: true
        content:
          application/json:
            schema:
              title: Message
              type: object
              properties:
                read:
                  type: boolean
                  description: Update message is readed can be true or false
      security:
        - bearerAuth: []
    delete:
      summary: Delete Message
      description: This service is used to delete a message
      tags:
        - Messages
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/messages":
    post:
      summary: Send Message for extension
      description: >-
        This service is used to send a message for extension.


        This API endpoint is designated for Person to Person (P2P) communications. Improper use for marketing type purposes or Application to Person (A2P) will cause upstream cellular companies to block the “From” number for SMS use.  If you plan to use this endpoint for A2P or A2A applications that might also entail high volume, i.e., above the FREE limits set by the Phone.com plan, please contact our API support team at apisupport@phone.com to discuss other options.
      tags:
        - Messages
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: >-
          This service is used to send a message for extension.


          This API endpoint is designated for Person to Person (P2P) communications. Improper use for marketing type purposes or Application to Person (A2P) will cause upstream cellular companies to block the “From” number for SMS use.  If you plan to use this endpoint for A2P or A2A applications that might also entail high volume, i.e., above the FREE limits set by the Phone.com plan, please contact our API support team at apisupport@phone.com to discuss other options.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Message"
      security:
        - bearerAuth: []
    get:
      summary: List Messages for extension
      description: This service is used to get messages for given filters for extension.
      tags:
        - Messages
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[message_id]
          schema:
            type: string
          required: false
          description: Message ID filter
        - in: query
          name: filters[direction]
          schema:
            type: string
          required: false
          description: "Message direction filter: in or out"
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to which Message was sent.
            Note you must encode the + as %2B
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number from which Message was
            sent. Note: you must encode the + as %2B"
        - in: query
          name: filters[extension_id]
          schema:
            type: string
          required: false
          description: Account extension filter
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: "Deleted filter: only=Gives only the not deleted messages;
            with=Gives the messages no matter if they are deleted; ignore=Gives
            only the soft deleted messages;"
        - in: query
          name: filters[read]
          schema:
            type: string
          required: false
          description: "Read filter: only=Gives only the not deleted messages; with=Gives
            the messages no matter if they are deleted; ignore=Gives only the
            soft deleted messages;"
        - in: query
          name: filters[conversation_id]
          schema:
            type: string
          required: false
          description: Conversation ID filter
        - in: query
          name: filters[updated_at]
          schema:
            type: string
          required: false
          description: 'Updated At filter. Expected value is UNIX timestamp with operator
            like "gt" (greater than), "gte" (greater than or equals), "lt"
            (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Created At filter. Expected value is UNIX timestamp with operator
            like "gt" (greater than), "gte" (greater than or equals), "lt"
            (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[archived_at]
          schema:
            type: string
          required: false
          description: Archived At filter
        - in: query
          name: filters[created_after]
          schema:
            type: string
          required: false
          description: Created after filter
        - in: query
          name: filters[created_before]
          schema:
            type: string
          required: false
          description: Created before filter
        - in: query
          name: filters[updated_after]
          schema:
            type: string
          required: false
          description: Updated after filter
        - in: query
          name: filters[updated_before]
          schema:
            type: string
          required: false
          description: Updated before filter
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/messages/{id}":
    get:
      summary: Get Message for extension
      description: Get Message for extension.
      tags:
        - Messages
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update Message for extension
      description: This service is used to mark a message to read, by setting when it
        was read, or unread for extension
      tags:
        - Messages
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: This service is used to mark a message to read, by setting when it
          was read, or unread for extension
        required: true
        content:
          application/json:
            schema:
              title: Message
              type: object
              properties:
                read:
                  type: boolean
                  description: Update message is readed can be true or false
      security:
        - bearerAuth: []
    delete:
      summary: Delete Message for extension
      description: This service is used to delete a message for extension
      tags:
        - Messages
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  /v4/oauth/access-token:
    post:
      summary: Create Access Token
      description: 'To create an access token via the /oauth/access-token API, an API
        user may choose any one of the grant types it supports: Authorization
        Code Grant, Client Credential Grant, Password Credential Grant or
        Refresh Token Grant. Provide "?mode=details" in query string to receive
        response identical to GET /v4/oauth/access-token/details'
      tags:
        - OAuth
      parameters: []
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: 'To create an access token via the /oauth/access-token API, an API
          user may choose any one of the grant types it supports: Authorization
          Code Grant, Client Credential Grant, Password Credential Grant or
          Refresh Token Grant. Provide "?mode=details" in query string to
          receive response identical to GET /v4/oauth/access-token/details'
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreatedAccessToken"
    get:
      summary: Get Access Token
      description: Retrieve details of an access token, such as scope, expiration and
        extension ID. Voip ID will be returned as well if scope contains
        account-owner scope.
      tags:
        - OAuth
      parameters:
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Access Token
      description: Deactivates current access token (it may take up to 5 minutes after
        API call)
      tags:
        - OAuth
      parameters:
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  /v4/oauth/access-token/details:
    get:
      summary: Detailed information about access token
      description: Returns full information about current access token
      tags:
        - OAuth
      parameters:
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  /v4/oauth/access-token/notes:
    post:
      summary: Add note for token
      description: Adds a note for the current token (it may be used for tokens
        identification and other purposes)
      tags:
        - OAuth
      parameters: []
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Adds a note for the current token (it may be used for tokens
          identification and other purposes)
        required: true
        content:
          application/json:
            schema: {}
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/orders":
    get:
      summary: List Orders
      description: Returns list of previous orders
      tags:
        - Orders
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: Order time
        - in: query
          name: filters[include_trashed]
          schema:
            type: string
          required: false
          description: only=deleted orders; ignore=existing orders; with=both deleted and
            existing orders
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Order
      description: Order new physical devices. Contact out support to get access to
        this API.
      tags:
        - Orders
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Order new physical devices. Contact out support to get access to
          this API.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Order"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/orders/{id}":
    get:
      summary: Get Order
      description: Returns information about the order
      tags:
        - Orders
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update Order
      description: Allows to manage placed order
      tags:
        - Orders
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Allows to manage placed order
        required: true
        content:
          application/json:
            schema:
              title: Order
              type: object
              properties:
                contact_id:
                  type: integer
                  minimum: 1
                  description: ID of the contact where devices should be delivered to
                status:
                  nullable: true
                  type: string
                  enum:
                    - deleted
                  description: The only allowed value is "deleted". Use it to cancel order (it
                    works only if it wasn't processed yet).
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/payment-methods":
    get:
      summary: List Payment Methods
      description: Get a list of payment methods for an account.
      tags:
        - Payment Methods
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: with_details
          schema:
            type: integer
            enum:
              - "0"
              - "1"
            default: "0"
          required: false
          description: Add credit card details into the output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Payment Method
      description: Create an individual payment method.
      tags:
        - Payment Methods
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create an individual payment method.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PaymentMethod"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/payment-methods/{id}":
    get:
      summary: Get Payment Method
      description: Show details of an individual payment method.
      tags:
        - Payment Methods
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: with_details
          schema:
            type: integer
            enum:
              - "0"
              - "1"
            default: "0"
          required: false
          description: Add credit card details into the output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Payment Method
      description: Replace the status of an individual payment method.
      tags:
        - Payment Methods
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace the status of an individual payment method.
        required: true
        content:
          application/json:
            schema:
              title: PaymentMethod
              type: object
              properties:
                status:
                  nullable: true
                  type: string
                  enum:
                    - onfile
                    - primary
                    - hidden
                  description: Can be 'primary' = primary card used for billing, 'onfile' = card
                    on file, 'hidden' = deleted card
      security:
        - bearerAuth: []
    delete:
      summary: Delete Payment Method
      description: Delete an individual payment method.
      tags:
        - Payment Methods
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/payments":
    get:
      summary: List payments
      description: Return list of payments for account
      tags:
        - Payments
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Make payment
      description: Charge payment method associated with account
      tags:
        - Payments
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Charge payment method associated with account
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Payment"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/phone-numbers/reserved":
    post:
      summary: Reserve Phone Number
      description: Reserve Phone Number
      tags:
        - Phone Number Reservation
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Reserve Phone Number
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PhoneNumberReservation"
      security:
        - bearerAuth: []
  /v4/public/phone-numbers/reserved:
    post:
      summary: Reserve Phone Number (Public)
      description: Reserve phone number (public endpoint)
      tags:
        - Phone Number Reservation
      parameters: []
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Reserve phone number (public endpoint)
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PhoneNumberReservation"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/phone-numbers":
    get:
      summary: List Phone Numbers
      description: Get a list of phone numbers registered to an account.
      tags:
        - Phone Numbers
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: filters[number]
          schema:
            type: string
          required: false
          description: Phone number filter
        - in: query
          name: filters[did]
          schema:
            type: string
          required: false
          description: DID (number) filter
        - in: query
          name: filters[activation_date]
          schema:
            type: string
          required: false
          description: Activation date filter
        - in: query
          name: filters[has_real_route]
          schema:
            type: string
          required: false
          description: 1 for phone numbers with meaningful routes (not just 'disconnect');
            0 for other extensions.
        - in: query
          name: filters[lrdn_numbers]
          schema:
            type: string
          required: false
          description: By default we don't show system LRDN numbers. If you want to get
            LRDN numbers only, provide "only" as value. If you want to include
            LRDN numbers, provide "include" as value.
        - in: query
          name: filters[usage]
          schema:
            type: string
          required: false
          description: 'Filters results based onthe way number uses the extension: "voip"
            (number should use extension in the call handling rules), "sms"
            (number should use extension as inbox), "any". Works only for
            extension-level requests.'
        - in: query
          name: filters[name-or-did]
          schema:
            type: string
          required: false
          description: Search by Phone number name or DID (number)
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Phone Number
      description: Add a phone number to an account.
      tags:
        - Phone Numbers
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Add a phone number to an account.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PhoneNumber"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/phone-numbers":
    get:
      summary: List Phone Numbers for extension
      description: Get a list of phone numbers registered to an account and associated
        with specific extension.
      tags:
        - Phone Numbers
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: filters[number]
          schema:
            type: string
          required: false
          description: Phone number filter
        - in: query
          name: filters[did]
          schema:
            type: string
          required: false
          description: DID (number) filter
        - in: query
          name: filters[activation_date]
          schema:
            type: string
          required: false
          description: Activation date filter
        - in: query
          name: filters[has_real_route]
          schema:
            type: string
          required: false
          description: 1 for phone numbers with meaningful routes (not just 'disconnect');
            0 for other extensions.
        - in: query
          name: filters[lrdn_numbers]
          schema:
            type: string
          required: false
          description: By default we don't show system LRDN numbers. If you want to get
            LRDN numbers only, provide "only" as value. If you want to include
            LRDN numbers, provide "include" as value.
        - in: query
          name: filters[usage]
          schema:
            type: string
          required: false
          description: 'Filters results based onthe way number uses the extension: "voip"
            (number should use extension in the call handling rules), "sms"
            (number should use extension as inbox), "any". Works only for
            extension-level requests.'
        - in: query
          name: filters[name-or-did]
          schema:
            type: string
          required: false
          description: Search by Phone number name or DID (number)
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/phone-numbers/{id}":
    delete:
      summary: Delete Phone Number
      description: Delete an individual Phone number from your account.
      tags:
        - Phone Numbers
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    get:
      summary: Get Phone Number
      description: Show details of an individual phone number
      tags:
        - Phone Numbers
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Phone Number
      description: Replace parameters on an individual Phone Number
      tags:
        - Phone Numbers
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters on an individual Phone Number
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PhoneNumber"
      security:
        - bearerAuth: []
    put:
      summary: Replace Phone Number
      description: Update the settings for an existing phone number on your account.
      tags:
        - Phone Numbers
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the settings for an existing phone number on your account.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PhoneNumber"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/phone-numbers/{id}":
    get:
      summary: Get Phone Number for extension
      description: Show details of an individual phone number associated with specific
        extension
      tags:
        - Phone Numbers
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  /v4/phone-numbers/meta:
    get:
      summary: Get Phone Numbers Meta
      description: Returns meta information for list of numbers
      tags:
        - Phone Numbers Meta Information
      parameters:
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[phone_number]
          schema:
            type: string
          required: false
          description: 'List of requested phone numbers should be provided as a filter
            like: "?filters[phone_number]=in:%2B15550001234,%2B15550005678"'
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/devices-accessories-price-list":
    get:
      summary: Get Accessories Price List
      description: Returns information about accessories available for purchase
      tags:
        - Price List
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  /v4/devices-accessories-price-list:
    get:
      summary: Get Public Accessories Price List
      description: Returns information about accessories available for purchase
      tags:
        - Price List
      parameters:
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  /v4/public/tax-calculations:
    post:
      summary: Calculate taxes
      description: Helper for tax calculations
      tags:
        - Prices
      parameters: []
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Helper for tax calculations
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TaxCalculation"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/devices-price-list":
    get:
      summary: Get Devices Price List
      description: Returns information about devices available for purchase
      tags:
        - Prices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[with_accessories]
          schema:
            type: string
          required: false
          description: Return available accessories
        - in: query
          name: filters[include_obsolete]
          schema:
            type: string
          required: false
          description: Allows to show not only devices available for purchasing, but also
            devices which were purchasable earlier. "only" = only
            non-purchasable devices; "ignore" = only purchasable devices
            (default); "with" = both purchasable and non-purchasable devices
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  /v4/devices-price-list:
    get:
      summary: Get Public Devices Price List
      description: Returns information about devices available for purchase
      tags:
        - Prices
      parameters:
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[with_accessories]
          schema:
            type: string
          required: false
          description: Return available accessories
        - in: query
          name: filters[include_obsolete]
          schema:
            type: string
          required: false
          description: Allows to show not only devices available for purchasing, but also
            devices which were purchasable earlier. "only" = only
            non-purchasable devices; "ignore" = only purchasable devices
            (default); "with" = both purchasable and non-purchasable devices
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/device-extensions-price-list":
    get:
      summary: Return device extensions price
      description: Return price (recurrent and prorated) for different type of device
        extensions
      tags:
        - Prices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[with_taxes]
          schema:
            type: string
          required: false
          description: Return information about taxes
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/shipping-price-list":
    get:
      summary: Shipping Methods
      description: Returns information and price of shipping methods for orders
      tags:
        - Prices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[with_taxes]
          schema:
            type: string
          required: false
          description: Return information about taxes
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/tax-calculations":
    post:
      summary: Calculate taxes
      description: Helper for tax calculations
      tags:
        - Prices
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Helper for tax calculations
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TaxCalculation"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/profile/password":
    post:
      summary: Change password
      description: Changes password for your account
      tags:
        - Profile
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Changes password for your account
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PasswordChangeObject"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/queues/{queue_id}/members":
    post:
      summary: Create Queue Member
      description: Add member to the queue
      tags:
        - Queue Members
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: queue_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Add member to the queue
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/QueueMember"
      security:
        - bearerAuth: []
    get:
      summary: List Queue Members
      description: Returns list of the queue members
      tags:
        - Queue Members
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: queue_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/queues/{queue_id}/members/{id}":
    get:
      summary: Get Queue Member
      description: Returns queue members
      tags:
        - Queue Members
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: queue_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Queue Member
      description: Remove member of the queue
      tags:
        - Queue Members
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: queue_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/queues":
    post:
      summary: Create Queue
      description: Create a queue
      tags:
        - Queues
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create a queue
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Queue"
      security:
        - bearerAuth: []
    get:
      summary: List Queues
      description: Get a list of queues for an account
      tags:
        - Queues
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: filters[in_use]
          schema:
            type: string
          required: false
          description: Send '1' if you want to be returned only queues that are used by a
            route, '0' for not used by any route.
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/queues/{id}":
    get:
      summary: Get Queue
      description: Show details of an individual queue
      tags:
        - Queues
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Queue
      description: Replace parameters on a queue, any missing parameters will be
        replaced with default values.
      tags:
        - Queues
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters on a queue, any missing parameters will be
          replaced with default values.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Queue"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Queue
      description: Replace parameters on an individual queue, only provided parameters
        will be replaced.
      tags:
        - Queues
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters on an individual queue, only provided parameters
          will be replaced.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Queue"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Queue
      description: Delete a queue
      tags:
        - Queues
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: force
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
          required: false
          description: Allows to delete record without validating object's usage (force=1)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/oauth/clients/{oauth_client_id}/redirect-uris":
    get:
      summary: List OAuth Client Redirect URIs
      description: Get a list of OAuth Client Redirect URIs for an account. Your token
        should have 'oauth-management' scope to perform this request.
      tags:
        - Redirect URIs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: oauth_client_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create OAuth Client Redirect URI
      description: Create an OAuth Client Redirect URI record. Your token should have
        'oauth-management' scope to perform this request.
      tags:
        - Redirect URIs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: oauth_client_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create an OAuth Client Redirect URI record. Your token should have
          'oauth-management' scope to perform this request.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RedirectUri"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/oauth/clients/{oauth_client_id}/redirect-uris/{id}":
    get:
      summary: Get OAuth Client Redirect URI
      description: Get details of an OAuth Client Redirect URI record. Your token
        should have 'oauth-management' scope to perform this request.
      tags:
        - Redirect URIs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: oauth_client_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete OAuth Client Redirect URI
      description: Delete an OAuth Client Redirect URI record. Your token should have
        'oauth-management' scope to perform this request.
      tags:
        - Redirect URIs
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: oauth_client_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/routes":
    post:
      summary: Create Route
      description: Add a new route to the account
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Add a new route to the account
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Route"
      security:
        - bearerAuth: []
    get:
      summary: List Routes
      description: Get a list of routes for an account
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension
        - &a4
          in: query
          name: with_usage
          schema:
            type: integer
            enum:
              - "0"
              - "1"
            default: "0"
          required: false
          description: Add route usage into the output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/routes/{id}":
    get:
      summary: Get Route
      description: Show details of an individual route
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - &a5
          in: query
          name: with_usage
          schema:
            type: integer
            enum:
              - "0"
              - "1"
            default: "0"
          required: false
          description: Add route usage into the output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Route
      description: Update the information of a route
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the information of a route
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Route"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Route
      description: Replace parameters on an individual route, only provided parameters
        will be replaced.
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters on an individual route, only provided parameters
          will be replaced.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Route"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Route
      description: Delete a route from the account
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: force
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
          required: false
          description: Allows to delete record without validating object's usage (force=1)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/routes":
    post:
      summary: Create Route for extension
      description: Add a new route to the extension
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Add a new route to the extension
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Route"
      security:
        - bearerAuth: []
    get:
      summary: List Routes for extension
      description: Get a list of routes for the extension
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension
        - *a4
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/routes/{id}":
    get:
      summary: Get Route for extension
      description: Show details of an individual route for the extension
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - *a5
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Route for extension
      description: Update the information on a route for the extension
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the information on a route for the extension
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Route"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Route
      description: Replace parameters on an individual route on extension level, only
        provided parameters will be replaced.
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters on an individual route on extension level, only
          provided parameters will be replaced.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Route"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Route for extension
      description: Delete a route from the extension
      tags:
        - Routes
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: force
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
          required: false
          description: Allows to delete record without validating object's usage (force=1)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/sms":
    get:
      summary: List SMS
      description: Get a list of SMS messages for an account.
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[id]
          schema:
            type: string
          required: false
          description: ID filter
        - in: query
          name: filters[is_new]
          schema:
            type: string
          required: false
          description: 1 when SMS is new; 0 when SMS has been read.
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number to send the SMS FROM.
            Note: you must encode the + as %2B, and the direction filter is
            required."
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to send the SMS TO. Note
            you must encode the + as %2B, and the direction filter is required.
        - in: query
          name: filters[direction]
          schema:
            type: string
          required: false
          description: Direction filter, in or out
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that sms was created.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[updated_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that sms was updated.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension id where SMS is stored
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: only=deleted SMS; ignore=existing SMS; with=both deleted and
            existing SMS
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
    post:
      summary: Create SMS
      description: >-
        Send a SMS to one or a group of recipients.


        This API endpoint is designated for Person to Person (P2P) communications. Improper use for marketing type purposes or Application to Person (A2P) will cause upstream cellular companies to block the “From” number for SMS use.  If you plan to use this endpoint for A2P or A2A applications that might also entail high volume, i.e., above the FREE limits set by the Phone.com plan, please contact our API support team at apisupport@phone.com to discuss other options.
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: >-
          Send a SMS to one or a group of recipients.


          This API endpoint is designated for Person to Person (P2P) communications. Improper use for marketing type purposes or Application to Person (A2P) will cause upstream cellular companies to block the “From” number for SMS use.  If you plan to use this endpoint for A2P or A2A applications that might also entail high volume, i.e., above the FREE limits set by the Phone.com plan, please contact our API support team at apisupport@phone.com to discuss other options.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SMS"
      security:
        - bearerAuth: []
      deprecated: true
    delete:
      summary: Delete List SMS
      description: Delete a list of SMS messages for an account
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[id]
          schema:
            type: string
          required: false
          description: ID filter
        - in: query
          name: filters[is_new]
          schema:
            type: string
          required: false
          description: 1 when SMS is new; 0 when SMS has been read.
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number to send the SMS FROM.
            Note: you must encode the + as %2B, and the direction filter is
            required."
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to send the SMS TO. Note
            you must encode the + as %2B, and the direction filter is required.
        - in: query
          name: filters[direction]
          schema:
            type: string
          required: false
          description: Direction filter, in or out
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that sms was created.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[updated_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that sms was updated.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension id where SMS is stored
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: only=deleted SMS; ignore=existing SMS; with=both deleted and
            existing SMS
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
  "/v4/accounts/{voip_id}/sms/{id}":
    get:
      summary: Get SMS
      description: This service shows the details of an individual SMS.
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
    patch:
      summary: Patch SMS Status
      description: Update the is_new parameter in a sms record.
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the is_new parameter in a sms record.
        required: true
        content:
          application/json:
            schema:
              title: SMS
              type: object
              properties:
                is_new:
                  nullable: true
                  type: boolean
                  description: Status of SMS
      security:
        - bearerAuth: []
      deprecated: true
    delete:
      summary: Delete SMS
      description: This service delete an individual SMS.
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
  "/v4/accounts/{voip_id}/extensions/{extension_id}/sms":
    get:
      summary: List SMS for extension
      description: Get a list of SMS messages for extension
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[id]
          schema:
            type: string
          required: false
          description: ID filter
        - in: query
          name: filters[is_new]
          schema:
            type: string
          required: false
          description: 1 when SMS is new; 0 when SMS has been read.
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number to send the SMS FROM.
            Note: you must encode the + as %2B, and the direction filter is
            required."
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to send the SMS TO. Note
            you must encode the + as %2B, and the direction filter is required.
        - in: query
          name: filters[direction]
          schema:
            type: string
          required: false
          description: Direction filter, in or out
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that sms was created.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[updated_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that sms was updated.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension id where SMS is stored
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: only=deleted SMS; ignore=existing SMS; with=both deleted and
            existing SMS
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
    post:
      summary: Create SMS for extension
      description: >-
        Send a SMS to one or a group of recipients for extension.


        This API endpoint is designated for Person to Person (P2P) communications. Improper use for marketing type purposes or Application to Person (A2P) will cause upstream cellular companies to block the “From” number for SMS use.  If you plan to use this endpoint for A2P or A2A applications that might also entail high volume, i.e., above the FREE limits set by the Phone.com plan, please contact our API support team at apisupport@phone.com to discuss other options.
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: >-
          Send a SMS to one or a group of recipients for extension.


          This API endpoint is designated for Person to Person (P2P) communications. Improper use for marketing type purposes or Application to Person (A2P) will cause upstream cellular companies to block the “From” number for SMS use.  If you plan to use this endpoint for A2P or A2A applications that might also entail high volume, i.e., above the FREE limits set by the Phone.com plan, please contact our API support team at apisupport@phone.com to discuss other options.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SMS"
      security:
        - bearerAuth: []
      deprecated: true
    delete:
      summary: Delete List SMS for extension
      description: Delete a list of SMS messages for extension
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[id]
          schema:
            type: string
          required: false
          description: ID filter
        - in: query
          name: filters[is_new]
          schema:
            type: string
          required: false
          description: 1 when SMS is new; 0 when SMS has been read.
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number to send the SMS FROM.
            Note: you must encode the + as %2B, and the direction filter is
            required."
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to send the SMS TO. Note
            you must encode the + as %2B, and the direction filter is required.
        - in: query
          name: filters[direction]
          schema:
            type: string
          required: false
          description: Direction filter, in or out
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that sms was created.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[updated_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that sms was updated.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension id where SMS is stored
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: only=deleted SMS; ignore=existing SMS; with=both deleted and
            existing SMS
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
  "/v4/accounts/{voip_id}/extensions/{extension_id}/sms/{id}":
    get:
      summary: Get SMS for extension
      description: This service shows the details of an individual SMS for extension
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
    patch:
      summary: Patch SMS Status for extension
      description: Update the is_new parameter in a sms record for extension
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the is_new parameter in a sms record for extension
        required: true
        content:
          application/json:
            schema:
              title: SMS
              type: object
              properties:
                is_new:
                  nullable: true
                  type: boolean
                  description: Status of SMS
      security:
        - bearerAuth: []
      deprecated: true
    delete:
      summary: Delete SMS for extension
      description: This service delete an individual SMS for extension
      tags:
        - SMS
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
      deprecated: true
  "/v4/accounts/{voip_id}/scheduled-requests":
    post:
      summary: Create Scheduled Request
      description: Create scheduled request to API
      tags:
        - Scheduled Requests
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create scheduled request to API
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ScheduledRequest"
      security:
        - bearerAuth: []
    get:
      summary: List Scheduled Requests
      description: Returns list of scheduled requests for account
      tags:
        - Scheduled Requests
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[scheduled_at]
          schema:
            type: string
          required: false
          description: 'Scheduled time filter. Expected value is UNIX timestamp with
            operator like "gt" (greater than), "gte" (greater than or equals),
            "lt" (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[processed_at]
          schema:
            type: string
          required: false
          description: 'Processed time filter. Expected value is UNIX timestamp with
            operator like "gt" (greater than), "gte" (greater than or equals),
            "lt" (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[processed_status]
          schema:
            type: string
          required: false
          description: Execution status - "failed" or "success"
        - in: query
          name: filters[is_processed]
          schema:
            type: string
          required: false
          description: Processing status filter (1 for processed requests, 0 for scheduled)
        - in: query
          name: filters[tag]
          schema:
            type: string
          required: false
          description: Technical identifier
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/scheduled-requests/{id}":
    get:
      summary: Get Scheduled Request
      description: Returns specific scheduled request
      tags:
        - Scheduled Requests
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Scheduled Request
      description: Deletes scheduled request
      tags:
        - Scheduled Requests
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/scheduled-requests":
    post:
      summary: Create Scheduled Request for extension
      description: Create scheduled request to API for extension
      tags:
        - Scheduled Requests
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create scheduled request to API for extension
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ScheduledRequest"
      security:
        - bearerAuth: []
    get:
      summary: List Scheduled Requests for extension
      description: Returns list of scheduled requests for extension
      tags:
        - Scheduled Requests
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[scheduled_at]
          schema:
            type: string
          required: false
          description: 'Scheduled time filter. Expected value is UNIX timestamp with
            operator like "gt" (greater than), "gte" (greater than or equals),
            "lt" (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[processed_at]
          schema:
            type: string
          required: false
          description: 'Processed time filter. Expected value is UNIX timestamp with
            operator like "gt" (greater than), "gte" (greater than or equals),
            "lt" (lesser than), "lte" (lesser than or equals). Example:
            "gt:1597778180".'
        - in: query
          name: filters[processed_status]
          schema:
            type: string
          required: false
          description: Execution status - "failed" or "success"
        - in: query
          name: filters[is_processed]
          schema:
            type: string
          required: false
          description: Processing status filter (1 for processed requests, 0 for scheduled)
        - in: query
          name: filters[tag]
          schema:
            type: string
          required: false
          description: Technical identifier
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/scheduled-requests/{id}":
    get:
      summary: Get Scheduled Request for extension
      description: Returns specific scheduled request for extension
      tags:
        - Scheduled Requests
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Scheduled Request for extension
      description: Deletes scheduled request for extension
      tags:
        - Scheduled Requests
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/schedules":
    get:
      summary: List Schedules
      description: Get a list of schedules for an account
      tags:
        - Schedules
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Schedule
      description: Create a schedule for an account
      tags:
        - Schedules
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create a schedule for an account
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Schedule"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/schedules/{id}":
    get:
      summary: Get Schedule
      description: Show details of an individual schedule
      tags:
        - Schedules
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Schedule
      description: Replace a schedule
      tags:
        - Schedules
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace a schedule
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Schedule"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Schedule
      description: Replace parameters on an individual schedule, only provided
        parameters will be replaced.
      tags:
        - Schedules
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters on an individual schedule, only provided
          parameters will be replaced.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Schedule"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Schedule
      description: Delete a schedule
      tags:
        - Schedules
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: force
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
          required: false
          description: Allows to delete record without validating object's usage (force=1)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/snapshots":
    get:
      summary: List snapshots
      description: Returns list of accounts snapshots. Contact support to request one.
      tags:
        - Snapshots
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/snapshots/{id}":
    get:
      summary: Get snapshot
      description: Returns the snapshot. Add ?with_files=1 to receive URLs of the
        snapshot's files
      tags:
        - Snapshots
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/subaccounts":
    get:
      summary: List Subaccounts
      description: Get a list of subaccounts for the authenticated user or client
      tags:
        - Subaccounts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name (or company) of the account
        - in: query
          name: filters[username]
          schema:
            type: string
          required: false
          description: Username
        - in: query
          name: filters[email]
          schema:
            type: string
          required: false
          description: Email of the account
        - in: query
          name: filters[phone]
          schema:
            type: string
          required: false
          description: Phone number of the account
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Subaccount
      description: Add a subaccount for the authenticated user or client
      tags:
        - Subaccounts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Add a subaccount for the authenticated user or client
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Account"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/subaccounts/verification":
    post:
      summary: Request Verification Code
      description: Request verification code (confimation code will be sent to email,
        email should match username)
      tags:
        - Subaccounts
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Request verification code (confimation code will be sent to email,
          email should match username)
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VerificationObject"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/support-requests":
    post:
      summary: Submit Support Request
      description: Send support request to API team
      tags:
        - Support Requests
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Send support request to API team
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SupportRequest"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/support-requests":
    post:
      summary: Submit Support Request for extension
      description: Send support request to API team
      tags:
        - Support Requests
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Send support request to API team
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SupportRequest"
      security:
        - bearerAuth: []
  /v4/ping:
    get:
      summary: Ping functionality
      description: Returns information about the request. Supposed to be used for API
        health check.
      tags:
        - System endpoints
      parameters:
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
  "/v4/accounts/{voip_id}/invoices/{invoice_id}/transactions":
    get:
      summary: List Transactions
      description: Get a list of transactions from some billing statement
      tags:
        - Transactions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: invoice_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[ignore_zero]
          schema:
            type: string
          required: false
          description: Provide '1' to skip transaction with amount = $0.00; '0' is default
            value, in that case all transactions will be returned
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/invoices/{invoice_id}/transactions/{id}":
    get:
      summary: Get Transaction
      description: Show details of an individual transaction
      tags:
        - Transactions
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: invoice_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/trunks":
    post:
      summary: Create Trunk
      description: Add a trunk record with SIP information
      tags:
        - Trunks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Add a trunk record with SIP information
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Trunk"
      security:
        - bearerAuth: []
    get:
      summary: List Trunks
      description: Get a list of trunks for an account
      tags:
        - Trunks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: include_subaccounts
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: Send "1" if you want to add subaccounts data into output
        - in: query
          name: filters[name]
          schema:
            type: string
          required: false
          description: Name filter
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/trunks/{id}":
    get:
      summary: Get Trunk
      description: Show details of an individual trunk
      tags:
        - Trunks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Trunk
      description: Replace parameters in a trunk
      tags:
        - Trunks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters in a trunk
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Trunk"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Trunk
      description: Replace parameters on an individual trunk, only provided parameters
        will be replaced.
      tags:
        - Trunks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replace parameters on an individual trunk, only provided parameters
          will be replaced.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Trunk"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Trunk
      description: Delete a trunk from account
      tags:
        - Trunks
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: force
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
          required: false
          description: Allows to delete record without validating object's usage (force=1)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/users":
    get:
      summary: Get list of users
      description: Get list of users on account
      tags:
        - User
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create user
      description: Adds user for account
      tags:
        - User
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Adds user for account
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/User"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/users/{id}":
    get:
      summary: Get user
      description: Get specific user
      tags:
        - User
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete user
      description: Deletes user
      tags:
        - User
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Update user
      description: Updates user profile
      tags:
        - User
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Updates user profile
        required: true
        content:
          application/json:
            schema:
              title: User
              type: object
              properties:
                user_plan_id:
                  type: integer
                  minimum: 1
                  default: 1
                  description: User plan (1 - basic, 2 - plus, 3 - pro)
                first_name:
                  type: string
                  minLength: 1
                  description: First name
                last_name:
                  type: string
                  minLength: 1
                  description: Last name
                email:
                  type: string
                  minLength: 1
                  description: Email
                is_admin:
                  type: boolean
                  default: false
                  description: Defines if account is administrative
                personal_phone_number:
                  type: string
                  minLength: 0
                  description: Personal phone number
                voicemail_password:
                  type: string
                  minLength: 0
                  description: Voicemail PIN code
                timezone:
                  type: string
                  minLength: 0
                  description: Timezone
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/users-statistics":
    get:
      summary: Get user statistics
      description: Returns users statistics
      tags:
        - User
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/users/{id}/invitations":
    post:
      summary: Invite
      description: Sends invitation email
      tags:
        - User
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Sends invitation email
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UserInvitation"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/users/{id}/password-reset-requests":
    post:
      summary: Reset passwrod
      description: Resets user's password
      tags:
        - User
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Resets user's password
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UserPasswordResetRequest"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/users/{id}/avatar":
    post:
      summary: Set avatar
      description: Sets user's avatar
      tags:
        - User
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Sets user's avatar
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UserAvatar"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/video-conferences":
    get:
      summary: List Conferences
      description: Returns a list of all extension conferences with details (only
        conferences 18 months ahead are available).
      tags:
        - Video Conferences
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Schedule Conference
      description: Creates a new extension conference and sends email invitations to
        the conference participants.
      tags:
        - Video Conferences
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Creates a new extension conference and sends email invitations to
          the conference participants.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VideoConference"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/video-conferences/{id}":
    get:
      summary: Get Conference
      description: Returns conference data by id.
      tags:
        - Video Conferences
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    put:
      summary: Replace Conference
      description: Replaces an extension conference and sends email notifications to
        the conference participants.
      tags:
        - Video Conferences
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Replaces an extension conference and sends email notifications to
          the conference participants.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VideoConference"
      security:
        - bearerAuth: []
    delete:
      summary: Cancel Conference
      description: Deletes an extension conference by id and informs the conference
        participants via email.
      tags:
        - Video Conferences
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/video":
    get:
      summary: List Videos
      description: Get a list of videos
      tags:
        - Video Config
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create Video
      description: Create a video
      tags:
        - Video Config
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create a video
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VideoConfig"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Video Status
      description: Update a video
      tags:
        - Video Config
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update a video
        required: true
        content:
          application/json:
            schema:
              title: VideoConfig
              type: object
              properties:
                business_name:
                  type: string
                  minLength: 1
                  description: Update business name
                plan_code:
                  type: string
                  description: Update plan code
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/video/token":
    get:
      summary: Get Video Conference Token
      description: Returns token for video conference service integration
      tags:
        - Video Token
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/video/users":
    get:
      summary: List User Videos
      description: Get a list of user videos
      tags:
        - Video Users
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create User Video
      description: Create a user video
      tags:
        - Video Users
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create a user video
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VideoUser"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/video/users/{id}":
    get:
      summary: Get User Video
      description: Get a user video
      tags:
        - Video Users
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete User Video
      description: Delete a user video
      tags:
        - Video Users
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/video-user":
    get:
      summary: List User Videos for extension
      description: Get a list of user videos for extension
      tags:
        - Video Users
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    post:
      summary: Create User Video for extension
      description: Create a user video for extension. The user will receive an email
        with steps to connect to their video bridge and additional operational
        instructions.
      tags:
        - Video Users
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Create a user video for extension. The user will receive an email
          with steps to connect to their video bridge and additional operational
          instructions.
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VideoUser"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/voicemail":
    get:
      summary: List Voicemail
      description: Get a list of voicemail messages for an account
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[is_new]
          schema:
            type: string
          required: false
          description: True when Voicemail is new; False when Voicemail has been read
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number to send the Voicemail
            FROM. Note: you must encode the + as %2B"
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to send the Voicemail TO.
            Note you must encode the + as %2B
        - in: query
          name: filters[duration]
          schema:
            type: string
          required: false
          description: Voicemail duration
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that Voicemail was created.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[updated_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that Voicemail was updated.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension id where Voicemail is stored
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: only=deleted Voicemail; ignore=existing Voicemail; with=both
            deleted and existing Voicemail
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Voicemail (multiple)
      description: The endpoint .../voicemail (combined with the HTTP method DELETE)
        allows the user to delete one or more voicemail in one shot. Be careful
        when using this API and pass the correct Query Params as needed.
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[is_new]
          schema:
            type: string
          required: false
          description: True when Voicemail is new; False when Voicemail has been read
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number to send the Voicemail
            FROM. Note: you must encode the + as %2B"
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to send the Voicemail TO.
            Note you must encode the + as %2B
        - in: query
          name: filters[duration]
          schema:
            type: string
          required: false
          description: Voicemail duration
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that Voicemail was created.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[updated_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that Voicemail was updated.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension id where Voicemail is stored
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: only=deleted Voicemail; ignore=existing Voicemail; with=both
            deleted and existing Voicemail
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/voicemail/{id}":
    get:
      summary: Get Voicemail
      description: This service shows the details of an individual voicemail
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Voicemail Status
      description: Update the is_new parameter in a voicemail
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the is_new parameter in a voicemail
        required: true
        content:
          application/json:
            schema:
              title: Voicemail
              type: object
              properties:
                is_new:
                  type: boolean
                  description: Status of voicemail
      security:
        - bearerAuth: []
    delete:
      summary: Delete Voicemail
      description: Delete a voicemail
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/voicemail/{id}/download":
    get:
      summary: Download Voicemail
      description: Download a voicemail recording
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            image/png:
              schema:
                type: string
                format: binary
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/voicemail":
    get:
      summary: List Voicemail for extension
      description: Get a list of voicemail messages for the extension
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[is_new]
          schema:
            type: string
          required: false
          description: True when Voicemail is new; False when Voicemail has been read
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number to send the Voicemail
            FROM. Note: you must encode the + as %2B"
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to send the Voicemail TO.
            Note you must encode the + as %2B
        - in: query
          name: filters[duration]
          schema:
            type: string
          required: false
          description: Voicemail duration
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that Voicemail was created.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[updated_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that Voicemail was updated.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension id where Voicemail is stored
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: only=deleted Voicemail; ignore=existing Voicemail; with=both
            deleted and existing Voicemail
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    delete:
      summary: Delete Voicemail (multiple) for extension
      description: The endpoint .../voicemail (combined with the HTTP method DELETE)
        allows the user to delete one or more voicemail in one shot. Be careful
        when using this API and pass the correct Query Params as needed.
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
          required: false
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 25
          required: false
          description: The number of items to return
        - in: query
          name: sort[id]
          description: Sort response
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - in: query
          name: filters[is_new]
          schema:
            type: string
          required: false
          description: True when Voicemail is new; False when Voicemail has been read
        - in: query
          name: filters[from]
          schema:
            type: string
          required: false
          description: "Caller ID filter, the E.164 phone number to send the Voicemail
            FROM. Note: you must encode the + as %2B"
        - in: query
          name: filters[to]
          schema:
            type: string
          required: false
          description: Callee ID filter, the E.164 phone number to send the Voicemail TO.
            Note you must encode the + as %2B
        - in: query
          name: filters[duration]
          schema:
            type: string
          required: false
          description: Voicemail duration
        - in: query
          name: filters[created_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that Voicemail was created.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[updated_at]
          schema:
            type: string
          required: false
          description: 'Date string representing the UTC time that Voicemail was updated.
            Expected value is UNIX timestamp with operator like "gt" (greater
            than), "gte" (greater than or equals), "lt" (lesser than), "lte"
            (lesser than or equals). Example: "gt:1597778180".'
        - in: query
          name: filters[extension]
          schema:
            type: string
          required: false
          description: Extension id where Voicemail is stored
        - in: query
          name: filters[deleted]
          schema:
            type: string
          required: false
          description: only=deleted Voicemail; ignore=existing Voicemail; with=both
            deleted and existing Voicemail
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/List-Response"
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/voicemail/{id}":
    get:
      summary: Get Voicemail for extension
      description: This service shows the details of an individual voicemail for extension
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
    patch:
      summary: Patch Voicemail Status for extension
      description: Update the is_new parameter in a voicemail for extension
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      requestBody:
        description: Update the is_new parameter in a voicemail for extension
        required: true
        content:
          application/json:
            schema:
              title: Voicemail
              type: object
              properties:
                is_new:
                  type: boolean
                  description: Status of voicemail
      security:
        - bearerAuth: []
    delete:
      summary: Delete Voicemail for extension
      description: Delete a voicemail for extension
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties: {}
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  "/v4/accounts/{voip_id}/extensions/{extension_id}/voicemail/{id}/download":
    get:
      summary: Download Voicemail for extension
      description: Download a voicemail recording for extension
      tags:
        - Voicemail
      parameters:
        - name: voip_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: extension_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
        - name: id
          in: path
          required: true
          schema:
            type: string
        - in: query
          name: mode
          schema:
            type: string
            enum:
              - brief
              - full
            default: full
          required: false
          description: Defines mode of the data output (brief or full)
      responses:
        "200":
          description: OK
          content:
            image/png:
              schema:
                type: string
                format: binary
        "400":
          $ref: "#/components/responses/Bad-Request"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "402":
          $ref: "#/components/responses/Payment-Required"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/Not-Found"
        "409":
          $ref: "#/components/responses/Conflict"
        "422":
          $ref: "#/components/responses/Validation-Error"
        "429":
          $ref: "#/components/responses/Too-Many-Requests"
        "500":
          $ref: "#/components/responses/Internal-Server-Error"
      security:
        - bearerAuth: []
  /swagger.yaml:
    get:
      summary: Swagger file
      description: Returns swagger file in YAML format
      tags:
        - System endpoints
      parameters:
        - in: query
          name: prefix
          schema:
            type: string
            default: ""
          required: false
          description: ....
      responses:
        "200":
          description: OK
          content:
            application/yaml:
              schema: {}
        "401":
          description: Unauthorized
        "429":
          description: Too Many Requests
        "500":
          description: Internal Server Error
components:
  schemas:
    MessageTenDlcCampaign:
      title: MessageTenDlcCampaign
      type: object
      properties:
        campaign_usage:
          type: object
          properties:
            customerCare:
              nullable: true
              type: boolean
              description: Customer Care or Conversational
            accountNotification:
              nullable: true
              type: boolean
              description: Account Notification
            marketing:
              nullable: true
              type: boolean
              description: Marketing
            twoFactorAuth:
              nullable: true
              type: boolean
              description: 2FA (pin codes sent via SMS)
            deliveryNotification:
              nullable: true
              type: boolean
              description: Delivery Notification
            higherEducation:
              nullable: true
              type: boolean
              description: Higher Education
            campaignDescription:
              type: string
              minLength: 40
              description: Capmaign description
            campaignName:
              type: string
              minLength: 1
              description: Capmaign name
          required:
            - campaignDescription
            - campaignName
          description: Capmaign usage
        campaign_message:
          type: object
          properties:
            optInKeywords:
              type: string
              minLength: 1
              description: Opt-in keywords
            optInMessage:
              type: string
              minLength: 20
              maxLength: 320
              description: Opt-in message
            optOutKeywords:
              type: string
              minLength: 1
              description: Opt-out keywords
            optOutMessage:
              type: string
              minLength: 20
              maxLength: 320
              description: Opt-out message
            helpKeywords:
              type: string
              minLength: 1
              description: Help keywords
            helpMessage:
              type: string
              minLength: 20
              maxLength: 320
              description: Help message
          required:
            - optInKeywords
            - optInMessage
            - optOutKeywords
            - optOutMessage
            - helpKeywords
            - helpMessage
          description: Campaign messages
        campaign_sms_content:
          type: object
          properties:
            messageOne:
              type: string
              minLength: 20
              maxLength: 1024
              description: Sample message 1
            messageTwo:
              type: string
              minLength: 20
              maxLength: 1024
              description: Sample message 2
            messageThree:
              type: string
              minLength: 20
              maxLength: 1024
              description: Sample message 3
            messageFlow:
              type: string
              minLength: 40
              maxLength: 1024
              description: Message flow
          required:
            - messageOne
            - messageTwo
            - messageThree
            - messageFlow
          description: SMS Content
        campaign_contact:
          type: object
          properties:
            name:
              type: string
              minLength: 1
              description: Name
            email:
              type: string
              minLength: 1
              description: Email
          required:
            - name
            - email
          description: Company information
        brandId:
          type: integer
          description: ID of brand associated with the campaign
        extension_id:
          type: integer
          description: ID of extension associated with the campaign
      required:
        - campaign_usage
        - campaign_message
        - campaign_sms_content
        - campaign_contact
        - brandId
        - extension_id
    MessageTenDlcBrand:
      title: MessageTenDlcBrand
      type: object
      properties:
        business_info:
          type: object
          properties:
            legalBizName:
              type: string
              maxLength: 225
              description: Legal business name
            registrationCountry:
              type: string
              enum:
                - US
                - CA
              description: Country of registration
            federalBusinessID:
              type: string
              maxLength: 21
              description: "Federal business ID (EIN for US, Corporation # for CA)"
            selectedBizType:
              type: string
              enum:
                - PUBLIC_PROFIT
                - NON_PROFIT
                - PRIVATE_PROFIT
                - GOVERNMENT
              description: Business type
            selectedVerticle:
              type: string
              description: Vertical (business type)
            stockSymbol:
              nullable: true
              type: string
              maxLength: 10
              description: Stock symbol (for publicly traded company only)
            brandName:
              type: string
              maxLength: 225
              description: Brand name
          required:
            - legalBizName
            - registrationCountry
            - federalBusinessID
            - selectedBizType
            - selectedVerticle
            - brandName
          description: Business info
        business_address:
          type: object
          properties:
            officeNumber:
              type: string
              description: Street address
            state:
              type: string
              maxLength: 20
              description: State
            city:
              type: string
              maxLength: 100
              description: City
            postalCode:
              type: string
              maxLength: 10
              description: ZIP Code
            primaryBusinessPhone:
              type: string
              maxLength: 20
              description: Primary business phone
            supportPhone:
              type: string
              maxLength: 20
              description: Support phone number
            bizWebsite:
              type: string
              maxLength: 100
              description: Business website
            supportEmail:
              type: string
              maxLength: 100
              description: Support email
          required:
            - officeNumber
            - state
            - city
            - postalCode
            - primaryBusinessPhone
            - supportPhone
            - bizWebsite
            - supportEmail
          description: Business address
        extension_id:
          type: integer
          description: ID of extension associated with the brand
      required:
        - business_info
        - business_address
        - extension_id
    MessageTenDlcPhoneNumber:
      title: MessageTenDlcPhoneNumber
      type: object
      properties: {}
    ApiEndpointStatistics:
      title: ApiEndpointStatistics
      type: object
      properties: {}
    ApiError:
      title: ApiError
      type: object
      properties: {}
    Contact:
      title: Contact
      type: object
      properties:
        name:
          nullable: true
          type: string
          description: Name
        company:
          nullable: true
          type: string
          description: Name of the contact's company
        phone:
          nullable: true
          type: string
          description: Contact phone number
        fax:
          nullable: true
          type: string
          description: Contact fax number
        primary_email:
          nullable: true
          type: string
          description: Primary email
        alternate_email:
          nullable: true
          type: string
          description: Alternate email
        address:
          nullable: true
          type: object
          properties:
            line_1:
              nullable: true
              type: string
              description: Address line 1
            line_2:
              nullable: true
              type: string
              description: Address line 2
            city:
              nullable: true
              type: string
              description: City
            province:
              nullable: true
              type: string
              description: Contact province
            postal_code:
              nullable: true
              type: string
              description: Contact postal code
            country:
              nullable: true
              type: string
              description: Country name
          description: Contact Address
    Account:
      title: Account
      type: object
      properties:
        username:
          type: string
          description: Username
        password:
          type: string
          description: Password
        verification_email:
          nullable: true
          type: string
          description: Email verification code (if required)
        cc_token:
          nullable: true
          type: string
          minLength: 1
          maxLength: 32
          description: Credit card token from Credit Card endpoint
        billing_day:
          nullable: true
          type: integer
          minimum: 2
          maximum: 28
          description: Day of account's monthly billing cycle beginning (available for
            special integrations only)
        agent_id:
          nullable: true
          type: integer
          minimum: 1
          description: Agent ID (available for special integrations only)
        tos_accept_date:
          nullable: true
          type: integer
          minimum: 1788291953
          maximum: 1788381953
          description: Timestamp of acceptance of Terms of Service. It may not be more
            than 1 day in the past or 1 hour in the future.
        tracking_data:
          nullable: true
          type: string
          minLength: 1
          description: Tracking data (available for special integrations only)
        contact:
          nullable: true
          type: object
          properties:
            id:
              nullable: true
              type: integer
              description: Contact ID. Read-only
            name:
              type: string
              description: Name
            company:
              nullable: true
              type: string
              maxLength: 70
              description: Name of the contact's company
            address:
              properties:
                line_1:
                  type: string
                  maxLength: 55
                  description: Address line 1
                line_2:
                  nullable: true
                  type: string
                  maxLength: 55
                  description: Address line 2
                city:
                  type: string
                  maxLength: 40
                  description: City
                province:
                  nullable: true
                  type: string
                  maxLength: 40
                  description: Contact province
                postal_code:
                  nullable: true
                  type: string
                  maxLength: 40
                  description: Contact postal code
                country:
                  type: string
                  minLength: 2
                  maxLength: 2
                  description: Country name
              required:
                - line_1
                - city
                - country
              description: Contact Address
            phone:
              type: string
              pattern: ^\+?([0-9\-\(\)\s]*)$
              description: Contact phone number
            fax:
              nullable: true
              type: string
              maxLength: 25
              description: Contact fax number
            primary_email:
              type: string
              maxLength: 100
              description: Primary email
            alternate_email:
              nullable: true
              type: string
              maxLength: 100
              description: Alternate email
          required:
            - name
            - phone
            - primary_email
          description: Contact Objects
        billing_contact:
          nullable: true
          type: object
          properties:
            id:
              nullable: true
              type: integer
              description: Billing contact ID. Read-only
            name:
              type: string
              description: Billing contact name
            company:
              nullable: true
              type: string
              maxLength: 70
              description: Billing contact company
            address:
              properties:
                line_1:
                  type: string
                  maxLength: 55
                  description: Billing contact street address
                line_2:
                  nullable: true
                  type: string
                  maxLength: 55
                  description: Billing contact street address 2
                city:
                  type: string
                  maxLength: 40
                  description: Billing contact city
                province:
                  nullable: true
                  type: string
                  maxLength: 40
                  description: Billing contact province
                postal_code:
                  nullable: true
                  type: string
                  maxLength: 40
                  description: Billing contact postal code
                country:
                  type: string
                  minLength: 2
                  maxLength: 2
                  description: Billing contact country
              required:
                - line_1
                - city
                - country
              description: Billing contact address
            phone:
              type: string
              pattern: ^\+?([0-9\-\(\)\s]*)$
              description: Billing contact phone
            fax:
              nullable: true
              type: string
              maxLength: 25
              description: Billing contact fax
            primary_email:
              type: string
              maxLength: 100
              description: Billing contact email
            alternate_email:
              nullable: true
              type: string
              maxLength: 100
              description: Billing contact alternate email
          required:
            - name
            - phone
            - primary_email
          description: Billing Contact Objects
      required:
        - username
        - password
    AccountCancellation:
      title: AccountCancellation
      type: object
      properties:
        reasons:
          type: array
          items:
            type: string
          description: List of cancellation reasons
        feedback:
          type: string
          maxLength: 2000
          description: Additional feedback
      required:
        - reasons
    VoipBlacklist:
      title: VoipBlacklist
      type: object
      properties:
        start_date:
          type: integer
          minimum: 0
          description: Timestamp in UNIX format
        type:
          type: string
          enum:
            - incoming
            - outgoing
          description: Can be 'incoming', 'outgoing'
        pattern_type:
          type: string
          enum:
            - equals
            - starts_with
          description: Can be 'equals', 'starts_with'
        pattern:
          type: string
          minLength: 1
          maxLength: 14
          pattern: \+[0-9]+
          description: Pattern of phone number. Starts with '+', followed by digits up to
            14 characters
        notes:
          type: string
          minLength: 0
          maxLength: 80
          description: Notes of black list, up to 80 characters
      required:
        - pattern
    Call:
      title: Call
      type: object
      properties:
        caller_phone_number:
          nullable: true
          type: string
          pattern: ^\+?([0-9\-\(\)\s]*)$
          description: Caller phone number
        caller_extension:
          nullable: true
          type: integer
          description: Caller Extension ID (not the extension number)
        caller_caller_id:
          nullable: true
          type: string
          pattern: ^\+?([0-9\-\(\)\s]*)$
          description: Caller ID shown on caller's phone when a call comes
        caller_private:
          nullable: true
          type: boolean
          description: Flag to set caller ID to private
        callee_phone_number:
          nullable: true
          type: string
          pattern: ^\+?([0-9\-\(\)\s]*)$
          description: Callee phone number
        callee_extension:
          nullable: true
          type: integer
          description: Callee Extension ID (not the extension number)
        callee_caller_id:
          nullable: true
          type: string
          pattern: ^\+?([0-9\-\(\)\s]*)$
          description: Caller ID shown on callee's phone when a call comes
        callee_private:
          nullable: true
          type: boolean
          description: Flag to set callee ID to private
    Client:
      title: Client
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
          description: User name
        scopes:
          type: array
          items:
            type: string
            enum:
              - account-owner
              - account-basic
              - account-express
              - extension-user
              - call-logs
              - billing-api
              - oauth-management
              - openid
          description: Can be account-owner, extension-user and/or methods:ALL, separated
            by space
        grant_types:
          type: array
          items:
            type: string
            enum:
              - password
              - refresh_token
              - authorization_code
              - implicit
              - client_credentials
          description: Can be authorization_code, client_credentials, password or
            refresh_token
      required:
        - name
    Conversation:
      title: Conversation
      type: object
      properties: {}
    Device:
      title: Device
      type: object
      properties:
        name:
          nullable: true
          type: string
          description: Device Name
        lines:
          nullable: true
          type: array
          items:
            type: object
            properties:
              line:
                type: integer
                minimum: 1
                maximum: 8
                description: Line number
              extension:
                type: object
                properties:
                  id:
                    nullable: true
                    type: integer
                    minimum: 1
                    description: ID of the extension. This is the internal Phone.com ID, not the
                      extension number callers may dial.
                  extension:
                    nullable: true
                    type: integer
                    minimum: 1
                    description: Extension number that callers may dial. On POST, leaving this empty
                      will result in an auto-generated value. On PUT, this field
                      is required.
                  name:
                    nullable: true
                    type: string
                    description: User-supplied name for the extension. On POST, leaving this empty
                      will result in an auto-generated value. On PUT, this field
                      is required.
                description: Extensions object that this line number is mapped to
            required:
              - line
              - extension
          description: Array of Line Objects showing which extensions are attached to this
            device, and their assigned line numbers
        code:
          nullable: true
          type: integer
          description: Device Code (available for special integrations only)
        address:
          nullable: true
          type: object
          properties:
            line_1:
              type: string
              maxLength: 55
              description: Address line 1
            line_2:
              type: string
              maxLength: 55
              description: Address line 2
            city:
              type: string
              maxLength: 40
              description: City
            province:
              type: string
              maxLength: 40
              description: Contact province
            postal_code:
              type: string
              maxLength: 40
              description: Contact postal code
            country:
              type: string
              maxLength: 2
              description: Country name
          required:
            - line_1
            - line_2
            - city
            - province
            - postal_code
            - country
          description: Address associated with this device for 911 calls
    DeviceE911:
      title: DeviceE911
      type: object
      properties:
        contact_id:
          type: integer
          description: Contact ID
      required:
        - contact_id
    EventsCallback:
      title: EventsCallback
      type: object
      properties:
        name:
          nullable: true
          type: string
          minLength: 1
          maxLength: 128
          default: null
          description: Event name
        fallback_callback_id:
          nullable: true
          type: integer
          minimum: 0
          default: null
          description: Fallback callback ID
        profile_id:
          nullable: true
          type: integer
          minimum: 0
          default: null
          description: Profile ID
        enabled:
          type: boolean
          default: true
          description: Callback status
        mode:
          type: string
          default: HTTPS
          enum:
            - HTTPS
            - HTTP
            - APPLICATION
            - EMAIL
          description: Callback mode
        config:
          type: object
          properties:
            url:
              type: string
              description: URL of the callback
            method:
              type: string
              enum:
                - GET
                - POST
                - PUT
                - PATCH
                - DELETE
              description: Method of the callback  (default is POST)
            headers:
              nullable: true
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Header name
                  value:
                    type: string
                    description: Header value
                required:
                  - name
                  - value
              description: Headers , (default is null)
            timeout:
              nullable: true
              type: integer
              description: Callback timeout (default is null, system timeout will be used)
            email:
              type: string
              description: Email for events delivery
            mode:
              type: string
              enum:
                - json
                - text
              description: "email contents type: json or text (default is json)"
            rate_limit:
              nullable: true
              type: object
              properties:
                number:
                  type: integer
                  minimum: 1
                  maximum: 1000
                  description: Number of events allowed in the period
                period:
                  type: integer
                  minimum: 10
                  maximum: 3600
                  description: Period in seconds
              required:
                - number
                - period
              description: Rate limit (applicable for 'email' type of callback only)
            application:
              type: string
              enum:
                - sms-autoresponder
                - google-analytics
              description: Application name (applicable for 'application' type of callback
                only)
            parameters:
              type: object
              description: Application invocation parameters (applicable for 'application'
                type of callback only)
          description: Config object, configuration of the callback
      required:
        - config
    EventsOverview:
      title: EventsOverview
      type: object
      properties:
        version:
          type: string
          default: 2.0.0
          enum:
            - 1.0.0
            - 1.1.0
            - 2.0.0
          description: Listener version
        callback_id:
          type: integer
          minimum: 1
          description: Callback ID (profile can be also defined as :callback)
        expires_at:
          nullable: true
          type: integer
          minimum: 1
          default: null
          description: Define expiration time for listener
        :callback:
          type: object
          properties:
            name:
              nullable: true
              type: string
              minLength: 1
              maxLength: 128
              default: null
              description: Event name
            fallback_callback_id:
              nullable: true
              type: integer
              minimum: 0
              default: null
              description: Fallback callback ID
            profile_id:
              nullable: true
              type: integer
              minimum: 0
              default: null
              description: ID of the profile (profile can be also defined as :profile)
            enabled:
              type: boolean
              default: true
              description: Callback status
            mode:
              type: string
              default: HTTPS
              enum:
                - HTTPS
                - HTTP
                - APPLICATION
                - EMAIL
              description: Callback mode
            config:
              type: object
              properties:
                url:
                  type: string
                  description: URL of the callback
                method:
                  type: string
                  enum:
                    - GET
                    - POST
                    - PUT
                    - PATCH
                    - DELETE
                  description: Method of the callback  (default is POST)
                headers:
                  nullable: true
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                        description: Header name
                      value:
                        type: string
                        description: Header value
                    required:
                      - name
                      - value
                  description: Headers , (default is null)
                timeout:
                  nullable: true
                  type: integer
                  description: Callback timeout (default is null, system timeout will be used)
                email:
                  type: string
                  description: Email for events delivery
                mode:
                  type: string
                  enum:
                    - json
                    - text
                  description: "email contents type: json or text (default is json)"
                rate_limit:
                  nullable: true
                  type: object
                  properties:
                    number:
                      type: integer
                      minimum: 1
                      maximum: 1000
                      description: Number of events allowed in the period
                    period:
                      type: integer
                      minimum: 10
                      maximum: 3600
                      description: Period in seconds
                  required:
                    - number
                    - period
                  description: Rate limit (applicable for 'email' type of callback only)
                application:
                  type: string
                  enum:
                    - sms-autoresponder
                    - google-analytics
                  description: Application name (applicable for 'application' type of callback
                    only)
                parameters:
                  type: object
                  description: Application invocation parameters (applicable for 'application'
                    type of callback only)
              description: Config object, configuration of the callback
            :profile:
              type: object
              properties:
                name:
                  type: string
                  description: Profile name
                support_email:
                  type: string
                  description: Email for callback's support (will be used in case of problems with
                    callback)
              required:
                - name
                - support_email
              description: Profile object (profile can be also defined as profile_id)
          required:
            - config
          description: Callback object
        :subscriptions:
          type: array
          items:
            type: object
            properties:
              :tags:
                type: array
                items:
                  type: string
                  enum:
                    - inbound
                    - outbound
                    - call
                    - new-call
                    - connecting-call
                    - connected-call
                    - completed-call
                    - first-leg
                    - not-first-leg
                    - to-did
                    - from-did
                    - to-extension
                    - from-extension
                    - message
                    - sms-message
                    - mms-message
                    - "*ms-message"
                    - api-error
                    - api-error-trusted
                    - call-log
                    - recording
                    - call-recording
                    - message-status
                    - voicemail-recording
                description: Array of tags for the subscription (&& logic is being applied)
            required:
              - :tags
          description: List of subscriptions
        :filters:
          type: array
          default: []
          items:
            type: object
            properties:
              filter_type:
                type: string
                enum:
                  - number
                  - schedule
                description: Type of the filter. Available types are "number", "schedule".
              filter_value:
                type: object
                description: >-
                  Filter's configuration.

                  For "number" you can provide one of the properties: "eq" (exact number), "in" (array of allowed numbers), "match" (number with "%" for nothing or any available characters).

                  For "schedule" provide "id" with the ID of the schedule.
              not_logic:
                type: boolean
                description: Enable inverted logic (event should not match filter to be
                  included)
            required:
              - filter_type
              - filter_value
          description: Listener filters
      required:
        - :subscriptions
    EventsListener:
      title: EventsListener
      type: object
      properties:
        version:
          type: string
          default: 2.0.0
          enum:
            - 1.0.0
            - 1.1.0
            - 2.0.0
          description: Listener version
        callback_id:
          type: integer
          minimum: 1
          description: Callback ID
        expires_at:
          nullable: true
          type: integer
          minimum: 1
          default: null
          description: Define expiration time for listener
      required:
        - callback_id
    EventsListenerFilter:
      title: EventsListenerFilter
      type: object
      properties:
        filter_type:
          type: string
          enum:
            - number
            - schedule
          description: Type of the filter. Available types are "number", "schedule".
        filter_value:
          type: object
          description: >-
            Filter's configuration.

            For "number" you can provide one of the properties: "eq" (exact number), "in" (array of allowed numbers), "match" (number with "%" for nothing or any available characters).

            For "schedule" provide "id" with the ID of the schedule.
        not_logic:
          type: boolean
          description: Enable inverted logic (event should not match filter to be included)
      required:
        - filter_type
        - filter_value
    EventsListenerSubscription:
      title: EventsListenerSubscription
      type: object
      properties:
        :tags:
          type: array
          items:
            type: string
            enum:
              - inbound
              - outbound
              - call
              - new-call
              - connecting-call
              - connected-call
              - completed-call
              - first-leg
              - not-first-leg
              - to-did
              - from-did
              - to-extension
              - from-extension
              - message
              - sms-message
              - mms-message
              - "*ms-message"
              - api-error
              - api-error-trusted
              - call-log
              - recording
              - call-recording
              - message-status
              - voicemail-recording
          description: Array of tags for the subscription (&& logic is being applied)
      required:
        - :tags
    EventsProfile:
      title: EventsProfile
      type: object
      properties:
        name:
          type: string
          description: Profile name
        support_email:
          type: string
          description: Email for callback's support (will be used in case of problems with
            callback)
      required:
        - name
        - support_email
    ContactGroups:
      title: ContactGroups
      type: object
      properties:
        name:
          type: string
          description: Name
      required:
        - name
    ExtensionContact:
      title: ExtensionContact
      type: object
      properties:
        first_name:
          nullable: true
          type: string
          description: First name or given name
        middle_name:
          nullable: true
          type: string
          description: Middle or second name
        last_name:
          nullable: true
          type: string
          description: Last name or surname
        nickname:
          nullable: true
          type: string
          description: Nickname, or a shortened informal version of the contact's name
        organization:
          nullable: true
          type: string
          description: Contact organization
        title:
          nullable: true
          type: string
          description: Contact title
        emails:
          nullable: true
          type: array
          items:
            type: object
            properties:
              type:
                nullable: true
                type: string
                enum:
                  - primary
                  - alternate
                description: "Email type, one of: primary or alternate. Default is primary."
              email:
                type: string
                description: Email address
            required:
              - email
          description: Array of Contact Email Objects
        addresses:
          nullable: true
          type: array
          items:
            type: object
            properties:
              type:
                enum:
                  - home
                  - business
                description: "Address type, one of: home or business. Default is home."
              street:
                nullable: true
                type: string
                description: House number and street name, including apartment, suite, etc.
              city:
                nullable: true
                type: string
                description: City
              state:
                nullable: true
                type: string
                description: State or province
              zip:
                nullable: true
                type: string
                description: Zip code or postal code
              country:
                nullable: true
                type: string
                description: Country name
          description: Array of Contact Address Objects
        phone_numbers:
          nullable: true
          type: array
          items:
            type: object
            properties:
              type:
                nullable: true
                type: string
                description: "Type of phone number, must be one of: home, business, mobile, fax,
                  pager. Default is home."
              number:
                description: Phone number, as entered. Does not need to be formatted in any
                  particular way if it is a USA phone number. It also accepts
                  partial phone numbers like +1-212. This kind of contact can be
                  used for call routing as part of the call handling rules and
                  represents all the numbers (caller ID) starting with +1-212
                  (in this case all New York 212 area code numbers)
              favorite:
                nullable: true
                type: boolean
                description: Favorite phone number
            required:
              - number
          description: Array of Contact Phone Number Objects
        notes:
          nullable: true
          type: string
          maxLength: 1024
          description: Notes
        group:
          nullable: true
          type: object
          properties:
            name:
              nullable: true
              type: string
              description: Group name
            id:
              nullable: true
              type: integer
              minimum: 1
              description: Group ID
          description: Contact Group that this contact is filed under
    Extension:
      title: Extension
      type: object
      properties:
        usage_type:
          enum:
            - limited
            - unlimited
          description: Can be 'limited' or 'unlimited'. In most cases, changing this will
            affect your monthly bill.
        extension:
          nullable: true
          type: integer
          description: Extension number that callers may dial. On POST, leaving this empty
            will result in an auto-generated value. On PUT, this field is
            required.
        full_name:
          nullable: true
          type: string
          maxLength: 70
          description: Full name of the individual or department to which this extension
            is assigned
        name:
          nullable: true
          type: string
          maxLength: 30
          description: User-supplied name for the extension. On POST, leaving this empty
            will result in an auto-generated value. On PUT, this field is
            required
        timezone:
          nullable: true
          type: string
          description: Time zone in IANA time zone database format (like
            'America/Los_Angeles')
        name_greeting:
          nullable: true
          type: object
          properties:
            id:
              nullable: true
              type: integer
              description: Recording ID. Read-only
            name:
              nullable: true
              type: string
              description: Name of recording
          description: Greeting that communicates the extension's name
        include_in_directory:
          nullable: true
          type: boolean
          description: Whether this extension should be included in the dial-by-name
            directory for this account.
        caller_id:
          nullable: true
          type: string
          description: Phone number to use as Caller ID for outgoing calls. Must be a
            phone number belonging to this account, or one of any additional
            authorized phone number
        local_area_code:
          nullable: true
          type: integer
          description: For outbound calls, this is the North American area code that this
            extension is calling from
        enable_call_waiting:
          nullable: true
          type: boolean
          description: Whether Call Waiting is enabled. Default is TRUE
        enable_outbound_calls:
          nullable: true
          type: boolean
          description: Whether outgoing calls are enabled. Default is TRUE.
        bypass_hard_phone:
          nullable: true
          type: boolean
          description: Set 'true' if you want to use advanced call handling rules instead
            of device
        voicemail:
          properties:
            enabled:
              nullable: true
              type: boolean
              description: Whether voicemail is enabled
            password:
              nullable: true
              type: string
              pattern: ^[0-9]+$
              description: Password for accessing voicemail box. Must be digits only.
            greeting:
              properties:
                type:
                  enum:
                    - name
                    - standard
                    - alternate
                  description: The greeting to play. Can be 'name' for the name_greeting as
                    described above, 'standard' for the standard greeting, or
                    'alternate' for an alternate greeting.
                standard:
                  nullable: true
                  type: object
                  properties:
                    id:
                      nullable: true
                      type: integer
                      minimum: 1
                      description: Recording ID. Read-only.
                    name:
                      nullable: true
                      type: string
                      description: Name of recording
                  description: Greeting to be played when type='standard'
                alternate:
                  nullable: true
                  type: object
                  properties:
                    id:
                      nullable: true
                      type: integer
                      minimum: 1
                      description: Recording ID. Read-only.
                    name:
                      nullable: true
                      type: string
                      description: Name of recording
                  description: Greeting to be played when type='alternate'
                enable_leave_message_prompt:
                  nullable: true
                  type: boolean
                  description: "Whether to prompt the caller with the following words after the
                    voicemail greeting has been played: 'Please leave your
                    message after the tone. When finished, hang up or press the
                    pound key."
              description: Voicemail Greeting Object
            transcription:
              enum:
                - human
                - automated
              description: Type of voicemail transcription to use. Can be 'human' for
                high-quality manual transcriptions by human operators,
                'automated' for machine-generated transcriptions, or NULL to
                omit trancriptions
            attachments:
              enum:
                - wav
                - mp3
              description: If notification emails are being used, this defines the format of
                the audio attachments. Can be 'wav' for WAV format, 'mp3' for
                MP3 format, or NULL to disable attachments.
            notifications:
              properties:
                emails:
                  nullable: true
                  type: string
                  description: Array of email addresses
                sms:
                  nullable: true
                  type: string
                  pattern: ^\+?([0-9\-\(\)\s]*)$
                  description: Phone number capable of receiving SMS messages
              description: Voicemail Notifications Object. Can be set to NULL to disable
                notifications.
          description: Voicemail Object.
        call_notifications:
          nullable: true
          type: object
          properties:
            emails:
              nullable: true
              type: string
              description: Array of email addresses
            sms:
              nullable: true
              type: string
              pattern: ^\+?([0-9\-\(\)\s]*)$
              description: Phone number capable of receiving SMS messages
          description: Call Notifications Object
        presence_publish:
          nullable: true
          type: boolean
          description: ""
        presence_subscribe:
          nullable: true
          type: boolean
          description: ""
        route:
          description: Extension route
    Fax:
      title: Fax
      type: object
      properties:
        to:
          type: string
          pattern: ^\+?([0-9\-\(\)\s]*)$
          description: Phone number to where the Fax was sent
        cover_text:
          nullable: true
          type: string
          maxLength: 16384
          description: Fax cover text
        extension:
          type: integer
          minimum: 1
          description: ID of extension where the Fax is saved into.
        quality:
          enum:
            - low
            - medium
            - high
          description: "Fax quality must be one of: low, medium, high"
        from:
          nullable: true
          type: string
          pattern: ^\+?([0-9\-\(\)\s]*)$
          description: Phone number from where the Fax was sent
        from_name:
          nullable: true
          type: string
          maxLength: 70
          description: The name / caller ID of the person who sent the Fax
        media:
          type: array
          items:
            type: object
            properties:
              filename:
                nullable: true
                type: string
                maxLength: 48
                description: Name of file to be uploaded
              data:
                type: string
                description: BASE64 encoded PDF data
            required:
              - data
          description: "Required if cover_text is not provided. Media contains array of
            objects: BASE64 encoded PDF data and filename. PDF data is required
            while filename is optional"
      required:
        - to
        - extension
        - media
    HelpRequest:
      title: HelpRequest
      type: object
      properties:
        url:
          description: URL for the search
        urls:
          type: array
          description: If you want to search at more than one URL, use this parameter
        content:
          type: string
          minLength: 5
          maxLength: 256
          description: Question text
      required:
        - content
    Listener:
      title: Listener
      type: object
      properties:
        type:
          type: string
          enum:
            - callback
          description: "Type of listener: callback"
        extension:
          nullable: true
          type: integer
          minimum: 1
          description: Extension that this listener belongs to
        version:
          nullable: true
          type: string
          enum:
            - 1.0.0
            - 1.1.0
          description: Listener version
      required:
        - type
    LiveAnswer:
      title: LiveAnswer
      type: object
      properties:
        code:
          type: integer
          minimum: 1
          description: Live answer plan associated with the script
        name:
          type: string
          description: Name of live answer script
        business_name:
          nullable: true
          type: string
          maxLength: 255
          description: Business name
        business_description:
          nullable: true
          type: string
          description: Description of your business
        greeting:
          nullable: true
          type: string
          maxLength: 256
          description: Greeting of live answer, ex. 'Guten tag! You reached American
            office of Bratwurst GmBH'
        call_handling_notes:
          nullable: true
          type: string
          maxLength: 4096
          description: Call handling notes for the whole resource
        enabled:
          nullable: true
          type: boolean
          description: Status
        appointments_enabled:
          nullable: true
          type: boolean
          description: Wheather your business should accept appointments
        appointments_description:
          nullable: true
          type: string
          maxLength: 4096
          description: Description of appointments policy
        business_contact:
          type: object
          properties:
            name:
              nullable: true
              type: string
              maxLength: 70
              description: "Business contact: name"
            company:
              nullable: true
              type: string
              maxLength: 70
              description: "Business contact: company"
            fax:
              nullable: true
              type: string
              maxLength: 25
              description: "Business contact: fax number"
            address:
              properties:
                line_1:
                  nullable: true
                  type: string
                  maxLength: 55
                  description: "Business contact: address"
                line_2:
                  nullable: true
                  type: string
                  maxLength: 55
                  description: " Business contact: address line 2"
                city:
                  nullable: true
                  type: string
                  maxLength: 40
                  description: "Business contact: city"
                province:
                  nullable: true
                  type: string
                  maxLength: 40
                  description: "Business contact: state"
                postal_code:
                  nullable: true
                  type: string
                  maxLength: 40
                  description: "Business contact: zip"
                country:
                  nullable: true
                  type: string
                  minLength: 2
                  maxLength: 2
                  enum:
                    - AD
                    - AE
                    - AF
                    - AG
                    - AI
                    - AL
                    - AM
                    - AN
                    - AQ
                    - AR
                    - AS
                    - AT
                    - AU
                    - AW
                    - AZ
                    - BA
                    - BB
                    - BD
                    - BE
                    - BF
                    - BG
                    - BH
                    - BI
                    - BJ
                    - BM
                    - BN
                    - BO
                    - BR
                    - BS
                    - BT
                    - BV
                    - BW
                    - BY
                    - BZ
                    - CA
                    - CC
                    - CD
                    - CF
                    - CG
                    - CH
                    - CI
                    - CK
                    - CL
                    - CM
                    - CN
                    - CO
                    - CR
                    - CV
                    - CX
                    - CY
                    - CZ
                    - DE
                    - DJ
                    - DK
                    - DM
                    - DO
                    - DZ
                    - EC
                    - EE
                    - EG
                    - EH
                    - ER
                    - ES
                    - ET
                    - FI
                    - FJ
                    - FK
                    - FM
                    - FO
                    - FR
                    - GA
                    - GD
                    - GE
                    - GF
                    - GG
                    - GH
                    - GI
                    - GL
                    - GM
                    - GN
                    - GP
                    - GQ
                    - GR
                    - GS
                    - GT
                    - GU
                    - GW
                    - GY
                    - HK
                    - HM
                    - HN
                    - HR
                    - HT
                    - HU
                    - ID
                    - IE
                    - IL
                    - IM
                    - IN
                    - IO
                    - IQ
                    - IS
                    - IT
                    - JE
                    - JM
                    - JO
                    - JP
                    - KE
                    - KG
                    - KH
                    - KI
                    - KM
                    - KN
                    - KR
                    - KW
                    - KY
                    - KZ
                    - LA
                    - LB
                    - LC
                    - LI
                    - LK
                    - LR
                    - LS
                    - LT
                    - LU
                    - LV
                    - MA
                    - MC
                    - MD
                    - MG
                    - MH
                    - MK
                    - ML
                    - MM
                    - MN
                    - MO
                    - MP
                    - MQ
                    - MR
                    - MS
                    - MT
                    - MU
                    - MV
                    - MW
                    - MX
                    - MY
                    - MZ
                    - NA
                    - NC
                    - NE
                    - NF
                    - NG
                    - NI
                    - NL
                    - NO
                    - NP
                    - NR
                    - NU
                    - NZ
                    - OM
                    - PA
                    - PE
                    - PF
                    - PG
                    - PH
                    - PK
                    - PL
                    - PM
                    - PN
                    - PR
                    - PT
                    - PW
                    - PY
                    - QA
                    - RE
                    - RO
                    - RS
                    - RU
                    - RW
                    - SA
                    - SB
                    - SC
                    - SE
                    - SG
                    - SH
                    - SI
                    - SJ
                    - SK
                    - SM
                    - SN
                    - SO
                    - SR
                    - ST
                    - SV
                    - SZ
                    - TC
                    - TD
                    - TF
                    - TG
                    - TH
                    - TJ
                    - TK
                    - TM
                    - TN
                    - TO
                    - TR
                    - TT
                    - TV
                    - TW
                    - TZ
                    - UA
                    - UG
                    - UM
                    - US
                    - UY
                    - UZ
                    - VA
                    - VC
                    - VE
                    - VG
                    - VI
                    - VN
                    - VU
                    - WF
                    - WS
                    - YE
                    - YT
                    - ZA
                    - ZM
                    - ZW
                  description: "Business contact: country"
              description: Business contact address object
          description: Business contact object
        contacts:
          nullable: true
          type: array
          items:
            nullable: true
            type: object
            properties:
              id:
                nullable: true
                type: integer
                minimum: 1
                description: Contact ID
              first_name:
                nullable: true
                type: string
                maxLength: 128
                description: Contact first name
              last_name:
                nullable: true
                type: string
                maxLength: 128
                description: Contact last name
              title:
                nullable: true
                type: string
                maxLength: 64
                description: Contact title
              call_handling_notes:
                nullable: true
                type: string
                maxLength: 4096
                description: Call handling notes for the specific contact
              is_default:
                nullable: true
                type: boolean
                description: Defines if contact should be used as default (only 1 per script; it
                  has HIGHER priority than value in default_contact_id)
              destinations:
                type: array
                items:
                  nullable: true
                  type: object
                  properties:
                    id:
                      nullable: true
                      type: integer
                      minimum: 1
                      description: Destination ID
                    type:
                      nullable: true
                      type: string
                      enum:
                        - email
                        - extension
                        - phone_number
                        - voicemail
                      description: "Destination type (can be: email, extension, phone_number or
                        voicemail)"
                    destination:
                      nullable: true
                      type: string
                      maxLength: 256
                      description: Acctual value of destination. For extension/voicemail it should be
                        stringified version of extension's id or
                        "ext:EXT_NUMBER". For phone_number type provide phone
                        number.
                    is_warm_transfer:
                      nullable: true
                      type: boolean
                      description: Transfer type
                description: Array of of destination objects for the specific contact
            required:
              - destinations
          description: Array of contact objects associated with your live answer
        vendor:
          nullable: true
          type: object
          properties:
            id:
              nullable: true
              type: integer
              minimum: 1
              description: Vendor ID
            name:
              nullable: true
              type: string
              maxLength: 80
              description: Vendor name
          description: Live answer vendor object
        did:
          nullable: true
          type: object
          properties:
            id:
              nullable: true
              type: integer
              minimum: 1
              description: ID of the Phone number
            name:
              nullable: true
              type: string
              maxLength: 80
              description: Name of the Phone number
            did:
              nullable: true
              type: string
              maxLength: 16
              description: Number of the Phone number
          description: DID (Phone number)
        default_contact_id:
          nullable: true
          type: integer
          minimum: 0
          description: Default contact ID (it has LOWER priority than flag in
            contacts.*.is_default) - it can be used for update only
      required:
        - code
        - name
        - business_contact
    LiveAnswerVendor:
      title: LiveAnswerVendor
      type: object
      properties: {}
    LiveAnswerVendorToken:
      title: LiveAnswerVendorToken
      type: object
      properties: {}
    Recording:
      title: Recording
      type: object
      properties:
        name:
          type: string
          maxLength: 80
          description: Name of recording
        type:
          nullable: true
          type: string
          enum:
            - hold_music
            - greeting
          description: Can be hold_music or greeting. Indicates the purpose of this
            recording and where it can be used.
        origin:
          type: string
          enum:
            - file
            - tts
          description: Can be 'file' or 'tts'.
        duration:
          nullable: true
          type: integer
          minimum: 0
          description: Duration of greeting.
        notes:
          nullable: true
          type: string
          maxLength: 800
          description: Notes of greeting.
        randomized:
          nullable: true
          type: boolean
          enum:
            - true
            - false
            - Y
            - y
            - N
            - n
          description: Can be Y or N. Start the greeting from random location, instead of
            the beginning.
        extension:
          nullable: true
          type: integer
          minimum: 1
          description: Extension that this record belongs to.
        tts_text:
          nullable: true
          type: string
          maxLength: 800
          description: Text used for text-to-speech conversion, maximum 800 characters
        tts_voice:
          nullable: true
          type: string
          enum:
            - Mads / Danish
            - Naja / Danish
            - Lotte / Dutch
            - Ruben / Dutch
            - Nicole / English (Australia)
            - Russell / English (Australia)
            - Amy / English (Great Britain)
            - Brian / English (Great Britain)
            - Emma / English (Great Britain)
            - Raveena / English (India)
            - Ivy / English (US)
            - Joanna / English (US)
            - Joey / English (US)
            - Justin / English (US)
            - Kendra / English (US)
            - Kimberly / English (US)
            - Salli / English (US)
            - Geraint / English (Wales)
            - Celine / French
            - Mathieu / French
            - Chantal / French (Canada)
            - Hans / German
            - Marlene / German
            - Vicki / German
            - Dora / Icelandic
            - Karl / Icelandic
            - Carla / Italian
            - Giorgio / Italian
            - Mizuki / Japanese
            - Takumi / Japanese
            - Seoyeon / Korean
            - Liv / Norwegian
            - Jacek / Polish
            - Jan / Polish
            - Ewa / Polish
            - Maja / Polish
            - Ricardo / Portuguese
            - Vitoria / Portuguese
            - Cristiano / Portuguese (Brazil)
            - Ines / Portuguese (Brazil)
            - Carmen / Romanian
            - Maxim / Russian
            - Tatyana / Russian
            - Conchita / Spanish
            - Enrique / Spanish
            - Miguel / Spanish (Latin America)
            - Penelope / Spanish (Latin America)
            - Astrid / Swedish
            - Filiz / Turkish
            - Gwyneth / Welsh
          description: Allowed voices for tts
        file:
          nullable: true
          type: string
          description: Record file.
        filename:
          nullable: true
          type: string
          maxLength: 48
          description: Name of file to be uploaded, when 'origin' is set to 'file'.
      required:
        - name
        - origin
    Menu:
      title: Menu
      type: object
      properties:
        name:
          type: string
          maxLength: 30
          description: Menu Name
        allow_extension_dial:
          nullable: true
          type: boolean
          description: Determines whether a caller can enter an extension number to bypass
            the menu
        keypress_wait_time:
          nullable: true
          type: integer
          minimum: 1
          maximum: 5
          description: Number of seconds to wait for the caller to choose a menu option.
            Must be between 1 and 5 seconds.
        greeting:
          description: Greeting that is played when a caller enters a menu.
        keypress_error:
          description: Message that is played when the caller makes a keypress error.
        timeout_handler:
          description: Route that will be entered when the caller fails to choose a menu
            option within the allotted time.
        options:
          nullable: true
          type: array
          items:
            type: object
            properties:
              key:
                enum:
                  - "0"
                  - "1"
                  - "2"
                  - "3"
                  - "4"
                  - "5"
                  - "6"
                  - "7"
                  - "8"
                  - "9"
                  - "#"
                  - 0
                  - 1
                  - 2
                  - 3
                  - 4
                  - 5
                  - 6
                  - 7
                  - 8
                  - 9
                description: Keypad key. Must equal a single digit or the pound sign ('#').
              route:
                description: Route which will be entered when the user presses the designated
                  key
            required:
              - key
              - route
          description: Array of menu option objects.
      required:
        - name
    Message:
      title: Message
      type: object
      properties:
        from:
          type: string
          description: Sender’s phone number must be Phone.com’s
        to:
          type: array
          items:
            type: string
            minLength: 1
          description: List of phone numbers to send the message to
        text:
          type: string
          description: The message text
        media:
          type: array
          items:
            type: object
            properties:
              data:
                type: string
                description: Base64 encoded media file
              filename:
                type: string
                description: Name of the file
            required:
              - data
          description: Array of objects for mms items
        tag:
          type: string
          description: Client-side tracking identifier
      required:
        - from
        - to
    CreatedAccessToken:
      title: CreatedAccessToken
      type: object
      properties:
        grant_type:
          enum:
            - password
            - client_credentials
            - refresh_token
            - authorization_code
          description: authorization_code, client_credentials, password or refresh_token
        client_id:
          type: string
          description: Client ID
        client_secret:
          type: string
          description: Client Secret Key
        username:
          nullable: true
          type: string
          description: User name
        phonenumber:
          nullable: true
          type: string
          description: Phone number
        scope:
          nullable: true
          type: string
          description: account-owner, extension-user and/or methods:ALL, separated by space
        redirect_uri:
          nullable: true
          type: string
          description: The redirect URI where user enters authentication information
        code:
          nullable: true
          type: string
          description: Authorization Code created via the /oauth/authorization API
        refresh_token:
          nullable: true
          type: string
          description: Refresh token
      required:
        - grant_type
        - client_id
        - client_secret
    Order:
      title: Order
      type: object
      properties:
        contact_id:
          type: integer
          minimum: 1
          description: ID of the contact where devices should be delivered to
        payment_method_id:
          nullable: true
          type: integer
          minimum: 1
          description: Payment method ID
        shipping_method:
          nullable: true
          type: string
          enum:
            - FEDEXGROUND
            - 3DAY
            - 2DAY
            - STANDARDOVERNIGHT
            - PRIORITYOVERNIGHT
            - OVERNIGHTEARLYAM
          description: "Shipping method. One of: FEDEXGROUND, 3DAY, 2DAY,
            STANDARDOVERNIGHT, PRIORITYOVERNIGHT, OVERNIGHTEARLYAM. Use Shipping
            Methods API to get more data."
        devices:
          nullable: true
          type: array
          items:
            type: object
            properties:
              name:
                nullable: true
                type: string
                maxLength: 255
                description: Optional name of the devices (how it should appear on your account)
              code:
                type: integer
                minimum: 1
                description: Code of the device
            required:
              - code
          description: Device for purchasing
        accessories:
          nullable: true
          type: array
          items:
            type: object
            properties:
              code:
                type: integer
                minimum: 1
                description: Codes of accessories
            required:
              - code
          description: List of accessories to order
      required:
        - contact_id
    PaymentMethod:
      title: PaymentMethod
      type: object
      properties:
        account_id:
          nullable: true
          type: integer
          minimum: 1
          description: API Account ID
        status:
          nullable: true
          type: string
          enum:
            - onfile
            - primary
            - hidden
          description: Can be 'primary' = primary card used for billing, 'onfile' = card
            on file, 'hidden' = deleted card
        nickname:
          nullable: true
          type: string
          maxLength: 30
          description: Name of Card
        type:
          type: string
          enum:
            - cc
          description: "'cc' for credit card"
        cc_token:
          type: string
          maxLength: 32
          description: Token obtained via POST /v4/credit-cards/provider
      required:
        - type
        - cc_token
    Payment:
      title: Payment
      type: object
      properties:
        amount:
          type: integer
          minimum: 1
          description: Payment amount in cents
        payment_method_id:
          nullable: true
          type: integer
          minimum: 1
          description: Payment method ID (don't send to use default)
      required:
        - amount
    PhoneNumberReservation:
      title: PhoneNumberReservation
      type: object
      properties:
        time:
          nullable: true
          type: integer
          minimum: 1
          maximum: 168
          description: Time on reservation (default value is 1 hour; this parameter is
            being ignored by default, please, contact us if you need to use this
            parameter and reserve numbers for a longer period)
        phone_number:
          description: Reserved phone number
        search_id:
          description: Search ID
      required:
        - search_id
    PhoneNumber:
      title: PhoneNumber
      type: object
      properties:
        name:
          nullable: true
          type: string
          description: Name
        route:
          nullable: true
          type: object
          properties:
            id:
              nullable: true
              type: integer
              minimum: 1
              description: Route ID. Read-only.
            name:
              nullable: true
              type: string
              description: Route name
          description: The Route assigned to handle incoming calls for this number, if any.
        block_incoming:
          nullable: true
          type: boolean
          description: Whether to block incoming calls.
        block_anonymous:
          nullable: true
          type: boolean
          description: Whether to block anonymous calls.
        caller_id:
          properties:
            name:
              nullable: true
              type: string
              maxLength: 15
              pattern: ^[0-9a-zA-Z\s,]+$
              description: Name that this number will be associated with. Must be no longer
                than 15 characters, and can only contain English letters,
                numbers, spaces, and commas.
            type:
              nullable: true
              type: string
              enum:
                - business
                - personal
              description: Can be 'business' or 'personal'
          description: Caller ID Object
        sms_forwarding:
          properties:
            type:
              enum:
                - application
                - extension
              description: Can be 'extension' or 'application'
            application:
              description: Required if type = 'application'. Application that messages should
                be directed to
            extension:
              description: Required if type = 'extension'. Extension that messages should be
                directed to
          description: SMS Forwarding Object
        call_notifications:
          properties:
            emails:
              nullable: true
              type: array
              items:
                nullable: true
                type: string
              description: Array of email addresses
            sms:
              nullable: true
              type: string
              pattern: ^\+?([0-9\-\(\)\s]*)$
              description: A phone number capable of receiving SMS messages
          description: Call Notifications Object
        reservation_id:
          nullable: true
          type: string
          minLength: 1
          description: Reserve phone number ID
        phone_number:
          description: Phone number
        record_calls:
          nullable: true
          type: boolean
          description: Record calls (feature needs to be enabled on account level)
    TaxCalculation:
      title: TaxCalculation
      type: object
      properties:
        contact:
          type: object
          properties:
            city:
              type: string
              maxLength: 40
              description: City
            state:
              type: string
              minLength: 2
              maxLength: 2
              description: State
            zip:
              type: string
              maxLength: 40
              description: ZIP
            country:
              type: string
              maxLength: 2
              default: US
              enum:
                - CA
                - US
              description: Country
          required:
            - state
            - zip
          description: Address (required for public endpoint)
        items:
          type: array
          items:
            type: object
            properties:
              amount:
                type: integer
                description: Amount
              type:
                type: string
                enum:
                  - number
                  - automated-transcription
                  - premium-music
                  - call-recording
                  - extension
                  - tax
                  - voip
                  - live-receptionist
                  - live-receptionist-plus
                  - setup-fee
                  - 10-dlc
                  - device
                  - shipping
                  - interstate-toll
                  - intrastate-toll
                  - lines
                  - invoice
                  - forwarding-voip
                description: Service type
              code:
                type: integer
                description: Code
              with_recovery_fee:
                type: boolean
                description: Add recovery fee to taxes and fees
          description: List of items for taxation
      required:
        - items
    PasswordChangeObject:
      title: PasswordChangeObject
      type: object
      properties:
        password_old:
          type: string
          minLength: 1
          description: Old password
        password_new:
          type: string
          minLength: 8
          description: New password
      required:
        - password_old
        - password_new
    QueueMember:
      title: QueueMember
      type: object
      properties:
        priority:
          nullable: true
          type: integer
          description: Queue member's priority (next one will be used by default)
        phone_number:
          nullable: true
          type: string
          description: Phone number of the queue member (required if Extension is not
            provided)
        extension:
          nullable: true
          type: object
          properties:
            id:
              nullable: true
              type: integer
              minimum: 1
              description: Look for extension by ID
            name:
              nullable: true
              type: string
              description: Look for extension by name
            extension:
              nullable: true
              type: integer
              minimum: 1
              description: Look for extension by extension number
          description: Extension of the queue member (required if Phone number is not
            provided)
    Queue:
      title: Queue
      type: object
      properties:
        name:
          nullable: true
          type: string
          maxLength: 30
          description: Name of queue
        greeting:
          nullable: true
          type: object
          properties:
            id:
              nullable: true
              type: integer
              minimum: 1
              description: Recording ID. Read-only.
            name:
              nullable: true
              type: string
              description: Name of recording
          description: Greeting to be played when caller first connects
        hold_music:
          nullable: true
          type: object
          properties:
            id:
              nullable: true
              type: integer
              minimum: 1
              description: Recording ID. Read-only.
            name:
              nullable: true
              type: string
              description: Name of music file
          description: Hold Music to be played while callers are waiting
        max_hold_time:
          nullable: true
          type: integer
          minimum: 60
          maximum: 3600
          description: "Maximum hold time in seconds. If provided, must equal one of: 60,
            120, 180, 240, 300, 600, 900, 1200, 1800, 2700, 3600. Default is
            300"
        caller_id_type:
          enum:
            - called_number
            - calling_number
          description: "Caller id type to show members. If provided, must equal one of:
            'called_number', 'calling_number'. Default is 'calling_number'"
        ring_time:
          nullable: true
          type: integer
          minimum: 5
          maximum: 90
          description: "Number of seconds to ring a member before cycling to the next
            member. If provided, must equal one of: 5, 10, 15, 20, 25, 30.
            Default is 5"
        strategy:
          nullable: true
          type: string
          enum:
            - ringall
            - leastrecent
            - fewestcalls
            - random
            - rrmemory
          description: "Queue strategy. Allowed values: ringall (rings all members of the
            queue), leastrecent (assigns the call to the agent who has been idle
            the most), fewestcalls (assigns the call to the agent who has had
            the least amount of calls), random (assigns calls to each agent in a
            random order), rrmemory (distributes calls evenly across all members
            of the queue)"
        members:
          nullable: true
          type: array
          items:
            nullable: true
            type: object
            properties:
              phone_number:
                nullable: true
                type: string
                description: Phone number
              extension:
                nullable: true
                type: object
                properties:
                  id:
                    nullable: true
                    type: integer
                    minimum: 1
                    description: Extension ID
                  name:
                    nullable: true
                    type: string
                    description: Extension name
                  extension:
                    nullable: true
                    type: integer
                    minimum: 1
                    description: Extension number
                description: Extension that this member refers to
          description: Array of Member Objects
      required:
        - name
    RedirectUri:
      title: RedirectUri
      type: object
      properties:
        uri:
          type: string
          minLength: 1
          maxLength: 255
          pattern: (http|https)://.+
          description: The Uniform Resource IDentifier is a string used to identify the
            path to be redirected
      required:
        - uri
    Route:
      title: Route
      type: object
      properties:
        name:
          nullable: true
          type: string
          description: Route Name
        rules:
          type: array
          items:
            type: object
            properties:
              filter:
                nullable: true
                type: object
                properties:
                  type:
                    nullable: true
                    type: string
                    description: Filter type
                  schedule:
                    nullable: true
                    type: object
                    properties:
                      id:
                        nullable: true
                        type: integer
                        description: Schedule ID
                      name:
                        nullable: true
                        type: string
                        description: Schedule name
                    description: Schedule object for being used as a filter
                  group:
                    nullable: true
                    type: object
                    properties:
                      id:
                        nullable: true
                        type: integer
                        description: Contacts group ID
                      name:
                        nullable: true
                        type: string
                        description: Contacts group name
                    description: Contacts group object for being used as a filter
                  contact:
                    nullable: true
                    type: object
                    properties:
                      id:
                        nullable: true
                        type: integer
                        description: Contact ID
                      name:
                        nullable: true
                        type: string
                        description: Contact name
                    description: Contact object for being used as a filter
                description: Rule filter (apply rule only if it matches the filter)
              actions:
                type: array
                items:
                  type: object
                  properties:
                    action:
                      type: string
                      enum:
                        - abcn_queue
                        - directory
                        - disconnect
                        - fax
                        - forward
                        - greeting
                        - hold
                        - menu
                        - queue
                        - trunk
                        - voicemail
                        - live_answer
                      description: Routing action
                    timeout:
                      nullable: true
                      type: integer
                      minimum: 5
                      maximum: 90
                      description: Timeout for the action
                    items:
                      nullable: true
                      type: array
                      items:
                        nullable: true
                        type: object
                        properties:
                          type:
                            nullable: true
                            type: string
                            enum:
                              - phone_number
                              - extension
                            description: Must equal phone_number or extension
                          number:
                            nullable: true
                            type: string
                            description: Required if type = 'phone_number'. Phone number that callers should
                              be directed to
                          extension:
                            nullable: true
                            type: object
                            properties:
                              id:
                                nullable: true
                                type: integer
                                minimum: 1
                                description: ID of the extension
                              extension:
                                nullable: true
                                type: integer
                                minimum: 1
                                description: Extension number that callers may dial
                              name:
                                nullable: true
                                type: string
                                description: User-supplied name for the extension
                            description: Required if type = 'extension'. Extension that callers should be
                              directed to
                          caller_id:
                            nullable: true
                            type: string
                            description: Must equal calling_number or called_number. Defines which phone
                              number should be used for Caller ID
                          voice_tag:
                            nullable: true
                            type: string
                            description: Optional string. If screening = TRUE, this value will be passed
                              into our Text-To-Speech engine and used to inform
                              the caller of who they have reached
                          distinctive_ring:
                            nullable: true
                            type: string
                            description: "Must equal one of: DEFAULT, STYLE_2, STYLE_3, STYLE_4, STYLE_5,
                              STYLE_6, STYLE_7, STYLE_8, or STYLE_9. Identifies
                              the style of ring tone you will hear when an
                              incoming call is waiting"
                      description: Array of Forward Item Objects
                    queue:
                      nullable: true
                      type: object
                      properties:
                        id:
                          nullable: true
                          type: integer
                          minimum: 1
                          description: Queue ID
                      description: Queue that this action refers to. Input must be a Queue Lookup
                        Object.
                    menu:
                      nullable: true
                      type: object
                      properties:
                        id:
                          nullable: true
                          type: integer
                          minimum: 1
                          description: Menu ID
                      description: Menu that this action refers to. Input must be a Menu Lookup
                        Object.
                    greeting:
                      nullable: true
                      type: object
                      properties:
                        id:
                          nullable: true
                          type: integer
                          minimum: 1
                          description: Media ID
                      description: Greeting that this action refers to. Input must be a Media Lookup
                        Object. Must refer to a media recording that has
                        is_hold_music set to FALSE
                    hold_music:
                      nullable: true
                      type: object
                      properties:
                        id:
                          nullable: true
                          type: integer
                          minimum: 1
                          description: Media ID
                        duration:
                          nullable: true
                          type: integer
                          minimum: 0
                          description: Duration
                      description: Hold Music to be played while callers are waiting. Input must be a
                        Media Lookup Object. Must refer to a media recording
                        that has is_hold_music set to TRUE. Default is to play a
                        standard ring tone
                    trunk:
                      nullable: true
                      type: object
                      properties:
                        id:
                          nullable: true
                          type: integer
                          minimum: 1
                          description: Trunk ID
                      description: Trunk that this action refers to. Input must be a Trunk Lookup
                        Object.
                    extension:
                      nullable: true
                      type: object
                      properties:
                        id:
                          nullable: true
                          type: integer
                          minimum: 1
                          description: Extension ID
                      description: Extension that this action refers to. Input must be an Extension
                        Lookup Object
                    voice_tag:
                      nullable: true
                      type: string
                      description: Voice tag
                    script:
                      nullable: true
                      type: object
                      properties:
                        id:
                          nullable: true
                          type: integer
                          minimum: 1
                          description: ID of live receptionist script
                      description: Live receptionist script
                  required:
                    - action
                description: Array of Action Objects
            required:
              - actions
          description: Array of Rule Set Objects
        extension:
          nullable: true
          type: object
          properties:
            id:
              nullable: true
              type: integer
              minimum: 1
              description: Extension ID
            extension:
              nullable: true
              type: integer
              minimum: 1
              description: Extension number
            name:
              nullable: true
              type: string
              description: Extension name
          description: Extension to which this route belongs
      required:
        - rules
    SMS:
      title: SMS
      type: object
      properties:
        text:
          type: string
          maxLength: 3200
          description: Text body of the outgoing SMS message
        from:
          type: string
          pattern: ^\+?([0-9\-\(\)\s]*)$
          description: Phone number of sender
        extension_id:
          nullable: true
          type: integer
          minimum: 1
          description: ID of Extension where the sms is saved
        direction:
          enum:
            - out
          description: Type of SMS direction (in or out)
        to:
          type: string
          pattern: ^\+?([0-9\-\(\)\s]*)$
          description: Outgoing destination numbers
      required:
        - text
        - from
        - to
    ScheduledRequest:
      title: ScheduledRequest
      type: object
      properties:
        request_uri:
          type: string
          minLength: 0
          maxLength: 1024
          description: Request URI starting with "/v4". For example
            "/v4/accounts/12345/messages"
        request_method:
          type: string
          minLength: 0
          maxLength: 16
          enum:
            - GET
            - POST
            - PATCH
            - PUT
            - DELETE
          description: HTTP method of the request (GET, POST, etc.)
        request_body:
          nullable: true
          type: object
          default: null
          description: Request body
        notification_email:
          nullable: true
          type: string
          minLength: 0
          maxLength: 256
          default: null
          description: Notification email (if not provided default account's email will be
            used)
        notification_policy:
          type: integer
          minimum: 0
          maximum: 2
          default: 1
          description: "Notification policy: 0 - no notifications, 1 - only if request
            failed, 2 - always."
        scheduled_at:
          type: integer
          minimum: 0
          description: Request scheduled time (UNIX timestamp). Request will be performed
            in up to 2 minutes after that time. Up to 400 days from the API call
            moment.
        comment:
          type: string
          maxLength: 256
          default: ""
          description: Comment (description)
        tag:
          nullable: true
          type: string
          maxLength: 32
          default: null
          description: Technical identifier
      required:
        - request_uri
        - request_method
        - scheduled_at
    Schedule:
      title: Schedule
      type: object
      properties:
        voip_id:
          nullable: true
          type: integer
          minimum: 1
          description: Account ID
        name:
          type: string
          maxLength: 30
          description: Schedule Name
        timezone:
          description: Time zone in IANA time zone database format (like
            'America/Los_Angeles')
        items:
          type: array
          items:
            type: object
            properties:
              holiday_id:
                nullable: true
                type: integer
                minimum: 1
                description: Schedule holiday ID
              days_before:
                nullable: true
                type: integer
                minimum: 0
                maximum: 255
                description: Number of days before the holiday
              days_after:
                nullable: true
                type: integer
                minimum: 0
                maximum: 255
                description: Number of days after the holiday
              start_date:
                nullable: true
                type: integer
                minimum: 0
                description: The Scheduled Start Date
              end_date:
                nullable: true
                type: integer
                minimum: 0
                description: The Scheduled End Date
              start_hour:
                nullable: true
                type: integer
                minimum: 0
                maximum: 23
                description: Start hour of schedule
              start_minute:
                nullable: true
                type: integer
                minimum: 0
                maximum: 59
                description: Start minute of schedule
              end_hour:
                nullable: true
                type: integer
                minimum: 0
                maximum: 23
                description: End hour of schedule
              end_minute:
                nullable: true
                type: integer
                minimum: 0
                maximum: 59
                description: End minute of schedule
              day:
                nullable: true
                type: string
                enum:
                  - M
                  - T
                  - W
                  - Th
                  - F
                  - S
                  - Su
                description: Schedule day
              use_once:
                nullable: true
                type: boolean
                description: Check schedule if use once
              expiration_date:
                nullable: true
                type: integer
                minimum: 0
                description: Schedule expiration date
          description: Schedule Items
      required:
        - name
        - items
    VerificationObject:
      title: VerificationObject
      type: object
      properties:
        email:
          type: string
          minLength: 1
          description: Email for verification
      required:
        - email
    SupportRequest:
      title: SupportRequest
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 128
          description: Name
        email:
          nullable: true
          type: string
          minLength: 1
          maxLength: 256
          default: null
          description: Contact email
        phone_number:
          nullable: true
          type: string
          minLength: 1
          maxLength: 256
          default: null
          description: Contact phone number
        scenario:
          nullable: true
          type: string
          minLength: 1
          maxLength: 64
          default: null
          description: Scenario name
        request_text:
          type: string
          minLength: 1
          maxLength: 65536
          description: Request text
      required:
        - name
        - request_text
    Trunk:
      title: Trunk
      type: object
      properties:
        name:
          type: string
          description: Name of Trunk
        uri:
          pattern: ^SIP(.+)@(.+)$
          description: URI of Trunk (in the form of SIP/user@host.com:port)
        max_concurrent_calls:
          nullable: true
          type: integer
          minimum: 0
          description: Max concurrent calls. Default is 10
        max_minutes_per_month:
          nullable: true
          type: integer
          minimum: 0
          description: Max minutes per month. Default is 750.
        max_call_duration:
          nullable: true
          type: integer
          minimum: 10
          maximum: 131000
          description: Max call duration. Default is 10800
        codecs:
          nullable: true
          type: array
          items:
            enum:
              - g711u 64k
              - g711u 56k
              - g711a 64k
              - g711a 56k
              - g7231
              - g728
              - g729
              - g729A
              - g729B
              - g729AB
              - gms full
              - rfc2833
              - t38
              - ilbc
              - h263
              - g722
              - g722_1
              - g729D
              - g729E
              - amr
              - amr_wb
              - efr
              - evrc
              - h264
              - mpeg4
              - red
              - cng
              - SIP Info to 2833
          description: Custom audio codec configuration
      required:
        - name
        - uri
    User:
      title: User
      type: object
      properties:
        user_plan_id:
          type: integer
          minimum: 1
          default: 1
          description: User plan (1 - basic, 2 - plus, 3 - pro)
        first_name:
          type: string
          minLength: 1
          description: First name
        last_name:
          type: string
          minLength: 1
          description: Last name
        email:
          type: string
          minLength: 1
          description: Email
        is_admin:
          type: boolean
          default: false
          description: Defines if account is administrative
        status:
          type: string
          enum:
            - new
            - invite_pending
          description: User status (determines if invitation should be sent automatically)
      required:
        - first_name
        - last_name
        - email
    UserInvitation:
      title: UserInvitation
      type: object
      properties: {}
    UserPasswordResetRequest:
      title: UserPasswordResetRequest
      type: object
      properties: {}
    UserAvatar:
      title: UserAvatar
      type: object
      properties:
        image:
          type: string
          pattern: ^data:image\/([a-z]+);base64,(.+)$
          description: Image (encoded as base64)
      required:
        - image
    VideoConference:
      title: VideoConference
      type: object
      properties:
        subject:
          type: string
          minLength: 1
          description: Subject / title of the conference
        agenda:
          type: string
          default: ""
          description: Agenda / description of the conference
        start:
          type: string
          minLength: 1
          pattern: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}
          description: "Start date and time in ISO format: YYYY-MM-DDTHH:mm:ss"
        time_zone:
          type: string
          minLength: 1
          description: Start date time zone in IANA time zone database format (like
            'America/Los_Angeles')
        duration:
          type: integer
          minimum: 1
          maximum: 720
          default: 60
          description: Duration in minutes
        auto_record:
          type: string
          default: none
          enum:
            - none
            - audio
            - video
          description: "Recording mode: 'none', 'audio', or 'video'."
        one_time_access_code:
          type: boolean
          default: false
          description: When set to true, an access code will be returned in the response
        auto_transcribe:
          type: boolean
          default: false
          description: Whether the recording should automatically be transcribed
        mute_mode:
          type: string
          default: conversation
          enum:
            - conversation
            - q&a
            - presentation
          description: "Sets the initial participant mute settings: 'conversation': all
            muted, 'q&a': all muted, but can unmute, 'presentation': all muted
            and can't unmute."
        participants:
          type: array
          default: []
          items:
            type: object
            properties:
              email:
                type: string
                description: Email address
              name:
                type: string
                description: Contact name
              time_zone:
                type: string
                description: Person's local time zone in IANA time zone database format (like
                  'America/Los_Angeles')
            required:
              - email
          description: A list of contacts, which will be invited via email
      required:
        - subject
        - start
        - time_zone
    VideoConfig:
      title: VideoConfig
      type: object
      properties:
        domain:
          type: string
          minLength: 1
          description: Video config domain
        business_name:
          type: string
          minLength: 1
          description: Business name
        plan_code:
          type: string
          description: Video config plan code
      required:
        - domain
        - business_name
    VideoUser:
      title: VideoUser
      type: object
      properties:
        extension_id:
          type: integer
          minimum: 1
          description: Video user extension ID
        name:
          type: string
          minLength: 1
          description: User name
        email:
          type: string
          minLength: 1
          description: User email
        plan_code:
          type: string
          description: Video user plan code
        send_welcome_email:
          type: boolean
          default: true
          description: Send welcome email to user
      required:
        - extension_id
        - name
        - email
    Voicemail:
      title: Voicemail
      type: object
      properties:
        is_new:
          type: boolean
          description: Voicemail unread
      required:
        - is_new
    List-Response:
      type: object
      properties:
        filters:
          type: object
        sort:
          type: object
        total:
          type: integer
          default: 0
        limit:
          type: integer
          default: 25
        offset:
          type: integer
          default: 0
        items:
          type: array
          items:
            type: object
            properties: {}
  responses:
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            type: object
            properties:
              "@error":
                type: object
                properties:
                  "@message":
                    type: string
                  "@httpStatusCode":
                    type: integer
                  "@time":
                    type: string
                  "@code":
                    type: string
                  "@details":
                    type: string
              error:
                type: string
              error_description:
                type: string
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            &a6
            type: object
            properties:
              "@error":
                type: object
                properties:
                  "@message":
                    type: string
                  "@httpStatusCode":
                    type: integer
                  "@time":
                    type: string
    Bad-Request:
      description: Bad Request
      content:
        application/json:
          schema: *a6
    Payment-Required:
      description: Payment Required
      content:
        application/json:
          schema: *a6
    Not-Found:
      description: Not Found
      content:
        application/json:
          schema: *a6
    Conflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              "@error":
                type: object
                properties:
                  "@message":
                    type: string
                  "@httpStatusCode":
                    type: integer
                  "@time":
                    type: string
                  "@messages":
                    type: array
                    items:
                      type: object
                      properties: {}
    Validation-Error:
      description: Validation failed
      content:
        application/json:
          schema:
            type: object
            properties:
              "@error":
                type: object
                properties:
                  "@message":
                    type: string
                  "@httpStatusCode":
                    type: integer
                  "@time":
                    type: string
                  fields:
                    type: object
    Too-Many-Requests:
      description: Too Many Requests
      content:
        application/json:
          schema:
            type: object
            properties:
              "@error":
                type: object
                properties:
                  "@message":
                    type: string
                  "@httpStatusCode":
                    type: integer
                  "@time":
                    type: string
                  "@rateLimit":
                    type: object
                    properties:
                      RateLimit-Limit:
                        type: integer
                      RateLimit-Remaining:
                        type: integer
                      RateLimit-Reset:
                        type: integer
                      Retry-After:
                        type: integer
    Internal-Server-Error:
      description: Internal Server Error
      content:
        application/json:
          schema:
            type: object
            properties:
              "@error":
                type: object
                properties:
                  "@message":
                    type: string
                  "@httpStatusCode":
                    type: integer
                  "@time":
                    type: string
                  "@code":
                    type: string
                  "@details":
                    type: string
              error:
                type: string
              error_description:
                type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
tags:
  - name: 10 DLC
    description: 10 DLC registration is required for SMS messaging
  - name: API Endpoint Statistics
    description: Information about API usage statics.
  - name: API Errors
    description: We save API errors related to your account so you can analyze
      issues if for some reason you don't log error responses in your
      application
  - name: Access Tokens
    description: Allows you to manage access tokens issued for your account.
  - name: Account Contacts
    description: Contact which can be used for different needs, such as ordering devices
  - name: Accounts
    description: This page gives an overview of how to interact with your accounts.
  - name: Asynchronous Call Logs
    description: >-
      Phone.com created the async-call-logs API endpoint to allow customers to
      download large amounts of call logs without encountering the normal
      Phone.com API Rate Limits. 

      This service needs to be activated on a per-customer basis and collect the call log data in the requested customer's format. (please call our support to activate and better define the format if needed) 

      When the async-call-logs endpoint is invoked, the endpoint will return a list of 47 to 48 files, each representing the calls entered into the logs during a full hour of the last two days. The file names contain the time period of call logs each file encapsulates. 

      The Items returned are ordered by modification (i.e., creation) date; the most recent item is the first item. The files should be download using the provided URL(s) in the item JSON array returned by the endpoint. 

      Phone.com creates the files at the 15 minutes mark, every hour for the previous hour. Files lifespan is 2 days, which means that each file will disappear after 48 hours.
  - name: Available Phone Numbers
    description: This service lists phone numbers that are available for purchase
      through Phone.com.
  - name: Blocked Calls
    description: The Blocked Calls API allows users block incoming calls from
      specific phone numbers. If only a part of a telephone number is provided,
      calls with callers ID matching the pattern will be blocked. For example,
      pattern '+1212' will block all calls from NY 212 area code.
  - name: Call Logs
    description: The Call Logs API returns a list of call detail records for the
      account. The result includes the id, start time, creation time, caller ID,
      called number, direction of call, and duration in seconds. If applicable,
      the result may also include final action, final action duration, listen
      URL, and/or transcription. Since the call logs usually contains many
      calls, API users may use filters such as start_time, created_at and
      direction to limit the result set to calls interested. Users may also use
      the sorting parameters such as start_time and created_at to list result in
      ascending or descending order.
  - name: Call Reports
    description: Aggregated calls statistics
  - name: Caller IDs
    description: API users with Extension scope access token does not have access to
      the Phone Number API. This API helps user to retrieve available account
      phone numbers to be used as caller id via the /Calls API.
  - name: Calls
    description: This API places a call to the caller phone number (or caller
      extension ID). If that number (or extension) answers within the timeout
      period, then the callee DID (or extension) will be connected to the call.
  - name: Clients
    description: Phone.com API supports OAuth 2.0 Authorization Framework, which
      enables a third-party application (client) to obtain limited access to
      HTTP API requests. This page describes how to use the /oauth/clients API
      to list, get and delete client.
  - name: Conversations
    description: Represents overview of your messaging history in messenger-like format.
  - name: Devices
    description: >-
      Extension on your Phone.com account may have SIP devices associated with
      them. 


      The Device API provides information about those SIP devices, such as the SIP credentials required.
  - name: Events Callbacks
    description: "Callbacks represent URLs on your side which will be called by our
      system when event occurs. Read more:
      https://github.com/phonedotcom/events-integration-doc"
  - name: Events Callbacks Health Status
    description: Callback invocations statistics
  - name: Events Integrations Overview
    description: "Combined representation of listeners, callbacks, profiles and
      subscriptions. Read more:
      https://github.com/phonedotcom/events-integration-doc"
  - name: Events Listeners
    description: "Listener is an entity that associates subscriptions with
      callbacks. Read more:
      https://github.com/phonedotcom/events-integration-doc"
  - name: Events Listeners Filters
    description: Filters functionality. If no filters defined, than all events will
      be processed. If filters defined, events should match all of them.
  - name: Events Listeners Subscriptions
    description: "Defines what kind of events should generate a callback. Read more:
      https://github.com/phonedotcom/events-integration-doc"
  - name: Events Profiles
    description: "A Profile allows to specify a notifications email for a callback.
      Notifications are emitted when there is a need to notify the callback
      owner of some issues like timeouts, or de-registration of the callback.
      Read more: https://github.com/phonedotcom/events-integration-doc"
  - name: Express Service Codes
    description: An Express Service Code is required when a customer calls Phone.com
      for support. With the following services, customer may retrieve the
      Express Service Code associated with his/her account
  - name: Extension Contact Groups
    description: The entries in an extension's address book can be divided into any
      number of groups. This page gives an overview.
  - name: Extension Contacts
    description: Each extension at Phone.com can have an address book with any
      number of contacts.
  - name: Extensions
    description: Your Phone.com account will have one or more extensions.
  - name: Fax
    description: Phone.com customers can fax outbound documents via the Control
      Panel or API; They can also receive incoming fax into one of the Extension
      mailbox. The Fax API service allows users send a fax, list all fax in the
      account, change the 'new' status of a fax, download a fax and delete a
      fax.
  - name: Help Requests
    description: AI-based help system
  - name: Invoices
    description: Invoices also knows as billing statements. "billing-api" scope is
      required for the token
  - name: Listeners
    description: "[DEPRECATED; use Events Listeners] At the heart of every telephony
      system is the Events Engine. At Phone.com, our customers (and their call
      traffic) emit millions of events per day. These events play a key role in
      advanced integration opportunities such as CRM integration,
      security/auditing, and real-time contextual call control. The Events and
      Listeners API Services aim to simplify and standardize the method in which
      events are extracted from our systems and processed. These services
      provide consistent interfaces for internal systems to log events, manage
      subscriptions, and provide interfaces for external systems (e.g. customer
      applications or integrations such as Salesforce CRM) to subscribe to
      account-specific events and manage the subscriptions."
  - name: Live Answer
    description: With Live Receptionist and Phone.com, your business can now have
      its very own live answering service, adding versatility, flexibility, and
      availability to your company no matter the size.
  - name: Live Answer Usage
    description: Usage of live answer script by other Phone.com resources.
  - name: Live Answer Vendor
    description: Information about available Live Answer vendors
  - name: Live Answer Vendor Token
    description: Live Answer Vendor Tokens are required for some integrations
  - name: Media
    description: "Your Phone.com account has two kinds of media that can be used in
      various ways: Hold Music and Greetings. Hold Music can be used in routes,
      queues, and anywhere the caller might be placed on hold. Your account has
      access to a set of standard hold music options, and optionally another set
      of premium hold music options. You can also upload your own hold music,
      subject to copyright limitations. Greetings are verbal messages that can
      be played in various places to provide the caller with important
      information. For example, greetings are used when a caller first enters a
      menu or if they enter an invalid option. You also might use a greeting to
      alert the user to the fact that their call is being recorded."
  - name: Media Usage
    description: Usage of media file by other Phone.com resources.
  - name: Menus
    description: We've all been on the consuming side of a phone menu before. You
      call a company and hear, 'Press '1' for Sales. Press '2' for Support.
      Press '0' for the operator.' With Phone.com you can create your own menus!
  - name: Messages
    description: Phone.com’s standard phone service lets you send and receive
      SMS/MMS messages using your Phone.com numbers. The Phone.com API extends
      this functionality, letting you send SMS/MMS messages from your
      application (through your phone number and our API server) to your users.
      You can also use the API to retrieve the history of SMS/MMS sent from /
      delivered to your account.
  - name: OAuth
    description: The OAuth 2.0 Authorization Framework enables a third-party
      application to obtain limited access to HTTP API requests which require an
      access token. This page describes how to use the /oauth/authorization and
      /oauth/access-token API's to generate an access token.
  - name: Orders
    description: History of the orders of physical devices
  - name: Payment Methods
    description: Phone.com accepts credit card payment, and the Account Payment
      Methods API allows users to add, list, get, update and delete a credit
      card payment method. "billing-api" scope is required for the token.
  - name: Payments
    description: API for payments
  - name: Phone Number Reservation
    description: Allows to manage phone numbers reservations.
  - name: Phone Numbers
    description: Your Phone.com account has one or more phone numbers registered to it.
  - name: Phone Numbers Meta Information
    description: "[DEPRECATED] This interface allows you to try to obtain basic
      information about any phone number (CNAME, line type, etc)"
  - name: Price List
    description: Price List
  - name: Prices
    description: Prices and taxes
  - name: Profile
    description: Profile
  - name: Queue Members
    description: Queues are used when you want to direct calls to a pool of phone
      numbers and/or extensions. A common utilization of queues is for Customer
      Service call centers. When a queue is configured on your phone number,
      Phone.com will route incoming calls to members of the queue. If a queue
      member is already on another call, our service rings the next phone number
      or extension in the queue. With Queue Members endpoints you can manage
      queue members without updating the entire queue.
  - name: Queues
    description: Queues are used when you want to direct calls to a pool of phone
      numbers and/or extensions. A common utilization of queues is for Customer
      Service call centers. When a queue is configured on your phone number,
      Phone.com will route incoming calls to members of the queue. If a queue
      member is already on another call, our service rings the next phone number
      or extension in the queue. While your callers are waiting to be connected,
      you can choose to play Hold Music.
  - name: Redirect URIs
    description: The Account OAuth Clients API supports redirect-uri. Since an OAuth
      Client is created by a Phone.com admin who does not know what redirect
      uris should be assigned, API users may use the OAuth Client Redirect URIs
      API to create, list, get and delete redirect uris.
  - name: Routes
    description: Routes, a.k.a. 'Call Handling Rules' or 'Presets', are used to tell
      Phone.com how to handle incoming phone calls. They can be used to connect
      your Phone.com phone number to an extension, a menu, a calling queue, or
      many other things. The fundamental element of a route is an action. We
      support many different actions such as forward, menu, and voicemail. See
      below for the full details. In general, actions are processed one at a
      time in the order you specify, until the call is answered or disconnected.
      Answering or disconnecting stops any additional actions from being
      performed. Note that several actions such as  voicemail, menu, and fax
      completely take over processing the call and do not result in processing
      any subsequent actions. Actions are grouped into rule sets. Rule sets can
      be filtered based on the time of day or the caller's phone number. When
      processing an incoming call, Phone.com's routing engine will evaluate each
      rule set in the order that was specified when  the route was created or
      updated. The first matching rule set will be used, and all other rule sets
      will be ignored. Each route must have at least one unfiltered rule set.
      Note that if your route contains multiple unfiltered rule sets,  only the
      first one will be used.
  - name: SMS
    description: "[DEPRECATED; use Messages] Phone.com’s standard phone service lets
      you send and receive SMS messages using your Phone.com numbers. The
      Phone.com API extends this functionality, letting you send SMS messages
      from your application (through your phone number and our API server) to
      your users. You can also use the API to retrieve the history of sms sent
      from / delivered to your account."
  - name: Scheduled Requests
    description: API for managing postponed (scheduled) API requests.
      "scheduled-requests" scope is required for the token.
  - name: Schedules
    description: Schedules are used at various places in your Phone.com account. A
      schedule can specify a recurring weekly pattern such as 'Monday through
      Friday' or a single time period such as 'Thanksgiving Weekend 2015'.
  - name: Snapshots
    description: Account snapshots
  - name: Subaccounts
    description: This page gives an overview of how to interact with your
      subaccounts. Subaccounts are the same as master accounts in terms of the
      functionality Phone.com supports. The main difference is that subaccounts
      are grouped with their master account for invoicing purposes.
  - name: Support Requests
    description: You can submit support request via API, it will be delivered to our
      API team
  - name: System endpoints
    description: ""
  - name: Transactions
    description: Transactions (charges, taxes, payments, etc.). "billing-api" scope
      is required for the token.
  - name: Trunks
    description: "SIP Trunks are used to connect your Phone.com account to your PBX.
      NOTE: SIP Trunking Customers Only --  Your Phone.com account must have SIP
      Trunking enabled in order to use any of our trunking features. Please
      contact Support if you need this. Otherwise, all requests to these
      services will result in a 403 Forbidden error."
  - name: User
    description: Users functionality
  - name: Video Conferences
    description: Endpoints for managing scheduled video conferences
  - name: Video Config
    description: The Phone.com Video API allows an integrator to automate
      provisioning a complete cloud-based video conferencing system for a
      Phone.com account.
  - name: Video Token
    description: Token for integration with Video Conference service
  - name: Video Users
    description: Video-users are associated with Phone.com extensions. A video user
      is a collection of a domain name for the bridge id, a business name, and a
      plan which affects the bridge capabilities in terms of maximum
      participants. Normally each video-user is billed to the account and the
      pay is based on the plan selected.
  - name: Voicemail
    description: Phone.com’s standard phone service allows callers to leave a
      voicemail if the incoming call was not answered. The /voicemail services
      show a history of voicemail and allow users to download voicemail for
      offline playback.
