openapi: 3.0.1
info:
  title: Global API V1
  description: >
    Bandwidth's global API is an application programming interface for
    Bandwidth's global network.


    ## Versions


    |API Version|Description|Documentation|

    |:---:|:---:|:---|

    |`v1`|Our current API, which includes number ordering, compliance,
    configuration and inventory management to support your Voice and SMS
    communications.| Currently viewing |

    |`v2`|Our CDRs (Call Detail Records) API.|[Click
    here](https://dev.bandwidth.com/apis/legacy-apis/global/v2/)|

    |`v3`|Our Porting API in Limited Availability|[Click
    here](https://dev.bandwidth.com/apis/legacy-apis/global/v3/)|

    |`beta`|Early access to APIs under development including Number
    Whitelisting.|[Click
    here](https://dev.bandwidth.com/apis/legacy-apis/global/beta/)|


    ## Global Emergency Address and Endpoint Provisioning


    Please refer to the [Unified Emergency Services Provisioning
    API](https://dev.bandwidth.com/apis/emergency-provisioning/) guide to
    automate the provisioning process for endpoints and emergency addresses on
    the Global Portal.


    ## Access


    Authentication for Bandwidth's global API is done with API keys. Please
    ensure:


    - Your account is activated for API access. You can do so on our [Global
    Portal](https://app.voxbone.com/home). If you have trouble, reach out to
    your account manager or raise a support ticket.

    - You've setup an API key. You can generate your API key under **Settings >
    API**.


    ## Postman


    We offer a Postman collection for you to use.

    The collection can be found on
    [GitHub](https://github.com/Bandwidth/postman/blob/main/global-api-v1.json)


    ## Environments


    There are currently two environments for our global APIs:


    | Environment | Base URL | Description |

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

    | Production | https://api.voxbone.com | Live production network. |

    | Sandbox | https://api.sandbox.voxbone.com | Intended for simulating
    ordering and address verification. You can test ordering without being
    charged, service activation and more. Any API calls performed through our
    Sandbox API can be viewed via our [Sandbox
    Portal](https://sandbox.voxbone.com/sandbox-v3/). |


    ## Security & Rate Limiting


    For protecting both your apps and our systems, a __20 requests per second by
    client IP__ is performed on your API calls. If you send more requests, your
    requests may be rejected by an `HTTP 509 Bandwidth Limit Exceeded` or `HTTP
    429 Too Many Requests` in the response.


    ## Errors and Process Feedback


    If there's an error with processing your API request, the server will return
    an appropriate HTTP status code, along with error types and codes.


    ### Common Error Codes


    Standard errors related to validation of your request in terms of data and
    field types. These would indicate a problem with your request.


    __How to fix__: Please review the endpoint description to fix any errors.


    |Technical Name|Error Code|Message|

    |:---:|:---:|:---|

    |`WRONG_DATE_FORMAT`|`10`|The date format is not correct. Please format all
    dates in the ‘YYYY-MM-DD HH:MM:SS’ format|

    |`WRONG_PAGE_NUMBERING`|`11`|The page number must be a positive integer.|

    |`WRONG_PAGE_SIZE`|`12`|The page size must be a positive integer with a
    maximum of 5000.|

    |`PAGINATION_OVERFLOW`|`13`|Pagination overflow : the given page does not
    exist.|

    |`ILLEGAL_ARGUMENT`|`14`|Illegal value.|

    |`NOT_FOUND`|`15`|Not Found.|

    |`FIELD_REQUIRED`|`16`|A required field is missing.|

    |`ILLEGAL_NUMBER_VALUE`|`17`|Illegal value for a numeric field.|

    |`ILLEGAL_BOOLEAN_VALUE`|`18`|Illegal value for a boolean field.|

    |`ILLEGAL_DATE_VALUE`|`19`|Illegal value for a date field.|

    |`ILLEGAL_VALUE_JSON`|`20`|The system can not process this value. Please
    make sure to use double quotes if the value is a string.|

    |`ILLEGAL_FIELD`|`21`|Illegal element name. Please make sure that the given
    element is not already defined in your request or that it is an allowed
    element for this request.|

    |`MISSING_TAG_END`|`22`|An end tag is missing in the request.|

    |`ILLEGAL_REQUEST_TYPE`|`23`|This request type is not allowed for this URL.
    Please consult the API documentation for a list of URLs and allowed request
    types.|

    |`FILE_UPLOAD_FAILED`|`24`|The file attached to this request could not be
    uploaded.|

    |`ILLEGAL_CONTENT`|`25`|Illegal content.|

    |`EMPTY_REQUEST_BODY`|`26`|The request body is empty. Your request is
    missing a body. Sandbox users: this can also occur when the Sandbox
    environment is down.|


    ### Service Activation Error Codes


    Errors in the API workflows related to regulations. These would indicate
    something missing or not allowed for your request.


    __How to fix__: Review regulatory requirements for the service activation in
    your request (i.e. address requirements on the country, number type, etc.).
    Common fixes include formatting/absence of `extraFields`


    |Technical Name|Error Code|Message|

    |:---:|:---:|:---|

    |`FIELD_MISSING`|`500`|Missing field.|

    |`FIELD_SIZE`|`501`|Maximum field size exceeded.|

    |`EXTRA_FIELD_UNEXISTENT`|`502`|The address extra field does not exist for
    the country.|

    |`FIELD_INVALID`|`503`|The field value is not correct.|

    |`EXTRA_FIELD_INVALID`|`504`|The extra field value is not correct.|

    |`TEMPLATE_COUNTRY_INVALID`|`505`|The country of the address should be the
    same as the destination country for the selected didType.|

    |`EXTRA_FIELDS_NOT_ACCEPTED`|`506`|Extra fields are not accepted for the
    destination country and did_type.|

    |`INVALID_REGULATION_ADDRESS`|`507`|The regulation address id is not valid,
    either it does not exist or the regulation address does not belong to you.
    Invalid regulation address:|

    |`LINKED_REGULATION_ADDRESS`|`508`|Error during deletion, the regulation
    address is linked to one or more DID. Invalid regulation address:|

    |`UPDATE_NOT_ALLOWED`|`509`|Update not allowed.|

    |`NONEXISTENT_ADDRESS`|`510`|Invalid address id.|

    |`NO_REGULATION_REQUIREMENTS`|`511`|This didGroup has no regulation address
    requirements.|

    |`VERIFICATION_ALREADY_REQUESTED`|`512`|This regulation address must first
    be verified. Its verification has already been requested, therefore it will
    be possible to link dids as soon as it is confirmed.|

    |`MULTIPLE_DIDGROUPS`|`513`|All the DID must belong to the same didgroup.|

    |`DID_ALREADY_LINKED`|`514`|The DID is already linked. Please unlink it
    before trying to link it to a new address.|

    |`REJECTED_REGULATION_ADDRESS`|`515`|The proof of address has been
    rejected.|

    |`INVALID_DID_LIST`|`516`|Invalid DID id.|

    |`VERIFICATION_NOT_YET_REQUESTED`|`517`|No request for verification was sent
    for this regulation address. It must first be verified before it is possible
    to link DIDs.|

    |`REQUESTED_VERIFICATION_TWICE`|`518`|The verification for this regulation
    address has already been requested.|

    |`NOT_ALLOWED`|`519`|This behaviour is not allowed|

    |`ADDRESS_VERIFICATION_NOT_REQUIRED`|`520`|The following DIDs do not require
    address verification.|

    |`PHONE_NUMBER_WRONG_FORMAT`|`521`|The phone number format should start with
    a + followed by 9 to 15 digits.|

    |`TEMPLATE_SAME_COUNTRY_INVALID`|`522`|The country of the address should be
    different than the destination country for the selected didType.|

    |`STATUS_CHANGE_NOT_ALLOWED`|`523`|The status is not allowed to be changed
    to: STATUS.|

    |`NON_EXISTENT_EXTRA_FIELDS`|`524`|The country’s extra fields haven’t been
    provided.|

    |`PERSON_IS_A_MINOR`|`525`|The entity must be 18 years old in order to sign
    a document.|


    ### Address Rejection Reasons

    After a created address is submitted for verification, our customer success
    team perform checks to verify the relationship between the address/id
    information and proof documents if any. A rejection reason means a change in
    the address information or the proof documents is necessary to proceed with
    service activation. If you have any disputes or confusion about what to do
    next, feel free to contact our [Customer Success Team via
    email](mailto:compliance@bandwidth.com).


    In December 2020 we made some changes to end user documentation validation,
    resulting in our rejection reasons changing slightly in order to provide you
    with more clarity. The full list is available below but if you would like to
    view the old values [click
    here](https://support.voxbone.com/hc/en-us/articles/360016200597).


    | Rejection Reason | Description |

    |:---:|:---|

    | `INVALID_DOC_NOT_RECENT_ENOUGH` | Document not accepted - Expired/Not
    recent enough.|

    | `INVALID_DOC_CORRUPT` | Document not accepted - File cannot be opened/
    corrupt file.|

    | `INVALID_DOC_ILLEGIBLE` | Document not accepted - Document illegible/blank
    (details unclear to read/blank document).|

    | `INVALID_DOC_MISSING` | Document not accepted - Please submit full
    scan/copy of entire proof.|

    | `INVALID_DOC_WHOLE` | Document not accepted - Please submit front and back
    of ID.|

    | `INVALID_DOC_BUSINESS_REGISTRATION` | Document not accepted - Expired
    Business Registration |

    | `INVALID_DOC_OFFICE_RENTAL` | Document not valid - Office Rental/Lease
    agreements not accepted |

    | `INVALID_DOC_NOT_SIGNED` | Document not valid - Certificate of Authority
    not signed/stamped |

    | `INVALID_DOC_NO_REGULAR_USAGE` | Document not valid - Address proof
    document doesn’t show regular usage |

    | `INVALID_DOC_GEWA` | Document not valid - Please insert a GewA form signed
    and stamped by issuing authority |

    | `INVALID_DOC_COMMERCIAL_EXTRACT` | Document not valid - Please add a
    Commercial extract/ Handelsregisterauszug |

    | `INVALID_DOC_TRADE_LICENSE` | Document not valid - Please add a Trade
    License/ Gewerbeanzeige |

    | `INVALID_DOC_LOCAL_AUTH` | Document not valid - Please add other official
    documents supplied by the local authority (e.g. Finanzamt) |

    | `INVALID_DOC_NOTARY` | Document not valid - We don’t accept
    Urkundenrolle/notary’s document register as proof |

    | `INVALID_DOCTYPE_INVOICES` | Document type not accepted - Invoices not
    accepted.|

    | `INVALID_DOCTYPE_GOVERNMENT_DOCS` | Document type not accepted -
    Government issued document required.|

    | `INVALID_DOCTYPE_VIRTUAL_ADDRESS` | Document type not accepted - Virtual
    Office address proofs not accepted.|

    | `INVALID_DOCTYPE_ATTESTATIONS` | Document type not accepted - Attestations
    not accepted.|

    | `INVALID_DOCTYPE_THIRD_PARTY` | Document type not accepted - Document must
    be issued by a third party.|

    | `INVALID_DOCTYPE_REQUIRED_ID` | Document type not accepted - Proof of ID
    required instead of proof of address.|

    | `INVALID_DOCTYPE_REQUIRED_ADDRESS` | Document type not accepted - Proof of
    address required, instead of proof of ID.|

    | `INVALID_DOCTYPE_FIXED_LINE_PROOF` | Document type not accepted - Recent
    proof of fixed line telecom services required.|

    | `INVALID_DOCTYPE_ID_TYPE` | Document type not accepted - ID type not
    accepted.|

    | `INVALID_DOCTYPE_ID_TYPE_ADDRESS` | Document type not accepted - Proof of
    address type not accepted.|

    | `INVALID_DOCTYPE_PASSPORT` | Document type not accepted - Passport
    required.|

    | `INVALID_DOCTYPE_CORPORATE_ID` | Document type not accepted - Cannot
    accept corporate ID as document linking business representative to company |

    | `INCOMPLETE_ADDRESS_BUILDING_NAME_NUMBER` | Incomplete address details -
    Please enter the full address including Building Name and Number |

    | `INCOMPLETE_INFO_DATE` | Incomplete Information - Date missing.|

    | `INCOMPLETE_INFO_ADDRESS` | Incomplete Information - Document does not
    provide address information.|

    | `INCOMPLETE_INFO_PROOFS` | Incomplete Information - Both proof of address
    and proof of ID required.|

    | `INCOMPLETE_INFO_BUSINESS_REG` | Incomplete Information - Business
    registration also required.|

    | `INCOMPLETE_INFO_LEGAL_REP` | Incomplete Information - Document linking
    legal representative also required.|

    | `INCOMPLETE_INFO_LEGAL_REP_ID` | Incomplete Information - Valid ID of
    legal representative also required.|

    | `INCOMPLETE_INFO_LEGAL_ZIP` | Incomplete Information - ZIP file with both
    valid ID of legal representative and business registration required.|

    | `INCOMPLETE_INFO_PO_BOX` | Incomplete Information - PO Boxes not
    accepted.|

    | `INCOMPLETE_INFO_REP_PICTURE` | Incomplete Information - Picture of
    representative holding ID also required.|

    | `INCOMPLETE_INFO_CHINESE_RECEIPT` | Incomplete Information - Chinese
    mobile store confirmation receipt also required.|

    | `INCOMPLETE_INFO_EXPIRED_ID` | Incomplete Information - ID has expired |

    | `INCOMPLETE_INFO_ID_HOLDER` | Incomplete Information - If ID holder not
    listed on proof, please add a document that links ID holder to company as
    well |

    | `INCOMPLETE_INFO_ID` | Incomplete Information - ID is missing, please
    reattach |

    | `INCOMPLETE_INFO_TAX_CERT` | Incomplete Information - Tax certificate also
    required |

    | `INCOMPLETE_INFO_UTILITY_BILLS` | Incomplete Information - Utility bills
    within 6 months also required |

    | `EXPIRED_DOC_NOT_WITHIN_6_MONTHS` | Document expired - Please insert
    Business Registration issued within 6 months |

    | `EXPIRED_DOC_NOT_WITHIN_1_YEAR` | Document expired - Please insert
    Business Registration issued within 1 year |

    | `EXPIRED_DOC_KIBS_NOT_WITHIN_3_MONTHS` | Document expired - Please insert
    Kbis form within 3 months |

    | `EXPIRED_GOV_DOC_NOT_WITHIN_1_YEAR` | Document expired - Please insert
    government-issued document within the last year |

    | `INFO_MISMATCH_ADDRESS_PROOF` | Information mismatch - Information on
    address proof differs from portal information.|

    | `INFO_MISMATCH_ID_PROOF` | Information mismatch - Information on ID proof
    differs from portal information.|

    | `INFO_MISMATCH_DETAILS` | Information mismatch - Address information
    differs (company name/end user name).|

    | `INFO_MISMATCH_ADDRESS` | Information mismatch - Address information
    differs (street name, street number, etc.).|

    | `INFO_MISMATCH_LOCATION` | Information mismatch - Address information
    differs (city or zip code).|

    | `INFO_MISMATCH_RESIDE` | Information mismatch - Customer cannot
    operate/reside within country.|

    | `INFO_MISMATCH_FATHER` | Information mismatch - Father’s name not valid.|

    | `INFO_MISMATCH_MOTHER` | Information mismatch - Mother’s name not valid.|

    | `INFO_MISMATCH_COMPANY_REG` | Information mismatch - Company registration
    status: not currently valid.|

    | `INFO_MISMATCH_ID_NUMBER` | Information mismatch - ID number not valid.|

    | `INFO_MISMATCH_COMPANY_NUMBER` | Information mismatch - Company number not
    valid.|

    | `INFO_MISMATCH_COMPANY_TAX_NUMBER` | Information mismatch - Company tax
    number not valid.|

    | `INFO_MISMATCH_BIRTH_PLACE` | Information mismatch - Birth place not
    valid.|

    | `INFO_MISMATCH_BIRTH_DATE` | Information mismatch - Birth date not valid.|

    | `INFO_MISMATCH_ID` | Information mismatch - ID information not valid.|

    | `INFO_MISMATCH_PORTAL_ENTRY` | Information Mismatch - Please amend the
    entry on the portal based on rejection reason |

    | `INFO_MISMATCH_PRIVATE_ADDRESS_ON_PORTAL` | Information Mismatch - Address
    on our portal is private address of ID holder, please amend |

    | `INFO_MISMATCH_FORMER_ADDRESS` | Information Mismatch - Address on proof
    is the former address; the company since moved |

    | `INFO_MISMATCH_INCORRECT_ADDRESS` | Information Mismatch - Incorrect
    address, please amend |

    | `INFO_MISMATCH_FLAT_NUMBER` | Information Mismatch - Flat/floor no. also
    required |

    | `INFO_MISMATCH_BUILDING_NAME` | Information Mismatch - Building Name also
    required |

    | `INFO_MISMATCH_ZIP_CODE` | Information Mismatch - Incorrect ZIP/Post code
    |

    | `MISSING_DOC_TAX_REGISTRATION` | Document missing - Please insert tax
    registration |

    | `OTHER_ABUSE` | Other (please contact abuse_voxbone@bandwidth.com).|

    | `OTHER_REGULATIONS` | Other (please contact compliance@bandwidth.com).|


    ### Number Configuration Error Codes

    When a request to apply a list of configurations to numbers, the request
    might be rejected due to some errors in the request or related to the
    account status.


    |Technical Name|Error Code|Message|

    |:---:|:---:|:---|

    |`INVALID_DID`|`300`|The did id is not valid, either it does not exist or
    the did does not belong to you.|

    |`INVALID_VOICE_URI`|`301`|The voice uri id is not valid, either it does not
    exist or the voice uri does not belong to you.|

    |`INVALID_SMS_URI`|`302`|The sms uri id is not valid, either it does not
    exist or the sms uri does not belong to you.|

    |`INVALID_FAX_URI`|`303`|The fax uri id is not valid, either it does not
    exist or the fax uri does not belong to you.|

    |`SMS_NOT_SUPPORTED`|`304`|Some dids do not support the VoxSMS feature.|

    |`FAX_NOT_SUPPORTED`|`305`|Some dids do not support the VoxFAX feature.|

    |`INVALID_CAPACITY_GROUP`|`306`|The capacity group id is not valid, either
    it does not exist or the capacity group does not belong to you.|

    |`INVALID_TRUNK`|`307`|The trunk id is not valid, either it does not exist
    or the trunk does not belong to you.|

    |`TRUNK_NOT_ALLOWED`|`308`|Some dids can not be mapped to the given trunk.|

    |`INVALID_SIP_DELIVERY`|`309`|The pop id is not valid, the referenced pop
    does not exist.|

    |`INVALID_COUNTRY`|`310`|The country code is not valid, the referenced
    country does not exist.|

    |`INVALID_CLI_PREFIX`|`311`|The cli prefix is not valid, please use a
    maximum of 7 characters from the following list : 0, 1, 2, 3, 4, 5, 6, 7, 8,
    9, *, ~, #, +, -.|

    |`INVALID_CPC`|`312`|The calls blocking configuration is not valid, please
    either specify all three options (ordinary, cellular, payphone) or none of
    them.|

    |`CPC_NOT_SUPPORTED`|`313`|Some dids do not support the call blocking
    feature.|

    |`T38_NOT_SUPPORTED`|`314`|Some dids do not support the t38 feature.|

    |`PROPAGATION_EXCEPTION`|`315`|The server encountered an error while
    applying the configuration options. Some of the configuration might have
    been applied successfully. You can safely execute the configuration
    operation again, if the problem persists please contact the Bandwidth
    support team.|

    |`NO_VALID_DID_FOUND`|`316`|The system could not find any valid did id in
    the request.|

    |`CLI_PRIVACY_ACCOUNT_NOT_TRUSTED`|`317`|Your account is not authorized to
    use this option.|

    |`CLI_PRIVACY_NOT_SUPPORTED`|`318`|Some dids do not support the cli privacy
    option.|

    |`EMPTY_OTHER_OPTIONS`|`319`|Please specify at least one valid option in the
    ‘otherOptions’ element.|

    |`CAPACITY_GROUP_WCS`|`320`|The system could not save the capacity group.
    You can safely execute the operation again, if the problem persists please
    contact the Bandwidth support team.|

    |`INVALID_HTTP_FAX_URI`|`321`|The given uri is not valid for the delivery
    method HTTP_POST, it has to start with ‘http’.|

    |`INVALID_SMS_URI_FORMAT`|`322`|The system could not determine which
    protocol to use for the given uri. Please specify a url that starts with one
    of the allowed values.|

    |`INVALID_SMS_URI_LOGIN`|`323`|The specified login already exists.|

    |`INVALID_BACKUP_VOICE_URI`|`324`|The backup voice uri id is not valid,
    either it does not exist or the backup voice uri does not belong to you.|

    |`VOICE_URI_BACKUP_CONFLICT`|`325`|A voice uri cannot be set as its own
    backup. Please use a different backup uri.|

    |`VOICE_URI_DUPLICATE`|`326`|There is an existing voice uri in your account
    with the same protocol and uri.|

    |`VOICE_URI_CONFIGURATION`|`327`|The voice uri was successfully updated,
    however the dids mapped to this uri might not have been updated. You can
    safely execute this operation again to update the dids, if the problem
    persists please contact the Bandwidth support team.|

    |`VOICE_URI_MAPPED`|`328`|The voice uri cannot be removed, it is mapped to
    at least one number in your account.|

    |`VOICE_URI_DEFAULT`|`329`|The voice uri cannot be removed, it is set as the
    default uri for any new number you purchase.|

    |`VOICE_URI_BACKUP`|`330`|The voice uri cannot be removed, it is set as the
    backup uri for another voice uri in your account.|

    |`VOICE_URI_DELETE_UNEXPECTED`|`331`|The server encountered an error while
    removing the voice uri. You can safely execute the configuration operation
    again, if the problem persists please contact the Bandwidth support team.|

    |`INVALID_VOICE_URI_FORMAT`|`332`|The voice uri format is not valid.|

    |`SMS_OUTBOUND_NOT_ENABLED`|`333`|Some dids cannot be flagged as SMS
    Outbound.|

    |`SMS_LINK_GROUP_NAME_ALREADY_EXISTS`|`334`|The name for the smsLinkGroup
    already exists|

    |`SMS_LINK_GROUP_STILL_REFERENCED`|`335`|The smsLinkGroup is still
    referenced by smsLinks. Please delete these first.|

    |`SMS_LINK_DELETE_ERROR`|`336`|The SmsLink cannot be deleted.|

    |`WCS_EXCEPTION`|`337`|An error occurred saving the smsLink.|

    |`INVALID_SMS_LINK_GROUP`|`338`|The sms link group id is not valid, either
    it does not exist or it does not belong to you.|

    |`SMS_LINK_GROUP_DELETE_UNEXPECTED`|`339`|An unexpected error occurred when
    deleting the sms link group|

    |`SMS_LINK_GROUP_VALIDATION_UNEXPECTED_ERROR`|`341`|An unexpected error
    occurred during the validation of the SMS Link Group|

    |`SMS_LINK_FORBIDDEN_DIRECTION`|`342`|The specified sms link direction is
    not authorized for your account.|

    |`DUPLICATES_IN_DIDS_ID`|`343`|The list of did ids contains duplicates.|

    |`SMS_LINK_IMPOSSIBLE_DIRECTION`|`344`|The specified sms link direction is
    not available for the specified protocol.|

    |`SMS_ACCOUNT_PROBLEM`|`345`|There is a problem with the SMS link group,
    it’s not possible to delete it.|

    |`SMS_LINK_GROUP_DEFAULT`|`346`|The smsLinkGroup is the default for the
    current customer, it cannot be deleted.|

    |`WEBRTC_UNAUTHORIZED_ACCOUNT`|`347`|The WebRTC configuration could not be
    applied because the account is not WebRTC enabled.|

    |`WEBRTC_EXCEPTION`|`348`|There was a problem applying the WebRTC
    configuration option to the DID(s).|

    |`MISSING_VOICE_CODEC`|`349`|At least 1 voice codec should be selected.|

    |`INVALID_SMTP_FAX_URI`|`350`|The given uri is not valid for the delivery
    method SMTP.|

    |`OBSOLETE_CODEC`|`351`|Codec is obsolete and is not supported anymore.|

    |`SMS_LINK_GROUP_WITH_NO_LINKS`|`352`|The sms link group has no sms links.
    Please add at least one sms link.|

    |`FAX_URI_MAPPED`|`353`|The fax uri cannot be removed, it is mapped to at
    least one number in your account.|

    |`FAX_URI_DEFAULT`|`354`|The fax uri cannot be removed, it is set as the
    default fax uri for any new number you purchase.|

    |`CAPACITY_GROUP_MAPPED`|`355`|The capacity group cannot be removed, it is
    mapped to at least one number in your account.|

    |`CHANNELS_LIMIT_INVALID_VALUE`|`356`|The channels limit should be a
    positive integer value or empty string for no limit.|

    |`SMS_LINK_CREATE_UNEXPECTED`|`357`|The server encountered an error while
    creating the sms link.|

    |`CHANNELS_OUTBOUND_LIMIT_INVALID_VALUE`|`358`|The channels limit for
    outbound should be a positive integer value or empty string for no limit.|

    |`FAX_URI_DELETE_ERROR`|`359`|The fax uri cannot be deleted.|

    |`BULK_DID_CONFIGURATION_LIMIT_EXCEEDED`|`360`|The number of dids to be
    configured exceeds the limit allowed.|

    |`DID_CONFIGURATION_FOR_TRUNK_FORBIDDEN`|`361`|You are not allowed to
    configure trunk for did(s). Please remove trunk id field.|

    |`FAX_URI_CREATE_UNEXPECTED`|`362`|The server encountered an error while
    creating the fax uri.|



    ### Ordering Error Codes


    |Technical Name|Error Code|Message|

    |:---:|:---:|:---|

    |`INVALID_CART_IDENTIFIER`|`400`|The cart identifier is not valid. Please
    use the ‘Create cart’ or ‘List cart’ operation to retrieve a valid cart id.|

    |`NO_PRODUCT_DETECTED`|`401`|The system could not find any product to add to
    your cart. Please specify the did, capacity or credit package item you would
    like to add to your cart.|

    |`MULTIPLE_PRODUCT_DETECTED`|`402`|The system found more than one product to
    add to your cart. Please specify only one did, capacity or credit package
    item you would like to add to your cart.|

    |`INVALID_DIDGROUP_ID`|`403`|The system could not find the requested
    didgroup. Please use the ‘List didgroup’ operation to retrieve a valid
    didgroup id.|

    |`UNAVAILABLE_DIDGROUP`|`404`|This didgroup is not available for ordering.
    Please use the ‘List didgroup’ operation to retrieve a valid didgroup id.|

    |`INVALID_QUANTITY`|`405`|The given quantity is not valid. Please use a
    strictly positive integer.|

    |`INVALID_CAPACITY_QUANTITY`|`406`|The given quantity is not valid. Please
    use a strictly positive multiple of 10.|

    |`INVALID_CREDIT_PACKAGE_ID`|`407`|The system could not find the requested
    credit package. Please use the ‘List credit packages’ operation to retrieve
    a valid credit package id.|

    |`PRODUCT_CONVERSION_ERROR`|`408`|The system could not convert your request
    into products to order, no order has been placed. Please try again and
    contact your account manager if the problem persists.|

    |`PRODUCT_VALIDATION_ERROR`|`409`|The system could not validate your order,
    no order has been placed. Please try again and contact your account manager
    if the problem persists.|

    |`INVALID_PRODUCT_ID`|`410`|The system could not find the requested product
    in your cart. Please use the ‘List carts’ operation to retrieve a valid
    product id.|

    |`INVALID_REMOVE_QUANTITY`|`411`|The given quantity is not valid. Please use
    a strictly positive integer.|

    |`INVALID_REMOVE_CAPACITY_QUANTITY`|`412`|The given quantity is not valid.
    Please use a strictly positive multiple of 10.|

    |`INVALID_REMOVE_QUANTITY_TOO_BIG`|`413`|The given quantity is bigger than
    the quantity currently in your cart.|

    |`INVALID_DID_ID`|`414`|The requested did does not exist or is not owned by
    the user.|

    |`UNEXPECTED_CANCEL_ERROR`|`415`|An unexpected error occurred during the
    execution of the cancellation. Please contact the Bandwidth support team.|

    |`CUSTOMER_REFERENCE_TOO_LONG`|`416`|The customer reference is longer than
    the 255 characters limit.|

    |`INVALID_DATE_FORMAT`|`417`|The date format is not valid|

    |`TEST_DID_NOT_CANCELLABLE`|`418`|Dids that have been assigned to you in
    test cannot be cancelled using this operation. Please contact your account
    manager to cancel test dids.|

    |`EXCEEDED_MAX_ALLOWED_QUANTITY`|`419`|Exceeded maximum allowed quantity for
    number ordering.|

    |`ORDERING_FORBIDDEN_FOR_NON_VALID_ACCOUNTS`|`420`|Sorry, DID is not
    available for cancellation yet. Please check Cancellation Available dates.|

    |`INVALID_CANCELLATION_NOT_AVAILABLE_CAPACITY_CUSTOMER`|`421`|Sorry, DID is
    not available for cancellation yet. Please check Cancellation Available
    dates.|

    |`BOTH_PARAMS_CANNOT_BE_SELECTED`|`422`|Quantity and phoneNumbers cannot be
    selected for removal at the same time. Please select only one option.|

    |`ONE_PARAM_MUST_BE_SELECTED`|`423`|Either quantity or phoneNumbers must be
    provided.|

    |`INVALID_PHONE_NUMBERS`|`424`|The selected phoneNumbers do not exist in
    your cart: |

    |`QUANTITY_RELATED_NUMBERS_CANNOT_RELATE_TO_PHONE_NUMBERS`|`425`|Invalid DID
    Request. The user has to indicate the phoneNumbers if the numbers being
    removed were added via Number Selection.|
  contact:
    name: Bandwidth
  termsOfService: https://www.bandwidth.com/legal/terms-of-use-bandwidthcom-web-sites/
  version: '1.0'
servers:
  - url: https://api.voxbone.com/v1
security:
  - KeyBasedAuthentication:
      - apiKey
tags:
  - name: Service, Coverage, & Number Inventory
    description: >-
      Search for numbers to buy or check number coverage, stock and service
      restrictions
  - name: Ordering
    description: >
      ## Overview


      Ordering module allows you to submit orders to purchase products such as
      numbers or capacity. It is designed to accommodate use cases where you
      have your own customer portal in which you're selling numbers and capacity
      through Bandwidth.

      The Ordering module contains 10 methods that allow purchasing our
      services. To buy services, your account balance should have sufficient
      funds in your "Business Account". If you are using the API to buy services
      on behalf of your end users, it's recommended to configure auto-refill of
      funds on your account. This can be done on our portal under Payment
      Settings.


      A typical API call flow for a purchase would include the following steps:

      1. createCart will return a cartIdentifier (listCart as well if you’ve
      already got an existing cart)


      2. To buy numbers, you can either:
        * Get the associated didGroupId for a country/area code from listDidGroup method (Inventory module), and add a certain quantity of DIDs (didCartItem) from a didGroupId to the CartIdentifier using addToCart
        * Provide a list of telephone numbers you've searched and found in the Bandwidth inventory, for sale.

      3. Check your funds with accountBalance


      4. Make sure that the cart value (setup100 + monthly100 will be charged)
      is not higher than your account Balance. If not, add funds via our portal.


      5. Re-iterate the last 3 operations until you wish to check-out your cart
      using checkoutCart. Once checkoutCart method is called on a cart, an
      associated order will be created.


      6. Use the listOrder method to retrieve your orders and their status
      (carts can lead to 1 or multiple order(s)). When running the checkoutCart
      operation, the response contains a list of productCheckout elements. These
      elements give you an orderReference for each product type contained in
      your cart, which can be used as a filter for the listDid operation
  - name: Service Activation
    description: >
      Service activation module contains a list of operations that allow you to
      manage regulatory information on numbers and services for activation.
      Every country has specific restrictions and activation requirements for
      different services. A number from a country which has regulation
      requirements will not be activated for voice services unless a set of
      validated address and end user details are associated with it.


      The main activation information that's needed are addresses and end user
      information, which we call "Local Address Requirements" or in short, LAR.


      LAR needs for a specific country and area code can be retrieved via
      [`/inventory/didGroup`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-and-Coverage/operation/listDidGroup)
      with associated filter parameters for a country and area code. In the
      response, you can see what type of an address is required and if proof
      document needs to be attached.


      Keep in mind that there can be more specific requirements for the country
      you're trying to activate voice services from. Please review our __[Guide
      to using our LAR
      API](https://support.voxbone.com/hc/en-us/articles/4402904174097)__ which
      provides detailed country-specific regulatory requirements


      Depending on the country and number type, a proof of address and/or proof
      of identity may be required. If this is the case, an address must be
      linked with one or both of these documents which will be verified by
      Bandwidth.

        - __Valid address__: this is an address that contains all the data requested by the local regulator. Our systems can automatically check the validity of an address:
            - Additional mandatory information can be required in certain countries or for certain number types. Please refer to our __[Guide to using our LAR API](https://support.voxbone.com/hc/en-us/articles/4402904174097)__ for more information.
            - A check is sometimes done on the zip code to verify that the number is in the same local area as the number

        - __Verified address__: this is an address which requires a proof of address and for which a Bandwidth employee will manually check that the documents that have been submitted are the expected ones (e.g. correct type of document, correct address, etc.). The verification process can take up to 2 working days. Accepted documents are usually:
            - A recurring utility bill with Company/Customer name and address which is not older than 6 months
            - A government or state provided ID like passport, driver’s license or a letter from the government verifying the customer’s address.

      In the most complex cases (e.g. Germany), your geographic DIDs will have
      to be linked to a valid and verified address and the address will have to
      be local to the DID’s area code. An example of a possible call flow to
      implement Local Address Requirements could be the following (based on
      geographic German DID:

        - [`listDidGroup` with the `didGroupId`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-and-Coverage/operation/listDidGroup) of the purchased number will show `proofRequired` = `true` and `addressType` = `LOCAL`
        - If you have an existing address, you may use [`isAddressValid`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-Activation/operation/isAddressValid) or directly try to [link it to the DID using `linkRegulationAddress`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-Activation/operation/linkRegulationAddress), an error message will be returned indicating if there is any missing data.
        - Because for Germany the `addressType` is `LOCAL`, you have to use [`listZipCodes`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-Activation/operation/listZipCodes) to make sure that a valid zip code is used for the number’s area code. Otherwise the linkRegulationAddress will return an error even if the address is verified.
        - If there is no existing address, use the [`createRegulationAddress`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-Activation/operation/createRegulationAddress). Note that depending on the country of the DID (`destinationCountryCodeA3`) and its type (`didType`), the required data will differ.
        - Upload a proof of address. There are two different methods to upload a proof of address. You can upload a proof of address for an existing address using [`uploadProofOfAddress`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-Activation/operation/uploadProofOfAddress) (only if the address is in status `REJECTED` or `NOT VERIFIED`), or you can specify the `proofOfAddress` field in the [`createRegulationAddress`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-Activation/operation/createRegulationAddress). The method will return an error if you try to upload an address proof for an address that is either `VERIFIED` or `VERIFICATION_NOT_REQUIRED` status.
        - You can use [`listRegulationAddress`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-Activation/operation/listRegulationAddress) to check the status of your address, if the status is `VERIFIED` or `VERIFICATION_NOT_REQUIRED`, then [`linkRegulationAddress`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-Activation/operation/linkRegulationAddress) can link the DID to the address and unblock the number.
        - An address can be unlinked from a DID by using the same [`linkRegulationAddress`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-Activation/operation/listRegulationAddress) method, and an unlinked address can be deleted by using [`deleteRegulationAddress`](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-Activation/operation/deleteRegulationAddress).
  - name: Inventory
    description: >-
      List, filter and retrieve information about numbers assigned to your
      account, or cancel them if needed.
  - name: Voice
    description: |
      ## Overview

        Manage voice interoperability between Bandwidth and your communications platform. You can connect our numbers to your platform via Voice URIs.

        After creation, Voice URIs can be linked to your numbers using the apply configuration method.

        Each uri can also have a backup uri, which will be used in a failover scenario where for some reason we weren't able to connect the call to the URI specified in the "uri" parameter. In this case, Bandwidth would blacklist the primary uri for 5 minutes and keep connecting incoming calls to numbers linked to this uri to the specified backup URI linked to the number recursively.
  - name: SMS
    description: >
      Using Bandwidth to build applications or deliver SMS for your VoxSMS
      enabled numbers has never been easier. Once you have your VoxSMS enabled
      numbers, you will need to create at least one SMS Link Group containing an
      SMS Link.


      An SMS Link is an entity that defines the direction of the SMS connection,
      the protocol type, and the connection details. SMS Link Group is simply an
      entity that contains one or several SMS Links.


      You will also need to enable outbound SMS and link your DID to an SMS Link
      Group from the Number Configuration section.


      __Sending / Receiving an SMS__:


      To be able to send or receive an SMS via Voxbone SMS API please use the
      [following guide](https://developers.voxbone.com/sms/).


      __IMPORTANT__:


      For outbound or bi-directional links, the only supported protocols are
      SMPP and REST JSON. For SMPP you can choose to set up your connection as
      SMPP (ESME) or SMPP (SMSC).

      - If you would like Bandwidth to connect to your equipment, then select
      SMPP (ESME).

      - If you are using your own SMPP server, then select SMPP (SMSC).


      For inbound links you need to choose the protocol (SMPP, SIP and SMTP) and
      the traffic direction (i.e. From Bandwidth).
  - name: Fax
    description: Manage Fax configuration
  - name: Capacity
    description: >
      ## Overview


      Capacity groups helps you manage and monitor channel usage across a group
      of numbers.

      If you have multiple data centres and/or contact centres that handles your
      inbound calls, you can use the API to create capacity groups for each,
      configure alert thresholds for each to get notified when your usage is
      reaching its limit.

      After creation, capacity groups can be assigned to numbers by using the
      Apply Configuration method.
  - name: Connectivity
    description: >-
      Retrieve details about Bandwidth's data centres and network interconnect
      for various services such as call termination, speech analytics, etc.
  - name: Number Configuration
    description: >-
      The Configuration module allows you to apply various configuration
      settings to the DID’s within your inventory. Please note that you will
      need to have certain features (eg. VoxOut International) enabled on your
      account before you are able to apply those settings to your DIDs.
  - name: Subscriptions
    description: >
      Because processing times may vary across all event types, Bandwidth
      recommends the use of subscriptions to receive notifications upon order
      completion, as opposed to polling the resource ID with GET requests until
      the desired state is returned.


      In order to get notified about event updates occurring on your account,
      you must configure a subscription for each eventType. Event notifications
      will be sent to the address that you provide when you configure a
      subscription.


      Each subscription is account-global and each eventType can have multiple
      subscriptions.
  - name: Move Phone Numbers
    description: >
      Handles the phone numbers move from Legacy Global Network to Universal
      Platform.


      The process involves following steps
       - Validate that all move conditions are satisfied
       - Create automatically the needed Requirement Package and Emergency Address
       - Move the phone number to the Universal Platform
       - Activate voice, emergency and messaging services

      As soon as the move is done, all inbound calls to your phone number will
      be routed as per the Voice Configuration Package settings on your
      Universal Platform account. Ongoing calls are not interrupted and will be
      accounted for by the platform on which they were started.


      Once the move is performed and during an agreed transition period,
      Outbound traffic will continue to be accepted on the Legacy Global Network
      as well as on the Universal Platform, allowing you for a smooth transition
      of your traffic from one network to another. 

      Note that during this transition period changes to the Emergency address
      will not be permitted on either platforms.


      If you want to fast forward to close the transition period sooner than the
      agreed timeline, you can confirm the move by using the completion
      endpoint.

      We recommend completing the move as early as possible.


      After the agreed period, the move operation will be completed
      automatically.


      To access these endpoints, your account needs to be enabled. Please
      contact your account manager to facilitate the activation process.
paths:
  /inventory/country:
    get:
      tags:
        - Service, Coverage, & Number Inventory
      summary: Search Coverage by Country
      description: Search Coverage by Country
      operationId: listCountry
      parameters:
        - name: countryCodeA3
          in: query
          description: >-
            The country code for the DID in its ISO 3166-1 alpha-3 format (e.g.
            'GBR' for United Kingdom, 'USA' for United States of America, 'BEL'
            for Belgium, and special code 'WLD' for iNum numbers).
          schema:
            type: string
        - name: didType
          in: query
          description: The type of DIDs (service) offered for the country.
          schema:
            type: string
            enum:
              - GEOGRAPHIC
              - TOLL_FREE
              - NATIONAL
              - MOBILE
              - INUM
              - SHARED_COST
              - SPECIAL
        - name: pageNumber
          in: query
          description: The page number, starting at 0.
          required: true
          schema:
            type: integer
            format: int32
          example: 0
        - name: pageSize
          in: query
          description: >-
            The page size (max number of entities that are displayed in the
            response).
          required: true
          schema:
            type: integer
            format: int32
          example: 20
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListCountryResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListCountryResponse'
    x-summary: Search for coverage by country
    x-description: >-
      Check country coverage by number type. __hasStates__ and
      __hasRegulationRequirement__ values for a country in the response is
      useful when creating addresses for service activation in the country. If
      __hasRegulationRequirement__ is `false`, numbers become activated upon
      ordering.
  /inventory/country/{countryCodeA3}:
    get:
      tags:
        - Service, Coverage, & Number Inventory
      summary: Get activation requirements and available area codes within a country
      description: Get activation requirements and available area codes within a country
      operationId: getCountry
      parameters:
        - name: countryCodeA3
          in: path
          description: The three letter identifier of the country.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListCountryResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListCountryResponse'
    x-summary: Get Country Details
    x-description: >-
      Allows you to display details for a country. Returns if the country has
      states and if the country has local address requirements (LAR)
  /inventory/country/{countryCodeA3}/state:
    get:
      tags:
        - Service, Coverage, & Number Inventory
      summary: Get Coverage by States in USA and Canada
      description: Get Coverage by States in USA and Canada
      operationId: listState
      parameters:
        - name: countryCodeA3
          in: path
          description: >-
            It indicates the country code of the country in its ISO 3166-1
            alpha-3 format. Note that only countryCodeA3 for countries that have
            states are valid values.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListStateResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListStateResponse'
    x-summary: Search for coverage by states (USA and Canada)
    x-description: >-
      Allows you to get the list of states for a country that has states such as
      USA and CAN.
  /inventory/didgroup:
    get:
      tags:
        - Service, Coverage, & Number Inventory
      summary: Search Global Number Inventory by City and Area Code
      description: >-
        Allows you to retrieve the list of numbers available to purchase, and
        DID group of the numbers. A DID group can be defined as the smallest set
        of DIDs which is usually DIDs that share the same city or area code
        attributes. It is a method which is useful to get pricing info on a DID
        and to get didGroupIds.


        When adding numbers to your cart (to purchase) you will need to request
        the didGroupId and quantity of.


        At present, you are able to see a list of numbers available (BETA).

        - The list of numbers in stock will not return unless you provide a
        Quantity in the query parameter.

        - If a user requests for consecutive numbers (true) without quantity
        error will return 'Please provide quantity'

        - If Quantity is not provided - you will be able to see how many numbers
        are in stock, just not the list of numbers unless you provide a Quantity
        in the query parameter.

        - Response can return a maximum of 5000 numbers
      operationId: listDidGroup
      parameters:
        - name: countryCodeA3
          in: query
          description: >-
            Indicates the country code of the DID group in its ISO 3166-1
            alpha-3 format (e.g. 'GBR' for United Kingdom, 'USA' for United
            States of America, 'BEL' for Belgium, etc.).
          required: true
          schema:
            type: string
        - name: didGroupIds
          in: query
          description: >-
            Can be used if you want information about specific DID groups. Note
            that you can specify multiple ids by repeating the query parameter.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: stateId
          in: query
          description: >-
            The numerical identifier for the didGroup's state. Please see the
            listState operation to retrieve a valid state identifier.
          schema:
            type: integer
            format: int32
        - name: cityNamePattern
          in: query
          description: >-
            A string pattern to be matched the city name. The entered string
            will be searched within any part of the city name.
          schema:
            type: string
        - name: rateCenter
          in: query
          description: >-
            The rate center can be defined as a zone (which can be equivalent to
            a city or the area of a city) e.g. the rate center of 'NEW YORK CITY
            ZONE 1' would be 'NWYRCYZN01'. The rate center is a notion usually
            used in north America.
          schema:
            type: string
        - name: areaCode
          in: query
          description: The area code of the DID group (e.g. '646').
          schema:
            type: string
        - name: didType
          in: query
          description: The type of DID.
          schema:
            type: string
            enum:
              - GEOGRAPHIC
              - TOLL_FREE
              - NATIONAL
              - MOBILE
              - INUM
              - SHARED_COST
              - SPECIAL
        - name: showEmpty
          in: query
          description: >-
            Set to true if you want to show the didGroups with no stock
            currently available.
          schema:
            type: string
        - name: featureIds
          in: query
          description: >-
            Can be used if you want to list DID groups that support certain
            features such as VoxSMS or VoxFAX. (eg. 6 for VoxFAX, 25 for VoxSMS,
            50 for Voice). Note that you can specify multiple features by
            repeating the query parameter.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: pageNumber
          in: query
          description: The page number, starting at 0.
          required: true
          schema:
            type: integer
            format: int32
          example: 0
        - name: pageSize
          in: query
          description: >-
            The page size (max number of entities that are displayed in the
            response).
          required: true
          schema:
            type: integer
            format: int32
          example: 20
        - schema:
            type: integer
          in: query
          name: quantity
          description: The quantity of numbers you want to return in your results
        - schema:
            type: boolean
          in: query
          name: consecutive
          description: >-
            Indicating if you want the numbers returned in your results to
            consecutive only, or not. (true/false)
        - name: digits
          in: query
          description: >-
            You can search a specific phone number in the Bandwidth inventory
            with a specific pattern e.g. 123.
          schema:
            type: string
            minLength: 2
            maxLength: 10
          example: 123
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListDidGroupResponse'
              example:
                didGroups:
                  - didGroupId: 1073
                    countryCodeA3: NLD
                    stateId: 23
                    didType: GEOGRAPHIC
                    cityName: AMSTERDAM
                    areaCode: '20'
                    rateCenter: Amsterdam
                    stock: 1791
                    setup100: 0
                    monthly100: 110
                    available: true
                    regulationRequirement:
                      addressType: LOCAL
                      proofRequired: false
                    features:
                      - featureId: 6
                        name: VoxFax
                        description: VoxFax
                      - featureId: 50
                        name: Voice
                        description: Voice
                      - featureId: 51
                        name: VoxOUT International
                        description: Used to build the coverage pages in the public website
                      - featureId: 5
                        name: T.38
                        description: T.38
                      - featureId: 29
                        name: VoxOUT Emergency
                        description: >-
                          Feature that allows the VoxDID to access emergency
                          services
                      - featureId: 52
                        name: VoxOUT National
                        description: Used to build the coverage pages in the public website
                    phoneNumbers:
                      - phoneNumber: '+31208908115'
                      - phoneNumber: '+31208908116'
                      - phoneNumber: '+31208908117'
                resultCount: 1
      x-internal: false
    x-summary: >-
      Get stock, pricing, activation requirements, available features and other
      details on numbers
    x-description: >-
      Allows you to retrieve the list of DID groups. A DID group can be defined
      as the smallest set of DIDs which is usually DIDs that share the same city
      or area code attributes. It is a method which is useful to get pricing
      info on a DID and to get didGroupIds which is a required parameter when
      placing a DID order.
  /inventory/country/{countryCodeA3}/restriction:
    get:
      tags:
        - Service, Coverage, & Number Inventory
      summary: List Service Restrictions by Country
      description: List Service Restrictions by Country.
      operationId: listRestriction
      parameters:
        - name: countryCodeA3
          in: path
          description: >-
            The country code for the DID in its ISO 3166-1 alpha-3 format (e.g.
            'GBR' for United Kingdom, 'USA' for United States of America, 'BEL'
            for Belgium, etc.).
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListRestrictionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListRestrictionResponse'
    x-summary: Get service restrictions by country
    x-description: >-
      Since every country is quite different when it comes to regulations, they
      may to have different and more specific requirements to activate a number.
      As it's challenging to translate all these everchanging constraints into a
      standard JSON format, we are serving this information in human-readable
      text. It's recommended to use them to display to your end users or on your
      portal so they know better what's required and what to expect.
      Restrictions with restrictionType LEGAL and PURCHASE are closely related
      to service activation.
  /inventory/zone:
    get:
      tags:
        - Service, Coverage, & Number Inventory
      summary: List channels by zone
      description: List channels by zone
      operationId: listZone
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListZoneResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListZoneResponse'
    x-summary: Get available zones for trunks
    x-description: Allows you to display all the zones currently configured in your account.
  /inventory/feature:
    get:
      tags:
        - Service, Coverage, & Number Inventory
      summary: List available communications features
      description: List available communications features
      operationId: listFeature
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListFeatureResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListFeatureResponse'
    x-summary: Get available features
    x-description: >-
      Allows you to retrieve the list of features (featureID, name and
      description) that DIDs can have such as VoxFAX or VoxSMS. This method will
      now also return Voice as a feature.
  /ordering/cart:
    get:
      tags:
        - Ordering
      summary: List and filter created carts
      description: List and filter created carts
      operationId: listCart
      parameters:
        - name: cartIdentifier
          in: query
          description: >-
            Identifies the cart and is returned by the createCart method or can
            be retrieved with the listCart method.
          schema:
            type: integer
            format: int32
        - name: reference
          in: query
          description: The reference of the cart.
          schema:
            type: string
        - name: pageNumber
          in: query
          description: The page number, starting at 0.
          required: true
          schema:
            type: integer
            format: int32
          example: 0
        - name: pageSize
          in: query
          description: >-
            The page size (max number of entities that are displayed in the
            response).
          required: true
          schema:
            type: integer
            format: int32
          example: 20
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListCartResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListCartResponse'
    put:
      tags:
        - Ordering
      summary: Create cart for new orders
      description: >-
        The creation of a cart depends on your own business logic, but you'll
        always need to create at least one cart to place an order
        (checkoutCart). You can place multiple orders per cart or you can create
        separate carts for each order. Note that different product types (DID,
        Capacity or prepaid credits) can be added into one single cart. You
        cannot add a didGroup and quantity, and a list of phoneNumbers of the
        same didGroup in the same cart.
      operationId: createCart
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCartRequest'
            examples: {}
        required: false
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/CreateCartResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCartResponse'
      x-codegen-request-body-name: body
    x-summary: Create or list carts for ordering
    x-description: >-
      Allows you to list your carts and retrieve their attributes
      (cartIdentifier, customerReference, description), and their content (list
      of products - orderProducts - that are currently in the cart).
  /ordering/cart/{cartIdentifier}/product/{orderProductId}:
    post:
      tags:
        - Ordering
      summary: Remove number(s) and product(s) from cart or change quantity
      description: >-
        Set quantity to 0 if you want to remove the product from the cart.


        If phoneNumbers exist in the cart - you will need to submit the E164 of
        the phoneNumber to remove the number(s). Quantity of an OrderProductId
        will not remove phoneNumbers, only a didGroup and quantity.
      operationId: removeFromCart
      parameters:
        - name: cartIdentifier
          in: path
          description: The identifier of the cart.
          required: true
          schema:
            type: integer
            format: int32
        - name: orderProductId
          in: path
          description: The identifier of the product.
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/RemoveQuantityFromCartRequest'
                - $ref: '#/components/schemas/RemovePhoneNumbersFromCartRequest'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/RemoveFromCartResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/RemoveFromCartResponse'
      x-codegen-request-body-name: body
    x-summary: Manage product quantities in existing cart
    x-description: Remove a product from your cart, or change the ordered quantity.
  /ordering/cart/{cartIdentifier}:
    get:
      tags:
        - Ordering
      summary: Get a specific cart by id
      description: Get a specific cart by id
      operationId: getCart
      parameters:
        - name: cartIdentifier
          in: path
          description: >-
            Identifies the cart and is returned by the createCart method or can
            be retrieved with the listCart method.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListCartResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListCartResponse'
    delete:
      tags:
        - Ordering
      summary: Destroy a cart and all its contents
      description: Destroy a cart and all its contents
      operationId: deleteCart
      parameters:
        - name: cartIdentifier
          in: path
          description: The identifier of the cart.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/DeleteCartResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteCartResponse'
    x-summary: Get, update or delete carts
    x-description: >-
      Allows you to retrieve your cart attributes (cartIdentifier,
      customerReference, description) and its content (list of products -
      orderProducts - that are currently in the cart).
  /ordering/cart/{cartIdentifier}/product:
    post:
      tags:
        - Ordering
      summary: Add Numbers and products to cart
      description: >-
        Only one product can be added per addToCart request. The system will
        automatically create a new orderProductId (or add the items to an
        existing one) for the items added to your cart. You can retrieve the
        orderProductId with the listCart method. When you order capacity you
        should update your capacity forecast (in the portal). The delivery of
        capacity is not in real-time and requires validation from our operation
        team.


        When adding numbers to your cart (to purchase) you will need to either:

        - Request the didGroupId and quantity of.

        - Request the phoneNumbers to place in the cart via the phoneNumbers
        object.


        Numbers selected (not quantity and didGroup) will remain in cart for a
        maximum of 10 minutes, holding. No other customer will be able to see
        the number(s) you are holding in cart.

        You cannot add a didGroup and quantity, and a list of phoneNumbers of
        the same didGroup in the same cart.
      operationId: addToCart
      parameters:
        - name: cartIdentifier
          in: path
          description: >-
            Identifies the cart and is returned by the createCart method or can
            be retrieved with the listCart method.
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/AddCreditPackageToCartRequest'
                - $ref: '#/components/schemas/AddCapacityToCartRequest'
                - $ref: '#/components/schemas/AddDidToCartRequest'
                - $ref: '#/components/schemas/AddPhoneNumbersToCartRequest'
        required: false
        description: ''
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddToCartResponse'
      x-codegen-request-body-name: body
    x-summary: Add numbers and channels into cart
    x-description: >-
      Allows you to add items (orderProducts) to a specific cart before checking
      out the cart. Different product types (DID, CAPACITY or CREDIT_PACKAGE)
      can be added into one single cart.
  /ordering/accountbalance:
    get:
      tags:
        - Ordering
      summary: Get account balance
      description: Get account balance
      operationId: accountBalance
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/AccountBalanceResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/AccountBalanceResponse'
    x-summary: Retrieve information about your account balance
    x-description: >-
      You may need to check your account balance before checking out your carts.
      This is not mandatory, but checking out a cart with an empty balance will
      return an error. Note that you can set up a threshold for automatic
      refills of your business account. This threshold is configurable both on
      the web portal and the API. We recommend that this automatic refill
      parameter is set to true, especially when using the API for ordering.
  /inventory/creditpackage:
    get:
      tags:
        - Ordering
      summary: List Top-Up Credit Package Options
      description: List Top-Up Credit Package Options
      operationId: listCreditPackage
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListCreditPackageResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListCreditPackageResponse'
    x-summary: List Available Top-Up Credit Packages for Prepaid Services
    x-description: >-
      This method is used to retrieve the list of packages that are available
      for prepaid credits top-ups (e.g. $100 Prepaid Credits package which shows
      a value multiplied by 100 as Price100=10000).
  /ordering/cart/{cartIdentifier}/checkout:
    get:
      tags:
        - Ordering
      summary: Checkout Cart
      description: >-
        Allows you to checkout a cart and place an order for all the products
        contained in the cart. You can then retrieve your orders using the
        listOrder method.
      operationId: checkoutCart
      parameters:
        - name: cartIdentifier
          in: path
          description: >-
            The identifier of your cart which is formed of a fixed string such
            as 'apiv3:60677:' and an ID which is incremented each time a new
            cart is created.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/CheckoutCartResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutCartResponse'
    x-summary: Checkout Cart to Buy numbers and channels
    x-description: >-
      Allows you to checkout a cart and place an order for all the products
      contained in the cart. You can then retrieve your orders using the
      listOrder method.
  /ordering/order:
    get:
      tags:
        - Ordering
      summary: List and filter placed orders
      description: 'List and filter placed orders. '
      operationId: listOrder
      parameters:
        - name: reference
          in: query
          description: The order reference.
          schema:
            type: string
        - name: status
          in: query
          description: The status of the order.
          schema:
            type: string
            enum:
              - CREATED
              - CONFIRMED
              - FULFILLED
              - CANCELED
              - CANCELED_PAYMENT
        - name: dateFrom
          in: query
          description: >-
            The date from which you want to filter your listed orders based on
            the timestamp for the order's creation date (dateAdded) in the
            format YYYY-MM-DD HH:MM:SS
          schema:
            type: string
        - name: dateTo
          in: query
          description: >-
            The date until which you want to filter your listed orders based on
            the timestamp for the cart's creation date (dateAdded) in the format
            YYYY-MM-DD HH:MM:SS.
          schema:
            type: string
        - name: pageNumber
          in: query
          description: The page number, starting at 0.
          required: true
          schema:
            type: integer
            format: int32
          example: 0
        - name: pageSize
          in: query
          description: >-
            The page size (max number of entities that are displayed in the
            response).
          required: true
          schema:
            type: integer
            format: int32
          example: 20
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListOrderResponse'
              examples: {}
            application/json:
              schema:
                $ref: '#/components/schemas/ListOrderResponse'
    x-summary: List placed orders
    x-description: >-
      Allows you to get a list of your orders (after a cart has been checked
      out) and their status.
  /regulation/address:
    get:
      tags:
        - Service Activation
      summary: List already created addresses
      description: >-
        Allows you to view addresses already created and their current status.
        You can use these addresses to link to DIDs to satisfy LAR requirements.
      operationId: listRegulationAddress
      parameters:
        - name: regulationAddressId
          in: query
          description: >-
            This is the ID of the regulation address which is returned by
            createRegulationAddress.
          schema:
            type: integer
            format: int32
        - name: companyName
          in: query
          description: Name of the company.
          schema:
            type: string
        - name: firstName
          in: query
          description: First name of the customer.
          schema:
            type: string
        - name: lastName
          in: query
          description: Last name of the customer.
          schema:
            type: string
        - name: countryCodeA3
          in: query
          description: The three letter identifier for the address's country.
          schema:
            type: string
        - name: city
          in: query
          description: The city for the address.
          schema:
            type: string
        - name: zipCode
          in: query
          description: The zip code for the address.
          schema:
            type: string
        - name: streetName
          in: query
          description: The street for the address.
          schema:
            type: string
        - name: buildingNumber
          in: query
          description: The building number for the address.
          schema:
            type: string
        - name: customerReference
          in: query
          description: The reference for the customer.
          schema:
            type: string
        - name: status
          in: query
          description: The status of the regulation address.
          schema:
            type: string
            enum:
              - NOT_VERIFIED
              - VERIFIED
              - VERIFICATION_REQUESTED
              - REJECTED
              - VERIFICATION_NOT_REQUIRED
        - name: linked
          in: query
          description: Flag that specifies if the address has been linked to a DID.
          schema:
            type: boolean
        - name: pageNumber
          in: query
          description: The page number, starting at 0.
          required: true
          schema:
            type: integer
            format: int32
          example: 0
        - name: pageSize
          in: query
          description: >-
            The page size (max number of entities that are displayed in the
            response).
          required: true
          schema:
            type: integer
            format: int32
          example: 20
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListRegulationAddressResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListRegulationAddressResponse'
    put:
      tags:
        - Service Activation
      summary: Create a new address
      description: >
        Allows you to create a new end user's address that can be linked to

        DIDs where a local address requirement (LAR) applies. The method allows
        the

        attachment of a proof of address.

        If a proof of address is attached, the system automatically

        triggers a request for verification so that Bandwidth can manually
        verify

        the address elements. The media type to be used is multipart/form-data.


        ### Request Body Examples

        The request body examples below demonstrate how to create an address
        with both proofs attached in a single request wherever required. You can
        copy and paste this on the right column while testing in the
        console/Postman.


        #### Create a Business Address without any proof document

        Below is an example of a business address where no proof of identity or
        address is required.

        ```javascript

        --XXX

        Content-ID: createRegulationAddressRequest

        Content-Type: application/json


        {
           "customerReference":"Bandwidth - GBR",
           "didType":"GEOGRAPHIC",
           "salutation":"COMPANY",
           "companyName":"Bandwidth",
           "buildingNumber":"42",
           "streetName":"Folgate Street",
           "zipCode":"E1 6BT",
           "city":"London",
           "countryCodeA3":"GBR",
           "destinationCountryCodeA3":"GBR"
        }

        --XXX--

        ```

        #### Create a Business Address with Additional Information

        Below is an example of a business address where no proof of identity or
        address is required but additional information must be supplied in extra
        fields.

        ```javascript

        --XXX

        Content-ID: createRegulationAddressRequest

        Content-Type: application/json


        {
           "customerReference":"Bandwidth - DNK",
           "didType":"GEOGRAPHIC",
           "salutation":"COMPANY",
           "companyName":"Bandwidth",
           "buildingNumber":"24",
           "streetName":"Toldbodgade",
           "zipCode":"1253",
           "city":"København",
           "countryCodeA3":"DNK",
           "destinationCountryCodeA3":"DNK",
           "extraFields":{
              "Street Code":"2100",
              "Municipality Code":"101"
           }
        }

        --XXX--

        ```

        #### Create a Business Address with Additional Information and Address
        Proof Document for Norway

        Below is an example of a business address where proof of address is
        required and additional information must be supplied in extra fields for
        Norway.

        ```javascript

        --XXX

        Content-ID: createRegulationAddressRequest

        Content-Type: application/json


        {
           "customerReference":"Bandwidth - NOR",
           "didType":"GEOGRAPHIC",
           "salutation":"COMPANY",
           "companyName":"Bandwidth",
           "buildingNumber":"24",
           "streetName":"Karl Johans Gate",
           "zipCode":"0010",
           "city":"Oslo",
           "countryCodeA3":"NOR",
           "destinationCountryCodeA3":"NOR",
           "extraFields":{
              "Organization number":"10",
              "Entrance":"West",
              "Street-Code":"1234",
              "Floor":"2",
              "Municipality number":"0301",
              "Directory service":"YES"
           }
        }

        --XXX--


        --XXX

        Content-ID: proofOfAddress

        Content-Type: application/octet-stream

        Content-Disposition: filename=Proof_of_address.txt


        Proof document encoded content


        --XXX--

        ```

        #### Create a Business Address with Address Proof Document

        Below is an example where an address proof document is required but no
        proof of identity.

        ```javascript

        --XXX

        Content-ID: createRegulationAddressRequest

        Content-Type: application/json


        {
           "customerReference":"Bandwidth - GBR",
           "didType":"GEOGRAPHIC",
           "salutation":"COMPANY",
           "companyName":"Bandwidth",
           "buildingNumber":"42",
           "streetName":"Folgate Street",
           "zipCode":"E1 6BT",
           "city":"London",
           "countryCodeA3":"GBR",
           "destinationCountryCodeA3":"GBR"
        }

        --XXX

        Content-ID: proofOfAddress

        Content-Type: application/octet-stream

        Content-Disposition: filename=Proof_of_address.txt


        Proof document encoded content


        --XXX--

        ```

        #### Create a Business Address with Proof of Address, Proof of Identity
        and Identity Document Proof

        Below is an example where a proof of address document, proof of identity
        document and identity document proof is required.

        ```javascript

        --XXX

        Content-ID: createRegulationAddressRequest

        Content-Type: application/json


        {
           "customerReference":"Bandwidth - FRA",
           "didType":"GEOGRAPHIC",
           "salutation":"COMPANY",
           "companyName":"Bandwidth",
           "buildingNumber":"108",
           "streetName":"Rue Saint-Lazare",
           "zipCode":"75008",
           "city":"Paris",
           "countryCodeA3":"FRA",
           "destinationCountryCodeA3":"FRA",
           "identityDocumentProof":{
              "nationality":"French",
              "identityDocumentType":"PASSPORT",
              "identityDocumentNumber":"3071931"
           }
        }

        --XXX--


        --XXX

        Content-ID: proofOfIdentityDocument

        Content-Type: application/octet-stream

        Content-Transfer-Encoding: binary

        Content-Disposition: file-data; name="proofOfIdentityDocument";
        filename=passport_scan.pdf


        Identity document proof encoded content


        --XXX--


        --XXX

        Content-ID: proofOfAddress

        Content-Type: application/octet-stream

        Content-Disposition: filename=Proof_of_address.txt


        Proof document encoded content


        --XXX--

        ```

        More information is available in our __[Guide to using our LAR
        API](https://support.voxbone.com/hc/en-us/articles/4402904174097)__.
      operationId: createRegulationAddress
      requestBody:
        description: Request parameters
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateRegulationAddressRequest'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/CreateRegulationAddressResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRegulationAddressResponse'
      x-codegen-request-body-name: createRegulationAddressRequest
    x-summary: Create or list addresses
    x-description: >
      Create and list Local Address Requirement documents for number activation.
      You need to provide required information specified in the didGroup with
      valid information. Once all required information is completed and your
      Local Address Requirement document is validated, you can proceed with
      [Linking
      Numbers](https://dev.bandwidth.com/apis/legacy-apis/global/#tag/Service-Activation/operation/linkRegulationAddress)
      to the created address for activation.


      In some cases you will be asked to provide some additional information in
      order to create an address, in the shape of “extra fields” to be included
      in the address creation request. Addresses may also require a proof of
      address and/or a proof of identity. Where a proof of identity is required,
      along with the document you must provide information relating to the
      identity document proof including the type of document, the id of the
      document and sometimes the date and issuing authority.


      Please refer to our __[Guide to using our LAR
      API](https://support.voxbone.com/hc/en-us/articles/4402904174097)__ for
      more detailed information on when this is required.
  /regulation/address/{regulationAddressId}:
    get:
      tags:
        - Service Activation
      summary: Get a specific address with id
      description: Get a specific address with id
      operationId: getRegulationAddress
      parameters:
        - name: regulationAddressId
          in: path
          description: The ID of the regulation address.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListRegulationAddressResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListRegulationAddressResponse'
    delete:
      tags:
        - Service Activation
      summary: Delete an address
      description: Delete an address
      operationId: deleteRegulationAddress
      parameters:
        - name: regulationAddressId
          in: path
          description: >-
            The ID of the regulation address that you want to delete. You can
            only delete one address per request.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/DeleteRegulationAddressResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteRegulationAddressResponse'
    x-summary: Get or Delete an address
    x-description: >-
      Allows you to view existing addresses and remove them if they are not
      required.
  /regulation/address/{regulationAddressId}/proof:
    put:
      tags:
        - Service Activation
      summary: Update proof of address
      description: >-
        This can be used if you want to use an existing address which didn't
        require verification for the DIDs it is linked to, or for which the
        proof of address was rejected. After an uploadProofOfAddress request the
        requestAddressVerification method must be called.
      operationId: uploadProofOfAddress
      parameters:
        - name: regulationAddressId
          in: path
          description: The identifier of the regulation address.
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          multipart/form-data:
            schema:
              properties:
                proofOfAddress:
                  type: array
                  description: >-
                    List of documents - the first one will be set as proof of
                    address.
                  example:
                    - 'Content-ID: proofOfAddress'
                    - 'Content-Type: text/plain'
                    - 'Content-Disposition: filename=Proof.txt'
                    - This is a proof
                  items:
                    type: string
                    format: binary
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/UploadProofOfAddressResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/UploadProofOfAddressResponse'
    x-summary: Update proof documents for an address
    x-description: >
      Allows you to separately upload a proof of address after the address is
      created if the proof was rejected or not provided during initial address
      creation. The upload for proof of address is done automatically during
      address creation when a document is specified and may be mandatory
      depending on the country and number type.
  /regulation/identitydocument:
    put:
      tags:
        - Service Activation
      summary: Update identity proof document
      description: Update identity proof document
      operationId: createProofOfIdentityDocument
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateProofOfIdRequest'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/CreateProofOfIdResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/CreateProofOfIdResponse'
      x-codegen-request-body-name: body
    x-summary: Update identity proof documents for an address
    x-description: >
      Allows you to separately upload a identity proof document and information
      after the address is created if the proof was rejected or not provided
      during initial address creation. The upload for identity proof is done
      automatically during address creation when a document is specified and may
      be mandatory depending on the country and number type.
  /regulation/zipcode:
    get:
      tags:
        - Service Activation
      summary: List accepted postal codes for address creation in a country
      description: >-
        For some DID Groups with an address=LOCAL requirement, the ListZipcodes
        returns no items. This indicates that the regulation is not strict about
        the Zipcode matching the local address and hence any valid zip code can
        be entered (it will not be checked).
      operationId: listZipCodes
      parameters:
        - name: areaCode
          in: query
          description: >-
            This is the area code of the DID which can be retrieved using the
            listDidGroup or listDid methods. Since an area code can be the same
            for two different countries, the country should also be specified.
            If the whole list for a given country is needed, then you can leave
            the area code unspecified.
          schema:
            type: string
        - name: countryCodeA3
          in: query
          description: >-
            This is the country code A3 of the country for which the list of zip
            codes and cities is needed. In practice, the area code will also be
            needed to identify specifically which cities and zip codes are a
            match.
          required: true
          schema:
            type: string
        - name: pageNumber
          in: query
          description: The page number, starting at 0.
          required: true
          schema:
            type: integer
            format: int32
          example: 0
        - name: pageSize
          in: query
          description: >-
            The page size (max number of entities that are displayed in the
            response).
          required: true
          schema:
            type: integer
            format: int32
          example: 20
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListZipCodesResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListZipCodesResponse'
    x-summary: List accepted postal codes
    x-description: >-
      Allows you to get the matching cities and zip codes for a certain country
      or DID's area code. This is an absolute requirement for certain countries
      where the city and zip code will have to match the DID's area code for
      instance in Germany (DEU), Croatia (HRV), South Korea (KOR), etc…
  /regulation/address/{regulationAddressId}/validation:
    get:
      tags:
        - Service Activation
      summary: Check if address is valid to activate numbers
      description: Check if address is valid to activate numbers
      operationId: isAddressValid
      parameters:
        - name: regulationAddressId
          in: path
          description: The ID of the regulation address.
          required: true
          schema:
            type: integer
            format: int32
        - name: didType
          in: query
          description: The did type for the destination did.
          required: true
          schema:
            type: string
            enum:
              - GEOGRAPHIC
              - TOLL_FREE
              - NATIONAL
              - MOBILE
              - INUM
              - SHARED_COST
              - SPECIAL
        - name: destinationCountryCodeA3
          in: query
          description: The three letter identifier for country of the destination did.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/IsAddressValidResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/IsAddressValidResponse'
    x-summary: Check address validity for activation
    x-description: >-
      Allows to check the validity of an address against a certain DID's type
      and country. This can be useful if you have originally created an address
      for a given DID and you wish to reuse that same address for another DID.
  /regulation/address/{regulationAddressId}/link:
    post:
      tags:
        - Service Activation
      summary: Link numbers to a Local Address Requirement
      description: Link numbers to a Local Address Requirement
      operationId: linkRegulationAddress
      parameters:
        - name: regulationAddressId
          in: path
          description: The ID of the regulation address.
          required: true
          schema:
            minimum: 1
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                didIds:
                  type: array
                  description: >-
                    list of numbers to be linked to the address. An array of
                    didId values of the numbers to be assigned to this address
                    for activation.
                  items:
                    minimum: 1
                    type: integer
              x-example:
                didIds:
                  - 123456
                  - 78901
        required: true
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/LinkRegulationAddressResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/LinkRegulationAddressResponse'
      x-codegen-request-body-name: body
    x-summary: Link numbers to a Local Address Requirement document for activation
    x-description: >-
      Allows you to link one or multiple DIDs to a regulation address. In order
      for the number to be activated, the LAR document linked must be validated.
  /regulation/address/{regulationAddressId}/verification:
    put:
      tags:
        - Service Activation
      summary: Request verification of changes to an address
      description: Request verification of changes to an address
      operationId: requestAddressVerification
      parameters:
        - name: regulationAddressId
          in: path
          description: The identifier of the regulation address.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/RequestAddressVerificationResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/RequestAddressVerificationResponse'
    x-summary: Request verification of changes to an address
    x-description: >-
      Can be used if you want to use an existing address which didn't require
      verification for the DIDs it is linked to, or for which the proof of
      address was rejected. You need to upload a proof of address and then
      request address verification if you wish to link the address to DIDs
      requiring a proof of address. Calling this method for addresses that are
      in VERIFICATION_NOT_REQUIRED status will return an error.
  /regulation/address/unlink:
    post:
      tags:
        - Service Activation
      summary: Remove address information from numbers
      description: Remove address information from numbers
      operationId: unlinkRegulationAddress
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                didIds:
                  type: array
                  description: >-
                    list of numbers to be unlinked from their local address
                    requirement (LAR) documents.
                  items:
                    minimum: 1
                    type: integer
              x-example:
                didIds:
                  - 123456
                  - 78901
        required: true
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/LinkRegulationAddressResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/LinkRegulationAddressResponse'
      x-codegen-request-body-name: body
    x-summary: Remove regulatory information from numbers
    x-description: >-
      When the end user of one of your numbers change, or there is any change
      required on the existing regulatory information due to any change in
      address, end user information, etc. you may need to change the linked
      address from your numbers. This method allows you to free one or a list of
      numbers from their linked address/end user.
  /ordering/cancel:
    post:
      tags:
        - Inventory
      summary: Cancel number subscription
      description: Cancel number subscription
      operationId: cancelDids
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/CancelDidsRequest'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/CancelDidsResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/CancelDidsResponse'
      x-codegen-request-body-name: body
    x-summary: Remove numbers from your inventory
    x-description: >-
      Allows you to cancel one or multiple DIDs from your account. Each DID has
      a 3 month retention period from purchase so please check the date you are
      available to cancel the DID from first.
  /inventory/did:
    get:
      tags:
        - Inventory
      summary: List number inventory
      description: List number inventory
      operationId: listDid
      parameters:
        - name: didIds
          in: query
          description: >-
            Can be specified to get detailed info about the corresponding DIDs.
            Note that you can specify multiple ids by repeating the query
            parameter.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: didGroupIds
          in: query
          description: >-
            Can be specified to filter your DIDs based on their location or any
            other info contained in the DID Group. Note that you can specify
            multiple ids by repeating the query parameter.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: e164Pattern
          in: query
          description: >-
            You can search a specific DID in your inventory with a specific
            pattern e.g. %25123 (number contains 123). %-sign needs to be
            escaped using %25
          schema:
            type: string
        - name: regulationAddressId
          in: query
          description: >-
            This is an ID that you get when creating a regulation address. The
            DIDs can be filtered by the regulation address on which they are
            linked.
          schema:
            type: integer
            format: int32
        - name: voiceUriId
          in: query
          description: The identifier of the voice uri the numbers are mapped to.
          schema:
            type: integer
            format: int32
        - name: faxUriId
          in: query
          description: The identifier of the fax uri the numbers are mapped to.
          schema:
            type: integer
            format: int32
        - name: smsLinkGroupId
          in: query
          description: The identifier of the sms link group the numbers are mapped to.
          schema:
            type: integer
            format: int32
        - name: needAddressLink
          in: query
          description: >-
            A boolean flag indicating if the numbers need to be linked to an
            address for regulation purposes.
          schema:
            type: boolean
        - name: serviceType
          in: query
          description: >-
            This can be used if you want to filter by service type. The possible
            values are 'VOX800' for toll-free numbers or 'VOXDID' for geographic
            or national numbers.
          schema:
            type: string
            enum:
              - VOX800
              - VOXDID
        - name: countryCodeA3
          in: query
          description: >-
            The country code for the DID in its ISO 3166-1 alpha-3 format (e.g.
            'GBR' for United Kingdom, 'USA' for United States of America, 'BEL'
            for Belgium, etc.).
          schema:
            type: string
        - name: orderReference
          in: query
          description: >-
            Indicates which purchase order the DID was in. You can get a list of
            orders with the order details (date and status) in the ordering
            module using the listOrder method.
          schema:
            type: string
        - name: portingReference
          in: query
          description: The reference for the numbers' porting request.
          schema:
            type: string
        - name: deliveryId
          in: query
          description: The identifier of the pop the numbers are mapped to.
          schema:
            type: integer
            format: int32
        - name: smsOutbound
          in: query
          description: >-
            Allows you to filter your DIDs that you have enabled for outbound
            SMS (the feature is only available for accounts that are registered
            for the SMS outbound service).
          schema:
            type: boolean
        - name: webRtcEnabled
          in: query
          description: >-
            Indicates whether the DID is enabled for WebRTC use (the feature is
            only available for accounts that are registered for the WebRTC
            service).
          schema:
            type: boolean
        - name: voxoutNationalEnabled
          in: query
          description: >-
            Indicates whether the DID is enabled for voxoutNational use (the
            feature is only available for accounts that are registered for the
            voxoutNational service).
          schema:
            type: boolean
        - name: voxoutInternationalEnabled
          in: query
          description: >-
            Indicates whether the DID is enabled for voxoutInternational use
            (the feature is only available for accounts that are registered for
            the voxoutInternational service).
          schema:
            type: boolean
        - name: pageNumber
          in: query
          description: The page number, starting at 0.
          required: true
          schema:
            type: number
            format: int32
          example: 0
        - name: pageSize
          in: query
          description: >-
            The page size (max number of entities that are displayed in the
            response).
          required: true
          schema:
            type: integer
            format: int32
          example: 20
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListDidResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListDidResponse'
    x-summary: Search for numbers in your account
    x-description: >-
      This method allows you to search for DIDs within your own inventory. This
      method can be useful to get the current configuration of one or multiple
      DIDs.
  /configuration/voiceuri:
    get:
      tags:
        - Voice
      summary: List Voice URIs
      description: List Voice URIs
      operationId: listVoiceUri
      parameters:
        - name: voiceUriId
          in: query
          description: The identifier of the voice uri.
          schema:
            type: integer
            format: int32
        - name: backupUriId
          in: query
          description: The identifier of the voice uri acting as backup.
          schema:
            type: integer
            format: int32
        - name: voiceUriProtocol
          in: query
          description: >-
            The protocol to use with this voice uri. Supported protocols are
            `SIP` and `TEL`.
          schema:
            type: string
            enum:
              - SIP
              - TEL
        - name: uri
          in: query
          description: The actual uri where the call will be delivered.
          schema:
            type: string
        - name: description
          in: query
          description: A human-readable description of this uri.
          schema:
            type: string
        - name: pageNumber
          in: query
          description: The page number, starting at 0.
          required: true
          schema:
            type: integer
            format: int32
          example: 0
        - name: pageSize
          in: query
          description: >-
            The page size (max number of entities that are displayed in the
            response).
          required: true
          schema:
            type: integer
            format: int32
          example: 20
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListVoiceUriResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListVoiceUriResponse'
    put:
      tags:
        - Voice
      summary: Create a new Voice URI
      description: >-
        Allows you to either create a new Voice URI or update an existing one.
        If an existing voiceUriId is passed in the request, then an update will
        be performed. If no voiceUriId is passed, then a new Voice URI is
        created.
      operationId: saveVoiceUri
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveVoiceUriRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/SaveVoiceUriRequest'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/SaveVoiceUriResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/SaveVoiceUriResponse'
      x-codegen-request-body-name: body
    x-summary: Create or List Voice URIs
    x-description: >-
      Request a list of previously created URIs. You can use voiceUriId in the
      response to link a URI of choice with a DID from your inventory
  /configuration/voiceuri/{voiceUriId}:
    get:
      tags:
        - Voice
      summary: Get a specific Voice URI with id
      description: Get a specific Voice URI with id
      operationId: getVoiceUri
      parameters:
        - name: voiceUriId
          in: path
          description: The identifier of the Voice URI.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListVoiceUriResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListVoiceUriResponse'
    put:
      tags:
        - Voice
      summary: Change Voice URI
      description: Change Voice URI
      operationId: updateVoiceUri
      parameters:
        - name: voiceUriId
          in: path
          description: The identifier of the voice uri.
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveVoiceUriRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/SaveVoiceUriRequest'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/SaveVoiceUriResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/SaveVoiceUriResponse'
      x-codegen-request-body-name: body
    delete:
      tags:
        - Voice
      summary: Delete Voice URI
      description: Results in DIDs linked to the URI to be routed to nowhere.
      operationId: deleteVoiceUri
      parameters:
        - name: voiceUriId
          in: path
          description: >-
            Indicates the ID of one of your existing voice URIs which should be
            removed.
          required: true
          schema:
            type: integer
            format: int32
          example: 1234
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/DeleteVoiceUriResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteVoiceUriResponse'
    x-summary: Get, Update or Delete Voice URIs
    x-description: Get, update or delete previously created voice URIs.
  /configuration/smslink:
    get:
      tags:
        - SMS
      summary: List SMS Links
      description: List SMS Links
      operationId: listSmsLink
      parameters:
        - name: smsLinkId
          in: query
          description: The identifier of the sms link.
          schema:
            type: integer
            format: int32
        - name: groupId
          in: query
          description: >-
            This can be used to filter based on the SMS link group and get the
            list of your SMS links within that SMS link group.
          schema:
            type: integer
            format: int32
        - name: type
          in: query
          description: >-
            This can be used to filter based on the type (protocol) of SMS
            links: REST_JSON, SMPP_SMSC, SMPP_ESME, SOAP, SIP, SMTP.
          schema:
            type: string
            enum:
              - SMPP_ESME
              - SMPP_SMSC
              - SIP
              - SMTP
              - REST_JSON
        - name: direction
          in: query
          description: >-
            This can be used to filter your SMS links based on their direction:
            FROM_VOXBONE, TO_VOXBONE or BIDIRECTIONAL.
          schema:
            type: string
            enum:
              - TO_VOXBONE
              - FROM_VOXBONE
              - BIDIRECTIONAL
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListSmsLinkResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListSmsLinkResponse'
    put:
      tags:
        - SMS
      summary: Create new SMS Link
      description: Create new SMS Link
      operationId: saveSmsLink
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveSmsLinkRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/SaveSmsLinkRequest'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/SaveSmsLinkResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/SaveSmsLinkResponse'
      x-codegen-request-body-name: body
    x-summary: Create or List SMS Links
    x-description: >-
      The SMS Link is an important first step in building your VoxSMS
      applications. Configure your callback URLs and protocols used and list all
      SMS Links created to assign them to a mobile number.
  /configuration/smslink/{smsLinkId}:
    get:
      tags:
        - SMS
      summary: Get a specific SMS link with id
      description: Get a specific SMS link with id
      operationId: getSmsLink
      parameters:
        - name: smsLinkId
          in: path
          description: The identifier of the SMS Link
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListSmsLinkResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListSmsLinkResponse'
    put:
      tags:
        - SMS
      summary: Update an SMS link
      description: Update an SMS link
      operationId: updateSmsLink
      parameters:
        - name: smsLinkId
          in: path
          description: The identifier of the existing SMS Link
          required: true
          schema:
            type: integer
            format: int32
          example: 1234
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveSmsLinkRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/SaveSmsLinkRequest'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/SaveSmsLinkResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/SaveSmsLinkResponse'
      x-codegen-request-body-name: body
    delete:
      tags:
        - SMS
      summary: Delete an SMS link
      description: Delete an SMS link
      operationId: deleteSmsLink
      parameters:
        - name: smsLinkId
          in: path
          description: >-
            The ID of the SMS link that you wish to delete. Note that this
            operation can impact your service, make sure no DID will be impacted
            by this operation.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/DeleteSmsLinkResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteSmsLinkResponse'
    x-summary: Get, update or delete SMS Links
    x-description: >-
      You can change configuration for your callback URLs, direction and
      protocols used.
  /configuration/smslinkgroup:
    get:
      tags:
        - SMS
      summary: List SMS Link Groups
      description: >-
        Allows you to retrieve the list of your SMS Link Groups. The `id` of the
        SMS Link Group returned by this method will be needed to edit or delete
        that SMS Link Group.
      operationId: getSmsLinkGroups
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListSmsLinkGroupResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListSmsLinkGroupResponse'
    put:
      tags:
        - SMS
      summary: Create a new SMS Link Group or Update
      description: Create a new SMS Link Group or Update
      operationId: createSmsLinkGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveSmsLinkGroupRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/SaveSmsLinkGroupRequest'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/SaveSmsLinkGroupResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/SaveSmsLinkGroupResponse'
      x-codegen-request-body-name: body
    x-summary: Create or List SMS Link Groups
    x-description: >-
      For SMS traffic coming from Bandwidth to one of your DIDs, you need to
      link the DID to the SMS Link Group so that the traffic can be routed to
      the appropriate destination. If several links are contained in the SMS
      Link Group, the traffic will be load balanced according to the weight
      parameter defined in the links definition.
  /configuration/smslinkgroup/{smsLinkGroupId}:
    delete:
      tags:
        - SMS
      summary: Delete SMS Link Group
      description: Delete SMS Link Group
      operationId: deleteSmsLinkGroup
      parameters:
        - name: smsLinkGroupId
          in: path
          description: >-
            The ID of the SMS link group that you wish to delete. Note that this
            operation can impact your service, make sure no DID will be impacted
            by this operation.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/DeleteSmsLinkGroupResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteSmsLinkGroupResponse'
    x-summary: Delete SMS Links Groups
    x-description: Deletes all associated SMS links with the group
  /configuration/faxuri:
    get:
      tags:
        - Fax
      summary: List Fax URIs
      description: List Fax URIs
      operationId: listFaxUri
      parameters:
        - name: faxUriId
          in: query
          description: The identifier of the fax uri.
          schema:
            type: integer
            format: int32
        - name: deliveryMethod
          in: query
          description: >-
            This is the delivery method on which you want to filter your list of
            Fax URIs. The possible values are SMTP and HTTP_POST.
          schema:
            type: string
            enum:
              - SMTP
              - HTTP_POST
        - name: faxFileFormat
          in: query
          description: >-
            This is the file format on which you want to filter your list of Fax
            URIs. The possible values are Tiff and Pdf.
          schema:
            type: string
            enum:
              - Tiff
              - Pdf
        - name: uri
          in: query
          description: This is the URI on which you want to filter your list of Fax URIs.
          schema:
            type: string
        - name: csid
          in: query
          description: >-
            This to filter in/out the Fax URIs for which CSID (Called subscriber
            identification) is enabled.
          schema:
            type: string
        - name: pageNumber
          in: query
          description: The page number, starting at 0.
          required: true
          schema:
            type: integer
            format: int32
          example: 0
        - name: pageSize
          in: query
          description: >-
            The page size (max number of entities that are displayed in the
            response).
          required: true
          schema:
            type: integer
            format: int32
          example: 20
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListFaxUriResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListFaxUriResponse'
    put:
      tags:
        - Fax
      summary: Create a new Fax URI
      description: >-
        Allows you to either create a new Fax URI or update an existing one. If
        an existing faxUriId is passed in the request, then an update will be
        performed. If no faxUriId is passed, then a new Fax URI is created.
      operationId: saveFaxUri
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/SaveFaxUriRequest'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/SaveFaxUriResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/SaveFaxUriResponse'
      x-codegen-request-body-name: body
    x-summary: Create or list Fax URIs
    x-description: >-
      This method allows you to get the list of your Fax URIs and their details.
      The faxUriId returned by this method can be used to edit or delete
      faxURI’s using the appropriate methods
  /configuration/faxuri/{faxUriId}:
    get:
      tags:
        - Fax
      summary: Get specific Fax URI with id
      description: Get specific Fax URI with id
      operationId: getFaxUri
      parameters:
        - name: faxUriId
          in: path
          description: The identifier of the fax uri.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListFaxUriResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListFaxUriResponse'
    put:
      tags:
        - Fax
      summary: Update existing Fax URI
      description: Update existing Fax URI
      operationId: updateFaxUri
      parameters:
        - name: faxUriId
          in: path
          description: The identifier of the fax uri.
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/SaveFaxUriRequest'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/SaveFaxUriResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/SaveFaxUriResponse'
      x-codegen-request-body-name: body
    delete:
      tags:
        - Fax
      summary: Delete a Fax URI
      description: Delete a Fax URI
      operationId: deleteFaxUri
      parameters:
        - name: faxUriId
          in: path
          description: >-
            Indicates the ID of one of your existing Fax URIs which should be
            removed.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/DeleteFaxUriResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteFaxUriResponse'
    x-summary: Get, update or delete Fax URIs
    x-description: >-
      Manage your Fax URIs and their details. The faxUriId returned by this
      method can be used to edit or delete faxURI’s using the appropriate
      methods.
  /configuration/didConfiguration:
    post:
      tags:
        - Number Configuration
      summary: Apply set of configurations to a DID
      description: Apply set of configurations to a DID
      operationId: applyDidConfiguration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleDidConfigurationRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/SingleDidConfigurationRequest'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/SingleDidConfigurationResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/SingleDidConfigurationResponse'
      x-codegen-request-body-name: body
    x-summary: Single Number Configuration
    x-description: >-
      Configure a single DID with certain settings including activation of
      services like VoxOut International, VoxOut National and more. To remove a
      configuration such as unlinking a Voice URI or an SMS Link from a number,
      set the property to `null` in your request. Only the configuration
      parameters present in your request will be taken into account, the
      remaining configuration remains unchanged.
  /configuration/bulk:
    post:
      tags:
        - Number Configuration
      summary: Apply set of configurations to one or many DIDs
      description: Apply set of configurations to one or many DIDs
      operationId: applyBulkConfiguration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkDidConfigurationRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/BulkDidConfigurationRequest'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/BulkDidConfigurationResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDidConfigurationResponse'
              example:
                success: 1
                error: 0
                partial: 6
                total: 7
                results:
                  - didId: 928818
                    status: PARTIAL
                    updatedConfigurations:
                      - VOICE_URI
                      - CAPACITY_GROUP
                      - SIP_DELIVERY
                      - RING_BACK
                      - CHANNELS_LIMIT
                      - VOXOUT_NATIONAL
                    partialConfigurations:
                      - TRUNK
                      - SMS_OUTBOUND_ENABLED
                    messages:
                      - configuration: TRUNK
                        description: Trunk is invalid or zoneProduct is not supported
                      - configuration: SMS_OUTBOUND_ENABLED
                        description: Sms is not supported
                  - didId: 3644928
                    status: PARTIAL
                    updatedConfigurations:
                      - VOICE_URI
                      - CAPACITY_GROUP
                      - TRUNK
                      - SIP_DELIVERY
                      - RING_BACK
                      - CHANNELS_LIMIT
                      - VOXOUT_NATIONAL
                    partialConfigurations:
                      - SMS_OUTBOUND_ENABLED
                    messages:
                      - configuration: SMS_OUTBOUND_ENABLED
                        description: Sms is not supported
                  - didId: 3644929
                    status: PARTIAL
                    updatedConfigurations:
                      - VOICE_URI
                      - CAPACITY_GROUP
                      - TRUNK
                      - SIP_DELIVERY
                      - RING_BACK
                      - CHANNELS_LIMIT
                      - VOXOUT_NATIONAL
                    partialConfigurations:
                      - SMS_OUTBOUND_ENABLED
                    messages:
                      - configuration: SMS_OUTBOUND_ENABLED
                        description: Sms is not supported
                  - didId: 5807022
                    status: PARTIAL
                    updatedConfigurations:
                      - VOICE_URI
                      - CAPACITY_GROUP
                      - TRUNK
                      - SIP_DELIVERY
                      - RING_BACK
                      - SMS_OUTBOUND_ENABLED
                      - CHANNELS_LIMIT
                    partialConfigurations:
                      - VOXOUT_NATIONAL
                    messages:
                      - configuration: VOXOUT_NATIONAL
                        description: >-
                          VoxOut National cannot be activated on this number.
                          Please contact support for more details.
                  - didId: 5807023
                    status: PARTIAL
                    updatedConfigurations:
                      - VOICE_URI
                      - CAPACITY_GROUP
                      - TRUNK
                      - SIP_DELIVERY
                      - RING_BACK
                      - SMS_OUTBOUND_ENABLED
                      - CHANNELS_LIMIT
                    partialConfigurations:
                      - VOXOUT_NATIONAL
                    messages:
                      - configuration: VOXOUT_NATIONAL
                        description: >-
                          VoxOut National cannot be activated on this number.
                          Please contact support for more details.
                  - didId: 9475529
                    status: PARTIAL
                    updatedConfigurations:
                      - VOICE_URI
                      - CAPACITY_GROUP
                      - TRUNK
                      - SIP_DELIVERY
                      - RING_BACK
                      - CHANNELS_LIMIT
                    partialConfigurations:
                      - VOXOUT_NATIONAL
                      - SMS_OUTBOUND_ENABLED
                    messages:
                      - configuration: VOXOUT_NATIONAL
                        description: >-
                          VoxOut National cannot be activated on this number.
                          Please contact support for more details.
                      - configuration: SMS_OUTBOUND_ENABLED
                        description: Sms is not supported
                  - didId: 6484442
                    status: SUCCESS
                    updatedConfigurations:
                      - VOICE_URI
                      - CAPACITY_GROUP
                      - TRUNK
                      - SIP_DELIVERY
                      - RING_BACK
                      - SMS_OUTBOUND_ENABLED
                      - CHANNELS_LIMIT
                      - VOXOUT_NATIONAL
        '400':
          description: Failed operation with invalid deliveryId
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
              example:
                httpStatusCode: 400
                apiModule: CONFIG
                genericErrorMessage: >-
                  An error occurred during the validation of your request.
                  Please review the messages below for more information.
                errors:
                  - apiErrorCode: '309'
                    apiErrorMessage: >-
                      The pop id is not valid, the referenced pop does not
                      exist.
      x-codegen-request-body-name: body
    x-summary: Bulk Configuration
    x-description: >-
      Apply the same configurations available in the Single Number Configuration
      to one or multiple DIDs. Successful response contains the list of DIDs
      updated with configuration options applied or failed. Requests with
      invalid input would result in a Bad Request response, not applying any of
      the configurations.
  /inventory/trunk:
    get:
      tags:
        - Capacity
      summary: List SIP Trunks
      description: List SIP Trunks
      operationId: listTrunk
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListTrunkResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListTrunkResponse'
    x-summary: List Available Trunks
    x-description: >-
      This method allows you to get the list of the trunks that are available in
      your account. To assign numbers to a specific trunk, use __trunkId__ from
      the response.
  /configuration/capacitygroup:
    get:
      tags:
        - Capacity
      summary: List Capacity Groups
      description: List Capacity Groups
      operationId: listCapacityGroup
      parameters:
        - name: capacityGroupId
          in: query
          description: The identifier of the capacity group to search for.
          schema:
            type: integer
            format: int32
        - name: description
          in: query
          description: The description of the capacity group.
          schema:
            type: string
        - name: e164
          in: query
          description: The e164 bound to the capacity group.
          schema:
            type: string
        - name: pageNumber
          in: query
          description: The page number, starting at 0.
          required: true
          schema:
            type: integer
            format: int32
          example: 0
        - name: pageSize
          in: query
          description: >-
            The page size (max number of entities that are displayed in the
            response).
          required: true
          schema:
            type: integer
            format: int32
          example: 20
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListCapacityGroupResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListCapacityGroupResponse'
    put:
      tags:
        - Capacity
      summary: Create a new Capacity Group or Update
      description: >-
        Allows you to either create a new capacity group or update an existing
        one. If an existing capacityGroupId is passed in the request, then an
        update will be performed. If no capacityGroupId is passed, then a new
        capacity group is created.
      operationId: saveCapacityGroup
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/SaveCapacityGroupRequest'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/SaveCapacityGroupResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/SaveCapacityGroupResponse'
      x-codegen-request-body-name: body
    x-summary: Create or list Capacity Groups
    x-description: >-
      This method allows you to get the list of your capacity groups. The
      capacityGroupId returned by this method can be used to edit or delete
      capacity groups using the appropriate methods.
  /configuration/capacitygroup/{capacityGroupId}:
    get:
      tags:
        - Capacity
      summary: Get specific capacity group by Id
      description: Get specific capacity group by Id
      operationId: getCapacityGroup
      parameters:
        - name: capacityGroupId
          in: path
          description: The ID of one of your existing capacity groups.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListCapacityGroupResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListCapacityGroupResponse'
    put:
      tags:
        - Capacity
      summary: Update an existing capacity group.
      description: Update an existing capacity group.
      operationId: updateCapacityGroup
      parameters:
        - name: capacityGroupId
          in: path
          description: The ID of one of your existing capacity groups
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/SaveCapacityGroupRequest'
        required: false
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/SaveCapacityGroupResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/SaveCapacityGroupResponse'
      x-codegen-request-body-name: body
    delete:
      tags:
        - Capacity
      summary: Remove a capacity group
      description: Remove a capacity group
      operationId: deleteCapacityGroup
      parameters:
        - name: capacityGroupId
          in: path
          description: >-
            The ID of one of your existing capacity groups which should be
            removed.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/DeleteCapacityGroupResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteCapacityGroupResponse'
    x-summary: Get, update or delete Capacity Groups
    x-description: Get, update or delete previously created capacity groups.
  /configuration/pop:
    get:
      tags:
        - Connectivity
      summary: List Interconnect locations and IP addresses
      description: >-
        Allows you to get the list of POPs (Points Of Presence) and their
        corresponding IP addresses.
      operationId: listPop
      responses:
        '200':
          description: successful operation
          content:
            text/xml:
              schema:
                $ref: '#/components/schemas/ListPopResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ListPopResponse'
    x-summary: Get Connectivity information
    x-description: >-
      Get the list of POPs (Points Of Presence) and their corresponding IP
      addresses.
  /subscriptions:
    get:
      summary: List Subscriptions
      operationId: listSubscriptions
      description: List All Subscriptions for Account
      tags:
        - Subscriptions
      parameters:
        - $ref: '#/components/parameters/subscriptionId'
        - $ref: '#/components/parameters/product'
        - $ref: '#/components/parameters/eventType'
        - $ref: '#/components/parameters/subscriptionStatus'
        - $ref: '#/components/parameters/entityId'
      responses:
        '200':
          $ref: '#/components/responses/subscriptionListResponse'
        '400':
          $ref: '#/components/responses/badRequestResponse'
        '401':
          $ref: '#/components/responses/unauthorizedResponse'
        '403':
          $ref: '#/components/responses/forbiddenResponse'
        '404':
          $ref: '#/components/responses/notFoundResponse'
        '405':
          $ref: '#/components/responses/methodNotAllowedResponse'
        '500':
          $ref: '#/components/responses/internalErrorResponse'
    post:
      summary: Create Subscription
      operationId: createSubscription
      description: Create New Subscription
      tags:
        - Subscriptions
      requestBody:
        $ref: '#/components/requestBodies/newSubscription'
      responses:
        '201':
          $ref: '#/components/responses/subscriptionCreatedResponse'
        '400':
          $ref: '#/components/responses/badRequestResponse'
        '401':
          $ref: '#/components/responses/unauthorizedResponse'
        '403':
          $ref: '#/components/responses/forbiddenResponse'
        '404':
          $ref: '#/components/responses/notFoundResponse'
        '405':
          $ref: '#/components/responses/methodNotAllowedResponse'
        '500':
          $ref: '#/components/responses/internalErrorResponse'
  /subscriptions/{subscriptionId}:
    get:
      summary: Get Subscription
      operationId: getSubscription
      description: GET Subscription by ID
      parameters:
        - $ref: '#/components/parameters/pathSubscriptionId'
      tags:
        - Subscriptions
      responses:
        '200':
          $ref: '#/components/responses/subscriptionResponse'
        '400':
          $ref: '#/components/responses/badRequestResponse'
        '401':
          $ref: '#/components/responses/unauthorizedResponse'
        '403':
          $ref: '#/components/responses/forbiddenResponse'
        '404':
          $ref: '#/components/responses/notFoundResponse'
        '405':
          $ref: '#/components/responses/methodNotAllowedResponse'
        '500':
          $ref: '#/components/responses/internalErrorResponse'
    delete:
      summary: Delete Subscription
      operationId: deleteSubscription
      description: Delete Subscription
      parameters:
        - $ref: '#/components/parameters/pathSubscriptionId'
      tags:
        - Subscriptions
      responses:
        '204':
          description: Subscription Successfully Deleted
        '400':
          $ref: '#/components/responses/badRequestResponse'
        '401':
          $ref: '#/components/responses/unauthorizedResponse'
        '403':
          $ref: '#/components/responses/forbiddenResponse'
        '404':
          $ref: '#/components/responses/notFoundResponse'
        '405':
          $ref: '#/components/responses/methodNotAllowedResponse'
        '500':
          $ref: '#/components/responses/internalErrorResponse'
    patch:
      summary: Modify Subscription
      operationId: modifySubscription
      description: Modify Subscription
      parameters:
        - $ref: '#/components/parameters/pathSubscriptionId'
      tags:
        - Subscriptions
      requestBody:
        $ref: '#/components/requestBodies/modifySubscription'
      responses:
        '200':
          $ref: '#/components/responses/subscriptionResponse'
        '400':
          $ref: '#/components/responses/badRequestResponse'
        '401':
          $ref: '#/components/responses/unauthorizedResponse'
        '403':
          $ref: '#/components/responses/forbiddenResponse'
        '404':
          $ref: '#/components/responses/notFoundResponse'
        '405':
          $ref: '#/components/responses/methodNotAllowedResponse'
        '409':
          $ref: '#/components/responses/conflictResponse'
        '500':
          $ref: '#/components/responses/internalErrorResponse'
    put:
      summary: Update Subscription
      operationId: updateSubscription
      description: Update Subscription
      parameters:
        - $ref: '#/components/parameters/pathSubscriptionId'
      tags:
        - Subscriptions
      requestBody:
        $ref: '#/components/requestBodies/updateSubscription'
      responses:
        '200':
          $ref: '#/components/responses/subscriptionResponse'
        '400':
          $ref: '#/components/responses/badRequestResponse'
        '401':
          $ref: '#/components/responses/unauthorizedResponse'
        '403':
          $ref: '#/components/responses/forbiddenResponse'
        '404':
          $ref: '#/components/responses/notFoundResponse'
        '405':
          $ref: '#/components/responses/methodNotAllowedResponse'
        '500':
          $ref: '#/components/responses/internalErrorResponse'
  /upgrade/movePhoneNumbers:
    post:
      summary: Move phone numbers from Legacy Global Network to Universal Platform
      parameters:
        - $ref: '#/components/parameters/BandwidthAuthorizationHeader'
      description: >
        This endpoint facilitates the movement of phone numbers from the Legacy
        Global Network to the Universal Platform (UP). To initiate this process,
        you’ll need to provide several UP parameters, including:

          - accountId
          - subAccountId
          - locationId
          - voiceConfigurationPackageId (learn more [here](https//dev.bandwidth.com/apis/universal-platform/voice-configuration-packages/))</br>

        To ensure proper access, the Global user must be authorized to move
        numbers to the specified UP account. This requires the inclusion of the
        <b>X-Bandwidth-Authorization</b>  header alongside the existing
        authorization header. You can retrieve the necessary credentials from
        [this
        documentation](https://dev.bandwidth.com/docs/account/credentials/management).</br>


        Please note that the phone number moving process operates
        asynchronously. After submitting your request, a unique reference ID
        will be generated for tracking each moving request

        The maximun allowed number of phone numbers to be moved in a single
        request is 1000.
      tags:
        - Move Phone Numbers
      operationId: phoneNumbersMoveRequest
      requestBody:
        $ref: '#/components/requestBodies/phoneNumbersMoveRequestBody'
      responses:
        '200':
          $ref: '#/components/responses/moveResponse'
        '400':
          $ref: '#/components/responses/movePhoneNumbersBadResponse'
        '401':
          $ref: '#/components/responses/unAuthorizedMovePhoneNumbersResponse'
        '403':
          $ref: '#/components/responses/forbiddenMoveResponse'
        '404':
          $ref: '#/components/responses/NotFoundMoveResponse'
        '409':
          $ref: '#/components/responses/conflictedMovePhoneNumbersResponse'
        '429':
          $ref: '#/components/responses/tooManyMoveRequestsResponse'
        '500':
          $ref: '#/components/responses/internalServerErrorResponse'
        '503':
          $ref: '#/components/responses/serviceUnavailableResponse'
  /upgrade/movePhoneNumbers/status/{orderId}:
    get:
      tags:
        - Move Phone Numbers
      summary: Get phone number move order status
      description: >
        Return the status of the phone number move request for the given move
        order ID.  The move order ID is the unique reference ID returned when
        the move request is made. The status returned reflects the state of the
        specific move request and does not indicate the current status of the
        phone numbers involved. The response contains the overall status of
        move, total count of phone numbers requested to be moved, count of phone
        numbers moved successfully, count of phone number in progress and count
        of phone numbers failed to move, status of each phone number. If move
        had failed at some point for a number, the error message will also be
        returned
      operationId: moveStatus
      parameters:
        - $ref: '#/components/parameters/moveOrderId'
      responses:
        '200':
          $ref: '#/components/responses/moveStatusResponse'
        '401':
          $ref: '#/components/responses/unAuthorizedMoveStatusResponse'
        '403':
          $ref: '#/components/responses/forbiddenMoveResponse'
        '404':
          $ref: '#/components/responses/NotFoundMoveResponse'
        '500':
          $ref: '#/components/responses/internalServerErrorResponse'
        '503':
          $ref: '#/components/responses/serviceUnavailableResponse'
  /upgrade/movePhoneNumbers/complete:
    post:
      tags:
        - Move Phone Numbers
      operationId: completeMoveRequest
      summary: Complete phone numbers move
      description: >
        This completes the phone numbers movement from Legacy Global Network to
        Universal Platform. Once the move process is completed for the phone
        numbers they will no longer be available in the portal

        The maximun allowed number of phone numbers in a single request is 1000.
      requestBody:
        $ref: '#/components/requestBodies/completeMoveRequest'
      responses:
        '200':
          $ref: '#/components/responses/completionResponse'
        '400':
          $ref: '#/components/responses/badPhoneNumbersMoveResponse'
        '401':
          $ref: '#/components/responses/unAuthorizedMoveStatusResponse'
        '403':
          $ref: '#/components/responses/forbiddenMoveResponse'
        '404':
          $ref: '#/components/responses/NotFoundMoveResponse'
        '409':
          $ref: '#/components/responses/conflictedPhoneNumbersCompleteResponse'
        '500':
          $ref: '#/components/responses/internalServerErrorResponse'
        '503':
          $ref: '#/components/responses/serviceUnavailableResponse'
  /upgrade/movePhoneNumbers/complete/status/{orderId}:
    get:
      tags:
        - Move Phone Numbers
      summary: Get complete phone number move order status
      description: >
        Status of phone numbers movement completion from Legacy Global Network
        to Universal Platform
      parameters:
        - $ref: '#/components/parameters/completeOrderId'
      responses:
        '200':
          $ref: '#/components/responses/completionStatusResponse'
        '401':
          $ref: '#/components/responses/unAuthorizedMoveStatusResponse'
        '403':
          $ref: '#/components/responses/forbiddenMoveResponse'
        '404':
          $ref: '#/components/responses/NotFoundMoveResponse'
        '500':
          $ref: '#/components/responses/internalServerErrorResponse'
        '503':
          $ref: '#/components/responses/serviceUnavailableResponse'
components:
  schemas:
    CapacityGroupModel:
      type: object
      properties:
        capacityGroupId:
          type: integer
          description: The ID of the capacity group.
          format: int32
        maximumCapacity:
          type: integer
          description: >-
            The maximum capacity of the capacity group as defined during the
            creation or update of the capacity group.
          format: int32
        description:
          type: string
          description: >-
            The description of the capacity group as defined during the creation
            or update of the capacity group.
        amountOfDidsMapped:
          type: integer
          description: The amount of DIDs mapped to the capacity group.
          format: int32
    SaveCapacityGroupResponse:
      type: object
      properties:
        capacityGroup:
          $ref: '#/components/schemas/CapacityGroupModel'
    SaveCapacityGroup:
      required:
        - description
        - maximumCapacity
      type: object
      properties:
        capacityGroupId:
          type: integer
          description: >-
            The ID of one of your existing capacity groups. If the parameter is
            not in the request, then a new capacity group is created.
          format: int32
        maximumCapacity:
          type: integer
          description: >-
            Defines the amount of channels you want to assign to the capacity
            group. The sum of all channels used by the DIDs linked to the
            capacity group cannot exceed the defined maximum capacity.
          format: int32
        description:
          type: string
          description: Defines the description of the capacity group.
    SaveCapacityGroupRequest:
      required:
        - capacityGroup
      type: object
      properties:
        capacityGroup:
          $ref: '#/components/schemas/SaveCapacityGroup'
    SaveVoiceUri:
      required:
        - uri
        - voiceUriProtocol
      type: object
      properties:
        voiceUriId:
          type: integer
          description: The identifier of the voice uri.
          format: int32
        backupUriId:
          type: string
          description: The identifier of the voice uri acting as backup.
        voiceUriProtocol:
          type: string
          description: >-
            The protocol to use with this voice uri. Supported protocols are
            `SIP` and `TEL`.
          enum:
            - SIP
            - TEL
        uri:
          type: string
          description: The actual uri where the call will be delivered.
        description:
          type: string
          description: A human-readable description of this uri.
    SaveVoiceUriResponse:
      required:
        - voiceUri
      type: object
      properties:
        voiceUri:
          $ref: '#/components/schemas/SaveVoiceUri'
    SaveVoiceUriRequest:
      required:
        - voiceUri
      type: object
      properties:
        voiceUri:
          $ref: '#/components/schemas/SaveVoiceUri'
    DeleteSmsLinkResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            SUCCESS message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
    ListSmsLinkResponse:
      type: object
      properties:
        smsLinks:
          type: array
          description: The list of your SMS Links and their details.
          items:
            $ref: '#/components/schemas/SmsLinkModel'
    SmsLinkModel:
      required:
        - direction
        - type
        - url
        - weight
      type: object
      properties:
        smsLinkId:
          type: integer
          description: The identifier of the sms link.
          format: int32
        login:
          type: string
          description: The login used for certain SMS link types. (REST_JSON)
        password:
          type: string
          description: >-
            This is required when using SMPP or SOAP. A strong password is
            required with: 1 numeric, 1 upper case, 1 lower case and 1 special
            character. The password should be at least 8 characters (and no more
            than 9 characters for SMPP).
        url:
          type: string
          description: This is the URL to which Bandwidth sends the traffic to.
        groupId:
          type: integer
          description: >-
            Every SMS link must be in a link group. If you don’t need multiple
            groups, then you can create one single link group in which you place
            all your SMS links. This can be used to filter based on the SMS link
            group and get the list of your SMS links within that SMS link group.
          format: int32
        type:
          type: string
          description: >-
            This is the type (or protocol) of the SMS Link. For SMS inbound
            services (when direction is “FROM_VOXBONE” or “BIDIRECTIONAL”), the
            possible protocols are REST_JSON, SMPP_SMSC, SMPP_ESME, SIP, SOAP
            (Parlay-X) and SMTP. For SMS outbound services (when direction is
            “TO_VOXBONE”), the possible protocols type are REST_JSON, SMPP_SMSC
            or SMPP_ESME.
          enum:
            - SMPP_ESME
            - SMPP_SMSC
            - SIP
            - SMTP
            - REST_JSON
        name:
          type: string
          description: >-
            This is the name of your SMS Link and should be less than 20
            characters.
        direction:
          type: string
          description: >-
            This is the direction of the link: FROM_VOXBONE”, “TO_VOXBONE” or
            “BIDIRECTIONAL”.
          enum:
            - TO_VOXBONE
            - FROM_VOXBONE
            - BIDIRECTIONAL
        weight:
          type: integer
          description: >-
            This parameter can be ignored for outbound links. It is useful for
            inbound connections on which you want to enable load balancing
            within a link group. A higher value means more preferred. For
            example if you have a link group that contains 5 connections with a
            weight of 1, each connection will receive one fifth of the incoming
            traffic.
          format: int32
        systemType:
          type: string
          description: >-
            Free text parameter in SMPP that can be used at your own discretion.
            This can be ignored, left empty or you can define your own value.
        useSSL:
          type: boolean
          description: >-
            This is used for SMPP to secure the interconnection with Bandwidth
            for secure communication between your servers and our SMS platform.
            TLSv1.2 and above are supported.
        monitorInterval:
          type: integer
          description: >-
            This is a parameter (in seconds) used for SMPP default will be 60 if
            not specified.
          format: int32
        transactionTimeout:
          type: integer
          description: >-
            This is a parameter (in milliseconds) used for SMPP default will be
            60000 if not specified.
          format: int64
        deliveryStatusReport:
          type: boolean
          description: A flag indicating if delivery reports are enabled on the link.
    DeleteSmsLinkGroupResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            SUCCESS message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
    SaveSmsLinkResponse:
      type: object
      properties:
        smsLink:
          type: integer
          format: int32
    SaveSmsLinkRequest:
      required:
        - smsLink
      type: object
      properties:
        smsLink:
          $ref: '#/components/schemas/SmsLinkModel'
    FaxUri:
      type: object
      properties:
        faxUriId:
          type: integer
          description: The identifier of the fax uri.
          format: int32
        deliveryMethod:
          type: string
          description: >-
            This is the delivery method on which you want to filter your list of
            Fax URIs. The possible values are SMTP and HTTP_POST.
          enum:
            - SMTP
            - HTTP_POST
        faxFileFormat:
          type: string
          description: >-
            This is the file format on which you want to filter your list of Fax
            URIs. The possible values are Tiff and Pdf.
          enum:
            - Tiff
            - Pdf
        uri:
          type: string
          description: This is the URI on which you want to filter your list of Fax URIs.
        csid:
          type: string
          description: >-
            This to filter in/out the Fax URIs for which CSID (Called subscriber
            identification) is enabled.
        subject:
          type: string
          description: >-
            The content of the email subject if you use SMTP as a delivery
            method. These parameters are not used for HTTP_POST.
        body:
          type: string
          description: >-
            The content of the email body if you use SMTP as a delivery method.
            These parameters are not used for HTTP_POST.
        useHtml:
          type: string
          description: >-
            Indicates if you use HTML for the email body. This is only used in
            case the delivery method is SMTP.
    ListFaxUriResponse:
      type: object
      properties:
        faxUris:
          type: array
          description: The list of your Fax URIs and their details.
          items:
            $ref: '#/components/schemas/FaxUri'
        resultCount:
          type: integer
          description: Total number of results corresponding to the query.
          format: int32
          xml:
            attribute: true
    DeleteVoiceUriResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            SUCCESS message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
    ListCapacityGroupResponse:
      type: object
      properties:
        capacityGroups:
          type: array
          description: The list of your capacity groups.
          items:
            $ref: '#/components/schemas/CapacityGroupModel'
        resultCount:
          type: integer
          description: Total number of results corresponding to the query.
          format: int32
          xml:
            attribute: true
    DeleteCapacityGroupResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            SUCCESS message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
    DeleteFaxUriResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            SUCCESS message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
    SingleDidConfigurationResponse:
      type: object
      properties:
        failedDidConfigurations:
          type: array
          description: Type of configuration performed.
          nullable: true
          items:
            type: string
            enum:
              - BLACKLIST
              - CAPACITY_GROUP
              - CHANNELS_LIMMIT
              - CLI_FORMAT
              - CLI_PRIVACY
              - CNAM
              - CPC_BLOCK_CELLULAR
              - CPC_BLOCK_PAYPHONE
              - CPC_BLOCK_ORDINARY
              - FAX_ENABLED
              - FAX_ACCOUNT
              - T38
              - RING_BACK
              - SEND_DNIS
              - SIP_DELIVERY
              - SMS_LINK_GROUP
              - SMS_OUTBOUND_ENABLED
              - SRV_LOOKUP
              - TRUNK
              - VOICE_URI
              - WEB_RTC
              - VOXOUT_INTERNATIONAL
              - VOXOUT_NATIONAL
              - PEER
        status:
          type: string
          description: PARTIAL, FAILURE, SUCCESS.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
    BulkDidConfigurationResponse:
      required:
        - error
        - partial
        - results
        - success
        - total
      type: object
      properties:
        success:
          minimum: 0
          type: integer
          description: >-
            Number of DIDs that received the update of full list of
            configuration options in the request
          format: int32
        error:
          minimum: 0
          type: integer
          description: >-
            Number of DIDs that didn't receive the update of configuration
            options due to an internal error
          format: int32
        partial:
          minimum: 0
          type: integer
          description: >-
            Number of DIDs that received the update of a partial list of
            configuration options in the request. Successfully applied
            configurations can be found in `updatedConfigurations` object and
            the configuration options that couldn't be applied can be found in
            `partialConfigurations` object in the response.
          format: int32
        total:
          minimum: 0
          type: integer
          description: Number of DIDs present in the request
          format: int32
        results:
          type: array
          description: >-
            List of objects that contain the result of configuration update
            request
          items:
            $ref: '#/components/schemas/BulkConfigResult'
      description: >-
        Successful response to a request to update configuration on multiple
        numbers
    BulkConfigResult:
      type: object
      properties:
        didId:
          type: integer
          description: >-
            This is the single DIDId to be configured. Returned in
            checkoutCart() and listDid().
          format: int32
        status:
          type: string
          description: >-
            A 'SUCCESS' message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
        updatedConfigurations:
          type: array
          description: List of configuration options that are successfully applied
          items:
            $ref: '#/components/schemas/ConfigurationOption'
        partialConfigurations:
          type: array
          description: List of configuration options that couldn't be applied
          items:
            $ref: '#/components/schemas/ConfigurationOption'
        messages:
          type: array
          description: List of configuration error messages, if any
          items:
            type: object
            properties:
              configuration:
                $ref: '#/components/schemas/ConfigurationOption'
              description:
                type: string
                description: Error description and how it can be fixed
            description: >-
              Configuration error message explaining the reason why
              configuration attempt failed
      description: Object describing the DID configuration results
    ConfigurationOption:
      type: string
      description: The type of configuration option
      enum:
        - BLACKLIST
        - CAPACITY_GROUP
        - CHANNELS_LIMIT
        - CHANNELS_LIMIT_OUTBOUND
        - CLI_FORMAT
        - CLI_PRIVACY
        - CNAM
        - CPC_BLOCK_CELLULAR
        - CPC_BLOCK_PAYPHONE
        - CPC_BLOCK_ORDINARY
        - FAX_ENABLED
        - FAX_ACCOUNT
        - T38
        - RING_BACK
        - SEND_DNIS
        - SIP_DELIVERY
        - SMS_LINK_GROUP
        - SMS_OUTBOUND_ENABLED
        - SRV_LOOKUP
        - TRUNK
        - VOICE_URI
        - WEB_RTC
        - VOXOUT_INTERNATIONAL
        - VOXOUT_NATIONAL
        - PEER
    CallerId:
      type: object
      properties:
        cliFormat:
          type: string
          description: >-
            The format can be RAW, E164, LOCALIZED and CLI_NONE. In case the
            format is E164 or LOCALIZED, then there should be a cliValue.
          enum:
            - RAW
            - E164
            - LOCALIZED
            - CLI_NONE
        cliValue:
          type: string
          description: >-
            If the value of cliFormat is E164 then the cliValue should be '+',
            'null' or a numeric string (e.g. '+123', '+', '123', etc.). If the
            cliFormat is LOCALIZED then the cliValue should be a country code a3
            (e.g. 'RUS', 'FRA', 'USA', etc.).
    Peer:
      type: object
      properties:
        t38Enabled:
          type: string
          description: >-
            Indicates whether a DID is T.38 enabled. It can be configured per
            DID in the configuration module using the applyConfiguration method.
        dtmf:
          type: string
          description: >-
            Dtmf and dtmfInbandMute indicate the current DMTF configuration for
            the calls on a given DID. The possible values for dtmf are INBAND,
            INFO, RFC2833, RFC2833_INFO, RFC2833_INBAND. For the last two
            values, the system will automatically choose between RFC2833 and
            INFO or INBAND. The standard way to carry out-of-band DTMF via SIP
            is as RTP payload (see RFC 2833). It has the advantage that it
            provides accurate timing and alignment with the speech RTP packets.
          enum:
            - RFC2833_INBAND
            - RFC2833_INFO
            - RFC2833
            - INFO
            - INBAND
        dtmfInbandMute:
          type: string
          description: >-
            By activating dtmfInbandMute on a number, the inband DTMF tones are
            removed from the audio stream. This is recommended when you add
            inband DTMF tones yourself to the audio stream afterwards (which can
            be the case for example when the call is sent back to the PSTN).
        codecs:
          type: array
          description: >-
            List of codecs that are supported for the calls on a given DID. The
            possible values are: G711A, G711U, G729.
          items:
            type: string
            enum:
              - G711A
              - G711U
              - G729
              - G723
              - G722
              - SPEEX
              - SPEEX16
              - SPEEX32
              - OPUS
              - VP8
              - H264
              - H263P
    SingleDidConfigurationRequest:
      required:
        - didId
      type: object
      properties:
        didId:
          type: integer
          description: >-
            This is the single didId to be configured. Returned in
            checkoutCart() and listDid().
          format: int32
        voiceUriId:
          type: integer
          description: >-
            This is the ID of the Voice URI to which you want to map the DIDs.
            The current voiceUriID can be unset by using `null` as the value.
          format: int32
        smsLinkGroupId:
          type: integer
          description: >-
            This is the ID of the SMS Link Group to which you want to map the
            DIDs. The current smsLinkGroupId can be unset by using `null` as the
            value.
          format: int32
        faxUriId:
          type: integer
          description: >-
            This is the ID of the Fax URI to which you want to map the DIDs. The
            current faxUriId can be unset by using `null` as the value.
          format: int32
        voxFaxEnabled:
          type: boolean
          description: Allows you to enable the VoxFax service for the DID.
        capacityGroupId:
          type: integer
          description: >-
            This is the ID of the capacity group to which you want to map the
            DIDs. The current capacityGroupId can be unset by using `null` as
            the value.
          format: int32
        trunkId:
          type: integer
          description: >-
            This is the ID of the trunk (cf. listTrunk method in Inventory
            module) to which you want to map the DIDs. The current trunkId can
            be unset by using `null` as the value.
          format: int32
        deliveryId:
          type: integer
          description: This is the ID of the POP on which you want to map the DIDs.
          format: int32
        srvLookup:
          type: boolean
          description: >-
            Indicates whether you want to enable DNS SRV on the DID(s). While a
            standard DNS record maps one domain name to one IP address, a DNS
            SRV record maps one domain name to multiple IP addresses. When
            Bandwidth performs a DNS SRV request on your DNS server, it selects
            only one of these IP addresses returned by the DNS.
        callerId:
          $ref: '#/components/schemas/CallerId'
        cliPrivacy:
          type: string
          description: >-
            this option is only available to certain Bandwidth customers who are
            authorized to change the privacy settings on a per DID basis. Please
            check with your account manager if you need that option enabled. The
            possible values are P_ASSERTED_ID, REMOTE_PARTY_ID or DISABLED
          enum:
            - DISABLED
            - P_ASSERTED_IDENTITY
            - REMOTE_PARTY_ID
        peer:
          $ref: '#/components/schemas/Peer'
        ringback:
          type: string
          description: >-
            indicates the ringback method that is applied to the DID. The
            possible values are STANDARD, RINGING, PROGRESS
          enum:
            - STANDARD
            - RINGING
            - PROGRESS
        dnisEnabled:
          type: boolean
          description: >-
            Indicates whether the DNIS service is enabled for a given DID. When
            enabled, this option sends the DID's E.164 number in the To header
            of the SIP INVITE, while the SIP Request-URI is set to the URI you
            configure. This can be helpful in providing account information
            inside VoiceXML applications
        blockOrdinary:
          type: boolean
          description: >-
            Indicates the current CPC configuration for a given DID. For
            toll-free numbers, it can be useful to block certain calling party
            categories (CPC) since the call rates can hugely differ. It is to
            block calls from fixed lines networks.
        blockCellular:
          type: boolean
          description: >-
            Indicates the current CPC configuration for a given DID. For
            toll-free numbers, it can be useful to block certain calling party
            categories (CPC) since the call rates can hugely differ. It is to
            block calls from mobile networks.
        blockPayphone:
          type: boolean
          description: >-
            Indicates the current CPC configuration for a given DID. For
            toll-free numbers, it can be useful to block certain calling party
            categories (CPC) since the call rates can hugely differ. It is to
            block calls from payphones.
        smsOutbound:
          type: boolean
          description: Allows you to enable the outbound SMS service for the DID.
        webRtcEnabled:
          type: boolean
          description: Allows you to enable the WebRTC service for the DID.
        limitChannels:
          minimum: 1
          type: number
          description: >-
            Allows you to specify an inbound concurrent limit for the DID. The
            current limit can be unset by using `null` which will allow the
            maximum inbound concurrent limit set on the Capacity Group.
        limitChannelsOutbound:
          minimum: 1
          type: number
          description: >-
            Allows you to specify an outbound concurrent limit for the DID. The
            current limit can be unset by using `null` which will allow the
            maximum outbound concurrent limit set on the Capacity Group.
        voxoutInternationalEnabled:
          type: boolean
          description: Allows you to enable the outbound service for the DID.
        voxoutNationalEnabled:
          type: boolean
          description: Allows you to enable the voxout national service for the DID.
      description: Model for Apply DID Configuration request
    SaveSmsLinkGroupResponse:
      type: object
      properties:
        id:
          type: integer
          description: This is the ID of the link group that was created.
          format: int32
    SaveSmsLinkGroupRequest:
      type: object
      properties:
        name:
          type: string
          description: >-
            This is the name of the link group that you wish to create. There is
            no specific limitations except that the name should contain less
            than 255 characters.
    ListSmsLinkGroupResponse:
      type: object
      properties:
        smsLinkGroups:
          type: array
          items:
            $ref: '#/components/schemas/SmsLinkGroup'
    SmsLinkGroup:
      type: object
      properties:
        id:
          type: integer
          description: This is the ID of the SMS group.
          format: int32
        name:
          type: string
          description: This is the name of the SMS group.
    BadRequestResponse:
      required:
        - apiModule
        - errors
        - genericErrorMessage
        - httpStatusCode
      type: object
      properties:
        httpStatusCode:
          type: integer
          description: HTTP Status code for the response
          format: int32
          example: 400
        apiModule:
          type: string
          description: >-
            The name of endpoint that's related to the request resulting in an
            error
          example: CONFIG
        genericErrorMessage:
          type: string
          description: A generic error message
          example: >-
            An error occurred during the validation of your request. Please
            review the messages below for more information.
        errors:
          type: array
          description: List of errors specifying the cause of error response
          items:
            required:
              - apiErrorCode
              - apiErrorMessage
            type: object
            properties:
              apiErrorCode:
                type: string
                description: >-
                  Designated error code for the error object. Can be used to
                  look up how to fix in documentation or share via support
                  request
                example: '309'
              apiErrorMessage:
                type: string
                description: >-
                  Descriptive error message indicating the cause of failed
                  request
                example: The pop id is not valid, the referenced pop does not exist.
            description: Error object with the error code and descriptive error message
    BulkDidConfigurationRequest:
      required:
        - didIds
      type: object
      properties:
        didIds:
          type: array
          description: >-
            This is the list of DIDs (IDs) to be configured. Returned in
            checkoutCart() and listDid().
          items:
            type: integer
            format: int32
        voiceUriId:
          type: string
          description: >-
            This is the ID of the Voice URI to which you want to map the DIDs.
            The current voiceUriID can be unset by using `null` as the value.
        smsLinkGroupId:
          type: string
          description: >-
            This is the ID of the SMS Link Group to which you want to map the
            DIDs. The current smsLinkGroupId can be unset by using `null` as the
            value.
        faxUriId:
          type: integer
          description: >-
            This is the ID of the Fax URI to which you want to map the DIDs. The
            current faxUriId can be unset by using `null` as the value.
          format: int32
        voxFaxEnabled:
          type: boolean
          description: Allows you to enable the VoxFax service for the DID
        capacityGroupId:
          type: string
          description: >-
            This is the ID of the capacity group to which you want to map the
            DIDs. The current capacityGroupId can be unset by using `null` as
            the value.
        trunkId:
          type: string
          description: >-
            This is the ID of the trunk (cf. listTrunk method in Inventory
            module) to which you want to map the DIDs. The current trunkId can
            be unset by using `null` as the value.
        deliveryId:
          type: string
          description: >-
            This is the ID of the POP on which you want to map the DIDs. If
            deliveryId is null, then the DIDs will be unmapped from their
            previous POP.
        srvLookup:
          type: boolean
          description: >-
            Indicates whether you want to enable DNS SRV on the DID(s). While a
            standard DNS record maps one domain name to one IP address, a DNS
            SRV record maps one domain name to multiple IP addresses. When
            Bandwidth performs a DNS SRV request on your DNS server, it selects
            only one of these IP addresses returned by the DNS.
        callerId:
          $ref: '#/components/schemas/CallerId'
        cliPrivacy:
          type: string
          description: >-
            This option is only available to certain Bandwidth customers who are
            authorized to change the privacy settings on a per DID basis. Please
            check with your account manager if you need that option enabled. The
            possible values are P_ASSERTED_ID, REMOTE_PARTY_ID or DISABLED
          enum:
            - DISABLED
            - P_ASSERTED_IDENTITY
            - REMOTE_PARTY_ID
        peer:
          $ref: '#/components/schemas/Peer'
        ringback:
          type: string
          description: >-
            Indicates the ringback method that is applied to the DID. The
            possible values are STANDARD, RINGING, PROGRESS
          enum:
            - STANDARD
            - RINGING
            - PROGRESS
        dnisEnabled:
          type: boolean
          description: >-
            Indicates whether the DNIS service is enabled for a given DID. When
            enabled, this option sends the DID's E.164 number in the To header
            of the SIP INVITE, while the SIP Request-URI is set to the URI you
            configure. This can be helpful in providing account information
            inside VoiceXML applications
        blockOrdinary:
          type: boolean
          description: >-
            Indicates the current CPC configuration for a given DID. For
            toll-free numbers, it can be useful to block certain calling party
            categories (CPC) since the call rates can hugely differ. It is to
            block calls from fixed lines networks.
        blockCellular:
          type: boolean
          description: >-
            Indicates the current CPC configuration for a given DID. For
            toll-free numbers, it can be useful to block certain calling party
            categories (CPC) since the call rates can hugely differ. It is to
            block calls from mobile networks.
        blockPayphone:
          type: boolean
          description: >-
            Indicates the current CPC configuration for a given DID. For
            toll-free numbers, it can be useful to block certain calling party
            categories (CPC) since the call rates can hugely differ. It is to
            block calls from payphones.
        smsOutbound:
          type: boolean
          description: Allows you to enable the outbound SMS service for the DID.
        webRtcEnabled:
          type: boolean
          description: Allows you to enable the WebRTC service for the DID
        limitChannels:
          minimum: 1
          type: integer
          description: >-
            Allows you to specify an inbound concurrent limit for the DID. The
            current limit can be unset by using `null` which will allow the
            maximum inbound concurrent limit set on the Capacity Group.
        limitChannelsOutbound:
          minimum: 1
          type: number
          description: >-
            Allows you to specify an outbound concurrent limit for the DID. The
            current limit can be unset by using `null` which will allow the
            maximum outbound concurrent limit set on the Capacity Group.
        voxoutInternationalEnabled:
          type: boolean
          description: Allows you to enable the outbound service for the DID.
        voxoutNationalEnabled:
          type: boolean
          description: Allows you to enable the voxout national service for the DID.
      description: Model for Apply Configuration request
    ListVoiceUri:
      type: object
      properties:
        voiceUriId:
          type: integer
          description: The identifier of the voice uri.
          format: int32
        backupUriId:
          type: integer
          description: The identifier of the voice uri acting as backup.
          format: int32
        backupUri:
          type: string
        voiceUriProtocol:
          type: string
          description: >-
            The protocol to use with this voice uri. Supported protocols are
            `SIP` and `TEL`.
          enum:
            - SIP
            - TEL
        uri:
          type: string
          description: The actual uri where the call will be delivered.
        description:
          type: string
          description: A human-readable description of this uri.
    ListVoiceUriResponse:
      type: object
      properties:
        voiceUris:
          type: array
          items:
            $ref: '#/components/schemas/ListVoiceUri'
        resultCount:
          type: integer
          description: Total number of results corresponding to the query.
          format: int32
          xml:
            attribute: true
    ListPopResponse:
      type: object
      properties:
        pops:
          type: array
          items:
            $ref: '#/components/schemas/Pop'
    Pop:
      type: object
      properties:
        deliveryId:
          type: integer
          description: The ID of the POP.
          format: int32
        name:
          type: string
          description: The name of the POP.
        ips:
          type: array
          description: >-
            The list of IP addresses from which RTP or SIP can be received from
            that POP.
          items:
            type: string
    SaveFaxUri:
      required:
        - deliveryMethod
        - faxFileFormat
        - uri
      type: object
      properties:
        faxUriId:
          type: integer
          description: The identifier of the fax uri.
          format: int32
        deliveryMethod:
          type: string
          description: >-
            This is the delivery method on which you want to filter your list of
            Fax URIs. The possible values are SMTP and HTTP_POST.
          enum:
            - SMTP
            - HTTP_POST
        faxFileFormat:
          type: string
          description: >-
            This is the file format on which you want to filter your list of Fax
            URIs. The possible values are Tiff and Pdf.
          enum:
            - Tiff
            - Pdf
        uri:
          type: string
          description: This is the URI on which you want to filter your list of Fax URIs.
        csid:
          type: string
          description: >-
            This to filter in/out the Fax URIs for which CSID (Called subscriber
            identification) is enabled.
        subject:
          type: string
          description: >-
            The content of the subject field of the email if you use SMTP as a
            deliveyr method. Not used for HTTP_POST.
        body:
          type: string
          description: >-
            The content of the body field of the email if you use SMTP as a
            deliveyr method. Not used for HTTP_POST.
        useHtml:
          type: string
          description: Indicates if HTML is used for the email body. Only used for SMTP.
    SaveFaxUriResponse:
      type: object
      properties:
        faxUri:
          $ref: '#/components/schemas/SaveFaxUri'
    SaveFaxUriRequest:
      required:
        - faxUri
      type: object
      properties:
        faxUri:
          $ref: '#/components/schemas/SaveFaxUri'
    Did:
      required:
        - areaCode
      type: object
      properties:
        didId:
          type: integer
          description: The ID of the DID (e.g. “3352”)
          format: int32
        e164:
          type: string
          description: The DID in its E164 format (e.g. “+16469185038”).
        type:
          type: string
          description: The type of the DID.
          enum:
            - GEOGRAPHIC
            - TOLL_FREE
            - NATIONAL
            - MOBILE
            - INUM
            - SHARED_COST
            - SPECIAL
        countryCodeA3:
          type: string
          description: >-
            The country code for the DID in its ISO 3166-1 alpha-3 format (e.g.
            'GBR' for United Kingdom, 'USA' for United States of America, 'BEL'
            for Belgium, etc.).
        cityName:
          type: string
          description: The city of the DID (e.g. 'NEW YORK CITY ZONE 01').
        areaCode:
          type: string
          description: The area code of the DID (e.g. '646').
        voiceUriId:
          type: integer
          description: The voice URI that is linked to the DID.
          format: int32
        faxUriId:
          type: integer
          description: The Fax URI that is linked to the DID.
          format: int32
        smsLinkGroupId:
          type: integer
          description: The SMS link group that is linked to the DID.
          format: int32
        orderReference:
          type: string
          description: >-
            Indicates which purchase order the DID was in. You can get a list of
            orders with the order details (date and status) in the ordering
            module using the listOrder method.
        channels:
          type: integer
          description: >-
            The channels allocated to a specific DID. If the value is -1, then
            there is no limit. If the value is 0 then no channels are assigned
            and calls are blocked for that DID. Note that for test numbers,
            Bandwidth usually assigns 2 channels. For test numbers the value of
            channels should be 2.
          format: int32
        delivery:
          type: string
          description: The POP used for the delivery of the call.
        trunkId:
          type: integer
          description: >-
            The trunk that the DID belongs to (e.g. a Belgian DID can belong to
            a 'zone A' or “zone WORLDWIDE” trunk).
          format: int32
        capacityGroupId:
          type: integer
          description: >-
            If you have any capacity groups, a DID may be linked to one of your
            capacity groups.
          format: int32
        didGroupId:
          type: integer
          description: The ID of the DIDgroup that the DID belongs to.
          format: int32
        regulationAddressId:
          type: integer
          description: >-
            This is an ID that you get when creating a regulation address. The
            DIDs can be linked to a regulation address.
          format: int32
        srvLookup:
          type: boolean
          description: >-
            Indicates whether you want to enable DNS SRV on a certain DID. While
            a standard DNS record maps one domain name to one IP address, a DNS
            SRV record maps one domain name to multiple IP addresses. When
            Bandwidth performs a DNS SRV request on your DNS server, it selects
            only one of these IP addresses returned by the DNS.
        callerId:
          $ref: '#/components/schemas/CallerId'
        cliPrivacy:
          type: string
          description: >-
            This option is only available to certain Bandwidth customers who are
            authorized to change the privacy settings on a per DID basis. Please
            check with your account manager if you need that option enabled. The
            possible values are P_ASSERTED_ID, REMOTE_PARTY_ID or DISABLED.
          enum:
            - DISABLED
            - P_ASSERTED_IDENTITY
            - REMOTE_PARTY_ID
        otherOptions:
          $ref: '#/components/schemas/Peer'
        ringback:
          type: string
          description: Indicates the ringback method that is applied to the DID.
          enum:
            - STANDARD
            - RINGING
            - PROGRESS
        dnisEnabled:
          type: string
          description: >-
            Indicates whether the DNIS service is enabled for a given DID. When
            enabled, this option sends the DID's E.164 number in the To header
            of the SIP INVITE, while the SIP Request-URI is set to the URI you
            configure. This can be helpful in providing account information
            inside VoiceXML applications.
        blockOrdinary:
          type: boolean
          description: BlockOrdinary is to block calls from fixed lines networks.
        blockCellular:
          type: boolean
          description: BlockCellular is to block calls from mobile networks.
        blockPayphone:
          type: boolean
          description: BlockPayphone is to block calls from payphones.
        smsOutbound:
          type: boolean
          description: >-
            Indicates whether you have enabled the outbound SMS service for the
            DID.
        webRtc:
          type: boolean
          description: Indicates whether you have enabled the WebRTC service for the DID.
        voxoutNational:
          type: string
          description: >-
            Indicates whether you have enabled the VoxoutNational service for
            the DID.
          enum:
            - DISABLED_EMERGENCY_REQUIRED
            - DISABLED
            - ENABLED_EMERGENCY_REQUIRED
            - ENABLED
            - NOT_SUPPORTED
        voxoutInternationalEnabled:
          type: boolean
          description: >-
            Indicates whether you have enabled the VoxoutInternational service
            for the DID.
        cancellationAvailable:
          type: string
          description: Date when cancellation of the DID is available from.
    ListDidResponse:
      type: object
      properties:
        dids:
          type: array
          description: List of DIDs page corresponding to the filter.
          items:
            $ref: '#/components/schemas/Did'
        resultCount:
          type: integer
          description: The total number of DIDs corresponding to the filter.
          format: int32
          xml:
            attribute: true
    ListZoneResponse:
      type: object
      properties:
        zone:
          type: array
          description: Zones configured in your account.
          items:
            type: string
    phoneNumber:
      type: object
      properties:
        phoneNumber:
          type: string
          description: The phone number digits in E.164 format
          example: '+31208908115'
    phoneNumberInCart:
      type: object
      properties:
        digits:
          type: string
          description: The phone number digits in E.164 format
          example: '+31208908115'
        holdingUntil:
          type: string
          description: >-
            The timestamp of the time until the phone number will be held in
            cart in format "YYYY-MM-DD HH:MM:SS Z"
          example: 2022-07-04 15:10:26 UTC
    DidGroup:
      type: object
      x-examples:
        example-1:
          didGroupId: 1073
          countryCodeA3: NLD
          stateId: 69
          didType: GEOGRAPHIC
          cityName: AMSTERDAM
          areaCode: '20'
          rateCenter: string
          stock: 11
          setup100: 0
          monthly100: 110
          available: true
          regulationRequirement:
            addressType: LOCAL
            proofRequired: false
          features:
            - featureId: 0
              name: string
              description: string
          phoneNumbers:
            - phoneNumber: '+31208908115'
            - phoneNumber: '+31208908116'
            - phoneNumber: '+31208908117'
            - phoneNumber: '+31208908118'
            - phoneNumber: '+31208908119'
            - phoneNumber: '+31208908120'
            - phoneNumber: '+31208908121'
            - phoneNumber: '+31208908122'
            - phoneNumber: '+31208908123'
            - phoneNumber: '+31208908124'
            - phoneNumber: '+31208908125'
            - phoneNumber: '+31208908126'
      x-internal: false
      properties:
        didGroupId:
          type: integer
          description: The ID of the DID group.
          format: int32
          example: 1073
        countryCodeA3:
          type: string
          description: >-
            Indicates the country code of the DID group in its ISO 3166-1
            alpha-3 format (e.g. 'GBR' for United Kingdom, 'USA' for United
            States of America, 'BEL' for Belgium, etc.).
          example: NLD
        stateId:
          type: integer
          description: The ID of the state of the DID group, if the country has any state.
          format: int32
        didType:
          type: string
          description: The DID type of the DID group.
          enum:
            - GEOGRAPHIC
            - TOLL_FREE
            - NATIONAL
            - MOBILE
            - INUM
            - SHARED_COST
            - SPECIAL
          example: GEOGRAPHIC
        cityName:
          type: string
          description: The name of the city of the DID group.
          example: AMSTERDAM
        areaCode:
          type: string
          description: The area code of the DID group.
          example: '20'
        rateCenter:
          type: string
          description: >-
            The rate center can be defined as a zone (which can be equivalent to
            a city or the area of a city) e.g. the rate center of 'NEW YORK CITY
            ZONE 1' would be 'NWYRCYZN01'. The rate center is a notion usually
            used in north America.
        stock:
          type: integer
          description: >-
            The amount of DIDs that Bandwidth has in stock for this DID group.
            Note that even if the stock is null, it is still possible to order
            DIDs. In that case the order is not fulfilled in real time.
          format: int32
          example: 11
        setup100:
          type: integer
          description: >-
            The price of the DID setup multiplied by 100 (i.e. expressed in
            cents) in the currency of the account.
          format: int32
          example: 0
        monthly100:
          type: integer
          description: >-
            The monthly recurring charge (MRC) per DID multiplied by 100 (i.e.
            expressed in cents) in the currency of the account. Note that the
            month of ordering is fully due and that when a DID order is placed
            both the setup and the monthly are charged.
          format: int32
          example: 110
        available:
          type: boolean
          description: >-
            Returns information about whether this DIDGroup is available or out
            of stock (true/false).
          default: true
        regulationRequirement:
          $ref: '#/components/schemas/RegulationRequirementModel'
        features:
          type: array
          items:
            $ref: '#/components/schemas/Feature'
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/phoneNumber'
    Feature:
      type: object
      properties:
        featureId:
          type: integer
          description: ID of feature. (Eg. VoxFAX or VoxSMS).
          format: int32
        name:
          type: string
          description: Name of feature. (Eg. VoxFAX or VoxSMS).
        description:
          type: string
          description: Description of feature. (Eg. VoxFAX or VoxSMS).
    ListDidGroupResponse:
      type: object
      properties:
        didGroups:
          type: array
          items:
            $ref: '#/components/schemas/DidGroup'
        resultCount:
          type: integer
          description: The count for the item resulted from the request.
          format: int32
          xml:
            attribute: true
      x-examples:
        Example:
          didGroups:
            - didGroupId: 1073
              countryCodeA3: NLD
              stateId: 0
              didType: GEOGRAPHIC
              cityName: AMSTERDAM
              areaCode: '20'
              rateCenter: string
              stock: 11
              setup100: 0
              monthly100: 110
              available: true
              regulationRequirement:
                addressType: LOCAL
                proofRequired: true
              features:
                - featureId: 6
                  name: VoxFax
                  description: VoxFax
                - featureId: 50
                  name: Voice
                  description: Voice
                - featureId: 51
                  name: VoxOUT International
                  description: Used to build the coverage pages in the public website
                - featureId: 5
                  name: T.38
                  description: T.38
                - featureId: 29
                  name: VoxOUT Emergency
                  description: Feature that allows the VoxDID to access emergency services
                - featureId: 52
                  name: VoxOUT National
                  description: Used to build the coverage pages in the public website
          resultCount: 1
      description: Example
    RegulationRequirementModel:
      type: object
      properties:
        addressType:
          type: string
          description: Type of address required.
          enum:
            - WORLDWIDE
            - NATIONAL
            - LOCAL
          example: LOCAL
        proofRequired:
          type: boolean
          description: Whether a proof of address is required.
          default: false
    ListFeatureResponse:
      type: object
      properties:
        features:
          type: array
          items:
            $ref: '#/components/schemas/Feature'
    Country:
      type: object
      properties:
        countryCodeA3:
          type: string
          description: >-
            The country code for the DID in its ISO 3166-1 alpha-3 format (e.g.
            'GBR' for United Kingdom, 'USA' for United States of America, 'BEL'
            for Belgium, and special code 'WLD' for iNum numbers).
        countryName:
          type: string
          description: The full name of the country.
        phoneCode:
          type: integer
          description: The dial code of the country (e.g. 32 for BEL or 33 for FRA).
          format: int32
        hasStates:
          type: boolean
          description: Indicates whether the country has states (e.g. USA or CAN).
        hasRegulationRequirement:
          type: boolean
          description: >-
            Indicates whether the country has any address regulation
            requirements for example like in Germany (DEU) where a DID is
            required to be linked to an address and a proof of address.
    ListCountryResponse:
      type: object
      properties:
        countries:
          type: array
          items:
            $ref: '#/components/schemas/Country'
        resultCount:
          type: integer
          format: int32
          xml:
            attribute: true
    ListStateResponse:
      type: object
      properties:
        states:
          type: array
          items:
            $ref: '#/components/schemas/State'
    State:
      type: object
      properties:
        stateId:
          type: integer
          description: The ID of the state.
          format: int32
        stateName:
          type: string
          description: The name of the state e.g. 'Alabama'.
        stateCode:
          type: string
          description: The 2-letters code of the state , e.g. 'AL' for Alabama.
        countryCodeA3:
          type: string
          description: Country code of the country in its ISO 3166-1 alpha-3 format.
    ListRestrictionResponse:
      type: object
      properties:
        restrictions:
          type: array
          items:
            $ref: '#/components/schemas/Restriction'
    Restriction:
      type: object
      properties:
        countryCodeA3:
          type: string
          description: The three letter identifier of the country.
        restrictionType:
          type: string
          description: The type of restriction.
          enum:
            - PURCHASE
            - LEGAL
            - SERVICE
            - NRA
            - PORTING_PRICE
        restrictionMessage:
          type: string
          description: >-
            The restriction details in plain text, e.g. 'Calling a toll free
            number from a mobile phone is not free of charge.'.
    CreditPackage:
      type: object
      properties:
        creditPackageId:
          type: integer
          description: The ID of the credit package.
          format: int32
        name:
          type: string
          description: The name of the credit package.
        price100:
          type: integer
          description: The price of the credit package multiplied by 100.
          format: int32
    ListCreditPackageResponse:
      type: object
      properties:
        creditPackages:
          type: array
          items:
            $ref: '#/components/schemas/CreditPackage'
    ListTrunkResponse:
      type: object
      properties:
        trunks:
          type: array
          items:
            $ref: '#/components/schemas/Trunk'
    Trunk:
      type: object
      properties:
        trunkId:
          type: integer
          description: The ID of the trunk that the DID belongs to.
          format: int32
        zone:
          type: string
          description: >-
            The name of the zone of the trunk. Possible values are A, B, C and
            WORLDWIDE.
        capacity:
          type: integer
          description: The total capacity of the trunk.
          format: int32
        description:
          type: string
          description: Is not currently in use and the default value is 'Default trunk'.
        countDidsOnTrunk:
          type: integer
          description: The amount of DIDs that are currently set on the trunk.
          format: int32
    CheckoutCartResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            A 'SUCCESS' message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
        productCheckoutList:
          type: array
          items:
            $ref: '#/components/schemas/ProductCheckout'
    ProductCheckout:
      type: object
      properties:
        productType:
          type: string
          description: Product Type of ordered products.
          enum:
            - DID
            - CAPACITY
            - CREDIT_PACKAGE
        status:
          type: string
          description: Status of ordered products.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
        orderReference:
          type: string
          description: Order Reference of ordered products.
        message:
          type: string
          description: Message with additional information for ordered products.
    AddToCartResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            A 'SUCCESS' message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
      x-examples: {}
    AddCapacityToCartRequest:
      type: object
      properties:
        capacityCartItem:
          $ref: '#/components/schemas/CapacityCartItem'
    AddCreditPackageToCartRequest:
      type: object
      properties:
        creditPackageCartItem:
          $ref: '#/components/schemas/CreditPackageCartItem'
    AddDidToCartRequest:
      type: object
      properties:
        didCartItem:
          $ref: '#/components/schemas/DidCartItem'
    AddPhoneNumbersToCartRequest:
      type: object
      properties:
        phoneNumbers:
          $ref: '#/components/schemas/PhoneNumberCartItem'
    CapacityCartItem:
      type: object
      properties:
        zone:
          type: string
          description: >-
            To add channels to your cart, you need to specify a valid zone (A,
            B, C or WORLDWIDE).
        quantity:
          type: integer
          description: Amount of channels required.
          format: int32
      description: >-
        CapacityCartItem corresponds to capacity (VoxTRUNK channels). Only one
        capacityCartItem can be added per request and capacity must be ordered
        in multiple of 10.
    CreditPackageCartItem:
      type: object
      properties:
        creditPackageId:
          type: integer
          description: >-
            To add prepaid credits to your cart, you need to specify a valid ID
            for the creditPackage
          format: int32
        quantity:
          type: integer
          description: The amount of prepaid credits required.
          format: int32
      description: CreditPackageCartItem corresponds to prepaid credits.
      x-examples: {}
    DidCartItem:
      type: object
      description: DidCartItem corresponds to DIDs
      x-examples: {}
      properties:
        didGroupId:
          type: integer
          description: >-
            To add one or multiple DIDs to your cart, you need to specify a
            valid ID for the DID group of the DIDs. Note that you can specify
            multiple ids by repeating the query parameter.
          format: int32
          example: -100000000
        quantity:
          type: integer
          description: Amount of DIDs from that DID group.
          format: int32
          example: 0
    PhoneNumberCartItem:
      type: array
      description: Corresponds to a list of Phone Numbers in a cart
      items:
        $ref: '#/components/schemas/phoneNumber'
    RemoveFromCartResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            A 'SUCCESS' message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
      x-examples: {}
    RemoveQuantityFromCartRequest:
      type: object
      x-examples:
        example-1:
          quantity: -2147483648
      properties:
        quantity:
          type: integer
          description: >-
            Quantity of items that you want to remove from the cart. If the
            quantity specified is equal to the existing quantity, then the whole
            orderProductId will be removed from the Cart. Note that capacity
            must be removed in multiple of 10.
          format: int32
      required:
        - quantity
    RemovePhoneNumbersFromCartRequest:
      type: object
      x-examples:
        example-1:
          phoneNumbers:
            - '+31208908115'
            - '+31208908116'
            - '+31208908117'
      properties:
        phoneNumbers:
          type: array
          items:
            type: string
            description: The phone number digits in E.164 format
          example:
            - '+31208908115'
            - '+31208908116'
            - '+31208908117'
      required:
        - phoneNumbers
    AccountBalance:
      type: object
      properties:
        balance:
          type: number
          description: This is the current balance in your business account.
          format: double
        threshold:
          type: number
          description: >-
            This is the value of the threshold at which your business account is
            automatically refilled (if active is set to true).
          format: double
        currency:
          type: string
          description: This is the currency of your account (USD or EUR).
        active:
          type: boolean
          description: >-
            This is the state of the automatic refill option: true=automatic
            refill is active or false=automatic refill is inactive.
    AccountBalanceResponse:
      required:
        - accountBalance
      type: object
      properties:
        accountBalance:
          $ref: '#/components/schemas/AccountBalance'
    CancelDidsResponse:
      type: object
      properties:
        numberCancelled:
          type: integer
          description: Amount of DIDs successfully cancelled with request.
          format: int32
    CancelDidsRequest:
      type: object
      properties:
        didIds:
          type: array
          description: >-
            Array of identifier of the dids to cancel from order. Note that you
            can specify multiple ids by repeating the query parameter.
          items:
            type: integer
            format: int32
    DeleteCartResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            A 'SUCCESS' message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
      x-examples: {}
    Cart:
      type: object
      properties:
        cartIdentifier:
          type: integer
          description: >-
            The identifier of your cart which is formed of a fixed string such
            as 'apiv3:60677:' and an ID which is incremented each time a new
            cart is created.
          format: int32
        customerReference:
          type: string
          description: Reference set in request.
        description:
          type: string
          description: Description set in request.
        dateAdded:
          type: string
          description: Date cart was created.
        orderProducts:
          type: array
          items:
            $ref: '#/components/schemas/OrderProduct'
      x-examples:
        example-1:
          cartIdentifier: -2147483648
          customerReference: string
          description: string
          dateAdded: string
          orderProducts:
            - orderProductId: 0
              productType: DID
              productDescription: string
              quantity: 0
              didgroupId: 0
              phoneNumbers:
                - digits: '+31208908115'
                  holdingUntil: 2022-07-04 15:10:26 UTC
    ListCartResponse:
      type: object
      properties:
        carts:
          type: array
          items:
            $ref: '#/components/schemas/Cart'
        resultCount:
          type: integer
          description: Total number of results corresponding to the query.
          format: int32
          xml:
            attribute: true
      x-examples: {}
    OrderProduct:
      type: object
      x-examples:
        example-1:
          orderProductId: -2147483648
          productType: DID
          productDescription: string
          quantity: -2147483648
          didgroupId: -2147483648
          phoneNumbers:
            - digits: '+31208908115'
              holdingUntil: 2022-07-04 15:10:26 UTC
      properties:
        orderProductId:
          type: integer
          description: ID of product added to cart.
          format: int32
        productType:
          type: string
          description: Type of product added to cart.
          enum:
            - DID
            - CAPACITY
            - CREDIT_PACKAGE
        productDescription:
          type: string
          description: Description of product added to cart.
        quantity:
          type: integer
          description: Quantiy of product added to cart.
          format: int32
        didgroupId:
          type: integer
          description: >-
            The ID of the DIDgroup that the DID added to the cart belongs to. A
            listDidGroup method is available to get information on DID groups.
          format: int32
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/phoneNumberInCart'
    ListOrderResponse:
      type: object
      properties:
        orders:
          type: array
          items:
            $ref: '#/components/schemas/Order'
        resultCount:
          type: integer
          description: The total amount of orders found.
          format: int32
          xml:
            attribute: true
    Order:
      type: object
      x-examples: {}
      properties:
        userName:
          type: string
        orderId:
          type: integer
          description: The ID of the order.
          format: int32
        reference:
          type: string
          description: The reference of the order.
        dateAdded:
          type: string
          description: >-
            The timestamp for the order's creation date in the format YYYY-MM-DD
            HH:MM:SS.
        dateCanceled:
          type: string
          description: >-
            The timestamp for the order's cancellation date in the format
            YYYY-MM-DD HH:MM:SS.
        status:
          type: string
          description: The status of the order.
          enum:
            - CREATED
            - CONFIRMED
            - FULFILLED
            - CANCELED
            - CANCELED_PAYMENT
        customerReference:
          type: string
          description: Your own customer reference defined in createCart.
        didGroups:
          type: object
          properties:
            didGroupId:
              type: string
            countryCodeA3:
              type: string
            stateId:
              type: string
            didType:
              type: string
            cityName:
              type: string
            areaCode:
              type: string
            rateCenter:
              type: string
            phoneNumbers:
              type: array
              items:
                type: string
    CreateCartResponse:
      required:
        - cart
      type: object
      properties:
        cart:
          $ref: '#/components/schemas/Cart'
    CreateCartRequest:
      type: object
      properties:
        customerReference:
          type: string
          description: This is a parameter that can be used for your own reference.
        description:
          type: string
          description: This is the description or the name you want to give to the cart.
      x-examples:
        example-1:
          customerReference: string
          description: string
    ExtraFields:
      type: object
      properties:
        title:
          type: string
          description: >-
            Italy / GEOGRAPHIC and TOLL_FREE / String, maximum length: 60.
            Mandatory for Company end user only.
        province:
          type: string
          description: >-
            Italy / GEOGRAPHIC and TOLL_FREE / String, maximum length: 60.
            Optional field.
        firstName:
          type: string
          description: >-
            Italy / GEOGRAPHIC and TOLL_FREE / String, maximum length: 60.
            Mandatory for Company end user only.
        lastName:
          type: string
          description: >-
            Italy / GEOGRAPHIC and TOLL_FREE / String, maximum length: 60.
            Mandatory for Company end user only.
        nationality:
          maxLength: 60
          minLength: 0
          type: string
          description: >-
            Spain / Mobile / String, maximum length: 60. The exact format can be
            chosen freely as long as it allows a human to understand it. We
            recommend using the full country name but the ISO-3166-1 alpha-3
            code is acceptable if it is easier to process by your system.
        streetCode:
          maxLength: 4
          minLength: 0
          type: string
          description: 'Denmark / ALL / String, maximum length: 4.'
        municipalityCode:
          maxLength: 4
          minLength: 0
          type: string
          description: 'Denmark / ALL / String, maximum length: 4.'
        idType:
          type: string
          description: >-
            Spain / Mobile / DNI, NIE, NIF, PASSPORT. Only required for personal
            addresses (salutation is either MR or MS).
          enum:
            - DNI
            - NIF
            - NIE
            - PASSPORT
        dateOfBirth:
          type: string
          description: >-
            Italy / GEOGRAPHIC and TOLL_FREE / String (yyyy-mm-dd), maximum
            length: 10. Validation made for age > 18 years.
        placeOfBirth:
          type: string
          description: >-
            Italy / GEOGRAPHIC and TOLL_FREE / String, maximum length: 60. Both
            City and country of birth is expected.
        companyVatNumber:
          type: string
          description: >-
            Italy / GEOGRAPHIC and TOLL_FREE / String, maximum length: 60.
            Mandatory for Company end user only.
        taxCode:
          type: string
          description: >-
            Italy / GEOGRAPHIC and TOLL_FREE / String, maximum length: 60.
            Mandatory field.
        idNumber:
          maxLength: 60
          minLength: 0
          type: string
          description: >-
            Spain / Mobile / String, maximum length: 60. Only required for
            personal addresses (salutation is either MR or MS), additional
            validation is performed depending on the type of ID. DNI: 8 digits
            followed by 1 letter / NIE: 1 letter (X,Y or Z), followed by 7
            digits, followed by 1 letter / NIF: 8 digits followed by 1 letter /
            PASSPORT: no additional validation.
        fiscalIdentificationCode:
          maxLength: 60
          minLength: 0
          type: string
          description: >-
            Spain / Mobile / String, maximum length: 60. Only required for
            professional addresses (salutation is COMPANY).
        state:
          type: string
          description: ' Italy / GEOGRAPHIC and TOLL_FREE / String, maximum length: 60. Optional field.'
      description: >-
        These are extra address parameters that are required in certain
        countries and for certain DID types.
    ListRegulationAddressResponse:
      type: object
      properties:
        regulationAddresses:
          type: array
          description: >-
            A list with regulation addresses corresponding to the request filter
            (if any).
          items:
            $ref: '#/components/schemas/RegulationAddress'
        resultCount:
          type: integer
          description: The total number of records corresponding to the request filter.
          format: int32
    RegulationAddress:
      type: object
      properties:
        addressId:
          type: integer
          description: >-
            This is the ID of the regulation address which is returned by
            createRegulationAddress.
          format: int32
        linked:
          type: boolean
          description: Flag that specifies if the addresses should be linked to a DID.
        status:
          type: string
          description: This is the current status of the regulation address.
          enum:
            - NOT_VERIFIED
            - VERIFIED
            - VERIFICATION_REQUESTED
            - REJECTED
            - VERIFICATION_NOT_REQUIRED
        salutation:
          type: string
          description: >-
            This is the salutation of the end user for the listed address: MR or
            MS if firstName and lastName are used or COMPANY if companyName is
            used.
          enum:
            - MR
            - MS
            - COMPANY
        companyName:
          type: string
          description: Name of the company.
        companyDescription:
          type: string
          description: >-
            This is the company description for the end user of the listed
            address.
        firstName:
          type: string
          description: First name of the customer.
        lastName:
          type: string
          description: Last name of the customer.
        countryCodeA3:
          type: string
          description: The three letter identifier for the address's country.
        city:
          type: string
          description: The city for the address.
        zipCode:
          type: string
          description: The zip code for the address.
        streetName:
          type: string
          description: The street for the address.
        buildingNumber:
          type: string
          description: The building number for the address.
        buildingLetter:
          type: string
          description: >-
            This is the building letter which can also be used for additional
            information on the street number.
        customerReference:
          type: string
          description: The reference for the customer.
        extraFields:
          $ref: '#/components/schemas/ExtraFields'
        rejectionReasons:
          type: array
          description: Reasons for the rejection of the regulation address verification.
          items:
            type: string
            enum:
              - INVALID_DOC_NOT_RECENT_ENOUGH
              - INVALID_DOC_CORRUPT
              - INVALID_DOC_ILLEGIBLE
              - INVALID_DOC_MISSING
              - INVALID_DOC_WHOLE
              - INVALID_DOCTYPE_INVOICES
              - INVALID_DOCTYPE_GOVERNMENT_DOCS
              - INVALID_DOCTYPE_VIRTUAL_ADDRESS
              - INVALID_DOCTYPE_ATTESTATIONS
              - INVALID_DOCTYPE_THIRD_PARTY
              - INVALID_DOCTYPE_REQUIRED_ID
              - INVALID_DOCTYPE_REQUIRED_ADDRESS
              - INVALID_DOCTYPE_FIXED_LINE_PROOF
              - INVALID_DOCTYPE_ID_TYPE
              - INVALID_DOCTYPE_ID_TYPE_ADDRESS
              - INVALID_DOCTYPE_PASSPORT
              - INCOMPLETE_INFO_DATE
              - INCOMPLETE_INFO_ADDRESS
              - INCOMPLETE_INFO_PROOFS
              - INCOMPLETE_INFO_BUSINESS_REG
              - INCOMPLETE_INFO_LEGAL_REP
              - INCOMPLETE_INFO_LEGAL_REP_ID
              - INCOMPLETE_INFO_LEGAL_ZIP
              - INCOMPLETE_INFO_PO_BOX
              - INCOMPLETE_INFO_REP_PICTURE
              - INCOMPLETE_INFO_CHINESE_RECEIPT
              - INFO_MISMATCH_ADDRESS_PROOF
              - INFO_MISMATCH_ID_PROOF
              - INFO_MISMATCH_DETAILS
              - INFO_MISMATCH_ADDRESS
              - INFO_MISMATCH_LOCATION
              - INFO_MISMATCH_RESIDE
              - INFO_MISMATCH_FATHER
              - INFO_MISMATCH_MOTHER
              - INFO_MISMATCH_COMPANY_REG
              - INFO_MISMATCH_ID_NUMBER
              - INFO_MISMATCH_COMPANY_NUMBER
              - INFO_MISMATCH_COMPANY_TAX_NUMBER
              - INFO_MISMATCH_BIRTH_PLACE
              - INFO_MISMATCH_BIRTH_DATE
              - INFO_MISMATCH_ID
              - OTHER_ABUSE
              - OTHER_REGULATIONS
    LinkRegulationAddressResponse:
      type: object
      properties:
        status:
          type: string
          enum:
            - NUMBERS_LINKED_AND_UNBLOCKED
            - NUMBERS_LINKED_PENDING_ADDRESS_VALIDATION
            - NUMBERS_UNLINKED_AND_BLOCKED
      description: >-
        This is the result of the operation if successful. If you have
        successfully linked/unlinked the DIDs then you get the status
        NUMBERS_LINKED_AND_UNBLOCKED, NUMBERS_LINKED_PENDING_ADDRESS_VALIDATION
        or NUMBERS_UNLINKED_AND_BLOCKED.
    UploadProofOfAddressResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            SUCCESS message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
    RequestAddressVerificationResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            SUCCESS message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
    IsAddressValidResponse:
      type: object
      properties:
        isValid:
          type: boolean
          description: Indicator if the address is valid or not.
        reasons:
          type: array
          items:
            $ref: '#/components/schemas/Reason'
    Reason:
      type: object
      properties:
        code:
          type: string
          description: The reason code.
        message:
          type: string
          description: The reason message.
      description: >-
        If the address is not valid for the requested country and DID type, a
        reason is returned with a code and message.
    DeleteRegulationAddressResponse:
      type: object
      properties:
        status:
          type: string
          description: >-
            SUCCESS message will indicate that the operation was performed
            successfully.
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
    CreateRegulationAddressResponse:
      type: object
      properties:
        addressId:
          type: integer
          description: >-
            If the operation is successful, the operation will return an
            addressId for the newly created address.
          format: int32
    CreateRegulationAddressRequest:
      required:
        - buildingNumber
        - city
        - countryCodeA3
        - destinationCountryCodeA3
        - didType
        - salutation
        - streetName
        - zipCode
      type: object
      properties:
        salutation:
          type: string
          description: >-
            This is the salutation of the end user for the created address: MR
            or MS if firstName and lastName are used or COMPANY if companyName
            is used.
          enum:
            - MR
            - MS
            - COMPANY
        companyName:
          type: string
          description: >-
            Maximum length: 60. This is the company name for the end user of the
            created address. It is a mandatory field if the salutation is
            COMPANY.
        companyDescription:
          type: string
          description: >-
            Maximum length: 60. This is the company description for the end user
            of the created address.
        firstName:
          type: string
          description: >-
            Maximum length: 60. This is the first name for the end user of the
            created address. It is a mandatory field if the salutation is MR or
            MS.
        lastName:
          type: string
          description: >-
            Maximum length: 60. This is the company name for the end user of the
            created address. It is a mandatory field if the salutation is MR or
            MS.
        countryCodeA3:
          type: string
          description: >-
            The country code for the address in its ISO 3166-1 alpha-3 format
            (e.g. 'GBR' for United Kingdom, 'USA' for United States of America,
            'BEL' for Belgium, etc.).
        city:
          type: string
          description: >-
            Maximum length: 60. This is the city of the end user's address. Note
            that sometimes the city and zip code will have to match the DID's
            area code for instance in Germany (DEU), Croatia (HRV), South Korea
            (KOR), etc. To know whether this is required, you should check the
            local address requirements indicated in the listDidGroup method
            (regulationRequirement.addressType=LOCAL). In those cases the
            listZipCodes method should be used to retrieve a proper city and zip
            code for the DID's area code.
        zipCode:
          type: string
          description: >-
            Maximum length: 10. This is the zip code of the end user's address.
            Note that sometimes the city and zip code will have to match the
            DID's area code for instance in Germany (DEU), Croatia (HRV), South
            Korea (KOR), etc. To know whether this is required, you should check
            the local address requirements indicated in the listDidGroup method
            (regulationRequirement.addressType=LOCAL). In those cases the
            listZipCodes method should be used to retrieve a proper city and zip
            code for the DID's area code.
        streetName:
          type: string
          description: 'Maximum length: 50. This is the name of the end user''s street.'
        buildingNumber:
          type: string
          description: >-
            Maximum length: 10. This is the number of the building or the street
            number of the address.
        buildingLetter:
          type: string
          description: >-
            Maximum length: 10. This is the building letter which can also be
            used for additional information on the street number.
        customerReference:
          type: string
          description: >-
            Maximum length: 60. This is a parameter that can be used for your
            own reference, e.g. to uniquely identify one of your customers.
        phoneNumber:
          type: string
          description: >-
            This field is to be used to provide end-user telephone number (for
            example, for China or Bahrain). Format is +xxnumber
        extraFields:
          $ref: '#/components/schemas/ExtraFields'
        didType:
          type: string
          description: >-
            This is the DID's type (GEOGRAPHIC, NATIONAL, etc.). This
            information is required before the address is created since the
            address requirements change based on this information. The system
            will perform automatically a first address validation based on the
            DID's country and type.
          enum:
            - GEOGRAPHIC
            - TOLL_FREE
            - NATIONAL
            - MOBILE
            - INUM
            - SHARED_COST
            - SPECIAL
        destinationCountryCodeA3:
          type: string
          description: >-
            This is country code A3 of the DID's country (USA, BEL, GBR, DEU,
            etc.). This information is required before the address is created
            since the address requirements change based on this information. The
            system will perform automatically a first address validation based
            on the DID's country and type.
        identityDocumentProof:
          $ref: '#/components/schemas/IdentityDocumentProof'
      description: Model for Create Regulation Address request
    IdentityDocumentProof:
      required:
        - identityDocumentNumber
        - identityDocumentType
        - nationality
      type: object
      properties:
        nationality:
          type: string
          description: >-
            Maximum length: 60. There is no specific format for this field.
            Either full country name or the ISO-3166-1 alpha-3 code is
            acceptable.
        identityDocumentType:
          type: string
          description: >-
            Mandatory for South Africa and Italy. Only BUSINESS_REGISTRATION is
            applicable for ZAF
          enum:
            - PASSPORT
            - NATIONAL_ID_CARD
            - BUSINESS_REGISTRATION
        identityDocumentNumber:
          type: string
          description: >-
            Document number as seen on the ID proof document attached. Maximum
            length: 60. Mandatory for South Africa and Italy.
        issuingAuthority:
          type: string
          description: >-
            Name of the issuing authority as seen on the ID proof document
            attached. Maximum length: 60. Mandatory for Italy.
        issuingDate:
          type: string
          description: >-
            Issuing date as seen on the ID proof document attached. Maximum
            length: 10. Mandatory for Italy - Format is yyyy-mm-dd. Has to be a
            date in the past.
      description: >-
        Model for proof of ID document. Required when the `countryCodeA3` is
        `FRA`(France) and `didType` is `GEOGRAPHIC` or
        `destinationCountryCodeA3` is set as `ZAF` (South Africa) or `ITA`
        (Italy)
    CityZipCode:
      type: object
      properties:
        cityName:
          type: string
          description: This is the name of the city.
        zipCode:
          type: string
          description: This is the zip code of the city.
    ListZipCodesResponse:
      type: object
      properties:
        cityZipCodes:
          type: array
          description: All combinations of city and zip code corresponding to the query.
          items:
            $ref: '#/components/schemas/CityZipCode'
        resultCount:
          type: integer
          description: Total number of rows corresponding to the query.
          format: int32
          xml:
            attribute: true
    CreateProofOfIdResponse:
      type: object
      properties:
        status:
          type: string
          enum:
            - SUCCESS
            - PARTIAL
            - WARNING
            - ERROR
    CreateProofOfIdRequest:
      required:
        - addressId
      type: object
      properties:
        addressId:
          type: integer
          description: The identifier of the regulation address.
          format: int32
        nationality:
          type: string
          description: >-
            There is no specific format for this field. Either full country name
            or the ISO-3166-1 alpha-3 code is acceptable.
        identityDocumentType:
          type: string
          description: >-
            Type of the ID proof document attached. Mandatory for South Africa
            and Italy. Only BUSINESS_REGISTRATION is applicable for ZAF.
          enum:
            - PASSPORT
            - NATIONAL_ID_CARD
            - BUSINESS_REGISTRATION
        identityDocumentNumber:
          type: string
          description: >-
            The document number as seen on the proof document attached.
            Mandatory for South Africa and Italy.
        issuingAuthority:
          type: string
          description: >-
            The issuing authority as seen on the proof document attached.
            Mandatory for Italy.
        issuingDate:
          type: string
          description: >-
            The issuing date as seen on the proof document attached. Mandatory
            for Italy - Format is yyyy-mm-dd. Has to be a date in the past.
    callback:
      title: callback
      type: object
      description: Callback Object
      properties:
        url:
          type: string
      example:
        callback:
          url: some-url
    subscriptionStatusEnum:
      title: Subscription Status Enum
      type: string
      description: The Status of the Subscription
      enum:
        - ACTIVE
        - INACTIVE
      example: ACTIVE
    subscription:
      title: Subscription
      description: Data representing a Subscription
      type: object
      nullable: true
      properties:
        product:
          $ref: '#/components/schemas/productEnum'
        eventType:
          $ref: '#/components/schemas/eventTypeEnum'
        entityId:
          description: >-
            Unique Id of object/action processed which generates Event for
            Notification. eventType value is Required when this value is
            present. Must be alphanumeric, can contain dashes and underscores.
          type: string
          minLength: 1
          maxLength: 256
          nullable: false
          example: unique_entity_id
        subscriptionStatus:
          anyOf:
            - $ref: '#/components/schemas/subscriptionStatusEnum'
        tags:
          description: >-
            Tag key and value must consist of alphanumeric characters, hyphens,
            and underscores
          nullable: true
          title: Tag Elements
          type: array
          maxItems: 5
          items:
            $ref: '#/components/schemas/tag'
        notifyStates:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/portinEventStatusEnum'
        notificationChannel:
          description: >
            NOTE: When a request without the `Authorization` header is made to a
            callback url that supports basic authentication, then the expected
            behavior is:

            1. Response code is `401` or `407`. 

            2. Response headers should contain `WWW-Authenticate` or
            `Proxy-Authenticate` specifying basic authentication as a scheme.
            For example `WWW-Authenticate":"Basic realm="Bandwidth API"`.
          type: array
          items:
            $ref: '#/components/schemas/notificationChannel'
          example:
            - callback: test-callback
              url: https://test-callback.xyz.com/callback
              callbackCredentials:
                basicAuthentication:
                  username: myusername
                  password: mypassword
      required:
        - product
        - notificationChannel
      example:
        product: PORTING
        eventType: PORTIN_ORDER_STATUS
        entityId: unique_entity_id
        subscriptionStatus: ACTIVE
        tags:
          - name: My_Custom_Tag
            value: abc123-456def
        notifyStates:
          - ACCEPTED_BY_CARRIER
        notificationChannel:
          - callback: test-callback
            url: some-url
            callbackCredentials:
              basicAuthentication:
                username: username
                password: password
    modifySubscription:
      title: Modify Subscription
      description: Modify Subscription Model
      type: object
      properties:
        eventType:
          $ref: '#/components/schemas/eventTypeEnum'
        entityId:
          description: >-
            Unique Id of object/action processed which generates Event for
            Notification. eventType value is Required when this value is
            present. Must be alphanumeric, can contain dashes and underscores.
          type: string
          minLength: 1
          maxLength: 256
          nullable: false
          example: unique_entity_id
        subscriptionStatus:
          $ref: '#/components/schemas/subscriptionStatusEnum'
        tags:
          nullable: true
          title: Tag Elements
          type: array
          maxItems: 5
          items:
            $ref: '#/components/schemas/tag'
        notifyStates:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/portinEventStatusEnum'
        notificationChannel:
          type: array
          items:
            $ref: '#/components/schemas/notificationChannel'
          example:
            - callback: test-callback
              url: https://test-callback.xyz.com/callback
              callbackCredentials:
                basicAuthentication:
                  username: myusername
                  password: mypassword
      example:
        exampleModifySubscription: null
        eventType: PORTIN_ORDER_STATUS
        entityId: unique_entity_id
        subscriptionStatus: ACTIVE
        tags:
          - name: string
            value: string
        notifyStates:
          - ACCEPTED_BY_CARRIER
          - COMPLETED
        notificationChannel:
          callback: null
          url: some-url
          callbackCredentials:
            - basicAuthentication:
                username: username
                password: password
    subscriptionResponse:
      title: Subscription Response
      description: Subscription Response Object
      allOf:
        - type: object
          properties:
            subscriptionId:
              type: string
              example: adfaf-134afd
            dateOfLastModification:
              description: Last Modified date
              type: string
              format: date-time
              example: '2022-05-23T12:00:00'
        - $ref: '#/components/schemas/subscription'
      example:
        exampleSubscriptionResponse:
          subscriptionId: adfaf-134afd
          dateOfLastModification: '2022-05-23T12:00:00'
          product: PORTING
          eventType: PORTIN_ORDER_STATUS
          entityId: unique_entity_id
          subscriptionStatus: ACTIVE
          tags:
            - name: string
              value: string
          notifyStates:
            - ACCEPTED_BY_CARRIER
          notificationChannel:
            callback: null
            url: some-url
            callbackCredentials:
              - basicAuthentication:
                  username: username
                  password: password
    eventTypeEnum:
      title: eventTypeEnum
      type: string
      nullable: true
      description: >-
        The Event Type of the Subscription. This value is Required when entityId
        is present
      enum:
        - PORTIN_ORDER_STATUS
        - null
      example: PORTIN_ORDER_STATUS
    productEnum:
      title: productEnum
      type: string
      description: The Product of the Subscription
      enum:
        - PORTING
      example: PORTING
    portinEventStatusEnum:
      title: portinEventStatusEnum
      type: string
      nullable: true
      description: "The valid Event Status values \n<table>\n  <tr>\n    <th>Status</th>\n    <th>Description</th>\n  </tr>\n  <tr>\n    <td>ACCEPTED_BY_CARRIER </td>\n    <td>Good news - your port-in is accepted by our carrier. </td>\n  </tr>\n  <tr>\n    <td>CANCELED </td>\n    <td>Your port-in order is cancelled. </td>\n  </tr>\n  <tr>\n    <td>COMPLETED </td>\n    <td>Your port-in order is completed. </td>\n  </tr>    \n  <tr>\n    <td>DRAFT </td>\n    <td> Your port-in order is created, but not yet submitted. You can change the content of the order or delete it anytime. </td>\n  </tr>\n  <tr>\n    <td>MISSING_DATA </td>\n    <td>Your port-in order has been returned by our LNP team - because the order doesn't contain required information, this can be data or document. Your order has to be amended and resubmitted again. </td>\n  </tr>   \n  </tr>\n  <tr>\n    <td>PENDING_CARRIER_APPROVAL </td>\n    <td> Your port-in order is transmitted to our carrier.</td>\n  </tr>   \n  <tr>\n    <td>PROCESSING_CANCELLATION </td>\n    <td>You are requesting the cancellation of your order. Our LNP team will get back to you shortly </td>\n  </tr>  \n  <tr>\n    <td>READY_FOR_CONFIGURATION</td>\n    <td>Your numbers are ready for configuration. You can now assign your configuration profile to your order. </td>\n  </tr>           \n  <tr>\n    <td>REJECTED </td>\n    <td>\tYour port-in order is rejected by our LNP team/carrier. Please contact our LNP team for further details.Your port-in order is submitted, our LNP team will take care of it shortly. In case you need to change your order, you have to request a cancellation or ask our LNP team to return your order. </td>\n  </tr>  \n  <tr>\n    <td>SUBMITTED </td>\n    <td>Your port-in order is submitted, our LNP team will take care of it shortly. In case you need to change your order, you have to request a cancellation or ask our LNP team to return your order. </td>\n  </tr>                                                                 \n</table>\n"
      enum:
        - ACCEPTED_BY_CARRIER
        - CANCELED
        - COMPLETED
        - DRAFT
        - MISSING_DATA
        - PENDING_CARRIER_APPROVAL
        - PROCESSING_CANCELLATION
        - READY_FOR_CONFIGURATION
        - REJECTED
        - SUBMITTED
        - null
    tag:
      description: Tag Information
      title: Tag Element
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 256
        value:
          type: string
          minLength: 1
          maxLength: 256
      example:
        name: My Custom Tag
        value: abc123-456def
    notificationChannel:
      title: Notification Channel
      type: object
      properties:
        callback:
          type: string
        url:
          description: Callback Url
          type: string
        callbackCredentials:
          type: object
          properties:
            basicAuthentication:
              description: Basic Authentication callback credentials
              type: object
              properties:
                username:
                  type: string
                  description: Basic authentication username.
                  example: myUsername
                password:
                  type: string
                  description: Basic authentication password.
                  example: myPassword1!
    responseProperties:
      description: Response Properties
      title: responseProperties
      properties:
        links:
          type: array
          nullable: true
          items:
            type: string
        data:
          type: object
          nullable: true
        errors:
          type: array
          nullable: true
          uniqueItems: true
          minItems: 1
          items:
            type: object
            properties:
              type:
                type: string
                minLength: 1
              description:
                type: string
                minLength: 1
              code:
                type: string
                minLength: 1
              source:
                type: object
              id:
                type: string
                minLength: 1
              meta:
                type: object
                nullable: true
                properties:
                  portInOrderId:
                    type: string
                    minLength: 1
                  phoneNumber:
                    type: string
                    minLength: 1
            required:
              - type
              - description
              - code
              - id
          required:
            - links
            - data
            - errors
      example:
        - errorExample: null
          links: null
          data: null
          errors:
            - type: internal-server-error
              description: >-
                Unexpected internal server error. Contact Bandwidth Customer
                Support if this problem persists.
              code: optional-but-recommended-error-code
              id: optional-error-id
              meta:
                message: An optional metadata field
        - dataExample: null
          data:
            subscriptions:
              - product: PORTING
                subscriptionId: string
                dateOfLastModification: '2019-08-24T14:15:22Z'
                eventType: PORTIN_ORDER_STATUS
                entityId: unique-id-value
                subscriptionStatus: ACTIVE
                tags:
                  - name: tag-name
                    value: tag-value
                notifyStates:
                  - DRAFT
                  - COMPLETED
                notificationChannel:
                  callback: null
                  url: some-url
                  callbackCredentials:
                    - basicAuthentication:
                        username: username
                        password: password
          errors: null
    completeMoveRequest:
      type: object
      properties:
        phoneNumbers:
          type: array
          description: Complete the move process for these phone numbers
          items:
            type: string
          example:
            - '+123456789'
            - '+123456788'
      required:
        - phoneNumbers
    phoneNumbersMoveResponse:
      type: object
      description: Response for phone numbers move
      properties:
        orderId:
          type: string
          description: Unique reference identifier for the move request
          example: 78f79139-0d4d-47ea-ae71-1cc601082ce3
        message:
          type: string
          description: Status indicating if the move request is submitted successfully
          example: Move request submitted successfully
    phoneNumbersCompletionResponse:
      type: object
      description: Response for phone number move
      properties:
        orderId:
          type: string
          description: Unique reference Identifier for the completion request
          example: f2bd8ca9-0ac0-4cf6-84c5-0a7c86ac286b
        status:
          type: string
          description: >-
            Status indicating if the completion request is submitted
            successfully
          example: Submitted successfully
        message:
          type: string
          description: >-
            Message indicating if the completion request is submitted
            successfully
          example: Completion of Phone numbers movement has started
    moveStatusResponse:
      type: object
      properties:
        status:
          type: string
          description: Status of the move request
          enum:
            - SUBMITTED
            - IN_PROGRESS
            - COMPLETED_WITH_SUCCESS
            - COMPLETED_WITH_FAILURES
            - FAILED
        total:
          type: integer
          description: Total number of phone numbers in the move request
        success:
          type: integer
          description: Count of successfully moved phone numbers
        error:
          type: integer
          description: Count of phone numbers failed to move
        inProgress:
          type: integer
          description: Count of phone numbers in progress for move
        results:
          type: array
          description: List of phone numbers move results
          items:
            type: object
            properties:
              phoneNumber:
                type: string
                description: Phone number in E164 format
              status:
                type: string
                description: Move status for the phone numbers
                enum:
                  - SUCCESS
                  - FAILED
                  - IN_PROGRESS
              description:
                type: string
                description: Error description if status is FAILED
                nullable: true
    completionStatusResponse:
      type: object
      properties:
        status:
          type: string
          description: Status of the complete request
          enum:
            - SUBMITTED
            - IN_PROGRESS
            - COMPLETED_WITH_SUCCESS
            - COMPLETED_WITH_FAILURES
            - FAILED
        total:
          type: integer
          description: Total number of phone numbers in the completion request
        success:
          type: integer
          description: Count of successfully completed phone numbers
        error:
          type: integer
          description: Count of phone numbers failed to complete
        inProgress:
          type: integer
          description: Count of phone numbers in progress for completion
        results:
          type: array
          description: List of phone numbers completion results
          items:
            type: object
            properties:
              phoneNumber:
                type: string
                description: Phone number in E164 format
              status:
                type: string
                description: Completion status for the phone numbers
                enum:
                  - SUCCESS
                  - FAILED
                  - IN_PROGRESS
              description:
                type: string
                description: Error description if status is FAILED
                nullable: true
    phoneNumbersMoveRequest:
      type: object
      properties:
        phoneNumbers:
          type: array
          description: List of phone numbers in e164 format to be moved
          items:
            type: string
          example:
            - '+353784473167'
            - '+356759743674'
        accountId:
          type: string
          description: Service Account Number of the destination account in UP
          example: '7651234'
        subAccountId:
          type: string
          description: Sub-Account ID of the destination account in UP
          example: '15001'
        locationId:
          type: string
          description: Location ID of the destination account in UP
          example: '512345'
        voiceConfigurationPackageId:
          type: string
          description: Voice Configuration Package ID to be linked to the number in UP
          example: 4d7c9126-46d0-4bf8-8984-4a83ba4afb26
      required:
        - phoneNumbers
        - accountId
        - subAccountId
        - locationId
        - voiceConfigurationPackageId
    genericErrorResponse:
      title: Generic Error Response
      type: object
      description: A generic error response object
      properties:
        links:
          type: array
          description: An array of links to other resources
          nullable: true
          items:
            $ref: '#/components/schemas/link'
          example:
            - href: http://api/resources/id
              rel: next
              method: GET
        data:
          type: object
          description: A generic object for any additional data
          nullable: true
        errors:
          type: array
          description: An array of error objects
          nullable: true
          items:
            $ref: '#/components/schemas/error'
          example:
            - type: object
              description: string
              code: 1234
              source:
                type: object
                parameter: string
                field: string
                header: string
                reference: string
                method: string
    error:
      title: Error
      type: object
      description: An error object
      properties:
        id:
          type: string
          description: A unique identifier for this particular instance of this problem.
          example: d8c5c0ea-c9e3-4017-8df7-ddc8c2c214a9
        type:
          type: string
          description: >-
            A short, human-readable summary of the problem that SHOULD NOT
            change from occurrence to occurrence of the problem
          example: request-error
        description:
          type: string
          description: >-
            A human-readable explanation that SHOULD be specific to this
            occurrence of the problem.
          example: There was an issue with a field in your request body
        code:
          type: integer
          format: int32
          description: >-
            An application-specific error code for services with extensive error
            scenarios to supplement `description`.
          minimum: 4
          example: 1203
        source:
          $ref: '#/components/schemas/errorSource'
        meta:
          $ref: '#/components/schemas/errorMeta'
      required:
        - type
        - description
        - code
    errorSource:
      title: Error Source
      type: object
      properties:
        parameter:
          type: string
          description: A string indicating which URI query parameter caused the error.
          example: someParameter
          nullable: true
        field:
          type: string
          description: A string indicating which request body field caused the error.
          example: someField
          nullable: true
        header:
          type: string
          description: A string indicating which header field caused the error.
          example: someHeader
          nullable: true
        reference:
          type: string
          description: >-
            A string that references a resource ID or path to the resource (or
            non-existent resource) causing the error.
          example: /some/reference
          nullable: true
        method:
          type: string
          description: A string indicating which HTTP method caused the error.
          example: POST
          nullable: true
    errorMeta:
      title: Error Meta
      type: object
      nullable: true
      additionalProperties:
        type: string
        example: error info
    link:
      title: Link
      description: A link to another resource
      type: object
      properties:
        href:
          type: string
          description: URI of the link.
          example: /relative/uri
        rel:
          type: string
          description: Specifies the relationship between this link and the resource.
          example: aRelatedResource
        method:
          type: string
          description: HTTP method to be used.
          example: GET
    ErrorResponse:
      type: object
      properties:
        httpStatusCode:
          type: integer
          example: 400
        genericErrorMessage:
          type: string
          example: >-
            An error occurred during the validation of your request. Please
            review the messages below for more information
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ApiError'
    ApiError:
      type: object
      properties:
        apiErrorCode:
          type: string
          example: '400'
        apiErrorMessage:
          type: string
          example: >-
            The phone number is not valid, either it does not exist or the phone
            number does not belong to you
  responses:
    subscriptionListResponse:
      description: OK
      content:
        application/json:
          schema:
            description: Response with multiple Subscription elements
            type: object
            properties:
              links:
                type: array
                nullable: true
                items:
                  type: object
              data:
                type: object
                nullable: true
                properties:
                  subscriptions:
                    type: array
                    uniqueItems: true
                    minItems: 0
                    items:
                      $ref: '#/components/schemas/subscriptionResponse'
              errors:
                type: array
                nullable: true
                items:
                  type: object
          examples:
            subscriptionListResponseExample:
              description: Example Subscription List Response
              value:
                links: null
                data:
                  subscriptions:
                    - product: PORTING
                      subscriptionId: string
                      dateOfLastModification: '2019-08-24T14:15:22Z'
                      eventType: PORTIN_ORDER_STATUS
                      entityId: unique-id-value
                      subscriptionStatus: ACTIVE
                      tags:
                        - name: tag-name
                          value: tag-value
                      notifyStates:
                        - DRAFT
                        - COMPLETED
                      notificationChannel:
                        - callback: test-callback
                          url: some-url
                          callbackCredentials:
                            basicAuthentication:
                              username: username
                              password: password
                errors: null
    subscriptionCreatedResponse:
      description: Created
      content:
        application/json:
          schema:
            description: Subscription Response Object
            type: object
            properties:
              links:
                type: array
                nullable: true
                items:
                  type: object
              data:
                $ref: '#/components/schemas/subscriptionResponse'
              errors:
                type: array
                nullable: true
                items:
                  type: object
          examples:
            subscriptionCreatedResponseExample:
              description: Example Subscription Response
              value:
                links: null
                data:
                  subscriptionId: string
                  dateOfLastModification: '2019-08-24T14:15:22Z'
                  product: PORTING
                  eventType: PORTIN_ORDER_STATUS
                  entityId: unique-id-value
                  subscriptionStatus: ACTIVE
                  tags:
                    - name: tag-name
                      value: tag-value
                  notifyStates:
                    - COMPLETED
                    - DRAFT
                  notificationChannel:
                    - callback: test-callback
                      url: some-url
                      callbackCredentials:
                        basicAuthentication:
                          username: username
                          password: password
                errors: null
    subscriptionResponse:
      description: OK
      content:
        application/json:
          schema:
            description: Subscription Response Object
            type: object
            properties:
              links:
                type: array
                nullable: true
                items:
                  type: object
              data:
                $ref: '#/components/schemas/subscriptionResponse'
              errors:
                type: array
                nullable: true
                items:
                  type: object
          examples:
            subscriptionResponseExample:
              description: Example Subscription Response
              value:
                links: null
                data:
                  subscriptionId: string
                  dateOfLastModification: '2019-08-24T14:15:22Z'
                  product: PORTING
                  eventType: PORTIN_ORDER_STATUS
                  entityId: unique-id-value
                  subscriptionStatus: ACTIVE
                  tags:
                    - name: tag-name
                      value: tag-value
                  notifyStates:
                    - COMPLETED
                    - DRAFT
                  notificationChannel:
                    - callback: test-callback
                      url: some-url
                      callbackCredentials:
                        basicAuthentication:
                          username: username
                          password: password
                errors: null
    moveResponse:
      description: Response for phone numbers move request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/phoneNumbersMoveResponse'
    completionResponse:
      description: Response for phone numbers completion request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/phoneNumbersCompletionResponse'
    moveStatusResponse:
      description: OK
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/moveStatusResponse'
          examples:
            all-success:
              summary: All phone numbers moved successfully
              value:
                status: COMPLETED_WITH_SUCCESS
                total: 3
                success: 3
                error: 0
                inProgress: 0
                results:
                  - phoneNumber: '+3366551111'
                    status: SUCCESS
                  - phoneNumber: '+3366552222'
                    status: SUCCESS
                  - phoneNumber: '+3366553333'
                    status: SUCCESS
            some-failed:
              summary: Some phone numbers failed, some succeeded
              value:
                status: COMPLETED_WITH_FAILURES
                total: 3
                success: 2
                error: 1
                inProgress: 0
                results:
                  - phoneNumber: '+3366551111'
                    status: SUCCESS
                  - phoneNumber: '+3366552222'
                    status: SUCCESS
                  - phoneNumber: '+3366553333'
                    status: FAILED
                    description: Unable to import
            in-progress:
              summary: Move request in progress
              value:
                status: IN_PROGRESS
                total: 3
                success: 1
                error: 1
                inProgress: 1
                results:
                  - phoneNumber: '+3366551111'
                    status: SUCCESS
                  - phoneNumber: '+3366552222'
                    status: FAILED
                    description: Unable to import
                  - phoneNumber: '+3366553333'
                    status: IN_PROGRESS
            all-failed:
              summary: All phone numbers failed to move
              value:
                status: FAILED
                total: 3
                success: 0
                error: 3
                inProgress: 0
                results:
                  - phoneNumber: '+3366551111'
                    status: FAILED
                    description: Unable to import
                  - phoneNumber: '+3366552222'
                    status: FAILED
                    description: Unable to link requirements package
                  - phoneNumber: '+3366553333'
                    status: FAILED
                    description: Unable to link requirements package
    completionStatusResponse:
      description: OK
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/completionStatusResponse'
          examples:
            all-success:
              summary: All phone numbers completed movement successfully
              value:
                status: COMPLETED_WITH_SUCCESS
                total: 3
                success: 3
                error: 0
                inProgress: 0
                results:
                  - phoneNumber: '+3366551111'
                    status: SUCCESS
                  - phoneNumber: '+3366552222'
                    status: SUCCESS
                  - phoneNumber: '+3366553333'
                    status: SUCCESS
            some-failed:
              summary: Some phone numbers failed to complete, some succeeded
              value:
                status: COMPLETED_WITH_FAILURES
                total: 3
                success: 2
                error: 1
                inProgress: 0
                results:
                  - phoneNumber: '+3366551111'
                    status: SUCCESS
                  - phoneNumber: '+3366552222'
                    status: SUCCESS
                  - phoneNumber: '+3366553333'
                    status: FAILED
                    description: Unable to complete the move for this phone number
            in-progress:
              summary: completion request in progress
              value:
                status: IN_PROGRESS
                total: 3
                success: 1
                error: 1
                inProgress: 1
                results:
                  - phoneNumber: '+3366551111'
                    status: SUCCESS
                  - phoneNumber: '+3366552222'
                    status: FAILED
                    description: Unable to complete the move for this phone number
                  - phoneNumber: '+3366553333'
                    status: IN_PROGRESS
            all-failed:
              summary: All phone numbers failed to complete the movement
              value:
                status: FAILED
                total: 3
                success: 0
                error: 3
                inProgress: 0
                results:
                  - phoneNumber: '+3366551111'
                    status: FAILED
                    description: Unable to complete the move for this phone number
                  - phoneNumber: '+3366552222'
                    status: FAILED
                    description: Unable to complete the move for this phone number
                  - phoneNumber: '+3366553333'
                    status: FAILED
                    description: Unable to complete the move for this phone number
    unauthorizedResponse:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/responseProperties'
          examples:
            unauthorizedExample:
              description: Example 401 Unauthorized Response
              value:
                links: null
                data: null
                errors:
                  - type: authentication-credentials
                    description: Invalid or missing credentials.
                    code: optional-but-recommended-error-code
                    id: optional-error-id
                    meta: null
    forbiddenResponse:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/responseProperties'
          examples:
            forbiddenExample:
              description: Example 403 Forbidden Response
              value:
                links: null
                data: null
                errors:
                  - type: resource-permissions
                    description: User does not have permissions to access this resource.
                    code: optional-but-recommended-error-code
                    id: optional-error-id
                    meta: null
    conflictResponse:
      description: Conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/responseProperties'
          examples:
            conflictExample:
              description: Example 409 Conflict Response
              value:
                links: null
                data: null
                errors:
                  - type: resource-conflict
                    description: Subscription Item is in conflict
                    code: optional-but-recommended-error-code
                    source:
                      parameter: subscriptionId
                    id: optional-error-id
                    meta: null
    badRequestResponse:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/responseProperties'
          examples:
            badRequestExample:
              description: Example 400 Bad Request Response
              value:
                links: null
                data: null
                errors:
                  - type: invalid-parameter-value
                    description: '''product'' parameter is invalid'
                    code: optional-but-recommended-error-code
                    source:
                      parameter: product
                    id: optional-error-id
                    meta: null
            missingFieldExample:
              value:
                links: null
                data: null
                errors:
                  - type: missing-field
                    description: '''product'' is missing from request payload'
                    code: optional-but-recommended-error-code
                    source:
                      parameter: product
                    id: optional-error-id
                    meta: null
    notFoundResponse:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/responseProperties'
          examples:
            notFoundExample:
              description: Example 404 Not Found Response
              value:
                links: null
                data: null
                errors:
                  - type: resource-not-found
                    description: The resource specified cannot be found.
                    code: optional-but-recommended-error-code
                    source:
                      reference: api.voxbone.com/v1/subscriptions/123465789
                    id: optional-error-id
                    meta:
                      subscriptionId: '123456789'
    internalErrorResponse:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/responseProperties'
          examples:
            internalErrorExample:
              description: Example 500 Internal Error Response
              value:
                links: null
                data: null
                errors:
                  - type: internal-server-error
                    description: >-
                      Unexpected internal server error.  Contact Bandwidth
                      Customer Support if this problem persists.
                    code: optional-but-recommended-error-code
                    id: optional-error-id
                    meta:
                      message: An optional metadata field
    methodNotAllowedResponse:
      description: Method Not Allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/responseProperties'
          examples:
            methodNotAllowedExample:
              description: Example 405 Method Not Allowed
              value:
                links: null
                data: null
                errors:
                  - type: http-method-not-supported
                    description: The HTTP method used is not supported by this resource.
                    code: optional-but-recommended-error-code
                    source:
                      method: PATCH
                    id: optional-error-id
                    meta:
                      message: An optional metadata field
    tooManyRequestsResponse:
      description: Too Many Requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/responseProperties'
          examples:
            tooManyRequestsExample:
              description: Example 429 Too Many Requests
              value:
                links: null
                data: null
                errors:
                  - type: rate-limiting
                    description: >-
                      Rate limit exceeded. Wait for the time specified in the
                      'Retry-After' header before sending another request.
                    code: optional-but-recommended-error-code
                    id: optional-error-id
                    meta: null
    movePhoneNumbersBadResponse:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missingSubAccountId:
              summary: subAccountId is missing
              value:
                httpStatusCode: 400
                genericErrorMessage: An error occurred while submitting the move request
                apiErrors:
                  - apiErrorCode: 720
                    apiErrorMessage: subAccountId is required to place the move request
            missingLocationId:
              summary: locationId is missing
              value:
                httpStatusCode: 400
                genericErrorMessage: An error occurred while submitting the move request
                apiErrors:
                  - apiErrorCode: 720
                    apiErrorMessage: locationId is required to place the move request
            alreadyMovedPhoneNumbers:
              summary: Phone numbers already moved
              value:
                httpStatusCode: 400
                genericErrorMessage: An error occurred while submitting the move request
                apiErrors:
                  - apiErrorCode: 701
                    apiErrorMessage: >-
                      Some phone numbers have already been moved : [
                      +493031197463 ]
    badPhoneNumbersMoveResponse:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            emptyPhoneNumbers:
              summary: Empty phoneNumbers
              value:
                httpStatusCode: 400
                genericErrorMessage: The phoneNumbers must not be empty.
                errors:
                  - apiErrorCode: '400'
                    apiErrorMessage: The phoneNumbers field is required and cannot be empty.
    unAuthorizedMovePhoneNumbersResponse:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            wrongApiKey:
              summary: Invalid API key
              value:
                message: Invalid authentication credentials
            apiKeyNotPresent:
              summary: API key not present
              value:
                message: No API key found in request
            missingAuthToken:
              summary: Bandwidth authorization token is missing
              value:
                httpStatusCode: 401
                genericErrorMessage: An error occurred while submitting the move request
                apiErrors:
                  - apiErrorCode: 721
                    apiErrorMessage: Bandwidth authorization token is missing
    unAuthorizedMoveStatusResponse:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            wrongApiKey:
              summary: Invalid API key
              value:
                message: Invalid authentication credentials
            apiKeyNotPresent:
              summary: API key not present
              value:
                message: No API key found in request
    forbiddenMoveResponse:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            httpStatusCode: 403
            genericErrorMessage: Forbidden request
            errors:
              - apiErrorCode: '403'
                apiErrorMessage: You do not have permission to perform this operation
    conflictedMovePhoneNumbersResponse:
      description: Conflicted
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            moveConflict:
              summary: Phone number move already in progress
              value:
                httpStatusCode: 409
                genericErrorMessage: Conflict occurred while processing the move request
                errors:
                  - apiErrorCode: '409'
                    apiErrorMessage: Phone number is already being moved
    conflictedPhoneNumbersCompleteResponse:
      description: Conflicted
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            completionConflict:
              summary: Phone number completion already in progress
              value:
                httpStatusCode: 409
                genericErrorMessage: Conflict occurred while processing the completion request
                errors:
                  - apiErrorCode: '409'
                    apiErrorMessage: Completion is already in progress for this phone number
    tooManyMoveRequestsResponse:
      description: Too Many Requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            httpStatusCode: 429
            genericErrorMessage: Too many requests received
            errors:
              - apiErrorCode: '429'
                apiErrorMessage: Rate limit exceeded. Please try again later
    internalServerErrorResponse:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            httpStatusCode: 500
            genericErrorMessage: Internal server error
            errors:
              - apiErrorCode: '500'
                apiErrorMessage: Unexpected error occurred while processing the request
    serviceUnavailableResponse:
      description: Service Unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            httpStatusCode: 503
            genericErrorMessage: Service is currently unavailable
            errors:
              - apiErrorCode: '503'
                apiErrorMessage: The Service is temporarily unavailable
    NotFoundMoveResponse:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            endpointNotFound:
              summary: Endpoint does not exist
              value:
                httpStatusCode: 404
                genericErrorMessage: The requested endpoint does not exist.
                apiErrors:
                  - apiErrorCode: 400
                    apiErrorMessage: The requested endpoint does not exist.
    ErrorResponse:
      description: Error response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  requestBodies:
    newSubscription:
      description: Request Body for New Subscription
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/subscription'
          examples:
            newSubscriptionExample:
              description: Example New Subscription
              summary: New Subscription
              value:
                product: PORTING
                eventType: PORTIN_ORDER_STATUS
                entityId: unique-id-value
                subscriptionStatus: ACTIVE
                tags:
                  - name: tag-name
                    value: tag-value
                notifyStates:
                  - DRAFT
                notificationChannel:
                  - callback: test-callback
                    url: some-url
                    callbackCredentials:
                      basicAuthentication:
                        username: username
                        password: password
    modifySubscription:
      description: Request Body for Modify Subscription
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/modifySubscription'
          examples:
            updatedSubscriptedExample:
              description: Example Existing Subscription
              value:
                eventType: PORTIN_ORDER_STATUS
                entityId: unique-id-value
                subscriptionStatus: ACTIVE
                tags:
                  - name: tag-name
                    value: tag-value
                notifyStates:
                  - DRAFT
                  - COMPLETED
                notificationChannel:
                  - callback: test-callback
                    url: some-url
                    callbackCredentials:
                      basicAuthentication:
                        username: username
                        password: password
    updateSubscription:
      description: Request Body for Update Existing Subscription
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/subscription'
          examples:
            overwritingSubscriptionExample:
              value:
                product: PORTING
                eventType: PORTIN_ORDER_STATUS
                entityId: unique-id-value
                subscriptionStatus: ACTIVE
                tags:
                  - name: tag-name
                    value: tag-value
                notifyStates:
                  - DRAFT
                  - COMPLETED
                notificationChannel:
                  - callback: test-callback
                    url: some-url
                    callbackCredentials:
                      basicAuthentication:
                        username: username
                        password: password
    phoneNumbersMoveRequestBody:
      description: Request body for phone numbers move
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/phoneNumbersMoveRequest'
    completeMoveRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/completeMoveRequest'
  parameters:
    BandwidthAuthorizationHeader:
      name: X-Bandwidth-Authorization
      in: header
      description: >
        The X-Bandwidth-Authorization header is required to authorize the Global
        user to move numbers to the specified UP account. You can retrieve the
        necessary credentials from [this
        documentation](https://dev.bandwidth.com/docs/account/credentials/management).
      required: true
      schema:
        type: string
        example: >-
          Bearer
          eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
    pathSubscriptionId:
      name: subscriptionId
      in: path
      required: true
      schema:
        type: string
      description: Unique ID of a Subscription
    subscriptionId:
      name: subscriptionId
      in: query
      required: false
      schema:
        type: string
      description: Unique ID of a Subscription
    product:
      name: product
      in: query
      required: false
      schema:
        type: string
      description: Product of Event Subscribed to for Notification
    eventType:
      name: eventType
      in: query
      required: false
      schema:
        type: string
      description: EventType Subscribed to
    subscriptionStatus:
      name: subscriptionStatus
      in: query
      required: false
      schema:
        type: string
      description: Active/Inactive
    entityId:
      name: entityId
      in: query
      required: false
      schema:
        type: string
      description: Unique ID of Event Entity (i.e. OrderId)
    moveOrderId:
      name: orderId
      in: path
      description: Unique reference ID of the move request
      required: true
      schema:
        type: string
      example: 78f79139-0d4d-47ea-ae71-1cc601082ce3
    completeOrderId:
      name: orderId
      in: path
      description: Unique reference ID of the complete request
      required: true
      schema:
        type: string
      example: f2bd8ca9-0ac0-4cf6-84c5-0a7c86ac286b
  securitySchemes:
    KeyBasedAuthentication:
      type: apiKey
      description: >
        Authentication to Bandwidth's global API is handled via key based
        authentication. You can manage your API key on our [Global
        Portal](https://www.bandwidth.com/login/) under **Settings > API**.
      name: apikey
      in: header
