openapi: 3.0.0
info:
  title: LRN Routing Service
  contact:
    name: Bandwidth Support
    url: https://support.bandwidth.com
    email: support@bandwidth.com
  termsOfService: https://www.bandwidth.com/legal/terms-of-use-bandwidthcom-web-sites/
  version: 1.0.0
  description: >-
    Operations for managing LRN Routing, including hosted voice and access
    homing tandem.


    There are three categories of LRN Routing APIs:

    1. LRN APIs to manage which LRNs are on the account

    and which products (hosted voice, access homing tandem) they have enabled.

    2. LRN Configuration APIs to group the LRNs and assign routing behavior with

    Advanced Call Routing (ACR, also known as Origination Route Plan or ORP).

    3. An API to view which LATAs have been enabled for hosted voice and access
    homing tandem.
tags:
  - name: LRNs
    description: View and manage location routing numbers (LRNs) for an account.
  - name: LRN Configurations
    description: Create, read, update, and delete location routing number configurations.
  - name: LATAs
    description: Get information for LATAs (Local Access and Transport Areas).
paths:
  /accounts/{accountId}/latas:
    get:
      operationId: listLatas
      summary: >-
        List all LATAs on the account, and which products are enabled on each
        LATA.
      description: >-
        This endpoint will return a list of all LATAs, including ones that are
        not used on this account.
      parameters:
        - $ref: '#/components/parameters/accountParams'
        - $ref: '#/components/parameters/name'
        - $ref: '#/components/parameters/region'
        - $ref: '#/components/parameters/count'
        - $ref: '#/components/parameters/hostedVoice'
        - $ref: '#/components/parameters/accessHomingTandem'
      responses:
        '200':
          $ref: '#/components/responses/listLataOk'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '405':
          $ref: '#/components/responses/methodNotAllowed'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        5XX:
          $ref: '#/components/responses/internalServerError'
      tags:
        - LATAs
  /accounts/{accountId}/lrnConfigurations:
    get:
      operationId: listLrnConfigs
      summary: List all LRN Configurations on the account.
      description: List all LRN Configurations on the account.
      parameters:
        - $ref: '#/components/parameters/accountParams'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/name'
      responses:
        '200':
          $ref: '#/components/responses/listLrnConfigs'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '405':
          $ref: '#/components/responses/methodNotAllowed'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        5XX:
          $ref: '#/components/responses/internalServerError'
      tags:
        - LRN Configurations
    post:
      operationId: createLrnConfig
      summary: Create a new LRN Configuration.
      description: Create a new LRN Configuration.
      parameters:
        - $ref: '#/components/parameters/accountParams'
      responses:
        '201':
          $ref: '#/components/responses/lrnConfigCreated'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '405':
          $ref: '#/components/responses/methodNotAllowed'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        5XX:
          $ref: '#/components/responses/internalServerError'
      tags:
        - LRN Configurations
      requestBody:
        $ref: '#/components/requestBodies/lrnConfigPost'
  /accounts/{accountId}/lrnConfigurations/{lrnConfiguration}:
    get:
      operationId: getLrnConfig
      summary: Read one LRN Configuration.
      description: Read one LRN Configuration.
      parameters:
        - $ref: '#/components/parameters/accountParams'
        - $ref: '#/components/parameters/lrnConfigurations'
      responses:
        '200':
          $ref: '#/components/responses/lrnConfigOk'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '405':
          $ref: '#/components/responses/methodNotAllowed'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        5XX:
          $ref: '#/components/responses/internalServerError'
      tags:
        - LRN Configurations
    delete:
      operationId: deleteLrnConfig
      summary: Delete an LRN Configuration.
      description: >-
        All LRNs must be unassigned from the LRN Configuration before it may be
        deleted.
      parameters:
        - $ref: '#/components/parameters/accountParams'
        - $ref: '#/components/parameters/lrnConfigurations'
      responses:
        '204':
          $ref: '#/components/responses/lrnConfigDeleted'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '405':
          $ref: '#/components/responses/methodNotAllowed'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        5XX:
          $ref: '#/components/responses/internalServerError'
      tags:
        - LRN Configurations
    put:
      operationId: replaceLrnConfig
      summary: Update or create an LRN Configuration.
      description: >-
        If the specified LRN Configuration exists, replace it with the one
        provided in the request body. If not, create it. LRNs are assigned and
        unassigned from LRN Configurations by updating the "lrn" array.
      parameters:
        - $ref: '#/components/parameters/accountParams'
        - $ref: '#/components/parameters/lrnConfigurations'
      responses:
        '200':
          $ref: '#/components/responses/lrnConfigUpsert'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '405':
          $ref: '#/components/responses/methodNotAllowed'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        5XX:
          $ref: '#/components/responses/internalServerError'
      tags:
        - LRN Configurations
      requestBody:
        $ref: '#/components/requestBodies/lrnConfigPut'
    patch:
      operationId: updateLrnConfig
      summary: Update an LRN Configuration.
      description: >-
        Replace the properties of the LRN Configuration with the values provided
        in the request body. If a property is omitted, leave it unchanged. LRNs
        are assigned and unassigned from LRN Configurations by updating the
        "lrn" array.
      parameters:
        - $ref: '#/components/parameters/accountParams'
        - $ref: '#/components/parameters/lrnConfigurations'
      responses:
        '200':
          $ref: '#/components/responses/lrnConfigUpdate'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '405':
          $ref: '#/components/responses/methodNotAllowed'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        5XX:
          $ref: '#/components/responses/internalServerError'
      tags:
        - LRN Configurations
      requestBody:
        $ref: '#/components/requestBodies/lrnConfigPatch'
  /accounts/{accountId}/lrns:
    get:
      operationId: listLrns
      summary: List and search LRNs on the account.
      description: >-
        List the LRNs on the account. This endpoint also supports search/filter

        behaviour — any combination of the optional filter parameters below may
        be

        provided to narrow the result set.


        **Filter parameters** — pass using bracket notation, e.g.
        `lrn[eq]=+12345`:

        | Query parameter | Operator | Type | Description |

        |---|---|---|---|

        | `lrn[eq]` | EQ | string | Exact match on the LRN value. Also supports
        `lrn[contains]` and `lrn[sort]`. |

        | `lrn[contains]` | CONTAINS | string | Case-insensitive substring match
        on the LRN value. Also supports `lrn[eq]` and `lrn[sort]`. |

        | `operatingCompanyName[eq]` | EQ | string | Exact match on the
        Operating Company Name (OCN). Also supports
        `operatingCompanyName[contains]` and `operatingCompanyName[sort]`. |

        | `operatingCompanyName[contains]` | CONTAINS | string |
        Case-insensitive substring match on the OCN. Also supports
        `operatingCompanyName[eq]` and `operatingCompanyName[sort]`. |

        | `lataId[eq]` | EQ | integer | Exact match on the LATA ID. Also
        supports `lataId[contains]`. |

        | `lataId[contains]` | CONTAINS | string | Substring match on the LATA
        ID. Also supports `lataId[eq]`. |

        | `lataName[eq]` | EQ | string | Exact match on the LATA name. Also
        supports `lataName[contains]`. |

        | `lataName[contains]` | CONTAINS | string | Case-insensitive substring
        match on the LATA name. Also supports `lataName[eq]`. |

        | `lataRegion[eq]` | EQ | string | Exact match on the LATA region. Also
        supports `lataRegion[contains]`. |

        | `lataRegion[contains]` | CONTAINS | string | Case-insensitive
        substring match on the LATA region. Also supports `lataRegion[eq]`. |

        | `hostedVoice[eq]` | EQ | boolean | Exact match — `true` or `false`. |

        | `tandem[eq]` | EQ | boolean | Exact match on access homing tandem —
        `true` or `false`. |

        | `routingConfigurationName[eq]` | EQ | string | Exact match on the
        assigned LRN Configuration name. Also supports
        `routingConfigurationName[contains]`. |

        | `routingConfigurationName[contains]` | CONTAINS | string |
        Case-insensitive substring match on the LRN Configuration name. Also
        supports `routingConfigurationName[eq]`. |

        | `added[gte]` | GTE | ISO 8601 date-time | Lower bound (inclusive) on
        the date the LRN was added. |

        | `added[lte]` | LTE | ISO 8601 date-time | Upper bound (inclusive) on
        the date the LRN was added. |


        All filter parameters are optional and may be combined freely.

        `added[gte]` and `added[lte]` may be used independently or together as a
        range.


        **Sort parameters** — pass using bracket notation, e.g. `lrn[sort]=ASC`:

        | Query parameter | Sorts by |

        |---|---|

        | `lrn[sort]` | LRN value. Also supports `lrn[eq]` and `lrn[contains]`
        filters — all may be combined in one parameter. |

        | `added[sort]` | Date and time the LRN was added. Also supports
        `added[gte]` and `added[lte]` — all may be combined in one parameter. |

        | `operatingCompanyName[sort]` | Operating Company Name (OCN). Also
        supports `operatingCompanyName[eq]` and `operatingCompanyName[contains]`
        filters — all may be combined in one parameter. |

        | `lata[sort]` | LATA ID. Sort-only parameter — no filter sub-property
        is supported. Example: `lata[sort]=ASC`. |


        All sort parameters are optional. When multiple sort parameters are
        provided,

        results are ordered by each in the sequence they appear in the request.

        Accepted values: `ASC` (ascending, default) or `DESC` (descending).


        Pagination is controlled with `offset` and `limit`.
      parameters:
        - $ref: '#/components/parameters/accountParams'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/addedParam'
        - $ref: '#/components/parameters/lata'
        - $ref: '#/components/parameters/lrnParam'
        - $ref: '#/components/parameters/operatingCompanyNameParam'
        - $ref: '#/components/parameters/filterLataId'
        - $ref: '#/components/parameters/filterLataName'
        - $ref: '#/components/parameters/filterLataRegion'
        - $ref: '#/components/parameters/filterHostedVoice'
        - $ref: '#/components/parameters/filterTandem'
        - $ref: '#/components/parameters/filterRoutingConfigurationName'
      responses:
        '200':
          $ref: '#/components/responses/lrnOk'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '405':
          $ref: '#/components/responses/methodNotAllowed'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        5XX:
          $ref: '#/components/responses/internalServerError'
      tags:
        - LRNs
  /accounts/{accountId}/lrns/{lrn}:
    post:
      operationId: createLrn
      summary: Add the LRN to the account.
      description: Add the LRN to the account.
      parameters:
        - $ref: '#/components/parameters/accountParams'
        - $ref: '#/components/parameters/lrn'
      responses:
        '201':
          $ref: '#/components/responses/lrnCreated'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '405':
          $ref: '#/components/responses/methodNotAllowed'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        5XX:
          $ref: '#/components/responses/internalServerError'
      tags:
        - LRNs
      requestBody:
        $ref: '#/components/requestBodies/lrnPost'
    delete:
      operationId: deleteLrn
      summary: Remove the LRN from the account.
      description: Remove the LRN from the account.
      parameters:
        - $ref: '#/components/parameters/accountParams'
        - $ref: '#/components/parameters/lrn'
      responses:
        '204':
          $ref: '#/components/responses/lrnDeleted'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '405':
          $ref: '#/components/responses/methodNotAllowed'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        5XX:
          $ref: '#/components/responses/internalServerError'
      tags:
        - LRNs
    patch:
      operationId: updateLrn
      summary: Update the features enabled on the LRN.
      description: Update the features enabled on the LRN.
      parameters:
        - $ref: '#/components/parameters/accountParams'
        - $ref: '#/components/parameters/lrn'
      responses:
        '200':
          $ref: '#/components/responses/lrnUpdate'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '405':
          $ref: '#/components/responses/methodNotAllowed'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        5XX:
          $ref: '#/components/responses/internalServerError'
      tags:
        - LRNs
      requestBody:
        $ref: '#/components/requestBodies/lrnPatch'
components:
  parameters:
    name:
      name: name
      in: query
      required: false
      description: A query param for sorting by name.
      schema:
        $ref: '#/components/schemas/sortable'
    region:
      name: region
      in: query
      required: false
      description: Query param for sorting by LATA region.
      schema:
        $ref: '#/components/schemas/sortable'
    count:
      name: lrnCount
      in: query
      description: Query param for sorting by the number of LRNs on a LATA.
      schema:
        $ref: '#/components/schemas/sortable'
    lrns:
      name: lrn
      in: query
      description: Query param for soring by LRN value.
      schema:
        $ref: '#/components/schemas/sortable'
    added:
      name: added
      in: query
      description: Query param for sorting by the timestamp an LRN was added.
      schema:
        $ref: '#/components/schemas/sortable'
    operatingCompanyName:
      name: operatingCompanyName
      in: query
      description: Query param for sorting by OCN.
      schema:
        $ref: '#/components/schemas/sortable'
    lata:
      name: lata
      in: query
      description: >-
        Query param for sorting by LATA. Pass as `lata[sort]=ASC` or
        `lata[sort]=DESC`.
      schema:
        $ref: '#/components/schemas/sortable'
      style: deepObject
      explode: true
      example:
        sort: ASC
    hostedVoice:
      name: hostedVoice
      in: query
      description: Query param for soring by whether hosted voice is enabled.
      schema:
        $ref: '#/components/schemas/sortable'
    accessHomingTandem:
      name: accessHomingTandem
      in: query
      description: Query param for sorting by whether access homing tandem is enabled.
      schema:
        $ref: '#/components/schemas/sortable'
    accountParams:
      name: accountId
      in: path
      required: true
      description: A number identifying the customer's Bandwidth App account (SAN).
      schema:
        type: string
    limit:
      name: limit
      in: query
      required: true
      description: The number of items to include in the current page.
      schema:
        type: integer
      explode: false
    offset:
      name: offset
      in: query
      required: true
      description: How many items to skip before the current page of data.
      schema:
        type: integer
      explode: false
    lrnConfigurations:
      name: lrnConfiguration
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/uuid'
    lrn:
      name: lrn
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/e164'
    lrnParam:
      name: lrn
      in: query
      required: false
      description: >-
        Filter and/or sort by LRN value. Use `lrn[eq]` for an exact match,
        `lrn[contains]` for a case-insensitive substring match, and `lrn[sort]`
        to control sort order.
      schema:
        $ref: '#/components/schemas/lrnFilterSortParam'
      style: deepObject
      explode: true
      example:
        contains: '+1234'
        sort: ASC
    operatingCompanyNameParam:
      name: operatingCompanyName
      in: query
      required: false
      description: >-
        Filter and/or sort by Operating Company Name (OCN). Use
        `operatingCompanyName[eq]` for an exact match,
        `operatingCompanyName[contains]` for a case-insensitive substring match,
        and `operatingCompanyName[sort]` to control sort order.
      schema:
        $ref: '#/components/schemas/operatingCompanyNameFilterSortParam'
      style: deepObject
      explode: true
      example:
        contains: Tele
        sort: ASC
    filterLataId:
      name: lataId
      in: query
      required: false
      description: >-
        Filter by LATA ID. Use `lataId[eq]` for an exact integer match or
        `lataId[contains]` for a substring match. Pass as `lataId[eq]=426` or
        `lataId[contains]=42`.
      schema:
        $ref: '#/components/schemas/lataIdFilterParam'
      style: deepObject
      explode: true
      example:
        contains: '42'
    filterLataName:
      name: lataName
      in: query
      required: false
      description: >-
        Filter by LATA name. Use `lataName[eq]` for an exact match or
        `lataName[contains]` for a case-insensitive substring match. Pass as
        `lataName[eq]=Raleigh` or `lataName[contains]=Rale`.
      schema:
        $ref: '#/components/schemas/lataNameFilterParam'
      style: deepObject
      explode: true
      example:
        contains: Rale
    filterLataRegion:
      name: lataRegion
      in: query
      required: false
      description: >-
        Filter by LATA region. Use `lataRegion[eq]` for an exact match or
        `lataRegion[contains]` for a case-insensitive substring match. Pass as
        `lataRegion[eq]=North Carolina` or `lataRegion[contains]=Carolina`.
      schema:
        $ref: '#/components/schemas/lataRegionFilterParam'
      style: deepObject
      explode: true
      example:
        contains: Carolina
    filterHostedVoice:
      name: hostedVoice
      in: query
      required: false
      description: >-
        Filter by whether hosted voice is enabled on the LRN. Exact match. Pass
        as `hostedVoice[eq]=true` or `hostedVoice[eq]=false`.
      schema:
        $ref: '#/components/schemas/eqBooleanFilter'
      style: deepObject
      explode: true
      example:
        eq: true
    filterTandem:
      name: tandem
      in: query
      required: false
      description: >-
        Filter by whether access homing tandem is enabled on the LRN. Exact
        match. Pass as `tandem[eq]=true` or `tandem[eq]=false`.
      schema:
        $ref: '#/components/schemas/eqBooleanFilter'
      style: deepObject
      explode: true
      example:
        eq: true
    filterRoutingConfigurationName:
      name: routingConfigurationName
      in: query
      required: false
      description: >-
        Filter by LRN Configuration name. Use `routingConfigurationName[eq]` for
        an exact match or `routingConfigurationName[contains]` for a
        case-insensitive substring match. Pass as
        `routingConfigurationName[eq]=Primary` or
        `routingConfigurationName[contains]=Pri`.
      schema:
        $ref: '#/components/schemas/routingConfigurationNameFilterParam'
      style: deepObject
      explode: true
      example:
        contains: Pri
    addedParam:
      name: added
      in: query
      required: false
      description: >-
        Filter and/or sort by the date the LRN was added to the account. Use
        `added[gte]` for a lower bound (inclusive),  `added[lte]` for an upper
        bound (inclusive),  and `added[sort]` to control sort order.  All
        sub-properties are optional and may be combined freely.  Timestamps must
        be ISO 8601 UTC format.
      schema:
        $ref: '#/components/schemas/addedFilterSortParam'
      style: deepObject
      explode: true
      example:
        gte: '2025-01-01T00:00:00Z'
        lte: '2025-12-31T23:59:59Z'
        sort: ASC
  requestBodies:
    lrnPatch:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/updateLrn'
    lrnPost:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/createLrn'
    lrnConfigPost:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/createLrnConfig'
    lrnConfigPut:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/updateLrnConfig'
    lrnConfigPatch:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/updatelrnConfigUpdate'
  responses:
    listLrnConfigs:
      description: Ok
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/listLrnConfigResponse'
    lrnConfigCreated:
      description: Created
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/lrnConfigCreatedResponse'
    listLataOk:
      description: Ok
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/listLataOkResponse'
    lrnUpdate:
      description: Ok
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/lrnUpdateResponse'
    lrnDeleted:
      description: No Content
    lrnCreated:
      description: Created
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/lrnCreatedResponse'
    lrnOk:
      description: Ok
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/lrnOkResponse'
    lrnConfigUpdate:
      description: Ok
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/lrnConfigUpdateResponse'
    lrnConfigUpsert:
      description: Ok
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/lrnConfigUpsertResponse'
    lrnConfigDeleted:
      description: No Content
    lrnConfigOk:
      description: Ok
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/lrnConfigOkResponse'
    badRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorBody'
    unauthorized:
      description: unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorBody'
    forbidden:
      description: forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorBody'
    notFound:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorBody'
    methodNotAllowed:
      description: Method not allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorBody'
    tooManyRequests:
      description: Too many requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorBody'
    internalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorBody'
  schemas:
    lrnConfigCreatedResponse:
      type: object
      required:
        - data
        - links
        - errors
      properties:
        data:
          items:
            $ref: '#/components/schemas/lrnConfig'
          description: The data being returned, depends on the operation.
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
          description: HATEOAS links.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
          description: An array of errors thrown during this request.
          example: []
      description: The response body for operations which may return errors, and data.
    listLrnConfigResponse:
      type: object
      required:
        - data
        - links
        - errors
      properties:
        page:
          items:
            $ref: '#/components/schemas/page'
          description: Pagination metadata.
        data:
          type: array
          items:
            $ref: '#/components/schemas/lrnConfig'
          description: The data being returned, depends on the operation.
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
          description: HATEOAS links.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
          description: An array of errors thrown during this request.
          example: []
      description: The response body for operations which may return errors, and data.
    listLataOkResponse:
      type: object
      required:
        - data
        - links
        - errors
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/lata'
          description: The data being returned, depends on the operation.
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
          description: HATEOAS links.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
          description: An array of errors thrown during this request.
          example: []
      description: The response body for operations which may return errors, and data.
    lrnUpdateResponse:
      type: object
      required:
        - data
        - links
        - errors
      properties:
        data:
          items:
            $ref: '#/components/schemas/lrn'
          description: The data being returned, depends on the operation.
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
          description: HATEOAS links.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
          description: An array of errors thrown during this request.
          example: []
      description: The response body for operations which may return errors, and data.
    lrnCreatedResponse:
      type: object
      required:
        - data
        - links
        - errors
      properties:
        data:
          items:
            $ref: '#/components/schemas/lrn'
          description: The data being returned, depends on the operation.
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
          description: HATEOAS links.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
          description: An array of errors thrown during this request.
          example: []
      description: The response body for operations which may return errors, and data.
    lrnOkResponse:
      type: object
      required:
        - data
        - links
        - errors
        - page
      properties:
        page:
          items:
            $ref: '#/components/schemas/page'
          description: Pagination metadata.
        data:
          type: array
          items:
            $ref: '#/components/schemas/lrn'
          description: The data being returned, depends on the operation.
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
          description: HATEOAS links.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
          description: An array of errors thrown during this request.
          example: []
      description: The response body for operations which may return errors, and data.
    lrnConfigUpdateResponse:
      type: object
      required:
        - data
        - links
        - errors
      properties:
        data:
          items:
            $ref: '#/components/schemas/lrnConfig'
          description: The data being returned, depends on the operation.
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
          description: HATEOAS links.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
          description: An array of errors thrown during this request.
          example: []
      description: The response body for operations which may return errors, and data.
    lrnConfigUpsertResponse:
      type: object
      required:
        - data
        - links
        - errors
      properties:
        data:
          items:
            $ref: '#/components/schemas/lrnConfig'
          description: The data being returned, depends on the operation.
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
          description: HATEOAS links.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
          description: An array of errors thrown during this request.
          example: []
      description: The response body for operations which may return errors, and data.
    lrnConfigOkResponse:
      type: object
      required:
        - data
        - links
        - errors
      properties:
        data:
          items:
            $ref: '#/components/schemas/lrnConfig'
          description: The data being returned, depends on the operation.
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
          description: HATEOAS links.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
          description: An array of errors thrown during this request.
          example: []
      description: The response body for operations which may return errors, and data.
    sortable:
      type: object
      description: A query param that can be sorted.
      properties:
        sort:
          $ref: '#/components/schemas/sort'
      example:
        sort: ASC
    sort:
      type: string
      description: Sorting order in ascending or descending order
      enum:
        - ASC
        - DESC
      default: ASC
    eqStringFilter:
      type: object
      description: >-
        A filter param using an exact string match. Pass as
        `<paramName>[eq]=<value>`.
      properties:
        eq:
          type: string
          description: The value to match against.
          example: someValue
    eqIntegerFilter:
      type: object
      description: >-
        A filter param using an exact integer match. Pass as
        `<paramName>[eq]=<value>`.
      properties:
        eq:
          type: integer
          description: The value to match against.
          example: 42
    eqBooleanFilter:
      type: object
      description: >-
        A filter param using an exact boolean match. Pass as
        `<paramName>[eq]=true` or `<paramName>[eq]=false`.
      properties:
        eq:
          type: boolean
          description: The boolean value to match.
          example: true
    addedFilterSortParam:
      type: object
      description: >-
        Consolidated filter and sort parameter for the date the LRN was added.
        Use `added[gte]` for lower bound (inclusive), `added[lte]` for upper
        bound (inclusive), and `added[sort]` to control sort order. All
        sub-properties are optional and may be combined freely.
      properties:
        gte:
          type: string
          format: date-time
          description: Lower bound (inclusive) ISO 8601 UTC timestamp.
          example: '2025-01-01T00:00:00Z'
        lte:
          type: string
          format: date-time
          description: Upper bound (inclusive) ISO 8601 UTC timestamp.
          example: '2025-12-31T23:59:59Z'
        sort:
          $ref: '#/components/schemas/sort'
    lrnFilterSortParam:
      type: object
      description: >-
        Consolidated filter and sort parameter for the LRN value. Use `lrn[eq]`
        for an exact match, `lrn[contains]` for a case-insensitive substring
        match, and `lrn[sort]` to control sort order. All sub-properties are
        optional and may be combined.
      properties:
        eq:
          type: string
          description: Exact match on the LRN value.
          example: '+12345'
        contains:
          type: string
          description: Case-insensitive substring match on the LRN value.
          example: '+1234'
        sort:
          $ref: '#/components/schemas/sort'
    operatingCompanyNameFilterSortParam:
      type: object
      description: >-
        Consolidated filter and sort parameter for the Operating Company Name
        (OCN). Use `operatingCompanyName[eq]` for an exact match,
        `operatingCompanyName[contains]` for a case-insensitive substring match,
        and `operatingCompanyName[sort]` to control sort order. All
        sub-properties are optional and may be combined.
      properties:
        eq:
          type: string
          description: Exact match on the Operating Company Name (OCN).
          example: Telecom
        contains:
          type: string
          description: >-
            Case-insensitive substring match on the Operating Company Name
            (OCN).
          example: Tele
        sort:
          $ref: '#/components/schemas/sort'
    lataIdFilterParam:
      type: object
      description: >-
        Filter parameter for LATA ID. Use `lataId[eq]` for an exact integer
        match or `lataId[contains]` for a substring match.
      properties:
        eq:
          type: integer
          description: Exact match on the LATA ID.
          example: 426
        contains:
          type: string
          description: Substring match on the LATA ID.
          example: '42'
    lataNameFilterParam:
      type: object
      description: >-
        Filter parameter for LATA name. Use `lataName[eq]` for an exact match or
        `lataName[contains]` for a case-insensitive substring match.
      properties:
        eq:
          type: string
          description: Exact match on the LATA name.
          example: Raleigh
        contains:
          type: string
          description: Case-insensitive substring match on the LATA name.
          example: Rale
    lataRegionFilterParam:
      type: object
      description: >-
        Filter parameter for LATA region. Use `lataRegion[eq]` for an exact
        match or `lataRegion[contains]` for a case-insensitive substring match.
      properties:
        eq:
          type: string
          description: Exact match on the LATA region.
          example: North Carolina
        contains:
          type: string
          description: Case-insensitive substring match on the LATA region.
          example: Carolina
    routingConfigurationNameFilterParam:
      type: object
      description: >-
        Filter parameter for LRN Configuration name. Use
        `routingConfigurationName[eq]` for an exact match or
        `routingConfigurationName[contains]` for a case-insensitive substring
        match.
      properties:
        eq:
          type: string
          description: Exact match on the LRN Configuration name.
          example: Primary
        contains:
          type: string
          description: Case-insensitive substring match on the LRN Configuration name.
          example: Pri
    createLrn:
      type: object
      required:
        - hostedVoice
        - accessHomingTandem
        - lrnConfigUuid
      properties:
        hostedVoice:
          type: boolean
          description: |-
            Whether the hosted voice feature is enabled on this LRN.
            Must be enabled on the LATA prior to being enabled on the LRN.
        accessHomingTandem:
          type: boolean
          description: |-
            Whether the accessHomingTandem feature is enabled on this LRN.
            Must be enabled on the LATA prior to being enabled on the LRN.
        lrnConfigUuid:
          type: string
          format: uuid
          nullable: true
          description: >-
            The UUID of the LRN Configuration to assign the LRN to. If null, the
            LRN will be unassigned from any LRN Configuration it is currently
            assigned to. If omitted, the LRN Configuration assignment will not
            be modified.
      description: ''
      example:
        hostedVoice: true
        accessHomingTandem: false
        lrnConfigUuid: 9C88F137-B2DE-55B1-9D13-AB12CA84E7B1
    createLrnConfig:
      type: object
      required:
        - lrns
        - name
        - originationRoutePlan
      properties:
        lrns:
          type: array
          items:
            $ref: '#/components/schemas/e164'
          description: >-
            The list of LRNs assigned to the LRN Configuration. LRNs may be
            assigned or unassigned by modifying this array, usually with a PATCH
            request.
          example:
            - '+12345678910'
            - '+13345672839'
        name:
          type: string
          description: A display name that describes the LRN Configuration.
          example: Example LRN Config
        originationRoutePlan:
          items:
            $ref: '#/components/schemas/orp'
          description: >-
            The Origination Route Plan (ORP), also known as the Advanced Call
            Route (ACR),

            that describes the routing strategy for LRNs assigned to the config.

            Only a subset of the endpoint types available on a Voice Config
            Package (VCP) are available on an LRN Configuration.
      description: ''
    error:
      type: object
      required:
        - code
        - type
        - description
      properties:
        code:
          type: string
          description: >-
            A unique code representing the error, intended for programatic
            consumption.
        type:
          type: string
          description: The category the error falls into.
        description:
          type: string
          description: >-
            A plain text description of the error, intended for display
            purposes.
      description: An object describing an instance of an error thrown during the request.
      example:
        type: RATE_LIMITED
        description: >-
          Your account has made too many requests to this endpoint. Wait until
          2025-07-14T21:18:02.360279Z
        code: VCS-0098
    errorBody:
      type: object
      required:
        - data
      properties:
        data:
          nullable: true
          description: Always null.
          example: null
        links:
          type: array
          items:
            $ref: '#/components/schemas/link'
          example: []
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
    fqdnEndpoint:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - FQDN
        rewriteUser:
          type: string
          description: >-
            Overrides the user part of the SIP Request-URI  (e.g.
            `rewrite-user@endpoint`).
          example: rewrite-user@example.com
      allOf:
        - $ref: '#/components/schemas/orpEndpoint'
      example:
        endpoint: www.example.com
        weight: 3
        type: FQDN
    ipv4Endpoint:
      type: object
      required:
        - type
        - endpoint
      properties:
        type:
          type: string
          enum:
            - IP_V4
        endpoint:
          type: string
          format: ipv4
        rewriteUser:
          type: string
          description: >-
            Overrides the user part of the SIP Request-URI  (e.g.
            `rewrite-user@endpoint`).
          example: rewrite-user@example.com
      allOf:
        - $ref: '#/components/schemas/orpEndpoint'
      example:
        endpoint: 192.168.0.1
        weight: 1
        type: IP_V4
        rewriteUser: rewriteUser
    lata:
      type: object
      required:
        - id
        - name
        - region
        - count
        - hostedVoice
        - accessHomingTandem
      properties:
        id:
          type: integer
          description: The code that identifies the LATA.
          readOnly: true
        name:
          type: string
          description: The name of the LATA, usually a city.
          readOnly: true
        region:
          type: string
          description: The region the LATA belongs to, usually a US state.
          readOnly: true
        count:
          type: integer
          description: The number of LRNs in use on the account that belong to the LATA.
          readOnly: true
        hostedVoice:
          type: boolean
          description: Whether hosted voice may be enabled on LRNs belonging to this LATA.
        accessHomingTandem:
          type: boolean
          description: >-
            Whether access homing tandem may be enabled on LRNs belonging to
            this LATA.
      description: >-
        A LATA (Local Access and Transport Area) is a 3 digit (5, in Florida)
        code that labels a particular geographic market in which calls are
        routed.
      example:
        id: 974
        name: Rochester
        region: New York
        count: 5
        hostedVoice: true
        accessHomingTandem: false
    lrn:
      type: object
      required:
        - lrn
        - added
        - lrnConfiguration
        - operatingCompanyName
        - lata
        - hostedVoice
        - accessHomingTandem
      properties:
        lrn:
          $ref: '#/components/schemas/e164'
          description: The location routing number.
          readOnly: true
        added:
          type: string
          format: date-time
          description: The time the LRN was added to the account, as a UTC timestamp.
          readOnly: true
        lrnConfiguration:
          $ref: '#/components/schemas/uuid'
          description: >-
            The UUID of the LRN Configuration the LRN is assigned to.

            Read-only because LRN Configuration assignemnt is done with the
            /lrnConfiguration endpoint,

            and optional because an LRN Configuration may not have been
            assigned.
          readOnly: true
        operatingCompanyName:
          type: string
          description: The name of the company that operates the LRN.
          readOnly: true
        lata:
          items:
            $ref: '#/components/schemas/lrnLata'
          description: Information about the LATA the LRN belongs to.
          readOnly: true
        hostedVoice:
          type: boolean
          description: |-
            Whether the hosted voice feature is enabled on this LRN.
            Must be enabled on the LATA prior to being enabled on the LRN.
        accessHomingTandem:
          type: boolean
          description: |-
            Whether the accessHomingTandem feature is enabled on this LRN.
            Must be enabled on the LATA prior to being enabled on the LRN.
      description: >-
        A Location Routing Number (LRN) identifies telephone switches when
        routing phone calls through the U.S. public switched telephone network
        (PSTN).

        An LRN has the format of a 10-digit North American Numbering Plan (NANP)
        phone number, and is required for local number portability (LNP).
      example:
        lrn: '+11234567890'
        added: '2025-07-14T22:21:08Z'
        lrnConfiguration: 7B66F137-A2CE-44B1-8D13-CB83CA84E7B0
        operatingCompanyName: Luther's Telecom
        hostedVoice: true
        accessHomingTandem: true
        lata:
          id: 426
          name: Raleigh
          region: North Carolina
    lrnConfig:
      type: object
      required:
        - id
        - lrns
        - name
        - originationRoutePlan
      properties:
        id:
          items:
            $ref: '#/components/schemas/uuid'
          example: BE283B20-6DDF-47C7-A7EA-8F343D8AE418
          readOnly: true
        lrns:
          type: array
          items:
            $ref: '#/components/schemas/e164'
          description: >-
            The list of LRNs assigned to the LRN Configuration. LRNs may be
            assigned or unassigned by modifying this array, usually with a PATCH
            request.
          example:
            - '+12345678910'
            - '+13345672839'
        name:
          type: string
          description: A display name that describes the LRN Configuration.
          example: Example LRN Config
        originationRoutePlan:
          items:
            $ref: '#/components/schemas/orp'
          description: >-
            The Origination Route Plan (ORP), also known as the Advanced Call
            Route (ACR),

            that describes the routing strategy for LRNs assigned to the config.

            Only a subset of the endpoint types available on a Voice Config
            Package (VCP) are available on an LRN Configuration.
      description: >-
        LRN Configurations are responsible for grouping one or more LRNs and
        assigning them to an ACR/ORP.
    link:
      type: object
      required:
        - href
        - rel
        - method
      properties:
        href:
          type: string
          format: uri
          description: >-
            The URL of another resource that is related to the current resource
            in some way.
        rel:
          type: string
          description: How the URL relates to the resource of the current request.
        method:
          type: string
          enum:
            - GET
            - PUT
            - POST
            - DELETE
            - HEAD
            - PATCH
          description: The HTTP method used to access the resource.
      description: HATEOAS links, for pagination.
      example:
        href: https://api.bandwidth.com/v2/account/123456/lrnConfigurations
        rel: self
        method: GET
    lrnLata:
      type: object
      required:
        - id
        - name
        - region
      properties:
        id:
          type: integer
          description: The 3-5 digit number that identifies the LATA.
          readOnly: true
        name:
          type: string
          description: The name of the LATA.
          readOnly: true
        region:
          type: string
          description: The region the LATA belongs to.
          readOnly: true
      description: >-
        A sub-object of the LRN entity, containing the only modifyable
        properties of an LRN, the enabled features.
      example:
        id: 426
        name: Raleigh
        region: North Carolina
    orp:
      type: object
      required:
        - routes
      properties:
        routes:
          type: array
          items:
            $ref: '#/components/schemas/orpRoute'
          description: A list of the routes in the Origination Route Plan (ORP).
      description: >-
        Origination Route Plan (ORP), also known as an Advanced Call Route
        (ACR). An ordered set of arrays of weighted endpoints which determine
        how a call is routed.

        ORPs on an LRNConfig are the same as ones on Voice Config Packages, but
        some endpoint types, such as integrations, are unavailable.
      example:
        routes:
          - priority: 1
            name: Example route
            endpoints:
              - endpoint: 192.168.0.1
                weight: 1
                type: IP_V4
              - endpoint: www.example.com
                weight: 3
                type: FQDN
          - priority: 2
            name: Another Example Route
            endpoints:
              - endpoint: 192.168.2.2
                weight: 2
                type: IP_V4
                rewriteUser: rewriteUser
              - endpoint: www.example.com
                weight: 2
                type: FQDN
                rewriteUser: rewriteUser
    orpEndpoint:
      type: object
      required:
        - endpoint
        - weight
        - type
      properties:
        endpoint:
          type: string
          description: The value of the endpoint. For example, 192.168.0.1 for 'IP_V4'.
        weight:
          type: integer
          description: >-
            A positive integer that specifies the weighting of this rule

            entry within a given priority group. All entries with the same
            priority

            are weighted together using the weights as ratios.
        type:
          items:
            $ref: '#/components/schemas/orpEndpointType'
          description: SIP, IP_V4, or FQDN.
      discriminator:
        propertyName: type
        mapping:
          SIP: '#/components/schemas/sipEndpoint'
          IP_V4: '#/components/schemas/ipv4Endpoint'
          FQDN: '#/components/schemas/fqdnEndpoint'
      description: An IPv4 address, SIP URI or FQDN to route to.
    orpEndpointType:
      type: string
      enum:
        - SIP
        - IP_V4
        - FQDN
      description: >-
        Only a subset of endpoint types are available for ACRs on an LRN
        Configuration.
    orpRoute:
      type: object
      required:
        - priority
        - name
        - endpoints
      properties:
        priority:
          type: integer
          description: >-
            A positive integer defining the order of this rule entry, multiple
            entries may have the same priority
        name:
          type: string
          description: The name of the route.
        endpoints:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/sipEndpoint'
              - $ref: '#/components/schemas/ipv4Endpoint'
              - $ref: '#/components/schemas/fqdnEndpoint'
            discriminator:
              propertyName: type
          description: An array of objects describing the endpoints in the route.
      description: Represents one route in an ACR/ORP.
      example:
        priority: 1
        name: Test Route
        endpoints:
          - endpoint: 192.168.0.1
            weight: 1
            type: IP_V4
          - endpoint: www.example.com
            weight: 3
            type: FQDN
    orpUpdate:
      type: object
      properties:
        routes:
          type: array
          items:
            $ref: '#/components/schemas/orpRoute'
          description: A list of the routes in the Origination Route Plan (ORP).
      description: >-
        Origination Route Plan (ORP), also known as an Advanced Call Route
        (ACR). An ordered set of arrays of weighted endpoints which determine
        how a call is routed.

        ORPs on an LRNConfig are the same as ones on Voice Config Packages, but
        some endpoint types, such as integrations, are unavailable.
      example:
        routes:
          - priority: 1
            name: Example route
            endpoints:
              - endpoint: 192.168.0.1
                weight: 50
                type: IP_V4
              - endpoint: www.example.com
                weight: 50
                type: FQDN
          - priority: 2
            name: Another Example Route
            endpoints:
              - endpoint: 192.168.2.2
                weight: 50
                type: IP_V4
                rewriteUser: rewriteUser
              - endpoint: www.example.com
                weight: 50
                type: FQDN
                rewriteUser: rewriteUser
    page:
      type: object
      required:
        - pageSize
        - totalElements
        - totalPages
        - pageNumber
      properties:
        pageSize:
          type: integer
          description: The number of items in the page.
        totalElements:
          type: integer
          description: The total number of items in the database.
        totalPages:
          type: integer
          description: The number of pages of the given size.
        pageNumber:
          type: integer
          description: The index of the current page.
      description: Pagination data
      example:
        pageSize: 50
        totalElements: 110
        totalPages: 3
        pageNumber: 0
    sipEndpoint:
      type: object
      required:
        - type
        - endpoint
      properties:
        type:
          type: string
          enum:
            - SIP
        endpoint:
          type: string
          format: uri
      allOf:
        - $ref: '#/components/schemas/orpEndpoint'
      example:
        endpoint: sip:1-999-123-4567@voip-provider.example.net
        weight: 100
        type: SIP
    updateLrn:
      type: object
      properties:
        hostedVoice:
          type: boolean
          description: |-
            Whether the hosted voice feature is enabled on this LRN.
            Must be enabled on the LATA prior to being enabled on the LRN.
        accessHomingTandem:
          type: boolean
          description: |-
            Whether the accessHomingTandem feature is enabled on this LRN.
            Must be enabled on the LATA prior to being enabled on the LRN.
        lrnConfigUuid:
          type: string
          format: uuid
          description: >-
            The UUID of the LRN Configuration to assign the LRN to. If null, the
            LRN will be unassigned from any LRN Configuration it is currently
            assigned to. If omitted, the LRN Configuration assignment will not
            be modified.
      description: ''
      example:
        hostedVoice: true
        accessHomingTandem: false
        lrnConfigUuid: 7B66F137-A2CE-44B1-8D13-CB83CA84E7B0
    updateLrnConfig:
      type: object
      required:
        - lrns
        - name
        - originationRoutePlan
      properties:
        lrns:
          type: array
          items:
            $ref: '#/components/schemas/e164'
          description: >-
            The list of LRNs assigned to the LRN Configuration. LRNs may be
            assigned or unassigned by modifying this array, usually with a PATCH
            request.
          example:
            - '+12345678910'
            - '+13345672839'
        name:
          type: string
          description: A display name that describes the LRN Configuration.
          example: Example LRN Config
        originationRoutePlan:
          items:
            $ref: '#/components/schemas/orp'
          description: >-
            The Origination Route Plan (ORP), also known as the Advanced Call
            Route (ACR),

            that describes the routing strategy for LRNs assigned to the config.

            Only a subset of the endpoint types available on a Voice Config
            Package (VCP) are available on an LRN Configuration.
      description: ''
    updatelrnConfigUpdate:
      type: object
      properties:
        lrns:
          type: array
          items:
            $ref: '#/components/schemas/e164'
          description: >-
            The list of LRNs assigned to the LRN Configuration. LRNs may be
            assigned or unassigned by modifying this array, usually with a PATCH
            request.
          example:
            - '+12345678910'
            - '+13345672839'
        name:
          type: string
          description: A display name that describes the LRN Configuration.
          example: Example LRN Config
        originationRoutePlan:
          items:
            $ref: '#/components/schemas/orpUpdate'
          description: >-
            The Origination Route Plan (ORP), also known as the Advanced Call
            Route (ACR),

            that describes the routing strategy for LRNs assigned to the config.

            Only a subset of the endpoint types available on a Voice Config
            Package (VCP) are available on an LRN Configuration.
      description: ''
    e164:
      type: string
      minLength: 2
      maxLength: 16
      pattern: ^\+1\d{1,14}$
      description: A NANPA phone number.
      example: '+12223334444'
    uuid:
      type: string
      format: uuid
      nullable: true
  securitySchemes:
    Basic:
      type: http
      scheme: basic
      description: >-
        Basic authentication is a simple authentication scheme built into the
        HTTP protocol. To use it, send your HTTP requests with an Authorization
        header that contains the word Basic followed by a space and a
        base64-encoded string `username:password`.

        Example: `Authorization: Basic ZGVtbZpwQDU1dzByZA==`
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Bearer authentication (also called token authentication) is an HTTP
        authentication scheme that involves security tokens called bearer
        tokens. The name “Bearer authentication” can be understood as “give
        access to the bearer of this token.” The client must send this token in
        the Authorization header when making requests to protected resources.


        Example: `Authorization: Bearer <token>`
security:
  - Basic: []
  - Bearer: []
servers:
  - url: https://api.bandwidth.com/v2
    description: Production
    variables: {}
