diff --git a/site/docs/messaging/campaign-management/csp/campaign-api.mdx b/site/docs/messaging/campaign-management/csp/campaign-api.mdx index 115fc553c..c9290c165 100644 --- a/site/docs/messaging/campaign-management/csp/campaign-api.mdx +++ b/site/docs/messaging/campaign-management/csp/campaign-api.mdx @@ -728,7 +728,7 @@ Location: https://dashboard.bandwidth.com/api/accounts/{accountId}/campaignManag ## Update Campaign TN Relationship ### Assumption -This endpoint assumes that TN(s) have already been ordered or ported into our system. For more info, please see [our number ordering](/docs/numbers/guides/searchingForNumbers) or [number porting](/docs/numbers/guides/portingNumbers) guides. +This endpoint assumes that TN(s) have already been ordered or ported into our system. For more info, please see [our number ordering](/docs/numbers/guides/searchingForNumbers) or [number porting](/docs/numbers/guides/porting/portingNumbers) guides. ### Request URL POST https://dashboard.bandwidth.com/api/accounts/{accountId}/tnoptions diff --git a/site/docs/messaging/campaign-management/imports/imports-api.mdx b/site/docs/messaging/campaign-management/imports/imports-api.mdx index 4ca480b89..979a7c8eb 100644 --- a/site/docs/messaging/campaign-management/imports/imports-api.mdx +++ b/site/docs/messaging/campaign-management/imports/imports-api.mdx @@ -290,7 +290,7 @@ Location: https://dashboard.bandwidth.com/api/accounts/{accountId}/campaignManag ## Update Campaign TN Relationship ### Assumption -This endpoint assumes that TN(s) have already been ordered or ported into our system. For more info, please see [our number ordering](/docs/numbers/guides/searchingForNumbers) or [number porting](/docs/numbers/guides/portingNumbers) guides. +This endpoint assumes that TN(s) have already been ordered or ported into our system. For more info, please see [our number ordering](/docs/numbers/guides/searchingForNumbers) or [number porting](/docs/numbers/guides/porting/portingNumbers) guides. #### Request URL POST https://dashboard.bandwidth.com/api/accounts/{accountId}/tnoptions diff --git a/site/docs/numbers/bulkportins.mdx b/site/docs/numbers/bulkportins.mdx deleted file mode 100644 index 8811a4c47..000000000 --- a/site/docs/numbers/bulkportins.mdx +++ /dev/null @@ -1,84 +0,0 @@ ---- -id: bulkportins -title: Manage bulk port-in orders -slug: /numbers/guides/bulkportins -description: How to manage bulk port-in order using the Bandwidth API -keywords: - - bandwidth - - bulkportins - - portin -image: '@site/static/img/bw-icon.svg' ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -export const accountId = "{accountId}"; -export const orderId = "{orderId}"; -export const disconnectId = "{bulkOrderId}"; - -export const Highlight = ({children, color}) => ( - - {children} - - ); - -[The bulkPortins endpoint](/apis/numbers#operation/ListBulkPortins) is used to manage requests to port a diverse collection of Telephone Numbers into the Bandwidth Dashboard. These telephone numbers will be decomposed into a set of individual port-in orders based on port-type, losing carrier, losing RespOrg, etc., making all reasonable attempts to treat the individual port-in requests in a uniform manner. Like many other requests, the bulkPortins endpoint causes the creation of a Bulk Portins order that is used to manage the porting event throughout the lifecycle of the request. - -When a bulk port-in is created successfully, it will have one or more child port-in orders that satisfy the following industry port-in rules: - -* Telephone numbers in a child port-in order all have the same port-type (e.g. toll free, automated on-net, automated off-net, internal, etc.). -* Non-toll free telephone numbers in a child port-in order all have the same losing carrier. -* Toll free telephone numbers in a child port-in order all have the same losing RespOrg. - -The elements used or supplied in the bulk port-in payload are described in the table below. The values supplied in the bulk port-in payload are cascaded to the child port-in orders when possible. This is useful, for example, if you want all of the child orders to have the same CustomerOrderId, or RequestedFocDate. - -All bulk port-ins start in a draft processing status and remain in a draft state until explicitly submitted -by setting the bulk port-in ProcessingStatus to IN_PROGRESS. The bulk order starts in “DRAFT” state until -telephone numbers are added using the /tnList endpoint. Once telephone numbers are added, the order -transitions to VALIDATE_DRAFT_TNS, and from there to either VALID_DRAFT_TNS, or INVALID_DRAFT_TNS. -If there are invalid, or non-portable telephone numbers, a GET on [/tnList](/apis/numbers/#operation/ListBulkTns) will show the errors. If all -telephone numbers are portable, child port-in orders are created to handle the actual port-ins. - -A bulk port-in order may have one of 3 terminal processing statuses: COMPLETED, CANCELLED, or PARTIAL, which are just an aggregation of the child order statuses. An order in a “terminal” state will never transition to any other processing status (terminal or not). A bulk port-in order goes to a terminal status automatically as soon as the last of its associated child port-ins transfers to terminal status (COMPLETE or CANCELLED). The resulting terminal processing status of the bulk port-in order depends on statuses of associated child port-ins: COMPLETED - when all child port-ins are in COMPLETE status, CANCELLED - when all child port-ins are in CANCELLED status, PARTIAL - when there is a mix of CANCELLED and COMPLETE child port-in statuses. - -The following table describes parameters for the bulk port-in API. All parameters except for the URL parameter "accountId" are optional in the bulk port-in, although the rules for individual child port-ins described in the [/portins](/apis/numbers/#operation/ListPortins) API still apply to the child port-ins that make up the bulk port-in. Enforcement of required fields in the child port-ins occurs when the bulk port-in is submitted (i.e. changed from a DRAFT status to IN_PROGRESS). Only fields that you wish to use as defaults for all of the child port-in orders should be included in the bulk port-in order. The child port-ins are also created in DRAFT status, allowing you to update fields that need to be different for each child order before the child orders are submitted. - - -| Parameter | Description | -|:----------------------------|:----------------------------------------| -| `accountId (URL Parameter)` | The account ID for porting the numbers. | -| `CustomerOrderId` | Internal customer order id for tracking the order. This can be any alphanumeric string. | -| `RequestedFocDate` | If present this will specify the date and time that the port-in is requested to happen. The actual time and date is subject to negotiation with the losing carriers. Format is ISO8601 encoding of ZULU/UTC/GMT such as “2013-05-10T15:14:22Z”.| -| `AlternateSpid` | Unique customer AltSPID to be applied to the port-in requests. Can be changed only for DRAFT bulk port-in. | -| `BillingTelephoneNumber (BTN)` | Account or Billing telephone number for order. This will be unusual for bulk port-in requests that are expected to decompose into port-in requests from multiple carriers, because the value will be different for each losing carrier. | -| `SubscriberType` | (BUSINESS, RESIDENTIAL) If residential, order will be rejected if a BusinessName is entered. | -| `BusinessName` | Subscriber business name. | -| `FirstName` | Subscriber first name. | -| `MiddleInitial` | Subscriber middle initial. | -| `LastName` | Subscriber last name. | -| `HouseNumber` | Street address number. | -| `HousePrefix` | Street address number prefix. | -| `HouseSuffix` | Street address number suffix. | -| `PreDirectional` | Street address pre-directional. | -| `StreetName` | Street name. | -| `StreetSuffix` | Street suffix. | -| `PostDirectional` | Street address post directional. | -| `AddressLine2` | Put unit, suite, floor, etc. here. | -| `City` | City. | -| `StateCode` | Two letter state code. | -| `Zip` | Zip code. | -| `PlusFour` | Zip + 4 value.| -| `Country` | 3 letter country code. | -| `LoaAuthorizingPerson` | First and last name of person who authorized LOA. | -| `AccountNumber` | Account number associated with the account on the losing carrier, often required for wireless ports, or enterprise ports. This will be unusual for bulk port-in requests that are expected to decompose into port-in requests from multiple carriers. | -| `PinNumber` | PIN Number, often required for wireless ports. | -| `siteid` | This is the Site / Sub-Account ID made visible in the /accounts/{accountId}/sites API call | -| `PeerId` | This is the SIP Peer / Location ID made visible in the /accounts/{accountId}/sites/{siteId}/sipPeers API call | -| `TnAttributes` | Attributes to be assigned to the telephone number. Optional parameter. Possible values - "Protected" | \ No newline at end of file diff --git a/site/docs/numbers/eventWebhook.md b/site/docs/numbers/eventWebhook.md index 609d799db..69d479203 100644 --- a/site/docs/numbers/eventWebhook.md +++ b/site/docs/numbers/eventWebhook.md @@ -12,7 +12,7 @@ image: '@site/static/img/bw-icon.svg' The notification webhook API is used to notify customers of events and changes that occur with various feature and service orders that are being processed by the Bandwidth Numbers API on their behalf. In general this notification webhook will be called whenever an **event** occurs. -The event notifications occur when TNs in your account are impacted due to orders outside of your account. For example, a `MESSAGING_LOST` event is reported on a TN with hosted messaging service in your account when a port in order placed by another account on the same TN is executed. +The event notifications occur when TNs in your account are impacted due to orders outside of your account. For example, a `MESSAGING_LOST` event is reported on a TN with hosted messaging service in your account when a port-in order placed by another account on the same TN is executed. An order placed in your account to remove the TN will NOT report a `MESSAGING_LOST` event. Please see the subscription documentation to understand how to register the notification webhook API with the Bandwidth Numbers API. diff --git a/site/docs/numbers/lsrOrders.mdx b/site/docs/numbers/lsrOrders.mdx index 7107c604f..89cc75240 100644 --- a/site/docs/numbers/lsrOrders.mdx +++ b/site/docs/numbers/lsrOrders.mdx @@ -70,9 +70,9 @@ The payload fields are described below: | Field | Description | |:--------------------------|:-------------------------------------| -| `Pon` | The Pon is customer specified order indentifier field. Allowed alphanumeric and "#","-","_". Up to 25 characters long. (required) | -| `CustomerOrderId` | The CustomerOrderId is customer specified order indentifier field. Allowed alphanumeric, spaces and dashes. Up to 40 characters long. (optional) | -| `SPID` | Identifier used in porting process. If account is no multi-SPID option - default with account value, otherwise value is required. Up to 4 characters long. (required | +| `Pon` | The Pon is customer specified order identifier field. Allowed alphanumeric and "#","-","_". Up to 25 characters long. (required) | +| `CustomerOrderId` | The CustomerOrderId is customer specified order identifier field. Allowed alphanumeric, spaces and dashes. Up to 40 characters long. (optional) | +| `SPID` | Identifier used in porting process. If account is no multi-SPID option - default with account value, otherwise value is required. Up to 4 characters long. (required) | | `BillingTelephoneNumber` | Non-tollfree 10 digit phone number (optional) | | `RequestedFocDate` | optional (next day if not specified) | | `SubscriberType` | Subscriber type. BUSINESS | RESEDENTIAL (optional) (RESEDENTIAL if not specified) | diff --git a/site/docs/numbers/orderWebhook.md b/site/docs/numbers/orderWebhook.md index da1b7534c..aef13382f 100644 --- a/site/docs/numbers/orderWebhook.md +++ b/site/docs/numbers/orderWebhook.md @@ -12,7 +12,7 @@ image: '@site/static/img/bw-icon.svg' The notification webhook API is used to notify customers of events and changes that occur with various feature and service orders that are being processed by the Bandwidth Numbers API on their behalf. In general this notification webhook will be called whenever an order that is in-scope changes state or has a note added to it. Alternatively, notification webhook will be called whenever a subscribed event occurs -When an order changes OR when numbers in customer account are impacted due to orders placed outside of their account the Bandwidth Dashboard API will POST a pre-defined payload to our customer at the URL that they have defined by use of the `/accounts/{{accountId}}/subscriptions` API call. Please see the subscription documentation to understand how to register the notification webhook API with the Bandwidth Numbers API. +When an order changes OR when numbers in customer account are impacted due to orders placed outside of their account, the Bandwidth Dashboard API will POST a pre-defined payload to our customer at the URL that they have defined by use of the [`/accounts/{accountId}/subscriptions`](/apis/numbers/#operation/CreateSubscriptions) API call. Please see the subscription documentation to understand how to register the notification webhook API with the Bandwidth Numbers API. ### Order Types diff --git a/site/docs/numbers/porting/createBulkPortins.mdx b/site/docs/numbers/porting/createBulkPortins.mdx new file mode 100644 index 000000000..522b9860a --- /dev/null +++ b/site/docs/numbers/porting/createBulkPortins.mdx @@ -0,0 +1,316 @@ +--- +id: createBulkPortins +title: Bulk Port-ins +slug: /numbers/guides/porting/createBulkPortins +description: How to create bulk port-in order using the Bandwidth API +keywords: + - bandwidth + - bulkportins + - portin + - port-in +image: '@site/static/img/bw-icon.svg' +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +export const accountId = "{accountId}"; +export const orderId = "{orderId}"; + +export const Highlight = ({children, color}) => ( + + {children} + + ); + +[The bulkPortins endpoint](/apis/numbers#operation/CreateBulkPortin) is used to manage requests to port a diverse collection of telephone numbers into the Bandwidth network. These telephone numbers will be decomposed into a set of individual port-in orders based on port-type, losing carrier, losing RespOrg, etc., making all reasonable attempts to treat the individual port-in requests in a uniform manner. The elements supplied in the bulk port-in payload are cascaded to the child port-in orders when possible. This is useful, for example, if you want all of the child orders to have the same CustomerOrderId or RequestedFocDate. + +## Create Bulk Port-in Draft + +To create bulk port-in request order, you must make a POST request to our [API /bulkPortins](/apis/numbers/#operation/CreateBulkPortin) endpoint. This order is used to manage the porting event throughout the lifecycle of the request. This can be done through tools like Postman or cURL. Note the ```OrderId``` field in response. It will be used for the next steps. + +:::info +Only fields that you wish to use as defaults for all of the child port-in orders should be included in the bulk port-in order. +::: + +POST https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins + + + +> Request + +```xml +Note: Make sure an authentication header is added with your BANDWIDTH_USERNAME and BANDWIDTH_PASSWORD + +https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins +\n + + Order Id for all child orders + 2021-06-30Z + 14020 + 521434 + +``` + +> Response + +```xml + + + + Order Id for all child orders + 2021-06-30T00:00:00.000Z + 14020 + 521434 + DRAFT + 9900572 + testuser + testuser + 2021-06-21T19:42:34.760Z + 2021-06-21T19:42:34.760Z + ac2c8ab2-7a63-44da-a307-edcabe0b6c81 + + +``` + + + + +```xml +Note: Remember to add authentication for your application if needed! + +curl 'https://dashboard.bandwidth.com/api/accounts/{BW_ACCOUNT_ID}/bulkPortins' \ +-X POST \ +-U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ +-H 'Content-Type: application/xml' \ +-d ' + Order Id for all child orders + 2021-06-30Z + 14020 + 521434 +' +``` + +> Response + +```xml + + + + Order Id for all child orders + 2021-06-30T00:00:00.000Z + 14020 + 521434 + DRAFT + 9900572 + testuser + testuser + 2021-06-21T19:42:34.760Z + 2021-06-21T19:42:34.760Z + ac2c8ab2-7a63-44da-a307-edcabe0b6c81 + + +``` + + + + +When a bulk port-in is created, it has ```DRAFT``` status, which means it has not been processed yet. +If you want to update your bulk port-in (either in ```DRAFT``` or other further state) follow the [How to Update Bulk Port-in](/docs/numbers/guides/porting/updateBulkPortins) guide. + +## Provide telephone number(s) to port + +After the bulk port-in is created, add telephone numbers to the order by sending a PUT request to our [API /bulkPortins/{orderId}/tnList](/apis/numbers/#operation/UpdateBulkTnList) endpoint. This can be done through tools like Postman or cURL. + +PUT https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId}/tnList + + + +> Request + +```xml +Note: Make sure an authentication header is added with your BANDWIDTH_USERNAME and BANDWIDTH_PASSWORD + +https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId}/tnList +\n + + [telephone number] + [telephone number] + + [telephone number] + [telephone number] + +``` + +> Response + +```xml + + + ac2c8ab2-7a63-44da-a307-edcabe0b6c81 + VALIDATE_DRAFT_TNS + +``` + + + + +```xml +Note: Remember to add authentication for your application if needed! + +curl 'https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId}/tnList' \ +-X POST \ +-U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ +-H 'Content-Type: application/xml' \ +-d ' + [telephone number] + [telephone number] + + [telephone number] + [telephone number] +' +``` + +> Response + +```xml + + + ac2c8ab2-7a63-44da-a307-edcabe0b6c81 + VALIDATE_DRAFT_TNS + +``` + + + + +### Checking the Decomposition Status of a Bulk Port-in + +After submitting a tnList with the ```PUT``` operation it takes some time for the phone numbers to be validated and child port-ins to be created. This is done asynchronously which means you will need to check the validation and decomposition completion later. There are two ways to do that - using subscription or polling. As times can vary and are not guaranteed Bandwidth recommends configuring your account with a subscription. + + + + +Below is a basic example of configuring the subscription. Follow the [How to setup Notification Webhook](/docs/numbers/webhooks/orderWebhook) to learn more. + +PUT https://dashboard.bandwidth.com/api/accounts/{accountId}/subscriptions + +```xml +Note: Remember to add authentication for your application if needed! + + + + bulkPortins + + "http://yourhost:8080/path/to/resource" + 12000 + + + superuser + s3cure + + LS0tLS1CRUdJTiBDRVJUSU [...] kQgQ0VSVElGSUNBVEUtLS0tLQ0K + + + +``` + +> Notification example + +```xml +POST your_url.com/webhookService HTTP/1.1 +Content-Type: application/xml; charset=utf-8 + + + + ... + bulkPortins + ... + VALID_DRAFT_TNS + +``` + +When notification is sent, you need to check `Status` field. If all the telephone numbers in the tnList are portable, the bulk port-in transitions to the ```VALID_DRAFT_TNS``` state. + + + + +If you want to use polling you can make a [GET /bulkPortins/{orderId}/tnList](/apis/numbers/#operation/ListBulkTns) request and check the ```ProcessingStatus``` field. +GET https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId}/tnList + +> Response example + +```xml + + + VALID_DRAFT_TNS + ac2c8ab2-7a63-44da-a307-edcabe0b6c81 + + + xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx1 + + [telephone number] + + + + xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx2 + + [telephone number] + + + + xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx3 + + [telephone number] + [telephone number] + + + + +``` + +If all the telephone numbers in the tnList are portable, the bulk port-in transitions to the ```VALID_DRAFT_TNS``` state. + + + + +:::caution +If at least one of the telephone numbers in the tnList is not portable, the bulk port-in transitions to the ```INVALID_DRAFT_TNS``` state. You will see reasons why telephone numbers are non-portable in response body. To fix it you’ll need to update the tnList to remove non-portable telephone numbers. +::: + +At this point, bulk port-in will have one or more child port-in orders that satisfy industry port-in rules (for more details on the rules check [Port Types](/docs/numbers/guides/porting/lnpChecker/#port-types) guide). +The child port-ins as a bulk port are also created in ```DRAFT``` status, allowing you to update fields that need to be different for each child order before the child orders are submitted. + +## Where to next? + +Now that you have learned how to create a bulk port-in order, check out some of the other available actions in the following guides: + +- [How to Submit Bulk Port-in →](/docs/numbers/guides/porting/submitBulkPortins) +- [How to Update Bulk Port-in →](/docs/numbers/guides/porting/updateBulkPortins) \ No newline at end of file diff --git a/site/docs/numbers/porting/lnpChecker.mdx b/site/docs/numbers/porting/lnpChecker.mdx new file mode 100644 index 000000000..0c798728a --- /dev/null +++ b/site/docs/numbers/porting/lnpChecker.mdx @@ -0,0 +1,192 @@ +--- +id: lnpChecker +title: Check number(s) portability +slug: /numbers/guides/porting/lnpChecker +description: How to check if a number is portable +keywords: + - bandwidth + - numbers + - porting + - portin + - port-in + - port + - lnp + - portability + - checker + - check +image: '@site/static/img/bw-icon.svg' +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +export const accountId = "{accountId}"; +export const orderId = "{orderId}"; + +export const Highlight = ({children, color}) => ( + + {children} + + ); + +For a smoother porting experience, you can check to see if your numbers are portable to the Bandwidth Network, before submitting a port order. +:::info +The `/bulkPortins` API eliminates the need for the `/lnpchecker` API by sorting the list of TNs automatically into a set of port-in requests by Port Type. For more details follow the [How to Bulk Port](/docs/numbers/guides/porting/createBulkPortins). +::: + +For all TNs in a `/portins` request, all of the following must be true: + +1. They all have the same Port Type (see the `Port Types` section below) +2. They all have the same losing carrier (toll free telephone numbers all have the same losing RespOrg) +3. They are all associated with the same billing TN and Service Address + +### Port Types + +Port Type is a categorization of how the TNs submitted to the /lnpchecker API will be handled by Bandwidth. + +| Port Type | Description | | +|:----------------------------------|:-------------------------------------------------------| +| MANUAL | `MANUAL` (for all port types starting with `MANUAL`) indicates that if the TNs cannot be ported automatically, the Bandwidth LNP team will work with the appropriate porting vendor or losing carrier to ensure completion of the port-in. The /portins API can be used to submit manual port-ins, which will be identified as such, and a support ticket will be automatically created to notify the Bandwidth LNP team. | +| MANUALOFFNET | `Off-net` means that the telephone numbers in the port-in exist in a rate center supported by one of Bandwidth’s partners. Off-net port-ins are processed manually when the Bandwidth partner does not have APIs by which the port-in can be automated, or Bandwidth has not implemented those APIs. Orders may also be processed manually if there are more numbers in the port-in than the partner’s interface supports, e.g. off-net ports with vendor Level 3 and with more than 49 TNs are automatically submitted as manual ports.| +| MANUALONNET | `On-net` means that the telephone numbers in the port-in exist in a rate center supported by Bandwidth. On-net port-ins are processed manually only when there are more numbers in the port-in than the porting vendor’s interface supports (e.g more than 999 TNs). | +| MANUALTOLLFREE | Currently all toll free port-ins are handled manually by Bandwidth’s LNP team. But Bandwidth is in the process of automating portions of toll free porting, with a goal of eventually automating the entire process. | +| AUTOMATED | If the TNs are on-net, or off-net and covered by a Bandwidth partner that supports automated ports, then the port-in of these TNs will be handled with no human intervention using interfaces to our porting vendors. There are several sub-types of `AUTOMATED` as follows:
| +| MIXED | If the list of TNs supplied to /lnpchecker includes TNs that are categorized as more than one of the above Port Types, the resulting Port Type will be `MIXED`. If you plan to use /portins to port the TNs, you must break the TN list into separate /portins requests for each Port Type. | + +### Check number(s) portability + +A number or set of numbers can be checked to see if they can be ported into the Bandwidth Network using the POST request to [`/accounts/{accountId}/lnpChecker`](/apis/numbers#operation/RequestPortabilityInfo) API endpoint. This can be done using tools like Postman or cURL. + +### Examples +POST https://dashboard.bandwidth.com/api/accounts/{accountId}/lnpChecker + + + + +>Request + +```xml +POST https://dashboard.bandwidth.com/api/accounts/{accountId}/lnpChecker?fullcheck=true HTTP/1.1 +Content-Type: application/xml; charset=utf-8 +Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= + + + + 9195551234 + 9198675309 + + +``` + +> Response + +```xml +HTTP 200 OK +Content-Type: application/xml; charset=utf-8 + + + + MIXED + + 9198675309 + + + + RALEIGH + RALEIGH + NC + 426 + + 0 + + + 9198675309 + + + + + + DIR ASST + CUSTOMER DIRECTORY ASSISTANCE + NC + 99999 + + 9195551234 + + + + + + 979E + BANDWIDTH.COM:979E -NSR/1 + false + false + 3 + + 9198675309 + + + + + Unknown + false + false + 10 + + 9195551234 + + + + +``` + + + + +```xml +Note: Remember to add authentication for your application if needed! + +curl 'https://dashboard.bandwidth.com/api/accounts/{accountId}/lnpChecker?fullcheck=true' \ +-X POST \ +-U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ +-H 'Content-Type: application/xml' \ +-d ' + + 9195551234 + 9198675309 + +' +``` + + + + +:::caution +There are some cases that you won't be able to port-in a TN: + +* The TN is in a rate center that is not supported by Bandwidth or any of Bandwidth's partners. +* The TN is an off-net TN, and the account is configured to support tier zero (on-net) only. +* The TN belongs to a losing carrier with whom Bandwidth does not have a Trading Partner Agreement. +* The TN is already being processed in another active port-in order. +* The Bandwidth account has not been enabled for porting. +Otherwise, the user must separate the TNs into individual `/portins` requests. +::: + +## Where to next? + +Now that you have learned how to check the portability of a number, check out some of the other available actions in the following guides: +- [How to Create a Port-In Request →](/docs/numbers/guides/porting/portingNumbers) + diff --git a/site/docs/numbers/porting/loaUpload.mdx b/site/docs/numbers/porting/loaUpload.mdx new file mode 100644 index 000000000..4cc076d4b --- /dev/null +++ b/site/docs/numbers/porting/loaUpload.mdx @@ -0,0 +1,166 @@ +--- +id: loaUpload +title: LOA Upload +slug: /numbers/guides/porting/loaUpload +description: How to upload Letter of Authorization (LOA) for port-in request +keywords: + - bandwidth + - numbers + - porting + - portin + - port-in + - lnp + - port + - loa + - file + - upload + - letter + - authorization +image: '@site/static/img/bw-icon.svg' +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +export const accountId = "{accountId}"; +export const orderId = "{orderId}"; +export const fileId = "{fileId}"; + +export const Highlight = ({children, color}) => ( + + {children} + + ); + + +After successfully submitting the [Create LNP Order request](/docs/numbers/guides/porting/portingNumbers), a Letter of Authorization (LOA) may be uploaded using our LOA API. + +:::caution +If your port-on order has a ```PENDING_DOCUMENTS``` status then LOA upload is a required action. +::: + +The following MIME types are supported for the LOA upload file: + +* PDF (“application/pdf”) +* PLAIN (“text/plain”) +* JPG (“image/jpeg”) +* TIFF (“image/tiff”) +* CSV (“text/csv”) +* XML (“application/xml”) +* WAV (“audio/x-wav”) +* ZIP (“application/zip”) + + +To upload and manage the LOA you can use different requests to [/portins/{orderId}/loas API](/apis/numbers/#operation/UploadPortinLoaFile). This can be done using tools like Postman or cURL. + +### Examples +POST https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId}/loas + + + + +> Upload LOA + +```http +POST /api/accounts/9900778/portins/{orderId}/loas HTTP/1.1 +Host: dashboard.bandwidth.com +Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= +Content-Type: application/pdf +documentType: LOA +Accept: / +Accept-Encoding: gzip, deflate +Accept-Language: en-US,en;q=0.8 +Cache-Control: no-cache + +----WebKitFormBoundaryE19zNvXGzXaLvS5C +Content-Disposition: form-data; name="george"; filename="Bandwidth Dashboard.pdf" +Content-Type: application/pdf +----WebKitFormBoundaryE19zNvXGzXaLvS5C +``` + +> Response + +```xml +HTTP 201 Created +Content-Type: application/xml; charset=utf-8 + + + + 63097af1-37ae-432f-8a0d-9b0e6517a35b-1429550165581.pdf + 0 + LOA file uploaded successfully for order 63097af1-37ae-432f-8a0d-9b0e6517a35b + +``` + + + + +```cURL +# UPLOAD LOA + +curl \ + -H 'Content-Type: application/pdf' \ + --data-binary "@Test_LOA.pdf" \ + -iv https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId}/loas +``` + + + + +To manage your LOA files use our APIs like [/portins/{orderid}/loas/{fileId}](/apis/numbers/#operation/UpdatePortinLoaFile) and [/portins/{orderid}/loas/{fileId}/metadata](/apis/numbers/#operation/UpdatePortinLoadMetadata). + +PUT https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId}/loas/{fileId}/metadata + + + + +```xml + + [string] + [LOA | INVOICE | CSR | OTHER] + +``` + + + + +> Request + +```xml +curl 'https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId}/loas/{fileId}/metadata' \ +-X PUT \ +-U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ +-H 'Content-Type: application/xml' \ +-d ' + [string] + [LOA | INVOICE | CSR | OTHER] +' +``` + + + + +## Where to next? + +Now that you have learned how to upload a LOA file, check out some of the other available actions in the following guides: +- [How to Manage Port-in →](/docs/numbers/guides/porting/updatePortin) diff --git a/site/docs/numbers/porting/portingNumbers.mdx b/site/docs/numbers/porting/portingNumbers.mdx new file mode 100644 index 000000000..3297a1711 --- /dev/null +++ b/site/docs/numbers/porting/portingNumbers.mdx @@ -0,0 +1,223 @@ +--- +id: portingNumbers +title: Create Port-in +slug: /numbers/guides/porting/portingNumbers +description: How to port numbers using the Bandwidth API +keywords: + - bandwidth + - numbers + - porting + - portin + - port-in + - lnp + - port +image: '@site/static/img/bw-icon.svg' +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +export const accountId = "{accountId}"; +export const orderId = "{orderId}"; + +export const Highlight = ({children, color}) => ( + + {children} + + ); + +The `/portins` API is used to submit port-in requests. These requests to move phone numbers from a “losing carrier” to Bandwidth are part of the Local Number Portability (LNP) process. These LNP requests are automatically validated and processed. + +In order to successfully port telephone numbers they need to correspond to a set of criteria. To check them follow the [How to Check Numbers Portability](/docs/numbers/guides/porting/lnpChecker) guide. + +## Create a Port-in Order + +The API allows a user to create a new LNP order. An order id will be auto-generated and provided to the customer. The order must pass synchronous and asynchronous validation. Synchronous validation will return validation failures immediately in the response. If synchronous validation passes, but asynchronous validation fails, the customer will not receive the error response until they check the order status. + +To create port-in request, you must make a POST request to our [API /portins](/apis/numbers/#operation/CreatePortin) endpoint. This can be done using tools like Postman or cURL. + +### Examples +POST https://dashboard.bandwidth.com/api/accounts/{accountId}/portins + + + +>Request + +```xml +Note: Remember to add authentication for your application if needed! + +https://dashboard.bandwidth.com/api/accounts/{accountId}/portins +//Make sure an authentication header is added with your BANDWIDTH_USERNAME and BANDWIDTH_PASSWORD + + 2016-03-25T21:15:00.000Z + X455 + 9195551234 + 9175131245 + 12345 + 660123 + + BUSINESS + First + Last + + 11235 + Back + Denver + CO + 27541 + Canyon + + + The Authguy + + 771297665AABC + 1234 + + + 9195551234 + 9195554321 + + true + +``` + +>Response + +```xml + + d28b36f7-fa96-49eb-9556-a40fca49f7c6 + + 201 + Order request received. Please use the order id to check the status of your order later. + + PENDING_DOCUMENTS + 2016-03-25T21:15:00.000Z + X455 + 9195551234 + 9175131245 + 12345 + 660123 + + BUSINESS + First + Last + + 11235 + Back + Denver + CO + 27541 + Canyon + + + The Authguy + + 771297665AABC + 1234 + + + 9195551234 + 9195554321 + + true + +``` + + + + +```xml +Note: Remember to add authentication for your application if needed! + +curl 'https://dashboard.bandwidth.com/api/accounts/{BW_ACCOUNT_ID}/portins' \ +-X POST \ +-U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ +-H 'Content-Type: application/xml' \ +-d ' + 2016-03-25T21:15:00.000Z + X455 + 9195551234 + 9175131245 + 12345 + 660123 + + BUSINESS + First + Last + + 11235 + Back + Denver + CO + 27541 + Canyon + + + The Authguy + + 771297665AABC + 1234 + + + 9195551234 + 9195554321 + + true +' +``` + + + + +### Polling vs. Webhooks + +Porting numbers in the Bandwidth Dashboard is asynchronous which means the orders are processed and the order status is updated asynchronously. As times can vary and are not guaranteed Bandwidth recommends configuring your account with a subscription instead of polling the order resource for ``. Please follow the [How to setup Notification Webhook](/docs/numbers/webhooks/orderWebhook) guide. + +To poll for information about your port-in you can still use a GET request to [accounts/{accountId}/portins API](/apis/numbers/#operation/GetPortin). This can be done using tools like Postman or cURL. + +GET https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId} + + + +```cURL +curl 'https://dashboard.bandwidth.com/api/accounts/{BW_ACCOUNT_ID}/portins' \ +-X GET \ +-U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ +-H 'Content-Type: application/xml' \ +-H 'Accept: application/xml' +``` + + + + +:::info +If your port-on order stuck in a ```PENDING_DOCUMENTS``` status and does not transit to ```SUBMITTED``` then [LOA (Letter of authorization) upload](/docs/numbers/guides/porting/loaUpload) is required action. +::: + +## Where to next? + +Now that you have learned how to create a port-in order, check out some of the other available actions in the following guides: + +- [How to Check Numbers Portability ←](/docs/numbers/guides/porting/lnpChecker) +- [How to Upload LOA (Letter of authorization) →](/docs/numbers/guides/porting/loaUpload) +- [How to Manage Port-in →](/docs/numbers/guides/porting/updatePortin) +- [How to Create Bulk Port-in →](/docs/numbers/guides/porting/createBulkPortins) diff --git a/site/docs/numbers/porting/submitBulkportin.mdx b/site/docs/numbers/porting/submitBulkportin.mdx new file mode 100644 index 000000000..fb66e85df --- /dev/null +++ b/site/docs/numbers/porting/submitBulkportin.mdx @@ -0,0 +1,120 @@ +--- +id: submitBulkPortins +title: Submit Bulk Port-in +slug: /numbers/guides/porting/submitBulkPortins +description: How to trigger bulk port-in order processing +keywords: + - bandwidth + - bulkportins + - portin + - port-in +image: '@site/static/img/bw-icon.svg' +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +export const accountId = "{accountId}"; +export const orderId = "{orderId}"; + +export const Highlight = ({children, color}) => ( + + {children} + + ); + +On this step we assume that you have created your bulk port-in and added telephone numbers which you wanted to port into the Bandwidth Dashboard. If not, follow the [How to create Bulk Port-in](/docs/numbers/guides/porting/createBulkPortins) guide. + +These telephone numbers will be decomposed into a set of individual port-in orders based on port-type, losing carrier, losing RespOrg, etc. +The bulk port-in and child port-in orders will remain in draft states until you submit them. You can submit all the port-ins together under the umbrella of the bulk port-in by changing bulk port-in status to ```IN_PROGRESS```. + +:::info +If for any reason you want to work with individual port-ins you still can submit them separately through ```PUT``` request to [/portins/{orderId} API](/apis/numbers/#operation/UpdatePortin). Check [Update Port-in](/docs/numbers/guides/porting/updatePortin) guide to learn more. +::: + +To trigger bulk port-in processing use the ```PATCH``` operation on the bulk port-in order to change the ```ProcessingStatus``` to ```IN_PROGRESS```. To do it you must send a PATCH request to our [API /bulkPortins/{orderId}](/apis/numbers/#operation/PatchBulkPortin) endpoint. This can be done through tools like Postman or cURL. + +:::caution +Changing the ProcessingStatus to 'IN_PROGRESS' is only valid if child port-ins exist for the bulk port-in. Check [How to Provide Telephone Number(s) to Port](/docs/numbers/guides/porting/createBulkPortins/#provide-telephone-numbers-to-port) guide. +::: + +PATCH https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId} + + + +> Request + +```xml +Note: Make sure an authentication header is added with your BANDWIDTH_USERNAME and BANDWIDTH_PASSWORD + +https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId} +\n + + IN_PROGRESS + +``` + +> Response + +```xml + + + + Order Id for all child orders + 2021-06-30T00:00:00.000Z + 14020 + 521434 + IN_PROGRESS + 9900572 + testuser + testuser + 2021-06-21T19:42:34.760Z + 2021-06-21T19:42:34.760Z + ac2c8ab2-7a63-44da-a307-edcabe0b6c81 + + +``` + + + + +```xml +Note: Remember to add authentication for your application if needed! + +curl 'https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId}' \ +-X POST \ +-U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ +-H 'Content-Type: application/xml' \ +-d ' + IN_PROGRESS + ' +``` + + + + +## Bulk Port-in completion + +A bulk port-in order may have one of 3 terminal processing statuses: ```COMPLETED```, ```CANCELLED```, or ```PARTIAL```, which are just an aggregation of the child order statuses. An order in a “terminal” state will never transition to any other processing status (terminal or not). A bulk port-in order goes to a terminal status automatically as soon as the last of its associated child port-ins transfers to terminal status (```COMPLETE``` or ```CANCELLED```). The resulting terminal processing status of the bulk port-in order depends on statuses of associated child port-ins: +* ```COMPLETED``` - when all child port-ins are in ```COMPLETE``` status +* ```CANCELLED``` - when all child port-ins are in ```CANCELLED``` status +* ```PARTIAL``` - when there is a mix of ```CANCELLED``` and ```COMPLETE``` child port-in statuses. + +## Where to next? + +- [How to Create Bulk Port-in ←](/docs/numbers/guides/porting/updateBulkPortins) +- [How to Update Bulk Port-in →](/docs/numbers/guides/porting/updateBulkPortins) +- [How to Manage Port-in →](/docs/numbers/guides/porting/updatePortin) \ No newline at end of file diff --git a/site/docs/numbers/porting/updateBulkPortins.mdx b/site/docs/numbers/porting/updateBulkPortins.mdx new file mode 100644 index 000000000..33788a518 --- /dev/null +++ b/site/docs/numbers/porting/updateBulkPortins.mdx @@ -0,0 +1,220 @@ +--- +id: updateBulkPortins +title: Update or Delete Bulk Port-in +slug: /numbers/guides/porting/updateBulkPortins +description: How to update bulk port-in order using the Bandwidth API +keywords: + - bandwidth + - bulkportins + - portin +image: '@site/static/img/bw-icon.svg' +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +export const accountId = "{accountId}"; +export const orderId = "{orderId}"; + +export const Highlight = ({children, color}) => ( + + {children} + + ); + +In this guide, you will learn how to update or delete a bulk port-in order. + +## Update Bulk Port-in + +To update a bulk port-in order use ```PUT``` or ```PATCH``` request to ```/bulkPortins/{orderId} API``` on the existing order-id: +* If bulk port-in is not in terminal (```COMPLETED```, ```CANCELLED```, or ```PARTIAL```) status +* As with the ```POST```, any data associated with the bulk port-in will cascade to subtending orders when they are created +* If the port-in orders contained within the Bulk Port are in ```DRAFT``` state, any field can be modified +* If any child port-in order in the bulk port-in is in any other state, normal SUPP rules apply, and the list of appropriate fields is smaller + +:::info +Subtending orders are created after telephone numbers are added to the bulk port-in using the /tnList endpoint, see the next section of this tutorial. +::: + +* The [```PUT``` /bulkPortins/{orderId}](/apis/numbers/#operation/PutBulkOrder) operation is available only for bulk port-in orders that are not yet associated with subtending orders +* The [```PATCH``` /bulkPortins/{orderId}](/apis/numbers/#operation/PatchBulkOrder) replaces only the elements included in the request payload. Other elements will remain untouched + +### Example + +In the following example we are adding ```LoaAuthorizingPerson``` field to the bulk port-in order (to apply it to all future subtending port-in orders): +PUT https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId} + + + +> Request + +```xml +Note: Make sure an authentication header is added with your BANDWIDTH_USERNAME and BANDWIDTH_PASSWORD + +https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId} + + Order Id for all child orders + 2021-06-30Z + 14020 + 521434 + The Guy + +``` + +> Response + +```xml + + + + Order Id for all child orders + 2021-06-30T00:00:00.000Z + The Guy + 14020 + 521434 + DRAFT + 9900572 + myUser + myUser + 2021-06-21T19:42:34.760Z + 2021-06-21T19:42:34.760Z + ac2c8ab2-7a63-44da-a307-edcabe0b6c81 + + +``` + + + + +```xml +Note: Remember to add authentication for your application if needed! + +curl 'https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId}' \ +-X POST \ +-U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ +-H 'Content-Type: application/xml' \ +-d ' + Order Id for all child orders + 2021-06-30Z + 14020 + 521434 + The Guy +' +``` + + + + +Note that ```PUT``` completely replaces the existing bulk port-in order with the given payload while ```PATCH``` replaces only the elements included in the request payload. + +PATCH https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId} + + + + +> Request + +```xml +Note: Make sure an authentication header is added with your BANDWIDTH_USERNAME and BANDWIDTH_PASSWORD + +https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId} + + The Guy + +``` + +> Response + +```xml + + + + Order Id for all child orders + 2021-06-30T00:00:00.000Z + The Guy + 14020 + 521434 + DRAFT + 9900572 + myUser + myUser + 2021-06-21T19:42:34.760Z + 2021-06-21T19:42:34.760Z + ac2c8ab2-7a63-44da-a307-edcabe0b6c81 + + +``` + + + + +```xml +Note: Remember to add authentication for your application if needed! + +curl 'https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId}' \ +-X POST \ +-U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ +-H 'Content-Type: application/xml' \ +-d ' + The Guy + ' +``` + + + + +## Delete Bulk Port-in + +You can delete a bulk port-in order with child port-ins. Deleting a bulk port-in is allowed for ```DRAFT``` state only. Deleting a bulk port-in will delete all ```DRAFT``` child port-ins associated with the bulk port-in. When the bulk port-in is deleted, any child port-in orders that are not in a ```DRAFT``` status are dissociated from the bulk port-in, but not deleted. + +### Examples +DELETE https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId} + + + + +```http +curl -X DELETE https://dashboard.bandwidth.com/api/accounts/{accountId}/bulkPortins/{orderId}} \ +-U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ +-H 'Content-Type: application/xml' +``` + +> Response + +```http +HTTP 200 OK +``` + + + + +## Where to next? + +- [How to Create Bulk Port-in ←](/docs/numbers/guides/porting/createBulkPortins) +- [How to Submit Bulk Port-in →](/docs/numbers/guides/porting/submitBulkPortins) \ No newline at end of file diff --git a/site/docs/numbers/porting/updatePortin.mdx b/site/docs/numbers/porting/updatePortin.mdx new file mode 100644 index 000000000..c378439ca --- /dev/null +++ b/site/docs/numbers/porting/updatePortin.mdx @@ -0,0 +1,233 @@ +--- +id: updatePortin +title: Manage Port-in +slug: /numbers/guides/porting/updatePortin +description: How to update your port-in request +keywords: + - bandwidth + - numbers + - porting + - portin + - port-in + - lnp + - port + - update + - supp +image: '@site/static/img/bw-icon.svg' +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +export const accountId = "{accountId}"; +export const orderId = "{orderId}"; + +export const Highlight = ({children, color}) => ( + + {children} + + ); + +In this guide we will show you how to update your port-in order. We assume that you have [created port-in order](/docs/numbers/guides/porting/updatePortin). + +## Update Port-in Order + +The PUT to [/portins/{orderId} API](/apis/numbers/#operation/UpdatePortin) API allows a user to modify an existing LNP order, by sending a SUPP request. Modifications are only allowed for orders that are not yet `complete` or `cancelled`. Since many of the entries in an LNP Order cannot be changed after the initial order is placed, the ```PUT``` on a porting order-id does not require that the full order payload is included. + +If the order ProcessingStatus is `DRAFT`, the rules about what can be changed are much more lenient. Validation is performed when the ProcessingStatus is changed from `DRAFT` to `SUBMITTED`. The AltSpid element can be modified if it is not configured at the system level. +Regarding the fields which can be updated for different port types check the request schema section of [PUT /portins/{orderId}](/apis/numbers/#operation/UpdatePortin) specification. + +The general approach to handling this API call is to replace the elements included in the request body, and leave other preexisting elements in an unmodified condition. This is typical of a PATCH method, but because of our commitment to backwards compatibility we have elected not to "Fix" this behavior. As a result, there are some elements that cannot be modified using the PUT method. The elements affected vary by port-in Order type, which can be determined using a GET request to the `/portins/{orderId}` endpoint. + +### Examples +To update port-in request, you must make a PUT request to our [API /portins/{orderId}](/apis/numbers/#operation/UpdatePortin) endpoint. This can be done using tools like Postman or cURL. +PUT https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId} + + + + +```xml +PUT https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/d28b36f7-fa96-49eb-9556-a40fca49f7c6 HTTP/1.1 +Content-Type: application/xml; charset=utf-8 +Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= + + + + SJM00002 + 2014-12-04T13:00:00.000Z + 8045030092 + 9175131245 + + 23453245 + 1111 + + + RESIDENTIAL + TestName + TestLastName + + + true + 123 + Main Street + Cary + NC + 54321 + + + 743 + true + + 2019721004 + 2019721005 + + TestName TestLastName + Foo + +``` + +> Response + +```xml +HTTP 200 OK +Content-Type: application/xml; charset=utf-8 + + + d28b36f7-fa96-49eb-9556-a40fca49f7c6 + + 200 + Supp request received. Please use the order id to check the status of your order later. + + REQUESTED_SUPP + 2022-06-04T13:00:00Z + 8045030092 + 9175131245 + false + +``` + + + + +```xml +Note: Remember to add authentication for your application if needed! + +curl 'https://dashboard.bandwidth.com/api/accounts/{BW_ACCOUNT_ID}/portins/d28b36f7-fa96-49eb-9556-a40fca49f7c6' \ +-X PUT \ +-U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ +-H 'Content-Type: application/xml' \ +-d ' +SJM00002 +2022-06-04T13:00:00.000Z +8045030092 +9175131245 + + 23453245 + 1111 + + + RESIDENTIAL + TestName + TestLastName + + + true + 123 + Main Street + Cary + NC + 54321 + + +743 +true + + 2019721004 + 2019721005 + +TestName TestLastName +Foo +' +``` + +> Response + +```xml +HTTP 200 OK +Content-Type: application/xml; charset=utf-8 + + + d28b36f7-fa96-49eb-9556-a40fca49f7c6 + + 200 + Supp request received. Please use the order id to check the status of your order later. + + REQUESTED_SUPP + 2022-06-04T13:00:00Z + 8045030092 + 9175131245 + false + +``` + + + + +## Cancel a Port-in Order + +The API allows a user to cancel an existing LNP order. The order number that was generated in the create request must be provided, and the status of the order should not be ```COMPLETE```. The DELETE method is used for this purpose. + +### Examples +DELETE https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId} + + + + +```xml +curl -X DELETE https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/d28b36f7-fa96-49eb-9556-a40fca49f7c6 \ + -U '{BANDWIDTH_USERNAME}:{BANDWIDTH_PASSWORD}' \ + -H 'Content-Type: application/xml' +``` + +> Response + +```http +HTTP 200 OK +``` + + + + +## Port-in completion + +A port-in order may have one of 2 terminal processing statuses: ```COMPLETED``` (successful completion) or ```CANCELLED``` (cancelled by user or because of critical error). An order in a “terminal” state will never transition to any other processing status (terminal or not). + +## Where to next? + +- [How to Check Numbers Portability ←](/docs/numbers/guides/porting/lnpChecker) +- [How to Upload LOA (Letter of authorization) ←](/docs/numbers/guides/porting/loaUpload) +- [How to Create Port-in Request ←](/docs/numbers/guides/porting/portingNumbers) + diff --git a/site/docs/numbers/portingNumbers.mdx b/site/docs/numbers/portingNumbers.mdx deleted file mode 100644 index c5bf5f228..000000000 --- a/site/docs/numbers/portingNumbers.mdx +++ /dev/null @@ -1,583 +0,0 @@ ---- -id: portingNumbers -title: Porting Numbers -slug: /numbers/guides/portingNumbers -description: How to port numbers using the Bandwidth API -keywords: - - bandwidth - - numbers - - porting - - port -image: '@site/static/img/bw-icon.svg' ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -export const accountId = "{accountId}"; -export const orderId = "{orderId}"; - -export const Highlight = ({children, color}) => ( - - {children} - - ); - -The Bandwidth Phone Number API is used to submit Port-In requests. These requests to move phone numbers from a “losing carrier” to Bandwidth are part of the Local Number Portability (LNP) process. These LNP requests are automatically validated and processed. - -Bandwidth supports two APIs for porting numbers to Bandwidth: -- /portins -- /bulkPortins - -The `/portins` API allows a set of TNs to be ported in, provided that the set of TNs meets the criteria below. -TNs can be ported in a single `/portins` request if all of the following are true: - -1. They all have the same Port Type -2. They all have the same losing carrier -3. They are all associated with the same billing TN and Service Address - -There are also a number of reasons why a TN may not be able to be ported in: - -* The TN is in a rate center that is not supported by Bandwidth or any of Bandwidth's partners. -* The TN is an off-net TN and the account is configured to support tier zero (on-net) only. -* The TN belongs to a losing carrier that Bandwidth does not have a Trading Partner Agreement with. -* The TN is already being processed in another active port-in order. -* The Bandwidth account has not been enabled for porting. -Otherwise the user must separate the TNs into individual `/portins` requests. - -The `/lnpchecker` API is used to determine the Port Type(s) and losing carrier(s) for a set of TNs. -The `/bulkPortins` API eliminates the need for the `/lnpchecker` API by sorting the list of TNs automatically into a set of port-in requests by Port Type. The set of port-ins associated with the bulk port-in remain in a DRAFT state until you've had a chance to examine the breakdown. From that point, you can decide to submit all of the port-ins together under the umbrella of the bulk port-in, or you can separate out individual port-ins to submit by themselves. -Terminology - - -| Term | Description | | -|:----------------------------------|:-------------------------------------------------------| -| Port Type | A categorization of how the TNs submitted to the /lnpchecker API will be handled by Bandwidth. See the POST operation for more information | -| On-Net | TNs that belong to a rate center covered by Bandwidth are referred to as on-net TNs | -| Off-Net | TNs that belong to a rate center covered by a Bandwidth partner are refered to as off-net TNs | -| Automated | If the TNs are on-net, or off-net and covered by a Bandwidth partner that supports automated ports, then the port-in of these TNs will be handled with no human intervention | -| Manual | If the TNs cannot be ported automatically, the Bandwidth LNP team will work with the appropriate porting vendor or losing carrier to ensure completion of the port-in. The /portins API can be used to submit manual port-ins, which will be identified as such, and a Zendesk ticket will be automatically created to notify the Bandwidth LNP team | -| Internal | TNs that are being moved from one Bandwidth account to another Bandwidth account are referred to as internal ports. Internal ports are handled automatically | -| Losing carrier | The carrier from which the TN(s) is being ported | - - -## Checking for Portability - -A number or set of numbers can be checked to see if they can be ported into the Bandwidth Network using the `/accounts/{accountId}/lnpChecker` API endpoint. - -The `fullcheck` query parameter values control the components of the response payload that is returned. - -### Request URL -POST https://dashboard.bandwidth.com/api/accounts/{accountId}/lnpChecker - -### Request Query Parameter - -| `fullcheck` value | Description | -|:-------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `false` (default) | Return only rate center information | -| `true` | Additional information will be provided on the losing carriers associated with the listed numbers | -| `onnetportability` | Provides rate center and losing carrier information for onnet tiers only | -| `offnetportabilty` | In addition to on-net information return off-net port information in `` element with Partner/Vendor that the port will be supported on. Contains a list of the TNs that are supported in partner rate centers, and for which we will manually execute a port if requested for help. | - -### Response Parameters - -| Element | Description | -|:----------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `SupportedRateCenters`
`PartnerSupportedRateCenters`
`UnsupportedRateCenters` | Rate Center information for the indicated set of ratecenters, containing City, State, LATA and the list of TNs for which that Rate Center applies.
The Tier information is provided for offnet rate centers. | -| `SupportedLosingCarriers`
`UnsupportedLosingCarriers` | Details on the Losing Carrier including name, SPID, whether or not the carrier is a wireless carrier, whether or not account number is required as part of the CSR check, and the anticipated minimum number of days before a FoC date will be granted. | - -### Examples - -> Request - -```xml -POST https://dashboard.bandwidth.com/api/accounts/{accountId}/lnpChecker?fullcheck=true HTTP/1.1 -Content-Type: application/xml; charset=utf-8 -Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= - - - - 9195551234 - 9198675309 - - -``` - -> Response - -```xml -HTTP 200 OK -Content-Type: application/xml; charset=utf-8 - - - - MIXED - - 9198675309 - - - - RALEIGH - RALEIGH - NC - 426 - - 0 - - - 9198675309 - - - - - - DIR ASST - CUSTOMER DIRECTORY ASSISTANCE - NC - 99999 - - 9195551234 - - - - - - 979E - BANDWIDTH.COM:979E -NSR/1 - false - false - 3 - - 9198675309 - - - - - Unknown - false - false - 10 - - 9195551234 - - - - -``` - -## Create a Portin Order - -The API allows a user to create a new LNP order. An order number will be auto-generated and provided to the customer. The order must pass synchronous and asynchronous validation. Synchronous validation will return validation failures immediately in the response. If synchronous validation passes, but asynchronous validation fails, the customer will not receive the error response until they check the order status. - -As in other asynchronous workflows, the request to port in a number is created by a POST to a resource dedicated to the purpose to tracking requests – the `accounts/{accountId}/portins` resource. - -The portins endpoint is used to manage requests to port both toll free and non-toll free telephone numbers into Bandwidth. Like many other requests, the /portins endpoint causes the creation of an order that is used to manage the porting event throughout the lifecycle of the request. The various sub-resources and methods are covered in greater detail below. -When a port-in is created, a port-type is assigned based on the telephone numbers provided. A lot of the conditional payload elements are conditional on the basis of the port-type. Port-type can take on the following values: - -* MANUALOFFNET - Manual indicates that the port-in will be processed manually by Bandwidth’s Local Number Portability team. Off-net means that the telephone numbers in the port-in exist in a rate center supported by one of Bandwidth’s partners. Off-net port-ins are processed manually when the Bandwidth partner does not have APIs by which the port-in can be automated, or Bandwidth has not implemented those APIs. Orders may also be processed manually if there are more numbers in the port-in than the partner’s interface supports. -* MANUALONNET - Manual indicates that the port-in will be processed manually by Bandwidth’s Local Number Portability team. On-net means that the telephone numbers in the port-in exist in a rate center supported by Bandwidth. On-net port-ins are processed manually only when there are more numbers in the port-in than the porting vendor’s interface supports. -* MANUALTOLLFREE - Manual indicates that the port-in will be processed manually by Bandwidth’s Local Number Portability team. Currently all toll free port-ins are handled manually by Bandwidth’s Local Number Portability team. But Bandwidth is in the process of automating portions of toll free porting, with a goal of eventually automating the entire process. -* AUTOMATED - Automated means that the port-in will be processed automatically using interfaces to our porting vendors. There are several sub-types of AUTOMATED as follows: -* ON-NET - On-net means that the telephone numbers in the port-in exist in a rate center supported by Bandwidth. There are differences in on-net port-in rules depending on whether the order is for wireless to wireless vs. one of the other 3 combinations. -* OFF-NET - Off-net means that the telephone numbers in the port-in exist in a rate center supported by one of Bandwidth’s partners. Currently only numbers in the U.S. are automated. There are differences in port-in rules depending on whether the order has achieved FOC status. -* INTERNAL - Internal means that the telephone number is being moved from one Bandwidth account to another Bandwidth account. Internal port-in may involve on-net, off-net, or toll free telephone numbers. - -### Polling vs. Webhooks - -Porting numbers in the Bandwidth Dashboard is asynchronous when creating an LNP "order". The orders are then processed and the order status is updated asynchronously. Bandwidth recommends configuring your account with a subscription instead of polling the order resource for ``. - -Order processing times can vary and are not guaranteed, so bandwidth recommends relying on a webhook update from an portins subscription. - -### Request URL - -POST https://dashboard.bandwidth.com/api/accounts/{accountId}/portins - -### Request Parameters - -The table column labeled `M/O/C` is used to indicate if the element is Mandatory, Optional, or Conditional. Conditional elements are mandatory under certain conditions described in the Description column for that element. Mandatory elements are mandatory for all port-types and conditions, and Optional elements are optional for all port-types and conditions. - -| Parameter | M/O/C | Description | -|:----------------------------------|:-----:|:------------| -| AlternateSpid | O | Even though the telephone numbers are being ported into Bandwidth’s SPID, some of Bandwidth’s wholesale customers have an alternate SPID that is used to identify the telephone number with that customer. This element is not applicable for toll free port-ins. | -| BillingTelephoneNumber | C | The `BillingTelephoneNumber` is the primary telephone number associated with the invoice that the subscriber gets from the losing carrier. For wireline port-in, the BillingTelephoneNumber is typically the telephone number being ported in. This element is not applicable for toll free port-ins, but mandatory for non-toll free port-ins. | -| BusinessName | C | The `BusinessName` is mandatory for non-toll free port-ins for which the SubscriberType is set to `BUSINESS`. The `BusinessName` may be up to 50 characters in length. This element is not applicable for toll free port-ins. | -| CustomerOrderId | O | The `CustomerOrderId` is an optional field that may be provided by the customer and will remain with the order.

Only alphanumeric values, dashes and spaces are allowed. Max length is 40 characters. The value is opaque to Bandwidth. | -| Immediately | O | Including `Immediately` with a value of `true` will cause an Internal port-in to complete as soon as possible, without requiring a scheduled activation time.

`Immediately` has no meaning for port types other than Internal. | -| LoaAuthorizingPerson | M | The `LoaAuthorizingPerson` is mandatory for all port-types. This is the first and last names of the person that has authorized the port. The `LoaAuthorizingPerson` value may be up to 15 characters in length. | -| ListOfPhoneNumbers | M | `ListOfPhoneNumbers` is an array of `PhoneNumber`. At least one `PhoneNumber` must be provided for all port-types. -| ListOfPhoneNumbers.PhoneNumber | M | Ten digit phone number with no dots or dashes. One or more is required.
Use a `` tag for each phone number in the `` list. | -| NewBillingTelephoneNumber | O | This field is used to specify a new billing telephone number on the losing carrier account.

Cannot be the same as `BillingTelephoneNumber` or be present in the list of ported numbers. This element is not applicable to toll free or off-net port-in orders. | -| PartialPort | O | The `PartialPort` must be set to `true` if the intent is to **NOT** port all of the telephone numbers associated with the `BillingTelephoneNumber`.

If PartialPort is omitted or false, and the `ListOfPhoneNumbers` does not include all of the telephone numbers associated with the `BillingTelephoneNumber`, the port-in will be rejected.

PartialPort is applicable only to on-net port-types. This element is not applicable to toll free or off-net port-in orders. | -| PeerId | O | `PeerId` specifies the numeric identifier of the SIP-peer (Location) that the telephone numbers will be ported into.

You can find the identifier for a SIP-peer (location) by using `GET /accounts/id/sites/id/sippeers`, or by clicking on 'Accounts' on the upper right of the [Bandwidth Dashboard](Https://dashboard.bandwidth.com), then clicking 'Locations' on the navigation bar. The SIP-peer (location) identifiers are listed next to each location name. If `PeerId` is omitted, the SIP-peer (location) designated as the 'default location' for that site (sub-account) will be used. | -| ProcessingStatus | O | Including `ProcessingStatus` with a value of DRAFT allows you to create a port-in request, but not process the request. Omitting `ProcessingStatus` causes the port-in to be validated and, if correct, processed right away.

Be aware, however, that validation of the port-in payload occurs when the request is actually submitted by performing a PUT on the order with `ProcessingStatus` set to SUBMITTED. | -| RequestedFocDate | O | Format: ISO8601 encoding such as “2013-05-10T15:14:22Z”, or "2019-10-31T17:15:00+04:00".

For all ports, if `RequestedFocDate` is specified, the date portion must be:
- in the future
- after the losing carrier's minimum number of days to port-out
- not on a weekend or U.S. holiday

If `RequestedFocDate` is not specified, the next available FOC date meeting the criteria above will be used. If the Time portion of the `RequestedFocDate` is omitted the port-in order will be activated at the default activation time of 11:30 AM ET. If an activation time other than 11:30 AM ET is desired, that activation time should be included in the `RequestedFocDate`. | -| ResetAddressFields | O | The `ResetAddressFields` may be specified in a `PUT` request for a non-toll free port-in order if you would like to remove `ServiceAddress` elements that are not specified in the PUT payload. Default value is `false`. | -| ServiceAddress | C | The `ServiceAddress` is mandatory for all non-toll free port-ins. See sub-fields for additional details. | -| ServiceAddress.AddressDetail1 - 3 | O | `AddressDetail1` may be used to specify Secondary Address Unit Designators, as defined by the Postal Addressing Standards, Publication 28. Generally, `AddressDetail1` would be accompanied by `AddressValue1`.

`AddressDetail1`, `AddressDetail2`, and `AddressDetail3` are all available parameters. | -| ServiceAddress.AddressLine2 | O | `AddressLine2` is used to specify Unit, Suite, Floor, etc. in the Service Address. `AddressLine2` is optional when not needed to fully specify the `ServiceAddress`. | -| ServiceAddress.AddressValue1 - 3 | O | `AddressValue1` may be used to specify Secondary Address Unit Designators, as defined by the Postal Addressing Standards, Publication 28. Generally, `AddressDetail1` would be accompanied by `AddressValue1`

`AddressValue1`, `AddressValue2`, and `AddressValue3` are all available parameters. | -| ServiceAddress.City | C | `City` is mandatory in cases where the `ServiceAddress` is mandatory. | -| ServiceAddress.Country | O | `Country` is the country of the `ServiceAddress`. This value will be derived from the `StateCode`, so it should generally be omitted. | -| ServiceAddress.HouseNumber | C | The `HouseNumber` is the street address number of the `ServiceAddress`. `HouseNumber` is mandatory for port-in orders in which the `ServiceAddress` is mandatory. | -| ServiceAddress.HousePrefix | O | The `HouseSuffix` is the non-numeric address number suffix of the `ServiceAddress`. This element is optional when not needed to fully specify the `ServiceAddress`. | -| ServiceAddress.HouseSuffix | O | The `HouseSuffix` is the non-numeric address number suffix of the `ServiceAddress`. This element is optional when not needed to fully specify the `ServiceAddress`. | -| ServiceAddress.PlusFour | O | `PlusFour` is the 4 digits that are sometimes suffixed to the Zip Code. | -| ServiceAddress.PostDirectional | O | The `PostDirectional` is the street name post directional of the `ServiceAddress`. This element is optional when not needed to fully specify the `ServiceAddress`. | -| ServiceAddress.PreDirectional | O | The `PreDirectional` is the non-numeric street name prefix of the `ServiceAddress`. This element is optional when not needed to fully specify the `ServiceAddress`. | -| ServiceAddress.StateCode | C | `StateCode` is the 2-letter abbreviation of the state of the `ServiceAddress`. `StateCode` is mandatory in cases where the `ServiceAddress` is mandatory. ex: `NC`, `NY`, or `AK` | -| ServiceAddress.StreetName | C | The `StreetName` is mandatory in cases where the `ServiceAddress` is mandatory. | -| ServiceAddress.StreetSuffix | O | The `StreetSuffix` is the street suffix of the `ServiceAddress`. This element is optional when not needed to fully specify the `ServiceAddress`. | -| SiteId | M | `SiteId` is mandatory for all port-types. It specifies the identifier of the site (sub-account) that the telephone numbers will be ported into.

You can find the identifier for a site (sub-account) by using `GET /accounts/id/sites`, or by clicking on 'Manage sub-account' for the desired sub-account on the main page of the Bandwidth Dashboard. | -| Subscriber | C | The `Subscriber` is mandatory for all non-toll free port-in orders. See sub-fields for details. | -| Subscriber.FirstName | O | The `FirstName` value is applicable to non-toll free port-in orders in which the `SubscriberType` is set to RESIDENTIAL. The `FirstName` is always optional. The `FirstName` may be up to 50 characters in length. | -| Subscriber.LastName | C | The `LastName` value is mandatory for non-toll free port-in orders in which the `SubscriberType` is set to RESIDENTIAL. The `LastName` may be up to 50 characters in length. | -| Subscriber.MiddleInitial | O | The `MiddleInitial` value is applicable to non-toll free port-in orders in which the SubscriberType is set to RESIDENTIAL. The `MiddleInitial` is always optional. The `MiddleInitial` is 1 character in length. | -| Subscriber.SubscriberType | C | The `SubscriberType` is mandatory for all non-toll free port-in orders.

The `SubscriberType` field may have values: `BUSINESS` or `RESIDENTIAL`. | -| TnAttributes | O | The `TnAttributes` field specifies line attributes that will apply to the ported in telephone numbers. If present, `TnAttributes` may have a value of `PROTECTED`. This element is not applicable for off-net or toll free port-types. | -| Triggered | O | The `Triggered` field must be set to `true` if you want an activation time other than the 11:30 AM ET default. The desired activation time can then be specified in the time portion of the `RequestedFocDate`. Triggered activation is not yet supported for toll free port-in orders. | -| WirelessInfo | O | Most common for telephone numbers that were formerly wireless. This element is not applicable for toll free port-ins. | -| WirelessInfo.AccountNumber | O | The `AccountNumber` is sometimes required to authorize the port-out from the losing carrier. This is most common for telephone numbers that were formerly wireless. | -| WirelessInfo.PinNumber | O | The `PinNumber` is sometimes required to authorize the port-out from the losing carrier. This is most common for telephone numbers that were formerly wireless. | -| Zip | C | `Zip` is the Zip Code of the `ServiceAddress`. `Zip` is mandatory in cases where the `ServiceAddress` is mandatory. | - -### Examples - -> Request - -```xml -POST https://dashboard.bandwidth.com/api/accounts/{accountId}/portins HTTP/1.1 -Content-Type: application/xml; charset=utf-8 -Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= - - - 2016-03-25T21:15:00.000Z - X455 - 9195551234 - 9175131245 - 12345 - 660123 - - BUSINESS - First - Last - - 11235 - Back - Denver - CO - 27541 - Canyon - - - The Authguy - - 771297665AABC - 1234 - - - 9195551234 - 9195554321 - - true - -``` - -> Response - -```xml -HTTP 201 Created -Content-Type: application/xml; charset=utf-8 - - - - 03f194d5-3932-4e9f-8ba1-03ef767985e5 - - 201 - Order request received. Please use the order id to check the status of your order later. - - PENDING_DOCUMENTS - 2016-03-25T21:15:00.000Z - The Authguy - - BUSINESS - First - Last - - 11235 - Back - Denver - CO - 27541 - Canyon - United States - - - - 771297665AABC - 1234 - - 9195551234 - 9175131245 - - 9195551234 - 9195554321 - - true - -``` - -## Upload Letter of Authorization (LOA) - -After successfully submitting the Create LNP Order request, an LOA may be uploaded using our LOA API. - -The following MIME types are supported for the LOA upload file: - -* PDF(“application/pdf”) -* PLAIN(“text/plain”) -* JPG(“image/jpeg”) -* TIFF(“image/tiff”) -* CSV(“text/csv”) -* XML(“application/xml”) -* WAV(“audio/x-wav”) -* ZIP(“application/zip”) - -### Request URL -POST https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId}/loas - -### Examples - - - - -> Request - -```http -POST /api/accounts/9900778/portins/{orderId}/loas HTTP/1.1 -Host: dashboard.bandwidth.com -Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= -Content-Type: application/pdf -documentType: LOA -Accept: / -Accept-Encoding: gzip, deflate -Accept-Language: en-US,en;q=0.8 -Cache-Control: no-cache - -----WebKitFormBoundaryE19zNvXGzXaLvS5C -Content-Disposition: form-data; name="george"; filename="Bandwidth Dashboard.pdf" -Content-Type: application/pdf -----WebKitFormBoundaryE19zNvXGzXaLvS5C -``` - -> Response - -```xml -HTTP 201 Created -Content-Type: application/xml; charset=utf-8 - - - - 63097af1-37ae-432f-8a0d-9b0e6517a35b-1429550165581.pdf - 0 - LOA file uploaded successfully for order 63097af1-37ae-432f-8a0d-9b0e6517a35b - -``` - - - - -> Request - -```cURL -curl -H 'Content-Type: application/pdf' --data-binary "@Test_LOA.pdf" -iv https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{order-id}/loas -``` - - - - -## Modify a Portin Order - -The API allows a user to modify an existing LNP order, called a SUPP request. Modifications are only allowed for orders that are not yet complete or cancelled. LNP orders can be modified with a PUT to `accounts/{accountId}/portins/{orderId}`. Since many of the entries in an LNP Order cannot be changed after the initial order is placed, the PUT on a porting order-id does not require that the full order payload is included. - -Items that can be included in a SUPP request include: - -* CustomerOrderId -* RequestedFocDate -* BillingTelephoneNumber -* NewBillingTelephoneNumber -* AccountNumber -* PinNumber -* TnAttributes elements -* Subscriber elements -* SiteId -* PeerId -* PartialPort -* LoaAuthorizingPerson -* ListOfPhoneNumbers -* Triggered -* Immediately - -If the order ProcessingStatus is DRAFT, the rules about what can be changed are much more relaxed. Validation is performed when the ProcessingStatus is changed from DRAFT to SUBMITTED. The AltSpid element can be modified if it is not configured at the system level. - -`ProcessingStatus` - you can only provide this field with a value of SUBMITTED if the current ProcessingStatus of the port-in is DRAFT. - -When a port-in is being processed by off-net partner Level 3 (you can retrieve this information using a GET request to `/portins/{orderId}` indicates a Port Type of AUTOMATEDOFFNET and a VendorName of "Level 3"), the rules for what can be changed in a SUPP operation are more restrictive. If the order has NOT yet received FOC, you may change the following: - -* RequestedFocDate -* BillingTelephoneNumber -* SubscriberType -* Subscriber name elements or BusinessName, provided that SubscriberType is provided - -After the FOC date has been received, the billing telephone number and subscriber information cannot be modified, only the FOC date/time can be updated. - -The general approach to handling this API call is to replace the elements included in the request body, and leave other preexisting elements in an unmodified condition. This is typical of a PATCH method, but because of our commitment to backwards compatibility we have elected not to "Fix" this behavior. As a result, there are some elements that cannot be modified using the PUT method. The elements affected vary by Port-In Order type, which can be determined using a GET request to the `/portins/{orderId}` endpoint. Please refer to the matrix below to see which elements can be modified and replaced. - -| Payload Field | Manual Off-Net | Manual On-Net | Manual Toll Free | Automated On-Net | Automated Off-Net Pre FOC | Automated Off-Net Post FOC | Internal | -|----------------------------------------------------------|----------------|---------------|------------------|-------------------|---------------------------|----------------------------|----------| -| billingTelephoneNumber | Editable | Editable | Disabled | Editable | Editable | Disabled | Editable | -| newBillingTelephoneNumber | Editable | Editable | Disabled | Editable | Disabled | Disabled | Editable | -| partialPort | Editable | Editable | Disabled | Editable | Disabled | Disabled | Editable | -| subscriber.subscriberType | Editable | Editable | Editable | Editable | Editable | Disabled | Editable | -| subscriber.businessName/firstName/middleInitial/lastName | Editable | Editable | Editable | Editable | Editable | Disabled | Editable | -| loaAuthorizingPerson | Editable | Editable | Editable | Editable | Disabled | Disabled | Editable | -| wirelessInfo.accountNumber | Editable | Editable | Editable | Editable | Disabled | Disabled | Editable | -| wirelessInfo.pinNumber | Editable | Editable | Disabled | Editable | Disabled | Disabled | Editable | -| subscriber.serviceAddress | Editable | Editable | Editable | Editable | Disabled | Disabled | Editable | -| requestedFocDate | Editable | Editable | Editable | Editable | Editable | Editable | Editable | -| listOfPhoneNumbers | Disabled | Disabled | Disabled | Editable | Disabled | Disabled | Disabled | -| siteId | Editable | Editable | Editable | Editable | Editable | Editable | Editable | -| peerId | Editable | Editable | Editable | Editable | Editable | Editable | Editable | -| customerOrderId | Editable | Editable | Editable | Editable | Editable | Editable | Editable | -| TnAttributes elements | Editable | Editable | Editable | Editable | Editable | Editable | Editable | -| Immediately | Disabled | Disabled | Disabled | Disabled | Disabled | Disabled | Editable | - -### SUPP Order Field Notes - -* `AccountNumber` - Element of WirelessInfo. Not applicable to toll free port-ins. Cannot be SUPPed for Automated off-net port-ins. If you want to SUPP WirelessInfo, you must include both AccountNumber and PinNumber in the payload, even if you are not changing both. -* `AlternateSpid` - Not applicable to toll free port-ins. Can only be modified in DRAFT state. Can only be modified if it is not configured at the system level. -* `BillingTelephoneNumber` - Not applicable to toll free port-ins. Cannot be SUPPed for Automated on-net wireless to wireless port-ins or Automated off-net port-ins after FOC received. -* `BusinessName` - Element of Subscriber. Cannot be SUPPed for Automated on-net wireless to wireless port-ins or Automated off-net port-ins after FOC received. -* `CustomerOrderId` - Can always be updated. This field is removed from the order if not provided in the PUT payload. -* `Immediately` - Only applicable to Internal port-in orders. May be included in the PUT payload, but cannot be changed in a SUPP. -* `ListOfPhoneNumbers` - Can be SUPPed only for Automated on-net port-ins and toll free port-ins. For toll free port-ins, may be SUPPed only in draft states (i.e. DRAFT, VALIDATE_DRAFT_TFNS, VALID_DRAFT_TFNS, or INVALID_DRAFT_TFNS). -* `LoaAuthorizingPerson` - Cannot be SUPPed for Automated on-net wireless to wireless port-ins or Automated off-net port-ins. -* `NewBillingTelephoneNumber` - Not applicable to toll free port-ins or Automated off-net port-ins. Cannot be SUPPed for Automated on-net wireless to wireless port-ins. -* `OverrideValidation` - Applies only to internal ports. This Bandwidth internal flag forces port-out to bypass validity checking (if there are no terminal errors). This flag can be SUPPed only for orders in EXCEPTION status. -* `PartialPort` - Not applicable to toll free port-ins. Cannot be SUPPed for Automated on-net wireless to wireless port-ins or Automated off-net port-ins. -* `PeerId` - Can always be updated. -* `PinNumber` - Element of WirelessInfo. Not applicable to toll free port-ins. Cannot be SUPPed for Automated off-net port-ins. If you want to SUPP WirelessInfo, you must include both AccountNumber and PinNumber in the payload, even if you are not changing both. -* `ProcessingStatus` - May only be SUPPed for port-in orders in draft state. The only valid value is “SUBMITTED” (not case sensitive). -* `RequestedFocDate` - Can always be updated, but subject to blackout windows if the current date is too close to an assigned FOC date. -* `ResetAddressFields` - Not applicable to toll free port-ins. If included with a value of true, any Subscriber elements, including subscriber type, subscriber/business name elements, and service address elements, NOT included in the PUT payload will be removed from the order. -* `ServiceAddress` - Element of Subscriber. Includes all address fields. ServiceAddress elements cannot be SUPPed for Automated on-net wireless to wireless port-ins or Automated off-net port-ins. See also, ResetAddressFields. -* `SiteId` - Can always be updated. -* `SubscriberName` - Element of Subscriber. Includes FirstName, MiddleInitial, and LastName. Cannot be SUPPed for Automated on-net wireless to wireless port-ins or Automated off-net port-ins after FOC received. -* `SubscriberType` - Element of Subscriber. Cannot be SUPPed for Automated on-net wireless to wireless port-ins or Automated off-net port-ins after FOC received. If SubscriberType is set to BUSINESS, a BusinessName must be provided. If SubscriberType is set to RESIDENTIAL, a FirstName and LastName must be provided. -* `TnAttributes` - Can be SUPPed prior to completion of the port-in request. -* `Triggered` - May be included in the PUT payload, but cannot be changed in a SUPP. - -### Request URL - -PUT https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId} - -### Examples - -> Request - -```xml -PUT https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId} HTTP/1.1 -Content-Type: application/xml; charset=utf-8 -Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= - - - - SJM00002 - 2014-12-04T13:00:00.000Z - 8045030092 - 9175131245 - - 23453245 - 1111 - - - RESIDENTIAL - Steve - McKinnon - - - true - 115 - Monarch Way - Cary - NC - 27518 - - - 743 - true - - 2019721004 - 2019721005 - - Steve McKinnon - Foo - -``` - -> Response - -```xml -HTTP 200 OK -Content-Type: application/xml; charset=utf-8 - - - b6080e4c-7ddf-4faa-bbd8-328a72de9297 - - 200 - Supp request received. Please use the order id to check the status of your order later. - - REQUESTED_SUPP - 2014-12-04T13:00:00Z - 8045030092 - 9175131245 - false - -``` - -## Cancel a Portin Order - -The API allows a user to cancel an existing LNP order. The order number that was generated in the create request must be provided, and dhe status of the order shall not be marked as `COMPLETE`. The DELETE method is used for this purpose. - -### Request URL - -DELETE https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId} - -### Examples - -> Request - -```http -DELETE https://dashboard.bandwidth.com/api/accounts/{accountId}/portins/{orderId} HTTP/1.1 -Content-Type: application/xml; charset=utf-8 -Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= -``` - -> Response - -```http -HTTP 200 OK -``` diff --git a/site/docs/numbers/searchingAndOrderingNumbers.mdx b/site/docs/numbers/searchingAndOrderingNumbers.mdx index cd0188fd6..ee5fcc450 100644 --- a/site/docs/numbers/searchingAndOrderingNumbers.mdx +++ b/site/docs/numbers/searchingAndOrderingNumbers.mdx @@ -861,4 +861,4 @@ curl -X POST 'https://dashboard.bandwidth.com/api/accounts/{accountId}/subscript ## Where to next? Now that you have learned how to search and order numbers, check out some of the other available actions in our guides: -- [How to port numbers](/docs/numbers/guides/portingNumbers) \ No newline at end of file +- [How to port numbers](/docs/numbers/guides/porting/portingNumbers) \ No newline at end of file diff --git a/site/docs/voice/migrationGuide.mdx b/site/docs/voice/migrationGuide.mdx index f2029e426..683747000 100644 --- a/site/docs/voice/migrationGuide.mdx +++ b/site/docs/voice/migrationGuide.mdx @@ -1178,7 +1178,7 @@ Our Bandwidth Signature Support is included for free for every customer. Our sup Whether you are [purchasing new phone numbers](/docs/numbers/guides/orderingNumbers) to use with Bandwidth or looking to keep your existing phone numbers purchased from Twilio, the process couldn’t be easier. -You can port your numbers from Twilio to Bandwidth without devoting any downtime by following a few simple steps in our [Porting Numbers ](/docs/numbers/guides/portingNumbers) guide. +You can port your numbers from Twilio to Bandwidth without devoting any downtime by following a few simple steps in our [Porting Numbers ](/docs/numbers/guides/porting/portingNumbers) guide. ## Other API features diff --git a/site/sidebar.js b/site/sidebar.js index 13ce61230..3e7bba046 100644 --- a/site/sidebar.js +++ b/site/sidebar.js @@ -45,13 +45,24 @@ module.exports = { label: "Guides and Tutorials", items: [ "numbers/searchingAndOrderingNumbers", - "numbers/portingNumbers", + { + type: "category", + label: "Porting numbers", + items: [ + "numbers/porting/lnpChecker", + "numbers/porting/portingNumbers", + "numbers/porting/loaUpload", + "numbers/porting/updatePortin", + "numbers/porting/createBulkPortins", + "numbers/porting/updateBulkPortins", + "numbers/porting/submitBulkPortins", + ], + }, "numbers/csrLookupTool", "numbers/hostingNumbers", "numbers/manageNumberFeatures", "numbers/searchNumbers", "numbers/disconnectNumbers", - "numbers/bulkportins", "numbers/lookupNumbers", "numbers/downloadingReports", "numbers/lsrOrders", diff --git a/site/specs-temp/numbers.json b/site/specs-temp/numbers.json index 2eebe58f7..f0f8ec743 100644 --- a/site/specs-temp/numbers.json +++ b/site/specs-temp/numbers.json @@ -1703,7 +1703,7 @@ "tags": [ "Bulk Port-In" ], - "description": "Retrieves bulk port-in orders for the specified accountId.\nA maximum of 1,000 orders can be retrieved per request. If no date range or specific query parameter is provided, the order results will be limited to the last two years. Please visit Guides and Tutorials", + "description": "Retrieves bulk port-in orders for the specified accountId.\nA maximum of 1,000 orders can be retrieved per request. If no date range or specific query parameter is provided, the order results will be limited to the last two years. Please visit Guides and Tutorials", "operationId": "ListBulkPortins", "summary": "List bulk port-in orders", "parameters": [ @@ -1756,6 +1756,7 @@ "in": "query", "required": false, "schema": { + "format": "date", "type": "string" }, "example": "2021-06-21T18:45:00.000Z" @@ -1766,6 +1767,7 @@ "in": "query", "required": false, "schema": { + "format": "date", "type": "string" }, "example": "2021-06-21T18:45:00.000Z" @@ -1776,6 +1778,7 @@ "in": "query", "required": false, "schema": { + "format": "date", "type": "string" }, "example": "2021-06-21T18:45:00.000Z" @@ -1824,8 +1827,8 @@ "tags": [ "Bulk Port-In" ], - "description": "

Creates a bulk port-in order to be used as a template for a collection of child port-in orders. The template values will be cascaded to child port-ins that result from decomposing a collection of Telephone Numbers that span carriers, RespOrgs, or have attributes that drive the decomposition into a number of individual port-in orders.

Upon a successfully-submitted payload, the order will have a status of \"DRAFT\", denoting that further modification to the template is expected. For example, the next step is to use the /tnList endpoint to add a collection of telephone numbers to the bulk port-in order. The only valid value for the ProcessingStatus element in a POST is 'DRAFT', which is the default value.

Please visit Guides and Tutorials

", - "operationId": "CreateBulkOrder", + "description": "

Creates a bulk port-in order to be used as a template for a collection of child port-in orders. The template values will be cascaded to child port-ins that result from decomposing a collection of Telephone Numbers that span carriers, RespOrgs, or have attributes that drive the decomposition into a number of individual port-in orders.

Upon a successfully-submitted payload, the order will have a status of \"DRAFT\", denoting that further modification to the template is expected. For example, the next step is to use the /tnList endpoint to add a collection of telephone numbers to the bulk port-in order. The only valid value for the ProcessingStatus element in a POST is 'DRAFT', which is the default value. All parameters except for the URL parameter \"accountId\" are optional in the bulk port-in, although the rules for individual child port-ins described in the POST /portins API still apply to the child port-ins that make up the bulk port-in. Enforcement of required fields in the child port-ins occurs when the bulk port-in is submitted (i.e. changed from a DRAFT status to IN_PROGRESS). Enforcement of required fields in the child port-ins occurs when the bulk port-in is submitted (i.e. changed from a DRAFT status to IN_PROGRESS).

Please visit Guides and Tutorials

", + "operationId": "CreateBulkPortin", "summary": "Create bulk port-in order", "parameters": [ { @@ -1855,7 +1858,7 @@ "examples": { "example": { "description": "example", - "value": "\n\n \n Order Id for all child orders\n 2021-06-30T00:00:00.000Z\n 14020\n 521434\n DRAFT\n 9900572\n jgilmore\n jgilmore\n 2021-06-21T19:42:34.760Z\n 2021-06-21T19:42:34.760Z\n 3233e096-1ce5-4a58-ba77-02a5ee1c0ef4\n \n\n" + "value": "\n\n \n Order Id for all child orders\n 2021-06-30T00:00:00.000Z\n 14020\n 521434\n DRAFT\n 9900572\n testuser\n testuser\n 2021-06-21T19:42:34.760Z\n 2021-06-21T19:42:34.760Z\n 3233e096-1ce5-4a58-ba77-02a5ee1c0ef4\n \n\n" } }, "schema": { @@ -1885,7 +1888,7 @@ "tags": [ "Bulk Port-In" ], - "description": "Retrieves information associated with the bulk port-in order specified by the orderId URI parameter. Please visit Guides and Tutorials", + "description": "Retrieves information associated with the bulk port-in order specified by the orderId URI parameter. Please visit Guides and Tutorials", "operationId": "RetrieveBulkOrder", "summary": "Retrieve bulk port-in order", "parameters": [ @@ -1910,7 +1913,7 @@ "examples": { "example": { "description": "example", - "value": "\n \n\t \n\t\tOrder Id for all child orders\n\t\t2021-06-30T00:00:00.000Z\n\t\t14020 \n\t\t521434 \n\t\tDRAFT \n\t\t9900572 \n\t\tjgilmore \n\t\tjgilmore \n\t\t2021-06-21T19:42:34.760Z\n\t\t2021-06-21T19:42:34.760Z \n\t \n" + "value": "\n \n\t \n\t\tOrder Id for all child orders\n\t\t2021-06-30T00:00:00.000Z\n\t\t14020 \n\t\t521434 \n\t\tDRAFT \n\t\t9900572 \n\t\ttestuser \n\t\ttestuser \n\t\t2021-06-21T19:42:34.760Z\n\t\t2021-06-21T19:42:34.760Z \n\t \n" } }, "schema": { @@ -1928,7 +1931,7 @@ "tags": [ "Bulk Port-In" ], - "description": "The PUT operation is available only for bulk port-in orders that are not yet associated with subtending orders. Since this only occurs for bulk port-in orders that are in one of the draft states, there are few restrictions on what may be included. As with the POST, any data associated with the bulk port-in will cascade to subtending orders when they are created. (Subtending orders are created after telephone numbers are added to the bulk port-in using the /tnList endpoint.) The PUT completely replaces the existing Bulk Portin order with the payload of the PUT. Please visit Guides and Tutorials.

The following element may appear only in PUT or PATCH operations on a bulk port-in order.
  • RetryValidation - When toll free numbers are included in a port-in order, Bandwidth accesses a vendor to determine if the numbers are portable, and if so, from which RespOrg. In the event that we do not receive a response from our vendor after a number of retries, we give up and place the order in the INVALID_DRAFT_TNS state. This scenario can occur if our toll free porting vendor is performing maintenance, for example. Including RetryValidation with a value of true will cause the order to return to VALIDATE_DRAFT_TNS and we will repeat our attempts to retrieve the portability data from the vendor. This element is included in the synchronous response to the PUT or PATCH, when included in the request, but is not included in subsequent GET requests for the order.
", + "description": "The PUT operation is available only for bulk port-in orders that are not yet associated with subtending orders. Since this only occurs for bulk port-in orders that are in one of the draft states, there are few restrictions on what may be included. As with the POST, any data associated with the bulk port-in will cascade to subtending orders when they are created. (Subtending orders are created after telephone numbers are added to the bulk port-in using the /tnList endpoint.) The PUT completely replaces the existing Bulk Portin order with the payload of the PUT. Please visit Guides and Tutorials.", "operationId": "PutBulkOrder", "summary": "Update bulk port-in order", "parameters": [ @@ -1968,7 +1971,7 @@ "examples": { "example": { "description": "example", - "value": "\n \n\t \n\t\tOrder Id for all child orders \n\t\t2021-06-30T00:00:00.000Z \n\t\t \n\t\t\tBUSINESS \n\t\t\tGoina B Rich \n\t\t\t \n\t\t\t\t123 \n\t\t\t\tMaple Ave \n\t\t\t\tHometown \n\t\t\t\tMO \n\t\t\t\t54923 \n\t\t\t\tUnited States \n\t\t\t\tService \n\t\t\t \n\t\t \n\t\t14020 \n\t\t521434 \n\t\tDRAFT \n\t\t9900572 \n\t\tjgilmore \n\t\tjgilmore \n\t\t2021-06-21T20:24:36.616Z\n\t\t2021-06-21T19:42:34.760Z \n\t \n" + "value": "\n \n\t \n\t\tOrder Id for all child orders \n\t\t2021-06-30T00:00:00.000Z \n\t\t \n\t\t\tBUSINESS \n\t\t\tGoina B Rich \n\t\t\t \n\t\t\t\t123 \n\t\t\t\tMaple Ave \n\t\t\t\tHometown \n\t\t\t\tMO \n\t\t\t\t54923 \n\t\t\t\tUnited States \n\t\t\t\tService \n\t\t\t \n\t\t \n\t\t14020 \n\t\t521434 \n\t\tDRAFT \n\t\t9900572 \n\t\ttestuser \n\t\ttestuser \n\t\t2021-06-21T20:24:36.616Z\n\t\t2021-06-21T19:42:34.760Z \n\t \n" } } } @@ -1996,7 +1999,7 @@ "tags": [ "Bulk Port-In" ], - "description": "Delete a bulk port-in order with child port-ins. Deleting a bulk port-in is allowed for 'DRAFT' state only. Deleting a bulk port-in will delete all DRAFT child port-ins associated with the bulk port-in. When the bulk port-in is deleted, any child port-in orders that are not in a draft status are dissociated from the bulk port-in, but not deleted. Please visit Guides and Tutorials", + "description": "Delete a bulk port-in order with child port-ins. Deleting a bulk port-in is allowed for 'DRAFT' state only. Deleting a bulk port-in will delete all DRAFT child port-ins associated with the bulk port-in. When the bulk port-in is deleted, any child port-in orders that are not in a draft status are dissociated from the bulk port-in, but not deleted. Please visit Guides and Tutorials", "operationId": "DeleteBulkOrder", "summary": "Delete bulk port-in order", "parameters": [ @@ -2039,7 +2042,7 @@ "tags": [ "Bulk Port-In" ], - "description": "

It is possible to change (\"SUPP\" in LNP terms) an existing Bulk Port-in order. This is done via a PUT or PATCH on the existing order-id. Since the Bulk Port-in\n order acts as a template for port-in orders in DRAFT status, any record can be changed at any time. The PATCH replaces elements of the referenced Bulk Portin order, but it replaces only the records included in the request payload. Other elements will remain untouched.

Changing the fields in a Bulk Port-in order causes the system to reapply all changed values to the child port-ins contained in the list of subtending port-in orders. Note that if the port-in orders contained within the Bulk Port are in DRAFT state, any field can be modified. If any child port-in order in the Bulk Port-in is in any other state, normal SUPP rules apply, and the list of appropriate fields is smaller.

Changing the ProcessingStatus to 'IN_PROGRESS' causes all child port-ins to begin processing. This is only valid if child port-ins exist for the bulk port-in.

Please visit Guides and Tutorials

", + "description": "

It is possible to change (\"SUPP\" in LNP terms) an existing Bulk Port-in order. This is done via a PUT or PATCH on the existing order-id. Since the Bulk Port-in\n order acts as a template for port-in orders in DRAFT status, any record can be changed at any time. The PATCH replaces elements of the referenced Bulk Portin order, but it replaces only the records included in the request payload. Other elements will remain untouched.

Changing the fields in a Bulk Port-in order causes the system to reapply all changed values to the child port-ins contained in the list of subtending port-in orders. Note that if the port-in orders contained within the Bulk Port are in DRAFT state, any field can be modified. If any child port-in order in the Bulk Port-in is in any other state, normal SUPP rules apply, and the list of appropriate fields is smaller.

Changing the ProcessingStatus to 'IN_PROGRESS' causes all child port-ins to begin processing. This is only valid if child port-ins exist for the bulk port-in.

Please visit Guides and Tutorials

", "operationId": "PatchBulkOrder", "summary": "Patch bulk port-in order", "parameters": [ @@ -2084,7 +2087,7 @@ "examples": { "example": { "description": "example", - "value": "\n\n\t\n\t\tOrder Id for all child orders\n\t\t2021-06-30T00:00:00.000Z\n\t\t\n\t\t\tBUSINESS\n\t\t\tGoina B Rich\n\t\t\t\n\t\t\t\t123\n\t\t\t\tMaple Ave\n\t\t\t\tHometown\n\t\t\t\tMO\n\t\t\t\t54923\n\t\t\t\tUnited States\n\t\t\t\tService\n\t\t\t\n\t\t\n\t\t14020\n\t\t521434\n\t\tDRAFT\n\t\t9900572\n\t\tjgilmore\n\t\tjgilmore\n\t\t2021-06-22T14:25:24.487Z\n\t\t2021-06-21T19:42:34.760Z\n\t\n" + "value": "\n\n\t\n\t\tOrder Id for all child orders\n\t\t2021-06-30T00:00:00.000Z\n\t\t\n\t\t\tBUSINESS\n\t\t\tGoina B Rich\n\t\t\t\n\t\t\t\t123\n\t\t\t\tMaple Ave\n\t\t\t\tHometown\n\t\t\t\tMO\n\t\t\t\t54923\n\t\t\t\tUnited States\n\t\t\t\tService\n\t\t\t\n\t\t\n\t\t14020\n\t\t521434\n\t\tDRAFT\n\t\t9900572\n\t\ttestuser\n\t\ttestuser\n\t\t2021-06-22T14:25:24.487Z\n\t\t2021-06-21T19:42:34.760Z\n\t\n" } } } @@ -2114,7 +2117,7 @@ "tags": [ "Bulk Port-In" ], - "description": "Retrieves a list of Port-in Orders that are all associated with the identified Bulk Port-in. This response is not paginated due to its inherently limited size. Please visit Guides and Tutorials", + "description": "Retrieves a list of Port-in Orders that are all associated with the identified Bulk Port-in. This response is not paginated due to its inherently limited size. Please visit Guides and Tutorials", "operationId": "ListBulkChildOrders", "summary": "List bulk port-in child orders", "parameters": [ @@ -2154,7 +2157,7 @@ "tags": [ "Bulk Port-In" ], - "description": "

A PUT on a PortinList resource will cause replacement of the list of port-in orders associated with the specified bulk port-in.

This PUT will completely replace the existing list of port-in orders associated with the bulk port-in. If all port-in orders in the list are not valid, the PUT request will fail, due to the potential for losing the port-in to bulk port-in relationships.

Only port-in orders in a draft status may be associated with a bulk port-in order. And port-in orders may only be added to a bulk port-in order while that bulk port-in order is still in a draft state.

Child port-in orders may be dissociated from the bulk port-in at any time.

Please visit Guides and Tutorials

", + "description": "

A PUT on a PortinList resource will cause replacement of the list of port-in orders associated with the specified bulk port-in.

This PUT will completely replace the existing list of port-in orders associated with the bulk port-in. If all port-in orders in the list are not valid, the PUT request will fail, due to the potential for losing the port-in to bulk port-in relationships.

Only port-in orders in a draft status may be associated with a bulk port-in order. And port-in orders may only be added to a bulk port-in order while that bulk port-in order is still in a draft state.

Child port-in orders may be dissociated from the bulk port-in at any time.

Please visit Guides and Tutorials

", "operationId": "UpdateBulkChildList", "summary": "Update list of bulk port-in child orders", "parameters": [ @@ -2214,7 +2217,7 @@ "tags": [ "Bulk Port-In" ], - "description": "Retrieve all notes associated with the order. Please visit Guides and Tutorials", + "description": "Retrieve all notes associated with the order. Please visit Guides and Tutorials", "operationId": "ListBulkNotes", "summary": "List bulk port-in order notes", "parameters": [ @@ -2257,7 +2260,7 @@ "tags": [ "Bulk Port-In" ], - "description": "Updates the Notes resource by adding a note. Adding a note to a port-in order causes a notification to be sent to Bandwidth Operations, so that they may assist as necessary. A note may be up to 500 characters in length. Please visit Guides and Tutorials", + "description": "Updates the Notes resource by adding a note. Adding a note to a port-in order causes a notification to be sent to Bandwidth Operations, so that they may assist as necessary. A note may be up to 500 characters in length. Please visit Guides and Tutorials", "operationId": "CreateBulkNote", "summary": "Create bulk port-in order note", "parameters": [ @@ -2317,7 +2320,7 @@ "tags": [ "Bulk Port-In" ], - "description": "Update a specified note. Notes may only be updated, not deleted. Please visit Guides and Tutorials", + "description": "Update a specified note. Notes may only be updated, not deleted. Please visit Guides and Tutorials", "operationId": "UpdateBulkNote", "summary": "Update bulk port-in order note", "parameters": [ @@ -2387,7 +2390,7 @@ "tags": [ "Bulk Port-In" ], - "description": "

The information returned in the GET /tnList response payload depends on the ProcessingStatus of the bulk port-in order. See the Responses tab for examples of each response payload.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n

\n ProcessingStatus\n

\n
\n

\n Information Returned\n

\n
\n

\n DRAFT\n

\n
\n

\n In this state, no tnList has been provided, so the response\n includes empty portable and non-portable telephone number lists.\n

\n
\n

\n VALIDATE_DRAFT_TNS\n

\n
\n

\n In this state, validation of the tnList is still in progress,\n so the response includes all of the tnList telephone numbers\n in a `not validated` list. This is a temporary state until\n the validation completes. Validation takes longer when toll\n free numbers are included in the tnList.\n

\n
\n

\n VALID_DRAFT_TNS\n

\n
\n

\n In this state, all of the telephone numbers in the tnList have\n been determined to be portable. The response payload includes\n a list of the child port-in orders and shows which telephone\n numbers are assigned to each child port-in order.\n

\n
\n

\n INVALID_DRAFT_TNS\n

\n
\n

\n In this state, at least one of the telephone numbers in the tnList\n has been determined to be non-portable. The response payload includes\n a list of portable numbers (if any) and a list of errors showing which\n telephone numbers are non-portable as well as the reasons why they\n cannot be ported. Or, if communication errors prevented us from\n determining telephone number portability, those errors will be included.\n

\n
\n

Please visit Guides and Tutorials

", + "description": "

The information returned in the GET /tnList response payload depends on the ProcessingStatus of the bulk port-in order. See the Responses tab for examples of each response payload.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n

\n ProcessingStatus\n

\n
\n

\n Information Returned\n

\n
\n

\n DRAFT\n

\n
\n

\n In this state, no tnList has been provided, so the response\n includes empty portable and non-portable telephone number lists.\n

\n
\n

\n VALIDATE_DRAFT_TNS\n

\n
\n

\n In this state, validation of the tnList is still in progress,\n so the response includes all of the tnList telephone numbers\n in a 'not validated' list. This is a temporary state until\n the validation completes. Validation takes longer when toll\n free numbers are included in the tnList.\n

\n
\n

\n VALID_DRAFT_TNS\n

\n
\n

\n In this state, all of the telephone numbers in the tnList have\n been determined to be portable. The response payload includes\n a list of the child port-in orders and shows which telephone\n numbers are assigned to each child port-in order.\n

\n
\n

\n INVALID_DRAFT_TNS\n

\n
\n

\n In this state, at least one of the telephone numbers in the tnList\n has been determined to be non-portable. The response payload includes\n a list of portable numbers (if any) and a list of errors showing which\n telephone numbers are non-portable as well as the reasons why they\n cannot be ported. Or, if communication errors prevented us from\n determining telephone number portability, those errors will be included.\n

\n
\n

Please visit Guides and Tutorials

", "operationId": "ListBulkTns", "summary": "List bulk port-in order tns", "parameters": [ @@ -2438,7 +2441,7 @@ "tags": [ "Bulk Port-In" ], - "description": "

This operation is used to add telephone numbers to a draft bulk port-in order.\n The telephone numbers may be a mix of toll free and non-toll free. Once the\n telephone numbers are added, they will be checked for portability, and if\n portable, decomposed into individual child port-in orders. Both the bulk\n port-in order and the child port-in orders remain in draft status until you\n explicitly submit them.

\n\n

After submitting a tnList with the PUT operation, you will need to poll for\n completion of the validation and decomposition using the GET /tnList operation\n or the GET /bulkPortins/orderId operation (both include the order ProcessingStatus).\n The basic ProcessingStatus flow is as follows:

\n\n
  • On submission of the tnList, the bulk port-in order transitions from DRAFT\n status to VALIDATE_DRAFT_TNS. The order will remain in this state until validation\n is complete. For a tnList that does not contain any toll free telephone numbers, the\n validation step is very fast. When the tnList does contain toll free telephone\n numbers, the time it takes to validate the toll free numbers is roughly proportional\n to the number of toll free telephone numbers. If you PUT a new tnList while validation\n is in progress for a previous tnList, the validation of the previous tnList will be\n abandoned and replaced by validation of the new tnList.
  • \n
  • If all of the telephone numbers in the tnList are portable, the bulk port-in\n transitions to the VALID_DRAFT_TNS state. At this point, child port-in orders have\n been created in DRAFT status to meet requirements about which telephone numbers can\n be ported together in the same port-in order. The bulk port-in will remain in this\n state until you use the PATCH operation on the bulk port-in order to change the\n ProcessingStatus to IN_PROGRESS. If you PUT an updated tnList, all draft child\n port-in orders are removed, and the validation process begins again with the new\n tnList.
  • \n
  • If at least one of the telephone numbers in the tnList is not portable, the bulk\n port-in transitions to the INVALID_DRAFT_TNS state. When this happens, no child\n port-in orders are created. You can use the GET operation on /tnList to see reasons\n why telephone numbers are non-portable. You’ll need to update the tnList to remove\n non-portable telephone numbers and PUT the tnList again to restart the validation\n step. The goal is to get to the VALID_DRAFT_TNS state, from which you can submit\n the bulk port-in order.
\n

Please visit Guides and Tutorials

", + "description": "

This operation is used to add telephone numbers to a draft bulk port-in order.\n The telephone numbers may be a mix of toll free and non-toll free. Once the\n telephone numbers are added, they will be checked for portability, and if\n portable, decomposed into individual child port-in orders. Both the bulk\n port-in order and the child port-in orders remain in draft status until you\n explicitly submit them.

\n\n

After submitting a tnList with the PUT operation, you will need to poll for\n completion of the validation and decomposition using the GET /tnList operation\n or the GET /bulkPortins/orderId operation (both include the order ProcessingStatus).\n The basic ProcessingStatus flow is as follows:

\n\n
  • On submission of the tnList, the bulk port-in order transitions from DRAFT\n status to VALIDATE_DRAFT_TNS. The order will remain in this state until validation\n is complete. For a tnList that does not contain any toll free telephone numbers, the\n validation step is very fast. When the tnList does contain toll free telephone\n numbers, the time it takes to validate the toll free numbers is roughly proportional\n to the number of toll free telephone numbers. If you PUT a new tnList while validation\n is in progress for a previous tnList, the validation of the previous tnList will be\n abandoned and replaced by validation of the new tnList.
  • \n
  • If all of the telephone numbers in the tnList are portable, the bulk port-in\n transitions to the VALID_DRAFT_TNS state. At this point, child port-in orders have\n been created in DRAFT status to meet requirements about which telephone numbers can\n be ported together in the same port-in order. The bulk port-in will remain in this\n state until you use the PATCH operation on the bulk port-in order to change the\n ProcessingStatus to IN_PROGRESS. If you PUT an updated tnList, all draft child\n port-in orders are removed, and the validation process begins again with the new\n tnList.
  • \n
  • If at least one of the telephone numbers in the tnList is not portable, the bulk\n port-in transitions to the INVALID_DRAFT_TNS state. When this happens, no child\n port-in orders are created. You can use the GET operation on /tnList to see reasons\n why telephone numbers are non-portable. You’ll need to update the tnList to remove\n non-portable telephone numbers and PUT the tnList again to restart the validation\n step. The goal is to get to the VALID_DRAFT_TNS state, from which you can submit\n the bulk port-in order.
\n

Please visit Guides and Tutorials

", "operationId": "UpdateBulkTnList", "summary": "Update bulk port-in order tn list", "parameters": [ @@ -2511,7 +2514,7 @@ "tags": [ "Bulk Port-In" ], - "description": "Retrieves the history of the specified bulk port-in order. Obtaining history for a draft bulk port-in is not supported.

Please visit Guides and Tutorials

", + "description": "Retrieves the history of the specified bulk port-in order. Obtaining history for a draft bulk port-in is not supported.

Please visit Guides and Tutorials

", "operationId": "GetBulkHistory", "summary": "Retrieve bulk port-in order history", "parameters": [ @@ -4382,7 +4385,7 @@ "schema": { "type": "string" }, - "example": "jgilmore" + "example": "testuser" }, { "name": "enrNotificationType", @@ -4418,7 +4421,7 @@ "schema": { "type": "string" }, - "example": "jgilmore" + "example": "testuser" }, { "name": "page", @@ -4491,7 +4494,7 @@ "examples": { "example": { "description": "example", - "value": "\n\n\t\n\t\t\n\t\t -- link to first page of results -- \n\t\t\n\t\t\n\t\t -- link to next page of results -- \n\t\n\t\n\t\t\n\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t2020-03-18T21:26:47.403Z\n\t\t\t2020-03-18T21:26:47.403Z\n\t\t\tjgilmore\n\t\t\tThis is a description of the emergency notification recipient.\n\t\t\tCALLBACK\n\t\t\t\n\t\t\t\thttps://foo.bar/baz\n\t\t\t\t\n\t\t\t\t\tjgilmore\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t2020-03-22T12:13:25.782Z\n\t\t\t2020-03-22T12:13:25.782Z\n\t\t\tgfranklin\n\t\t\tThis is a description of the emergency notification recipient.\n\t\t\tEMAIL\n\t\t\tfred@gmail.com\n\t\t\n\t\t\n\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t2020-03-25T17:04:53.042Z\n\t\t\t2020-03-25T17:04:53.042Z\n\t\t\tmsimpson\n\t\t\tThis is a description of the emergency notification recipient.\n\t\t\tSMS\n\t\t\t\n\t\t\t\t12015551212\n\t\t\t\n\t\t\n\t\t\n\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t2020-03-29T20:14:01.736Z\n\t\t\t2020-03-29T20:17:53.294Z\n\t\t\tlsimpson\n\t\t\tThis is a description of the emergency notification recipient.\n\t\t\tTTS\n\t\t\t\n\t\t\t\t12015551212\n\t\t\t\n\t\t\n\t\n" + "value": "\n\n\t\n\t\t\n\t\t -- link to first page of results -- \n\t\t\n\t\t\n\t\t -- link to next page of results -- \n\t\n\t\n\t\t\n\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t2020-03-18T21:26:47.403Z\n\t\t\t2020-03-18T21:26:47.403Z\n\t\t\ttestuser\n\t\t\tThis is a description of the emergency notification recipient.\n\t\t\tCALLBACK\n\t\t\t\n\t\t\t\thttps://foo.bar/baz\n\t\t\t\t\n\t\t\t\t\ttestuser\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t2020-03-22T12:13:25.782Z\n\t\t\t2020-03-22T12:13:25.782Z\n\t\t\tgfranklin\n\t\t\tThis is a description of the emergency notification recipient.\n\t\t\tEMAIL\n\t\t\tfred@gmail.com\n\t\t\n\t\t\n\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t2020-03-25T17:04:53.042Z\n\t\t\t2020-03-25T17:04:53.042Z\n\t\t\tmsimpson\n\t\t\tThis is a description of the emergency notification recipient.\n\t\t\tSMS\n\t\t\t\n\t\t\t\t12015551212\n\t\t\t\n\t\t\n\t\t\n\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t2020-03-29T20:14:01.736Z\n\t\t\t2020-03-29T20:17:53.294Z\n\t\t\tlsimpson\n\t\t\tThis is a description of the emergency notification recipient.\n\t\t\tTTS\n\t\t\t\n\t\t\t\t12015551212\n\t\t\t\n\t\t\n\t\n" } } } @@ -4571,7 +4574,7 @@ }, "callback": { "description": "Sample request payload for an CALLBACK recipient", - "value": "\nCallback to property management system\n\tCALLBACK\n\t\n\t\thttps://foo.bar/baz\n\t\t\n\t\t\tjgilmore\n\t\t\tx23388%SLHss\n\t\t\n\t\n" + "value": "\nCallback to property management system\n\tCALLBACK\n\t\n\t\thttps://foo.bar/baz\n\t\t\n\t\t\ttestuser\n\t\t\tx23388%SLHss\n\t\t\n\t\n" } } } @@ -4601,7 +4604,7 @@ "examples": { "example": { "description": "example", - "value": "\n\n\t\n\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t2020-03-18T21:26:47.403Z\n\t\t2020-03-18T21:26:47.403Z\n\t\tjgilmore\n\t\tThis is a description of the emergency notification recipient.\n\t\tCALLBACK\n\t\t\n\t\t\thttps://foo.bar/baz\n\t\t\t\n\t\t\t\tjgilmore\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" + "value": "\n\n\t\n\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t2020-03-18T21:26:47.403Z\n\t\t2020-03-18T21:26:47.403Z\n\t\ttestuser\n\t\tThis is a description of the emergency notification recipient.\n\t\tCALLBACK\n\t\t\n\t\t\thttps://foo.bar/baz\n\t\t\t\n\t\t\t\ttestuser\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" } } } @@ -4708,7 +4711,7 @@ }, "callback": { "description": "For an CALLBACK type emergency notification recipient", - "value": "\n\t\n\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t2020-03-18T21:26:47.403Z\n\t\t2020-04-01T18:32:22.316Z\n\t\tjgilmore\n\t\tThis is a description of the emergency notification recipient.\n\t\tCALLBACK\n\t\t\n\t\t\thttps://foo.bar/baz\n\t\t\t\n\t\t\t\tjgilmore\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" + "value": "\n\t\n\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t2020-03-18T21:26:47.403Z\n\t\t2020-04-01T18:32:22.316Z\n\t\ttestuser\n\t\tThis is a description of the emergency notification recipient.\n\t\tCALLBACK\n\t\t\n\t\t\thttps://foo.bar/baz\n\t\t\t\n\t\t\t\ttestuser\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" } } } @@ -4798,7 +4801,7 @@ }, "callback": { "description": "Sample request payload for an CALLBACK recipient:", - "value": "\n\tCallback to property management system\n\tCALLBACK\n\t\n\t\thttps://foo.bar/baz\n\t\t\n\t\t\tjgilmore\n\t\t\tx23388%SLHss\n\t\t\n\t\n" + "value": "\n\tCallback to property management system\n\tCALLBACK\n\t\n\t\thttps://foo.bar/baz\n\t\t\n\t\t\ttestuser\n\t\t\tx23388%SLHss\n\t\t\n\t\n" } } } @@ -4828,7 +4831,7 @@ "examples": { "example": { "description": "example", - "value": "\n\n\t\n\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t2020-03-18T21:26:47.403Z\n\t\t2020-04-01T18:32:22.316Z\n\t\tjgilmore\n\t\tThis is a description of the emergency notification recipient.\n\t\tCALLBACK\n\t\t\n\t\t\thttps://foo.bar/baz\n\t\t\t\n\t\t\t\tjgilmore\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" + "value": "\n\n\t\n\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t2020-03-18T21:26:47.403Z\n\t\t2020-04-01T18:32:22.316Z\n\t\ttestuser\n\t\tThis is a description of the emergency notification recipient.\n\t\tCALLBACK\n\t\t\n\t\t\thttps://foo.bar/baz\n\t\t\t\n\t\t\t\ttestuser\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" } } } @@ -4977,7 +4980,7 @@ "schema": { "type": "string" }, - "example": "jgilmore" + "example": "testuser" }, { "name": "processingStatus", @@ -5194,7 +5197,7 @@ }, "201 for updated description": { "description": "A sample 201 response to an order payload for updating an emergency notification group description looks like the following", - "value": "\n\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t2020-01-23T18:34:17.284Z\n\tjgilmore\n\tPROCESSING \n\tALG-31233884\n\t\n\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t This is an updated description of the emergency notification Group. \n\t\n" + "value": "\n\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t2020-01-23T18:34:17.284Z\n\ttestuser\n\tPROCESSING \n\tALG-31233884\n\t\n\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t This is an updated description of the emergency notification Group. \n\t\n" }, "201 for adding recipients": { "description": "A sample 201 response to an order payload for updating an emergency notification group by adding emergency notification recipients looks like the following", @@ -5284,7 +5287,7 @@ "examples": { "example": { "description": "example", - "value": "\n\n\t\n\t\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t\t2020-01-23T18:34:17.284Z\n\t\tjgilmore\n\t\tCOMPLETED\n\t\tALG-31233884\n\t\t\n\t\t\t\n\t\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t\tBuilding 5, 5th Floor.\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t\t\t\t\tBuilding 5 front desk email\n\t\t\t\t\t\t\tEMAIL\n\t\t\t\t\t\t\tBldg5Reception@company.com\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tef47eb61-e3b1-449d-834b-0fbc5a11da30\n\t\t\t\t\t\t\tBuilding 5 5th floor responder text\n\t\t\t\t\t\t\tSMS\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t12124487782\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tc9a2f068-e1b0-4454-9c0b-74c4113f6141\n\t\t\t\t\t\t\tCallback for MyCompany\n\t\t\t\t\t\t\tCALLBACK\n\t\t\t\t\t\t\thttps://foo.bar/baz\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tjgilmore\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" + "value": "\n\n\t\n\t\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t\t2020-01-23T18:34:17.284Z\n\t\ttestuser\n\t\tCOMPLETED\n\t\tALG-31233884\n\t\t\n\t\t\t\n\t\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t\tBuilding 5, 5th Floor.\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t\t\t\t\tBuilding 5 front desk email\n\t\t\t\t\t\t\tEMAIL\n\t\t\t\t\t\t\tBldg5Reception@company.com\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tef47eb61-e3b1-449d-834b-0fbc5a11da30\n\t\t\t\t\t\t\tBuilding 5 5th floor responder text\n\t\t\t\t\t\t\tSMS\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t12124487782\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tc9a2f068-e1b0-4454-9c0b-74c4113f6141\n\t\t\t\t\t\t\tCallback for MyCompany\n\t\t\t\t\t\t\tCALLBACK\n\t\t\t\t\t\t\thttps://foo.bar/baz\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\ttestuser\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" } } } @@ -5420,7 +5423,7 @@ "examples": { "example": { "description": "example", - "value": "\n\n\t\n\t\t\n\t\t -- link to first page of results -- \n\t\t\n\t\t\n\t\t -- link to next page of results -- \n\t\n\t\n\t\t\n\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t2020-01-23T18:34:17.284Z\n\t\t\tjgilmore\n\t\t\t2020-01-23T18:34:17.284Z\n\t\t\tThis is a description of the emergency notification group.\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tef47eb61-e3b1-449d-834b-0fbc5a11da30\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t29477382-23947-23c-2349-aa8238b22743\n\t\t\t2020-01-23T18:36:51.987Z\n\t\t\tjgilmore\n\t\t\t2020-01-23T18:36:51.987Z\n\t\t\tThis is a description of the emergency notification group.\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t37742335-8722-3abc-8722-e2434f123a4d\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" + "value": "\n\n\t\n\t\t\n\t\t -- link to first page of results -- \n\t\t\n\t\t\n\t\t -- link to next page of results -- \n\t\n\t\n\t\t\n\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t2020-01-23T18:34:17.284Z\n\t\t\ttestuser\n\t\t\t2020-01-23T18:34:17.284Z\n\t\t\tThis is a description of the emergency notification group.\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tef47eb61-e3b1-449d-834b-0fbc5a11da30\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t29477382-23947-23c-2349-aa8238b22743\n\t\t\t2020-01-23T18:36:51.987Z\n\t\t\ttestuser\n\t\t\t2020-01-23T18:36:51.987Z\n\t\t\tThis is a description of the emergency notification group.\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t37742335-8722-3abc-8722-e2434f123a4d\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" } } } @@ -5523,7 +5526,7 @@ "examples": { "example": { "description": "example", - "value": "\n\n\t\n\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t2020-01-23T18:34:17.284Z\n\t\tjgilmore\n\t\t2020-01-23T18:34:17.284Z\n\t\tThis is a description of the emergency notification group.\n\t\t\n\t\t\t\n\t\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t\n\t\t\t\n\t\t\t\tef47eb61-e3b1-449d-834b-0fbc5a11da30\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t19152431000\n\t\t\t\tACIDIdentifier12345\n\t\t\t\n\t\t\n\t\n" + "value": "\n\n\t\n\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t2020-01-23T18:34:17.284Z\n\t\ttestuser\n\t\t2020-01-23T18:34:17.284Z\n\t\tThis is a description of the emergency notification group.\n\t\t\n\t\t\t\n\t\t\t\t63865500-0904-46b1-9b4f-7bd237a26363\n\t\t\t\n\t\t\t\n\t\t\t\tef47eb61-e3b1-449d-834b-0fbc5a11da30\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t19152431000\n\t\t\t\tACIDIdentifier12345\n\t\t\t\n\t\t\n\t\n" } } } @@ -5589,7 +5592,7 @@ "schema": { "type": "string" }, - "example": "jgilmore" + "example": "testuser" }, { "name": "processingStatus", @@ -5696,7 +5699,7 @@ "examples": { "example": { "description": "example", - "value": "\n\n\t\n\t\t\n\t\t -- link to first page of results -- \n\t\t\n\t\t\n\t\t -- link to next page of results -- \n\t\n\t\n\t\t\n\t\t\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t\t\t2020-01-23T18:34:17.284Z\n\t\t\tjgilmore\n\t\t\tCOMPLETED\n\t\t\tALG-31233884\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t3e9a852e-2d1d-4e2d-84c3-04595ba2eb93\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t2248838829\n\t\t\t\t\t\t\t4052397735\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tFred992834\n\t\t\t\t\t\t\tBob00359\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\n" + "value": "\n\n\t\n\t\t\n\t\t -- link to first page of results -- \n\t\t\n\t\t\n\t\t -- link to next page of results -- \n\t\n\t\n\t\t\n\t\t\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t\t\t2020-01-23T18:34:17.284Z\n\t\t\ttestuser\n\t\t\tCOMPLETED\n\t\t\tALG-31233884\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t3e9a852e-2d1d-4e2d-84c3-04595ba2eb93\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t2248838829\n\t\t\t\t\t\t\t4052397735\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tFred992834\n\t\t\t\t\t\t\tBob00359\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\n" } } } @@ -5778,11 +5781,11 @@ "examples": { "add endpoint": { "description": "The 201 response payload for creating an order to add emergency endpoint associations to an emergency notification group", - "value": "\n\t \n\t\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t\t2020-01-23T18:34:17.284Z\n\t\tjgilmore \n\t\tCOMPLETED \n\t\tALG-31233884 \n\t\t \n\t\t\t \n\t\t\t\t3e9a852e-2d1d-4e2d-84c3-04595ba2eb93\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t2248838829\n\t\t\t\t\t\t4052397735 \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tFred992834\n\t\t\t\t\t\tBob00359\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t\n\t\n" + "value": "\n\t \n\t\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t\t2020-01-23T18:34:17.284Z\n\t\ttestuser \n\t\tCOMPLETED \n\t\tALG-31233884 \n\t\t \n\t\t\t \n\t\t\t\t3e9a852e-2d1d-4e2d-84c3-04595ba2eb93\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t2248838829\n\t\t\t\t\t\t4052397735 \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tFred992834\n\t\t\t\t\t\tBob00359\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t\n\t\n" }, "remove endpoint": { "description": "The 201 response payload for creating an order to remove emergency endpoint associations from an emergency notification group", - "value": "\n\t\n\t\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t\t2020-01-23T18:34:17.284Z\n\t\tjgilmore\n\t\tPROCESSING\n\t\tALG-31233884\n\t\t\n\t\t\t3e9a852e-2d1d-4e2d-84c3-04595ba2eb93\n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t9152877649\n\t\t\t\n\t\t\t\n\t\t\t\tSally88744\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\n" + "value": "\n\t\n\t\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t\t2020-01-23T18:34:17.284Z\n\t\ttestuser\n\t\tPROCESSING\n\t\tALG-31233884\n\t\t\n\t\t\t3e9a852e-2d1d-4e2d-84c3-04595ba2eb93\n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t9152877649\n\t\t\t\n\t\t\t\n\t\t\t\tSally88744\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\n" } } } @@ -5864,7 +5867,7 @@ "examples": { "example": { "description": "example", - "value": "\n\n\t\n\t\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t\t2020-01-23T18:34:17.284Z\n\t\tjgilmore\n\t\tCOMPLETED\n\t\tALG-31233884\n\t\t\n\t\t\t\n\t\t\t\t3e9a852e-2d1d-4e2d-84c3-04595ba2eb93\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t2248838829\n\t\t\t\t\t\t4052397735\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tFred992834\n\t\t\t\t\t\tBob00359\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" + "value": "\n\n\t\n\t\t3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n\t\t2020-01-23T18:34:17.284Z\n\t\ttestuser\n\t\tCOMPLETED\n\t\tALG-31233884\n\t\t\n\t\t\t\n\t\t\t\t3e9a852e-2d1d-4e2d-84c3-04595ba2eb93\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t2248838829\n\t\t\t\t\t\t4052397735\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tFred992834\n\t\t\t\t\t\tBob00359\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n" } } } @@ -7993,7 +7996,7 @@ "tags": [ "Porting" ], - "description": "

\n Bandwidth supports two APIs for porting numbers to Bandwidth: /portins and /bulkPortins.
\n The /portins API allows a set of TNs to be ported in, provided that the set of TNs meets the criteria below.
\n TNs can be ported in a single /portins request if all of the following are true:\n

\n
    \n
  • They all have the same Port Type.
  • \n
  • They all have the same losing carrier.
  • \n
  • They are all associated with the same billing TN and Service Address.
  • \n
\n

There are also a number of reasons why a TN may not be able to be ported in:

\n
    \n
  • The TN is in a rate center that is not supported by Bandwidth or any of Bandwidth's partners.
  • \n
  • The TN is an off-net TN and the account is configured to support tier zero (on-net) only.
  • \n
  • The TN belongs to a losing carrier that Bandwidth does not have a Trading Partner Agreement with.
  • \n
  • The TN is already being processed in another active port-in order.
  • \n
  • The Bandwidth account has not been enabled for porting.
  • \n
\n

\n Otherwise the user must separate the TNs into individual /portins requests.
\n The /lnpchecker API is used to determine the Port Type(s) and losing carrier(s) for a set of TNs.
\n The /bulkPortins API eliminates the need for the /lnpchecker API by sorting the list of TNs automatically into a set of port-in requests by Port Type. The set of port-ins associated with the bulk port-in remain in a DRAFT state until you've had a chance to examine the breakdown. From that point, you can decide to submit all of the port-ins together under the umbrella of the bulk port-in, or you can separate out individual port-ins to submit by themselves.\n

\nTerminology\n
    \n
  • Port Type - A categorization of how the TNs submitted to the /lnpchecker API will be handled by Bandwidth. See the POST operation for more information.
  • \n
  • On-Net - TNs that belong to a rate center covered by Bandwidth are referred to as on-net TNs.
  • \n
  • Off-Net - TNs that belong to a rate center covered by a Bandwidth partner are refered to as off-net TNs.
  • \n
  • Automated - If the TNs are on-net, or off-net and covered by a Bandwidth partner that supports automated ports, then the port-in of these TNs will be handled with no human intervention.
  • \n
  • Manual - If the TNs cannot be ported automatically, the Bandwidth LNP team will work with the appropriate porting vendor or losing carrier to ensure completion of the port-in. The /portins API can be used to submit manual port-ins, which will be identified as such, and a Zendesk ticket will be automatically created to notify the Bandwidth LNP team.
  • \n
  • Internal - TNs that are being moved from one Bandwidth account to another Bandwidth account are referred to as internal ports. Internal ports are handled automatically.
  • \n
  • Losing carrier - The carrier from which the TN(s) is being ported.
  • \n
\n

Please visit Guides and Tutorials to learn more.

", + "description": "This API endpoint is used to check whether a number or set of numbers can be ported into the Bandwidth Network.\nThe fullcheck query parameter values control the components of the response payload that is returned.\n

Please visit Guides and Tutorials to learn more.

", "operationId": "RequestPortabilityInfo", "summary": "Request portability information for a set of TNs", "parameters": [ @@ -8002,7 +8005,7 @@ }, { "name": "fullCheck", - "description": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Parameter ValueDescription
trueadditional information will be provided on the losing carriers associated with the listed numbers
falsereturn only rate center information
onnetportabilityidentical in meaning to "true" value
offnetportabilityin addition to on-net information return off-net port information in <PartnerSupportedRateCenters> element with Partner/Vendor that the port will be supported on. \n Contains a list of the TNs that are supported in partner rate centers, and for which we will execute a port if requested\n
\nIMPORTANT: If your account supports off-net telephone numbers (tiers other than tier zero), you MUST include query parameter fullCheck=offnetportability in your /lnpchecker request. Failure to do so will cause off-net telephone numbers to appear as though they are not portable.", + "description": "

`fullCheck` controls the components of the response payload that is returned

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Parameter ValueDescription
trueadditional information will be provided on the losing carriers associated with the listed numbers
falsereturn only rate center information
onnetportabilityProvides rate center and losing carrier information for onnet tiers only
offnetportabilityin addition to on-net information return off-net port information in <PartnerSupportedRateCenters> element with Partner/Vendor that the port will be supported on. \n Contains a list of the TNs that are supported in partner rate centers, and for which we will execute a port if requested\n
\nIMPORTANT: If your account supports off-net telephone numbers (tiers other than tier zero), you MUST include query parameter fullCheck=offnetportability in your /lnpchecker request. Failure to do so will cause off-net telephone numbers to appear as though they are not portable.", "in": "query", "required": false, "schema": { @@ -8029,7 +8032,7 @@ }, "responses": { "200": { - "description": "A successful check has been performed. Note: For users of Enterprise Telephony accounts SupportedLosingCarriers\nand UnsupportedLosingCarriers will be omitted from the success output even when query parameter\nfullCheck has values of true, onnetportability, or offnetportability.\n\n\n \n \n \n \n \n \n \n \n
TagValues
PortType AUTOMATED, AUTOMATEDOFFNET, INTERNAL, MANUAL_ON_NET, MANUALOFFNET, MANUAL_TOLLFREE, MIXED
\n\n
\n\n
    \n
  • AUTOMATED - A properly formatted /portins request with these TNs will be processed by Bandwidth and our porting vendor without requiring human intervention.
  • \n
  • AUTOMATEDOFFNET - A properly formatted /portins request with these TNs will be processed by Bandwidth and our off-net porting vendor without requiring human intervention.
  • \n
  • INTERNAL - The TNs will be moved from one Bandwidth account to another Bandwidth account. Internal ports are handled automatically, without human intervention.
  • \n
  • MANUAL_ON_NET - On-net ports, if they include more than 999 TNs, must be handled manually by creating a ticket.
  • \n
  • MANUALOFFNET - Ports for off-net vendors that do not support a porting API, or have a porting API that Bandwidth does not support, or off-net ports with vendor Level 3 and with more than 49 TNs, are automatically submitted as manual ports.
  • \n
  • MANUAL_TOLLFREE - All toll-free port-ins are handled manually.
  • \n
  • MIXED - If the list of TNs supplied to /lnpchecker includes TNs that are categorized as more than one of the above Port Types, the resulting Port Type will be MIXED. If you plan to use /portins to port the TNs, you must break the TN list into separate /portins requests for each Port Type.
  • \n
", + "description": "A successful check has been performed. Note: For users of Enterprise Telephony accounts SupportedLosingCarriers\nand UnsupportedLosingCarriers will be omitted from the success output even when query parameter\nfullCheck has values of true, onnetportability, or offnetportability.", "content": { "application/xml": { "schema": { @@ -10049,7 +10052,7 @@ "tags": [ "Porting" ], - "description": "Creates a port-in order for the specified telephone number(s) and account number.\nWhen the order is successfully created, the 201 response will include a unique orderId that\nis used to manage the order.

\n

Note that you can create a 'draft' order by including ProcessingStatus with a value of 'draft'\nwhen you create the order. A draft order is not submitted to the porting vendor until you\nrequest that it be submitted by using PUT to update the ProcessingStatus to 'submitted'.\nThis is useful if you wish to add items to the order over a period of time and submit once\nyou have the order setup the way you want. Note, however, that draft orders that have not\nbeen updated in a couple of days are automatically deleted. Removal of stagnant draft orders\nis performed so that telephone numbers are not tied up in these orders, preventing them from\nbeing included in other orders. Very little validation is performed while an order is in\ndraft state. It is only when you change the ProcessingStatus to 'submitted' that full\nvalidation is performed on the order.

If you are creating a port-in order for toll free telephone numbers, you can create the order\nwith far fewer fields. The only mandatory fields for toll free port-in orders are:

\n\n
  • URI parameter, accountId
  • \n
  • A ListOfPhoneNumbers with at least one toll free PhoneNumber
  • \n
  • The SiteId that will serve as the destination of you toll free number on completion of the\nport-in
  • \n
  • The LoaAuthorizingPerson name
\n\n

But you may also want to include optional toll free fields: RequestedFocDate, CustomerOrderId,\nPeerId, and ProcessingStatus. All other port-in fields are not applicable for toll free\nport-ins.

\n\n

All toll free telephone numbers provided will be validated (even in draft state) to ensure\nthat they are portable, and to allow you to separate telephone numbers into separate port-ins\nbased on the RespOrg that they are being ported from.

\n", + "description": "Creates a port-in order for the specified telephone number(s) and account number.
Please visit How to Create Port in guide. Also you can find more information about port types and numbers portability on How to check numbers portability guide", "operationId": "CreatePortin", "summary": "Create port-in order", "parameters": [ @@ -10069,7 +10072,20 @@ } }, "schema": { - "$ref": "#/components/schemas/LnpOrderRequest" + "oneOf": [ + { + "$ref": "#/components/schemas/OnNetLnpOrderRequest" + }, + { + "$ref": "#/components/schemas/TollFreeLnpOrderRequest" + }, + { + "$ref": "#/components/schemas/OffNetLnpOrderRequest" + }, + { + "$ref": "#/components/schemas/InternalLnpOrderRequest" + } + ] } } } @@ -10144,13 +10160,13 @@ "value": "\n\t\n\t\t7205\n\t\tTelephone number is already being processed on another order\n\t\n\tCANCELLED\n\tb4e227b3-2caf-4546-9af7-849c60dce942\n\t2016-03-25T21:15:00.000Z\n\t\n\t2016-03-25T21:15:00.000Z\n\tSJM00002\n\tThe Authguy\n\t\n\t\tBUSINESS\n\t\tFirst\n\t\tLast\n\t\t\n\t\t\t11235\n\t\t\tBack\n\t\t\tDenver\n\t\t\tCO\n\t\t\t27541\n\t\t\tCanyon\n\t\t\tUnited States\n\t\t\tService\n\t\t\n\t\n\t\n\t\t771297665AABC\n\t\t1234\n\t\n\t\n\t\tProtected\n\t\tExternal\n\t\tImported\n\t\n\t9195551234\n\t9175131245\n\t\n\t\t9194809871\n\t\n\tFoo\n\t20\n\t2857\n\t317771\n\t9998\n\tMock Carrier\n\ttrue\n\tBandwidth CLEC\n\t2014-08-04T13:37:06.323Z\n\t2014-08-04T13:37:08.676Z\n\tjbm\n\tjbm\n\tfalse\n\tfalse\n\tfalse\n\tAUTOMATED\n" }, "Toll Free VALID_DRAFT_TFNS state": { - "value": "\n\tVALID_DRAFT_TFNS\n\t2021-06-23T15:30:00Z\n\t2021-06-23T15:30:00Z\n\tJane Doe\n\t\n\t\t8336532112\n\t\t8336532113\n\t\t8336532114\n\t\n\t9900572\n\t14020\n\t521434\n\t2021-06-16T18:51:42.161Z\n\t2021-06-16T19:51:06.244Z\n\tjgilmore\n\tjgilmore\n\tMyTestOrder\n\tfalse\n\tMANUAL_TOLLFREE\n\tCOMPLETE\n\tPHASE_1_TOLLFREE\n !scope internal\n \n\tTST52\n !scope internal\n \n\tJYT01\n\ttrue\n\tfalse\n" + "value": "\n\tVALID_DRAFT_TFNS\n\t2021-06-23T15:30:00Z\n\t2021-06-23T15:30:00Z\n\tJane Doe\n\t\n\t\t8336532112\n\t\t8336532113\n\t\t8336532114\n\t\n\t9900572\n\t14020\n\t521434\n\t2021-06-16T18:51:42.161Z\n\t2021-06-16T19:51:06.244Z\n\ttestuser\n\ttestuser\n\tMyTestOrder\n\tfalse\n\tMANUAL_TOLLFREE\n\tCOMPLETE\n\tPHASE_1_TOLLFREE\n !scope internal\n \n\tTST52\n !scope internal\n \n\tJYT01\n\ttrue\n\tfalse\n" }, "Toll Free INVALID_DRAFT_TFNS state, non-portable TNs": { - "value": "\n\tINVALID_DRAFT_TFNS\n\t2021-06-23T15:30:00Z\n\t2021-06-23T15:30:00Z\n\tJane Doe\n\t\n\t\t8336521001\n\t\t8336522001\n\t\n\t9900572\n\t14020\n\t521434\n\t2021-06-16T21:00:43.694Z\n\t2021-06-16T21:03:42.085Z\n\tjgilmore\n\tjgilmore\n\tMyTestOrder\n\tfalse\n\tMANUAL_TOLLFREE\n\tFAILED\n\t\n\t\t\n\t\t\t\n\t\t\t\t7642\n\t\t\t\tTN list contains at least one toll free number that cannot be ported due to spare status.\n\t\t\t\t\n\t\t\t\t\t8336521001\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t7643\n\t\t\t\tTN list contains at least one toll free number that cannot be ported due to unavailable status.\n\t\t\t\t\n\t\t\t\t\t8336522001\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\tPHASE_1_TOLLFREE\n" + "value": "\n\tINVALID_DRAFT_TFNS\n\t2021-06-23T15:30:00Z\n\t2021-06-23T15:30:00Z\n\tJane Doe\n\t\n\t\t8336521001\n\t\t8336522001\n\t\n\t9900572\n\t14020\n\t521434\n\t2021-06-16T21:00:43.694Z\n\t2021-06-16T21:03:42.085Z\n\ttestuser\n\ttestuser\n\tMyTestOrder\n\tfalse\n\tMANUAL_TOLLFREE\n\tFAILED\n\t\n\t\t\n\t\t\t\n\t\t\t\t7642\n\t\t\t\tTN list contains at least one toll free number that cannot be ported due to spare status.\n\t\t\t\t\n\t\t\t\t\t8336521001\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t7643\n\t\t\t\tTN list contains at least one toll free number that cannot be ported due to unavailable status.\n\t\t\t\t\n\t\t\t\t\t8336522001\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\tPHASE_1_TOLLFREE\n" }, "Toll Free INVALID_DRAFT_TFNS state, vendor error": { - "value": "\n\tINVALID_DRAFT_TFNS\n\t2021-06-23T15:30:00Z\n\t2021-06-23T15:30:00Z\n\tJane Doe\n\t\n\t\t8336000001\n\t\n\t9900572\n\t14020\n\t521434\n\t2021-06-16T21:00:43.694Z\n\t2021-06-16T21:03:42.085Z\n\tjgilmore\n\tjgilmore\n\tMyTestOrder\n\tfalse\n\tMANUAL_TOLLFREE\n\tFAILED\n\t\n\t\t\n\t\t\t\n\t\t\t\t7617\n\t\t\t\tBatch Number Query received vendor error: Service unavailable. If this condition persists, please contact Bandwidth for support.\n\t\t\t\t\n\t\t\t\t\t8336000001\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\tPHASE_1_TOLLFREE\n" + "value": "\n\tINVALID_DRAFT_TFNS\n\t2021-06-23T15:30:00Z\n\t2021-06-23T15:30:00Z\n\tJane Doe\n\t\n\t\t8336000001\n\t\n\t9900572\n\t14020\n\t521434\n\t2021-06-16T21:00:43.694Z\n\t2021-06-16T21:03:42.085Z\n\ttestuser\n\ttestuser\n\tMyTestOrder\n\tfalse\n\tMANUAL_TOLLFREE\n\tFAILED\n\t\n\t\t\n\t\t\t\n\t\t\t\t7617\n\t\t\t\tBatch Number Query received vendor error: Service unavailable. If this condition persists, please contact Bandwidth for support.\n\t\t\t\t\n\t\t\t\t\t8336000001\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\tPHASE_1_TOLLFREE\n" } }, "schema": { @@ -10165,7 +10181,7 @@ "tags": [ "Porting" ], - "description": "

It is possible to change (\"SUPP\" in LNP terms) an existing LNP order. This is done via a PUT on the existing order-id. If a field is present in the PUT /portins/{orderId} payload, the value of the field will be updated for the order, subject to existing rules about the field. If a field is NOT present in the PUT /portins/{orderId} payload, behavior varies as to whether the missing field is removed from the port-in, set to a default value, or left unchanged. As a result, we STRONGLY RECOMMEND performing a GET on the order and copying those element values to the PUT for any elements you are not explicitly trying to change the value of.

Note:

  • If the order ProcessingStatus is DRAFT, the rules about what can be changed are much more relaxed. Most of the validation is performed when the ProcessingStatus is changed from DRAFT to SUBMITTED. If SUPP is performed on a draft portin, no validations are applied except validation of the ListOfPhoneNumbers, if at least 1 PhoneNumber is provided.
  • If the port-in order is associated with a bulk port-in which is in DRAFT state, it is not possible to change its state from DRAFT to SUBMITTED without detaching it from the bulk port-in. Alternatively, submitting the parent bulk port-in will trigger the submission of child port-in orders.

Per-field notes about SUPP:

\n\n
    \n
  • AccountNumber - Element of WirelessInfo. Not applicable to toll free port-ins.\n Cannot be SUPPed for Automated off-net port-ins. If you want to SUPP WirelessInfo, you must\n include both AccountNumber and PinNumber in the payload, even if you are not
  • \n
  • BillingTelephoneNumber - Not applicable to toll free port-ins. Cannot be SUPPed for\n Automated on-net wireless to wireless port-ins or Automated off-net port-ins after FOC received.
  • \n
  • BusinessName - Element of Subscriber. Cannot be SUPPed for Automated on-net wireless\n to wireless port-ins or Automated off-net port-ins after FOC received.
  • \n
  • CustomerOrderId - Can always be updated. This field is removed from the order if\n not provided in the PUT payload.
  • \n
  • Immediately - Only applicable to Internal port-in orders. May be included in the\n PUT payload, but cannot be changed in a SUPP.
  • \n
  • ListOfPhoneNumbers - Can be SUPPed only for Automated on-net port-ins and toll free port-ins.\n For toll free port-ins, may be SUPPed only in draft states (i.e. DRAFT, VALIDATE_DRAFT_TFNS, VALID_DRAFT_TFNS, or INVALID_DRAFT_TFNS).
  • \n
  • LoaAuthorizingPerson - Cannot be SUPPed for Automated on-net wireless to wireless\n port-ins or Automated off-net port-ins.
  • \n
  • NewBillingTelephoneNumber - Not applicable to toll free port-ins or Automated\n off-net port-ins. Cannot be SUPPed for Automated on-net wireless to wireless port-ins.
  • \n
  • PartialPort - Not applicable to toll free port-ins. Cannot be SUPPed for Automated\n on-net wireless to wireless port-ins or Automated off-net port-ins.
  • \n
  • PeerId - Can always be updated.
  • \n
  • PinNumber - Element of WirelessInfo. Not applicable to toll free port-ins.\n Cannot be SUPPed for Automated off-net port-ins. If you want to SUPP WirelessInfo,\n you must include both AccountNumber and PinNumber in the payload, even if you are not\n changing both.
  • \n
  • RequestedFocDate - Can always be updated, but subject to blackout windows\n if the current date is too close to an assigned FOC date.
  • \n
  • ResetAddressFields - Not applicable to toll free port-ins. If included with a\n value of true, any Subscriber elements, including subscriber type, subscriber/business name\n elements, and service address elements, NOT included in the PUT payload will be removed from\n the order.
  • \n
  • RetryValidation - When toll free numbers are included in a port-in order,\n Bandwidth accesses a vendor to determine if the numbers are portable, and if so, from\n which RespOrg. In the event that we do not receive a response from our vendor after a\n number of retries, we give up and place the order in the INVALID_TFNS or\n INVALID_DRAFT_TFNS state. This scenario can occur if our toll free porting vendor is\n performing maintenance, for example. Including RetryValidation with a value of true will\n cause the order to return to VALIDATE_TFNS or VALIDATE_DRAFT_TFNS and we will repeat our\n attempts to retrieve the portability data from the vendor. This element is included in\n the synchronous response to the PUT, when included in the request, but is not included\n in subsequent GET requests for the order.
  • \n
  • ServiceAddress - Element of Subscriber. Includes all address fields.\n ServiceAddress elements cannot be SUPPed for Automated on-net wireless to wireless port-ins\n or Automated off-net port-ins. See also, ResetAddressFields.
  • \n
  • SiteId - Can always be updated.
  • \n
  • Subscriber Name - Element of Subscriber. Includes FirstName,\n MiddleInitial, and LastName. Cannot be SUPPed for Automated on-net wireless to\n wireless port-ins or Automated off-net port-ins after FOC received.
  • \n
  • SubscriberType - Element of Subscriber. Cannot be SUPPed for Automated on-net\n wireless to wireless port-ins or Automated off-net port-ins after FOC received. If SubscriberType\n is set to BUSINESS, a BusinessName must be provided. If SubscriberType is set to RESIDENTIAL, a\n FirstName and LastName must be provided.
  • \n
  • TnAttributes - Attributes to be assigned to the telephone number. Possible values - \"Protected\".
  • \n
\n", + "description": "

It is possible to change (\"SUPP\" in LNP terms) an existing LNP order. This is done via a PUT on the existing order-id. If a field is present in the PUT /portins/{orderId} payload, the value of the field will be updated for the order, subject to existing rules about the field. If a field is NOT present in the PUT /portins/{orderId} payload, behavior varies as to whether the missing field is removed from the port-in, set to a default value, or left unchanged. As a result, we STRONGLY RECOMMEND performing a GET on the order and copying those element values to the PUT for any elements you are not explicitly trying to change the value of.

Note:

  • If the order ProcessingStatus is DRAFT, the rules about what can be changed are much more relaxed. Most of the validation is performed when the ProcessingStatus is changed from DRAFT to SUBMITTED. If SUPP is performed on a draft portin, no validations are applied except validation of the ListOfPhoneNumbers, if at least 1 PhoneNumber is provided.
  • Submitting the parent bulk port-in will trigger the submission of child port-in orders.

Please visit How to Manage Port in guide. Also you can find more information about port types on Port Types section of this guide\n", "operationId": "UpdatePortin", "summary": "Update port-in order", "parameters": [ @@ -10188,11 +10204,66 @@ "examples": { "example": { "description": "example", - "value": "\n\n SJM00002\n 2014-12-04T13:00:00.000Z\n 8045030092\n 9175131245\n \n 23453245\n 1111\n \n \n Protected\n External\n Imported\n \n \n RESIDENTIAL\n Steve\n McKinnon\n \n \n true \n 115\n Monarch Way\n Cary\n NC\n 27518\n \n \n 743\n true\n \n 2019721004\n 2019721005\n \n Steve McKinnon\n Foo\n\n" + "value": "\n\n SJM00002\n 2014-12-04T13:00:00.000Z\n 8045030092\n 9175131245\n \n 23453245\n 1111\n \n \n Protected\n External\n Imported\n \n \n RESIDENTIAL\n TestName\n TestLastName\n \n \n true \n 115\n Monarch Way\n Cary\n NC\n 27518\n \n \n 743\n true\n \n 2019721004\n 2019721005\n \n TestName TestLastName\n Foo\n\n" } }, "schema": { - "$ref": "#/components/schemas/LnpOrderSuppRequest" + "oneOf": [ + { + "type": "object", + "title": "Automated Off-Net", + "properties": { + "LnpOrderSupp": { + "$ref": "#/components/schemas/LnpOrderSuppAutomatedOffNet" + } + } + }, + { + "type": "object", + "title": "Toll-Free", + "properties": { + "LnpOrderSupp": { + "$ref": "#/components/schemas/LnpOrderSuppManualTollFree" + } + } + }, + { + "type": "object", + "title": "Manual Off/On Net", + "properties": { + "LnpOrderSupp": { + "$ref": "#/components/schemas/LnpOrderSuppManualOnNetOffNet" + } + } + }, + { + "type": "object", + "title": "Automated On-Net", + "properties": { + "LnpOrderSupp": { + "$ref": "#/components/schemas/LnpOrderSuppAutomatedOnNet" + } + } + }, + { + "type": "object", + "title": "Automated On-Net wireless to wireless", + "properties": { + "LnpOrderSupp": { + "$ref": "#/components/schemas/LnpOrderSuppAutomatedOnNetWireless" + } + } + }, + { + "type": "object", + "title": "Internal", + "properties": { + "LnpOrderSupp": { + "$ref": "#/components/schemas/LnpOrderSuppInternal" + } + } + } + ] } } } @@ -11502,7 +11573,7 @@ "content": { "application/xml": { "schema": { - "$ref": "#/components/schemas/LnpOrderResponse" + "$ref": "#/components/schemas/LnpOrderPortoutResponse" }, "examples": { "example": { @@ -17633,19 +17704,19 @@ "examples": { "orderIsStillProcessing": { "summary": "Order is still processing", - "value": "\n\n \n \n MyOptionalOrderId\n PROCESSING\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n \n" + "value": "\n\n \n \n MyOptionalOrderId\n PROCESSING\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n \n" }, "orderIsCompleted": { "summary": "Order is completed", - "value": "\n\n \n \n MyOptionalOrderId\n COMPLETE\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n \n \n \n RespOrg1\n true\n \n 8442948899\n 8774024485\n \n \n \n \n \n \n \n" + "value": "\n\n \n \n MyOptionalOrderId\n COMPLETE\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n \n \n \n RespOrg1\n true\n \n 8442948899\n 8774024485\n \n \n \n \n \n \n \n" }, "orderIsFailed": { "summary": "Order is failed", - "value": "\n\n \n \n MyOptionalOrderId\n FAILED\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n 8662894621\n 8773732047\n 8449978331\n 8003985992\n \n \n \n 7859\n Description for error 7859\n \n \n 9877\n Description for error 9877\n \n \n \n \n \n \n RespOrg1\n false\n \n 8662894621\n \n \n \n \n \n \n 8449978331\n \n \n 8003985992\n \n \n \n \n 8442948899\n \n \n 8774024485\n \n \n \n 8773732047\n 07\n NXX CLOSED\n \n \n \n \n \n \n" + "value": "\n\n \n \n MyOptionalOrderId\n FAILED\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n 8662894621\n 8773732047\n 8449978331\n 8003985992\n \n \n \n 7859\n Description for error 7859\n \n \n 9877\n Description for error 9877\n \n \n \n \n \n \n RespOrg1\n false\n \n 8662894621\n \n \n \n \n \n \n 8449978331\n \n \n 8003985992\n \n \n \n \n 8442948899\n \n \n 8774024485\n \n \n \n 8773732047\n 07\n NXX CLOSED\n \n \n \n \n \n \n" }, "orderIsCanceled": { "summary": "Order is canceled", - "value": "\n\n \n \n MyOptionalOrderId\n CANCELLED\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n \n" + "value": "\n\n \n \n MyOptionalOrderId\n CANCELLED\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n \n" } }, "schema": { @@ -17708,19 +17779,19 @@ "examples": { "orderIsStillProcessing": { "summary": "Order is still processing", - "value": "\n\n \n MyOptionalOrderId\n PROCESSING\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" + "value": "\n\n \n MyOptionalOrderId\n PROCESSING\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" }, "orderIsCompleted": { "summary": "Order is completed", - "value": "\n\n \n MyOptionalOrderId\n COMPLETE\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n \n \n \n RespOrg1\n true\n \n 8442948899\n 8774024485\n \n \n \n \n \n \n" + "value": "\n\n \n MyOptionalOrderId\n COMPLETE\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n \n \n \n RespOrg1\n true\n \n 8442948899\n 8774024485\n \n \n \n \n \n \n" }, "orderIsFailed": { "summary": "Order is failed", - "value": "\n\n \n MyOptionalOrderId\n FAILED\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n 8662894621\n 8773732047\n 8449978331\n 8003985992\n \n \n \n 7859\n Description for error 7859\n \n \n 9877\n Description for error 9877\n \n \n \n \n \n \n RespOrg1\n false\n \n 8662894621\n \n \n \n \n \n \n 8449978331\n \n \n 8003985992\n \n \n \n \n 8442948899\n \n \n 8774024485\n \n \n \n 8773732047\n 07\n NXX CLOSED\n \n \n \n \n \n" + "value": "\n\n \n MyOptionalOrderId\n FAILED\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n 8662894621\n 8773732047\n 8449978331\n 8003985992\n \n \n \n 7859\n Description for error 7859\n \n \n 9877\n Description for error 9877\n \n \n \n \n \n \n RespOrg1\n false\n \n 8662894621\n \n \n \n \n \n \n 8449978331\n \n \n 8003985992\n \n \n \n \n 8442948899\n \n \n 8774024485\n \n \n \n 8773732047\n 07\n NXX CLOSED\n \n \n \n \n \n" }, "orderIsCanceled": { "summary": "Order is canceled", - "value": "\n\n \n MyOptionalOrderId\n CANCELLED\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" + "value": "\n\n \n MyOptionalOrderId\n CANCELLED\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" } }, "schema": { @@ -17736,7 +17807,7 @@ "examples": { "example": { "description": "example", - "value": "\n \n \n nnnn\n Description of condition nnnn\n \n \n nnnn\n Description of condition nnnn\n \n \n \n MyOptionalOrderId\n FAILED\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" + "value": "\n \n \n nnnn\n Description of condition nnnn\n \n \n nnnn\n Description of condition nnnn\n \n \n \n MyOptionalOrderId\n FAILED\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" } } } @@ -17773,7 +17844,7 @@ "examples": { "example": { "description": "example", - "value": "\n \n \n nnnn\n Description of condition nnnn\n \n \n nnnn\n Description of condition nnnn\n \n \n \n MyOptionalOrderId\n FAILED\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" + "value": "\n \n \n nnnn\n Description of condition nnnn\n \n \n nnnn\n Description of condition nnnn\n \n \n \n MyOptionalOrderId\n FAILED\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" } } } @@ -17786,7 +17857,7 @@ "examples": { "example": { "description": "example", - "value": "\n \n \n nnnn\n Description of condition nnnn\n \n \n nnnn\n Description of condition nnnn\n \n \n \n MyOptionalOrderId\n FAILED\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" + "value": "\n \n \n nnnn\n Description of condition nnnn\n \n \n nnnn\n Description of condition nnnn\n \n \n \n MyOptionalOrderId\n FAILED\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" } } } @@ -17825,19 +17896,19 @@ "examples": { "orderIsStillProcessing": { "summary": "Order is still processing", - "value": "\n\n \n MyOptionalOrderId\n PROCESSING\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" + "value": "\n\n \n MyOptionalOrderId\n PROCESSING\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" }, "orderIsCompleted": { "summary": "Order is completed", - "value": "\n\n \n MyOptionalOrderId\n COMPLETE\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n \n \n \n RespOrg1\n true\n \n 8442948899\n 8774024485\n \n \n \n \n \n \n" + "value": "\n\n \n MyOptionalOrderId\n COMPLETE\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n \n \n \n RespOrg1\n true\n \n 8442948899\n 8774024485\n \n \n \n \n \n \n" }, "orderIsFailed": { "summary": "Order is failed", - "value": "\n\n \n MyOptionalOrderId\n FAILED\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n 8662894621\n 8773732047\n 8449978331\n 8003985992\n \n \n \n 7859\n Description for error 7859\n \n \n 9877\n Description for error 9877\n \n \n \n \n \n \n RespOrg1\n false\n \n 8662894621\n \n \n \n \n \n \n 8449978331\n \n \n 8003985992\n \n \n \n \n 8442948899\n \n \n 8774024485\n \n \n \n 8773732047\n 07\n NXX CLOSED\n \n \n \n \n \n" + "value": "\n\n \n MyOptionalOrderId\n FAILED\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n 8662894621\n 8773732047\n 8449978331\n 8003985992\n \n \n \n 7859\n Description for error 7859\n \n \n 9877\n Description for error 9877\n \n \n \n \n \n \n RespOrg1\n false\n \n 8662894621\n \n \n \n \n \n \n 8449978331\n \n \n 8003985992\n \n \n \n \n 8442948899\n \n \n 8774024485\n \n \n \n 8773732047\n 07\n NXX CLOSED\n \n \n \n \n \n" }, "orderIsCanceled": { "summary": "Order is canceled", - "value": "\n\n \n MyOptionalOrderId\n CANCELLED\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" + "value": "\n\n \n MyOptionalOrderId\n CANCELLED\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" } }, "schema": { @@ -17900,7 +17971,7 @@ "examples": { "successPatchResponse": { "summary": "Success patch response", - "value": "\n\n \n MyOptionalOrderId\n CANCELLED\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" + "value": "\n\n \n MyOptionalOrderId\n CANCELLED\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" }, "failedPatchResponse": { "summary": "Failed patch response", @@ -17954,7 +18025,7 @@ "examples": { "example": { "description": "example", - "value": "\n \n \n nnnn\n Description of condition nnnn\n \n \n nnnn\n Description of condition nnnn\n \n \n \n MyOptionalOrderId\n FAILED\n 9900572\n jgilmore\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" + "value": "\n \n \n nnnn\n Description of condition nnnn\n \n \n nnnn\n Description of condition nnnn\n \n \n \n MyOptionalOrderId\n FAILED\n 9900572\n testuser\n 2020-08-20T14:51:58.695Z\n e2b029cf-1cfa-4285-a875-80e8fd951208\n \n 8442948899\n 8774024485\n \n \n" } } } @@ -19565,6 +19636,56 @@ "type": "string", "maxLength": 255 }, + "LnpOrderPortoutResponse": { + "type": "object", + "properties": { + "LnpOrderResponse": { + "type": "object", + "properties": { + "RequestedFocDate": { + "type": "string" + }, + "ActualFocDate": { + "type": "string" + }, + "PON": { + "type": "string" + }, + "AccountId": { + "type": "string" + }, + "OrderCreateDate": { + "type": "string" + }, + "LastModifiedDate": { + "type": "string" + }, + "PortOutStatus": { + "type": "string", + "enum": [ + "NEW", + "SUPP", + "MODIFY", + "COMPLETE", + "CANCELLED", + "VALIDATION_FAILED_NEW", + "VALIDATION_FAILED_SUPP", + "VALIDATION_FAILED_MODIFY", + "EXCEPTION", + "SOA_PENDING", + "SOA_CONFLICT" + ] + }, + "SPID": { + "type": "string" + }, + "userId": { + "type": "string" + } + } + } + } + }, "LosingCarrierTnList": { "title": "Losing Carrier TnList", "type": "object", @@ -19646,7 +19767,7 @@ "type": "string" }, "SupportedRateCenters": { - "description": "Supported Rate Centers", + "description": "Supported Rate Center information for the indicated set of ratecenters, containing City, State, LATA and the list of TNs for which that Rate Center applies. \nThe Tier information is provided for offnet rate centers.", "type": "object", "properties": { "RateCenterGroup": { @@ -19655,7 +19776,7 @@ } }, "UnsupportedRateCenters": { - "description": "Unsupported Rate Centers", + "description": "Unsupported Rate Center information for the indicated set of ratecenters, containing City, State, LATA and the list of TNs for which that Rate Center applies. \nThe Tier information is provided for offnet rate centers.", "type": "object", "properties": { "RateCenterGroup": { @@ -19664,7 +19785,7 @@ } }, "PartnerSupportedRateCenters": { - "description": "Partner Supported Rate Centers", + "description": "Partner Supported Rate Center information for the indicated set of ratecenters, containing City, State, LATA and the list of TNs for which that Rate Center applies. \nThe Tier information is provided for offnet rate centers.", "type": "object", "properties": { "RateCenterGroup": { @@ -19673,7 +19794,7 @@ } }, "SupportedLosingCarriers": { - "description": "Supported Losing Carriers (unavailable for Enterprise Telephony users)", + "description": "Details on Supported Losing Carriers (unavailable for Enterprise Telephony users) including name, SPID, whether or not the carrier is a wireless carrier, whether or not account number is required as part of the CSR check, and the anticipated minimum number of days before a FoC date will be granted.", "type": "object", "properties": { "LosingCarrierTnList": { @@ -19682,7 +19803,7 @@ } }, "UnsupportedLosingCarriers": { - "description": "Unsupported Losing Carriers (unavailable for Enterprise Telephony users)", + "description": "Unsupported Losing Carriers (unavailable for Enterprise Telephony users) including name, SPID, whether or not the carrier is a wireless carrier, whether or not account number is required as part of the CSR check, and the anticipated minimum number of days before a FoC date will be granted.", "type": "object", "properties": { "LosingCarrierTnList": { @@ -20498,7 +20619,148 @@ "type": "object", "properties": { "BulkPortin": { - "$ref": "#/components/schemas/BulkPortin" + "type": "object", + "properties": { + "CustomerOrderId": { + "type": "string", + "description": "Internal customer order id for tracking the order.", + "format": "alphanumeric" + }, + "RequestedFocDate": { + "type": "string", + "format": "ISO8601 date-time encoding of ZULU/UTC/GMT", + "description": "If present this will specify the date and time that the port-in is requested to happen. The actual time and date is subject to negotiation with the losing carriers.", + "example": "2013-05-10T15:14:22Z" + }, + "AlternateSpid": { + "type": "string", + "description": "Unique customer AltSPID to be applied to the port-in requests. Can be changed only for DRAFT bulk port-in." + }, + "BillingTelephoneNumber": { + "type": "string", + "description": "Account or Billing telephone number for order. This will be unusual for bulk port-in requests that are expected to decompose into port-in requests from multiple carriers, because the value will be different for each losing carrier." + }, + "Subscriber": { + "type": "object", + "properties": { + "SubscriberType": { + "type": "string", + "enum": [ + "BUSINESS", + "RESIDENTIAL", + "GENERIC" + ], + "description": "If residential, order will be rejected if a BusinessName is entered." + }, + "BusinessName": { + "type": "string", + "description": "Subscriber business name." + }, + "FirstName": { + "type": "string", + "description": "Subscriber first name." + }, + "MiddleInitial": { + "type": "string", + "description": "Subscriber middle initial." + }, + "LastName": { + "type": "string", + "description": "Subscriber last name." + }, + "ServiceAddress": { + "type": "object", + "properties": { + "HousePrefix": { + "type": "string", + "description": "Street address number prefix." + }, + "HouseNumber": { + "type": "string", + "description": "Street address number." + }, + "HouseSuffix": { + "type": "string", + "description": "Street address number suffix." + }, + "PreDirectional": { + "type": "string", + "description": "Street address pre-directional." + }, + "StreetName": { + "type": "string", + "description": "Street name." + }, + "StreetSuffix": { + "type": "string", + "description": "Street suffix." + }, + "PostDirectional": { + "type": "string", + "description": "Street address post directional." + }, + "AddressLine2": { + "type": "string", + "description": "Put unit, suite, floor, etc. here." + }, + "City": { + "type": "string", + "description": "City." + }, + "StateCode": { + "type": "string", + "description": "Two letter state code." + }, + "Zip": { + "type": "string", + "description": "Zip code." + }, + "PlusFour": { + "type": "string", + "description": "Zip + 4 value." + }, + "Country": { + "type": "string", + "description": "3 letter country code." + } + } + } + } + }, + "LoaAuthorizingPerson": { + "type": "string", + "description": "First and last name of person who authorized LOA." + }, + "AccountNumber": { + "type": "string", + "description": "Account number associated with the account on the losing carrier, often required for wireless ports, or enterprise ports. This will be unusual for bulk port-in requests that are expected to decompose into port-in requests from multiple carriers." + }, + "PinNumber": { + "type": "string", + "description": "PIN Number, often required for wireless ports." + }, + "SiteId": { + "type": "integer", + "format": "int32", + "description": "This is the Site / Sub-Account ID made visible in the /accounts/{accountId}/sites API call" + }, + "PeerId": { + "type": "integer", + "format": "int32", + "description": "This is the SIP Peer / Location ID made visible in the /accounts/{accountId}/sites/{siteId}/sipPeers API call" + }, + "TnAttributes": { + "type": "array", + "description": "Attributes to be assigned to the telephone number. Optional parameter. Possible values - `Protected`", + "items": { + "$ref": "#/components/schemas/TnAttribute" + } + }, + "RetryValidation": { + "type": "boolean", + "description": "Only allowed for PUT and PATCH requests.\n\n When toll free numbers are included in a port-in order, Bandwidth accesses a vendor to determine if the numbers are portable, and if so, from which RespOrg. In the event that we do not receive a response from our vendor after a number of retries, we give up and place the order in the INVALID_DRAFT_TNS state. This scenario can occur if our toll free porting vendor is performing maintenance, for example. Including RetryValidation with a value of true will cause the order to return to VALIDATE_DRAFT_TNS and we will repeat our attempts to retrieve the portability data from the vendor. This element is included in the synchronous response to the PUT or PATCH, when included in the request, but is not included in subsequent GET requests for the order." + } + } } } }, @@ -22740,83 +23002,276 @@ } } }, - "LnpOrderRequest": { + "FileMetaData": { "type": "object", "properties": { - "LnpOrder": { - "$ref": "#/components/schemas/LnpOrder" + "DocumentName": { + "type": "string" + }, + "DocumentType": { + "type": "string", + "enum": [ + "LOA", + "INVOICE", + "CSR", + "OTHER" + ] } } }, - "LnpOrder": { + "FileMetaDataRequest": { "type": "object", "properties": { - "CustomerOrderId": { + "FileMetaData": { + "type": "object", + "properties": { + "DocumentName": { + "type": "string" + }, + "DocumentType": { + "type": "string", + "enum": [ + "LOA", + "INVOICE", + "CSR", + "OTHER" + ] + } + } + } + } + }, + "PhoneNumber": { + "type": "object", + "properties": { + "PhoneNumber": { "type": "string" + } + } + }, + "LnpOrderBasic": { + "type": "object", + "properties": { + "CustomerOrderId": { + "type": "string", + "description": "The `CustomerOrderId` is an optional field that may be provided by the customer and will remain with the order. The value is opaque to Bandwidth.", + "format": "Only alphanumeric values, dashes and spaces", + "maxLength": 40 }, "ProcessingStatus": { "type": "string", "enum": [ "DRAFT" - ] - }, - "BillingTelephoneNumber": { - "type": "string" - }, - "NewBillingTelephoneNumber": { - "type": "string" - }, - "WirelessInfo": { - "$ref": "#/components/schemas/WirelessInfo" + ], + "description": "Including `ProcessingStatus` with a value of DRAFT allows you to create a port-in request, but not process the request. This is useful if you wish to add items to the order over a period of time and submit once you have the order setup the way you want. Note, however, that draft orders that have not been updated in a couple of days are automatically deleted. Removal of stagnant draft orders is performed so that telephone numbers are not tied up in these orders, preventing them from being included in other orders.

Very little validation is performed while an order is in draft state. Omitting `ProcessingStatus` causes the port-in to be validated and, if correct, processed right away. The full validation is performed on the order when you change the ProcessingStatus to 'SUBMITTED' by performing a PUT request on the order.

All toll free telephone numbers provided will be validated (even in draft state) to ensure\nthat they are portable, and to allow you to separate telephone numbers into separate port-ins\nbased on the RespOrg that they are being ported from.

" }, "RequestedFocDate": { - "type": "string" - }, - "Subscriber": { - "$ref": "#/components/schemas/Subscriber" + "type": "string", + "description": "Format: ISO8601 encoding such as “2013-05-10T15:14:22Z”, or \"2019-10-31T17:15:00+04:00\".

For all ports, if `RequestedFocDate` is specified, the date portion must be:
- in the future
- after the losing carrier's minimum number of days to port-out
- not on a weekend or U.S. holiday

If `RequestedFocDate` is not specified, the next available FOC date meeting the criteria above will be used. If the Time portion of the `RequestedFocDate` is omitted the port-in order will be activated at the default activation time of 11:30 AM ET. If an activation time other than 11:30 AM ET is desired, that activation time should be included in the `RequestedFocDate`." }, "PeerId": { - "type": "string" - }, - "PartialPort": { - "type": "string" + "type": "string", + "description": "`PeerId` specifies the numeric identifier of the SIP-peer (Location) that the telephone numbers will be ported into.

You can find the identifier for a SIP-peer (location) by using `GET /accounts/id/sites/id/sippeers`, or by clicking on 'Accounts' on the upper right of the [Bandwidth Dashboard](Https://dashboard.bandwidth.com), then clicking 'Locations' on the navigation bar. The SIP-peer (location) identifiers are listed next to each location name. If `PeerId` is omitted, the SIP-peer (location) designated as the 'default location' for that site (sub-account) will be used." }, "LoaAuthorizingPerson": { - "type": "string" - }, - "Immediately": { - "type": "boolean" - }, - "Triggered": { - "type": "boolean" - }, - "BillingType": { - "type": "string" - }, - "AutoActivation": { - "type": "string" - }, - "TnAttributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TnAttribute" - } - }, - "OverrideValidation": { - "type": "boolean" - }, - "AlternateSpid": { - "type": "string" + "type": "string", + "description": "This is the first and last names of the person that has authorized the port.", + "maxLength": 15 }, "ListOfPhoneNumbers": { "type": "array", + "description": "`ListOfPhoneNumbers` is an array of `PhoneNumber`. At least one `PhoneNumber` must be provided.", "items": { - "$ref": "#/components/schemas/PhoneNumber" + "type": "object", + "properties": { + "PhoneNumber": { + "description": "One or more phone numbers is required.
Use a `` tag for each phone number in the `` list.", + "format": "Ten digit phone number with no dots or dashes", + "type": "string" + } + } } }, "SiteId": { "type": "integer", - "format": "int32" + "format": "int32", + "description": "`SiteId` specifies the identifier of the site (sub-account) that the telephone numbers will be ported into.

You can find the identifier for a site (sub-account) by using `GET /accounts/id/sites`, or by clicking on 'Manage sub-account' for the desired sub-account on the main page of the Bandwidth Dashboard." + } + }, + "required": [ + "SiteId", + "ListOfPhoneNumbers", + "LoaAuthorizingPerson" + ] + }, + "LnpOrderAdditionalFields": { + "type": "object", + "properties": { + "BillingTelephoneNumber": { + "type": "string", + "description": "The `BillingTelephoneNumber` is the primary telephone number associated with the invoice that the subscriber gets from the losing carrier. For wireline port-in, the BillingTelephoneNumber is typically the telephone number being ported in." + }, + "WirelessInfo": { + "type": "object", + "title": "WirelessInfo", + "description": "Most common for telephone numbers that were formerly wireless.", + "properties": { + "AccountNumber": { + "type": "string", + "description": "The `AccountNumber` is sometimes required to authorize the port-out from the losing carrier. This is most common for telephone numbers that were formerly wireless." + }, + "PinNumber": { + "type": "string", + "description": "The `PinNumber` is sometimes required to authorize the port-out from the losing carrier. This is most common for telephone numbers that were formerly wireless." + } + } + }, + "Subscriber": { + "oneOf": [ + { + "$ref": "#/components/schemas/SubscriberBusiness" + }, + { + "$ref": "#/components/schemas/SubscriberResidential" + } + ] + }, + "Triggered": { + "type": "boolean", + "description": "The `Triggered` field must be set to `true` if you want an activation time other than the 11:30 AM ET default. The desired activation time can then be specified in the time portion of the `RequestedFocDate`." + }, + "AlternateSpid": { + "type": "string", + "description": "Even though the telephone numbers are being ported into Bandwidth’s SPID, some of Bandwidth’s wholesale customers have an alternate SPID that is used to identify the telephone number with that customer." + } + }, + "required": [ + "BillingTelephoneNumber", + "Subscriber" + ] + }, + "TollFreeLnpOrderRequest": { + "type": "object", + "title": "Toll free", + "description": "Manual indicates that the port-in will be processed manually by Bandwidth’s Local Number Portability team. Currently all toll free port-ins are handled manually by Bandwidth’s Local Number Portability team. But Bandwidth is in the process of automating portions of toll free porting, with a goal of eventually automating the entire process.", + "properties": { + "LnpOrder": { + "allOf": [ + { + "$ref": "#/components/schemas/LnpOrderBasic" + } + ], + "type": "object", + "properties": { + "Subscriber": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/SubscriberBusiness" + } + ] + } + } + } + } + }, + "OnNetLnpOrderRequest": { + "type": "object", + "title": "On-net", + "properties": { + "LnpOrder": { + "allOf": [ + { + "$ref": "#/components/schemas/LnpOrderBasic" + }, + { + "$ref": "#/components/schemas/LnpOrderAdditionalFields" + }, + { + "type": "object", + "properties": { + "NewBillingTelephoneNumber": { + "type": "string", + "description": "This field is used to specify a new billing telephone number on the losing carrier account.

Cannot be the same as `BillingTelephoneNumber` or be present in the list of ported numbers." + }, + "PartialPort": { + "type": "string", + "description": "The `PartialPort` must be set to `true` if the intent is to **NOT** port all of the telephone numbers associated with the `BillingTelephoneNumber`.

If PartialPort is omitted or false, and the `ListOfPhoneNumbers` does not include all of the telephone numbers associated with the `BillingTelephoneNumber`, the port-in will be rejected.

PartialPort is applicable only to on-net port-types." + }, + "BillingType": { + "type": "string", + "description": "" + }, + "AutoActivation": { + "type": "string", + "description": "" + }, + "TnAttributes": { + "type": "array", + "description": "The `TnAttributes` field specifies line attributes that will apply to the ported in telephone numbers. If present, `TnAttributes` may have a value of `PROTECTED`.", + "items": { + "$ref": "#/components/schemas/TnAttribute" + } + } + } + } + ] + } + } + }, + "InternalLnpOrderRequest": { + "type": "object", + "title": "Internal", + "properties": { + "LnpOrder": { + "allOf": [ + { + "$ref": "#/components/schemas/LnpOrderBasic" + }, + { + "$ref": "#/components/schemas/LnpOrderAdditionalFields" + }, + { + "type": "object", + "properties": { + "NewBillingTelephoneNumber": { + "type": "string", + "description": "This field is used to specify a new billing telephone number on the losing carrier account.

Cannot be the same as `BillingTelephoneNumber` or be present in the list of ported numbers." + }, + "PartialPort": { + "type": "string", + "description": "The `PartialPort` must be set to `true` if the intent is to **NOT** port all of the telephone numbers associated with the `BillingTelephoneNumber`.

If PartialPort is omitted or false, and the `ListOfPhoneNumbers` does not include all of the telephone numbers associated with the `BillingTelephoneNumber`, the port-in will be rejected.

PartialPort is applicable only to on-net port-types." + }, + "Immediately": { + "type": "boolean", + "description": "Including `Immediately` with a value of `true` will cause an Internal port-in to complete as soon as possible, without requiring a scheduled activation time.

`Immediately` has no meaning for port types other than Internal." + }, + "TnAttributes": { + "type": "array", + "description": "The `TnAttributes` field specifies line attributes that will apply to the ported in telephone numbers. If present, `TnAttributes` may have a value of `PROTECTED`.", + "items": { + "$ref": "#/components/schemas/TnAttribute" + } + } + } + } + ] + } + } + }, + "OffNetLnpOrderRequest": { + "type": "object", + "title": "Off-net", + "properties": { + "LnpOrder": { + "allOf": [ + { + "$ref": "#/components/schemas/LnpOrderBasic" + }, + { + "$ref": "#/components/schemas/LnpOrderAdditionalFields" + } + ] } } }, @@ -22831,125 +23286,363 @@ } } }, - "FileMetaData": { + "SubscriberBusiness": { "type": "object", + "title": "BUSINESS", "properties": { - "DocumentName": { - "type": "string" + "SubscriberType": { + "type": "string", + "enum": [ + "BUSINESS" + ] }, - "DocumentType": { + "BusinessName": { + "type": "string", + "maxLength": 25 + }, + "ServiceAddress": { + "$ref": "#/components/schemas/PortinCreateSubscriberServiceAddress" + } + }, + "required": [ + "SubscriberType", + "ServiceAddress", + "BusinessName" + ] + }, + "SubscriberResidential": { + "type": "object", + "title": "RESIDENTIAL", + "properties": { + "SubscriberType": { "type": "string", "enum": [ - "LOA", - "INVOICE", - "CSR", - "OTHER" + "RESIDENTIAL" ] + }, + "FirstName": { + "type": "string", + "maxLength": 25 + }, + "MiddleInitial": { + "type": "string", + "maxLength": 1 + }, + "LastName": { + "type": "string", + "maxLength": 25 + }, + "ServiceAddress": { + "$ref": "#/components/schemas/PortinCreateSubscriberServiceAddress" } - } + }, + "required": [ + "SubscriberType", + "ServiceAddress", + "FirstName", + "LastName" + ] }, - "FileMetaDataRequest": { + "PortinSubscriberSupp": { "type": "object", + "title": "Subscriber", "properties": { - "FileMetaData": { - "type": "object", - "properties": { - "DocumentName": { - "type": "string" - }, - "DocumentType": { - "type": "string", - "enum": [ - "LOA", - "INVOICE", - "CSR", - "OTHER" - ] - } - } + "SubscriberType": { + "type": "string", + "description": "If SubscriberType is set to BUSINESS, a BusinessName must be provided. If SubscriberType is set to RESIDENTIAL, a FirstName and LastName must be provided.", + "enum": [ + "business", + "residential", + "generic" + ] + }, + "BusinessName": { + "type": "string" + }, + "FirstName": { + "type": "string" + }, + "MiddleInitial": { + "type": "string" + }, + "LastName": { + "type": "string" + }, + "ServiceAddress": { + "$ref": "#/components/schemas/PortinPutSubscriberServiceAddress" } } }, - "PhoneNumber": { + "WirelessInfoSupp": { "type": "object", + "title": "WirelessInfo", + "description": "If you want to SUPP WirelessInfo, you must include both AccountNumber and PinNumber in the payload, even if you are not changing both.", "properties": { - "PhoneNumber": { + "AccountNumber": { + "type": "string" + }, + "PinNumber": { "type": "string" } } }, - "LnpOrderSuppRequest": { + "PortinSubscriberBasicServiceAddress": { "type": "object", + "title": "ServiceAddress", "properties": { - "LnpOrderSupp": { - "$ref": "#/components/schemas/LnpOrderSupp" + "HousePrefix": { + "type": "string", + "description": "The `HouseSuffix` is the non-numeric address number suffix of the `ServiceAddress`. This element is optional when not needed to fully specify the `ServiceAddress`." + }, + "HouseNumber": { + "type": "string", + "description": "The `HouseNumber` is the street address number of the `ServiceAddress`. `HouseNumber` is mandatory for port-in orders in which the `ServiceAddress` is mandatory." + }, + "HouseSuffix": { + "type": "string", + "description": "The `HouseSuffix` is the non-numeric address number suffix of the `ServiceAddress`. This element is optional when not needed to fully specify the `ServiceAddress`." + }, + "PreDirectional": { + "type": "string", + "description": "The `PreDirectional` is the non-numeric street name prefix of the `ServiceAddress`. This element is optional when not needed to fully specify the `ServiceAddress`." + }, + "StreetName": { + "type": "string", + "description": "The `StreetName` is mandatory in cases where the `ServiceAddress` is mandatory." + }, + "StreetSuffix": { + "type": "string", + "description": "The `StreetSuffix` is the street suffix of the `ServiceAddress`. This element is optional when not needed to fully specify the `ServiceAddress`." + }, + "PostDirectional": { + "type": "string", + "description": "The `PostDirectional` is the street name post directional of the `ServiceAddress`. This element is optional when not needed to fully specify the `ServiceAddress`." + }, + "AddressLine2": { + "type": "string", + "description": "`AddressLine2` is used to specify Unit, Suite, Floor, etc. in the Service Address. `AddressLine2` is optional when not needed to fully specify the `ServiceAddress`." + }, + "City": { + "type": "string", + "description": "`City` is mandatory in cases where the `ServiceAddress` is mandatory." + }, + "StateCode": { + "type": "string", + "description": "`StateCode` is the 2-letter abbreviation of the state of the `ServiceAddress`. `StateCode` is mandatory in cases where the `ServiceAddress` is mandatory. ex: `NC`, `NY`, or `AK`", + "maxLength": 2 + }, + "Zip": { + "type": "string", + "description": "`Zip` is the Zip Code of the `ServiceAddress`. `Zip` is mandatory in cases where the `ServiceAddress` is mandatory." + }, + "PlusFour": { + "type": "string", + "description": "`PlusFour` is the 4 digits that are sometimes suffixed to the Zip Code.", + "maxLength": 4 + }, + "Country": { + "type": "string", + "description": "`Country` is the country of the `ServiceAddress`. This value will be derived from the `StateCode`, so it should generally be omitted." + } + } + }, + "PortinCreateSubscriberServiceAddress": { + "allOf": [ + { + "$ref": "#/components/schemas/PortinSubscriberBasicServiceAddress" + } + ], + "title": "ServiceAddress", + "required": [ + "HouseNumber", + "StreetName", + "City", + "StateCode", + "Zip" + ] + }, + "PortinPutSubscriberServiceAddress": { + "allOf": [ + { + "$ref": "#/components/schemas/PortinSubscriberBasicServiceAddress" + } + ], + "type": "object", + "title": "ServiceAddress", + "description": "Includes all address fields. ServiceAddress elements cannot be SUPPed for Automated on-net wireless to wireless port-ins. See also, ResetAddressFields.", + "properties": { + "ResetAddressFields": { + "type": "boolean", + "description": "The `ResetAddressFields` may be specified in a `PUT` request for a non-toll free port-in order if you would like to remove `ServiceAddress` elements that are not specified in the PUT payload. Default value is `false`." } } }, - "LnpOrderSupp": { + "LnpOrderBasicModifiableFields": { "type": "object", "properties": { "CustomerOrderId": { + "type": "string", + "description": "This field is removed from the order if not provided in the PUT payload." + }, + "PeerId": { "type": "string" }, + "SiteId": { + "type": "integer", + "format": "int32" + }, + "RequestedFocDate": { + "type": "string", + "description": "Is a subject to blackout windows if the current date is too close to an assigned FOC date." + }, + "Triggered": { + "type": "boolean", + "description": "May be included in the PUT payload as is, but cannot be changed." + }, + "TnAttributes": { + "type": "array", + "description": "Can be SUPPed prior to completion of the port-in request.", + "items": { + "$ref": "#/components/schemas/TnAttribute" + } + }, + "ProcessingStatus": { + "type": "string", + "description": "May only be SUPPed for port-in orders in draft state. The only valid value is “SUBMITTED” (not case sensitive)." + } + } + }, + "LnpOrderAdditionalModifiableFields": { + "type": "object", + "properties": { "BillingTelephoneNumber": { "type": "string" }, - "NewBillingTelephoneNumber": { - "type": "string" + "Subscriber": { + "$ref": "#/components/schemas/PortinSubscriberSupp" }, - "WirelessInfo": { - "$ref": "#/components/schemas/WirelessInfo" + "AlternateSpid": { + "type": "string", + "description": "Can only be modified in DRAFT state. Can only be modified if it is not configured at the system level." + } + } + }, + "LnpOrderSuppManualTollFree": { + "allOf": [ + { + "$ref": "#/components/schemas/LnpOrderBasicModifiableFields" + } + ], + "type": "object", + "title": "LnpOrderSupp", + "properties": { + "Subscriber": { + "type": "object", + "title": "Subscriber", + "properties": { + "SubscriberType": { + "type": "string", + "enum": [ + "BUSINESS" + ] + }, + "BusinessName": { + "type": "string", + "maxLength": 25 + }, + "ServiceAddress": { + "$ref": "#/components/schemas/PortinSubscriberBasicServiceAddress" + } + } }, - "RequestedFocDate": { + "LoaAuthorizingPerson": { "type": "string" }, - "Subscriber": { - "$ref": "#/components/schemas/Subscriber" + "RetryValidation": { + "type": "boolean", + "description": "If 'TOLL_FREE_PORT_INS_PHASE_1' feature is enabled for account, Bandwidth accesses a vendor to determine if the numbers are portable, and if so, from which RespOrg. In the event that we do not receive a response from our vendor after a number of retries, we give up and place the order in the INVALID_TFNS or INVALID_DRAFT_TFNS state. This scenario can occur if our toll free porting vendor is performing maintenance, for example. Including RetryValidation with a value of true will cause the order to return to VALIDATE_TFNS or VALIDATE_DRAFT_TFNS and we will repeat our attempts to retrieve the portability data from the vendor. This element is included in the synchronous response to the PUT, when included in the request, but is not included in subsequent GET requests for the order." }, - "PeerId": { + "ListOfPhoneNumbers": { + "type": "array", + "description": "May be SUPPed only in draft states (i.e. DRAFT, VALIDATE_DRAFT_TFNS, VALID_DRAFT_TFNS, or INVALID_DRAFT_TFNS)", + "items": { + "$ref": "#/components/schemas/PhoneNumber" + } + } + } + }, + "LnpOrderSuppManualOnNetOffNet": { + "allOf": [ + { + "$ref": "#/components/schemas/LnpOrderBasicModifiableFields" + }, + { + "$ref": "#/components/schemas/LnpOrderAdditionalModifiableFields" + } + ], + "type": "object", + "title": "LnpOrderSupp", + "properties": { + "NewBillingTelephoneNumber": { "type": "string" }, + "WirelessInfo": { + "$ref": "#/components/schemas/WirelessInfoSupp" + }, "PartialPort": { "type": "string" }, "LoaAuthorizingPerson": { "type": "string" + } + } + }, + "LnpOrderSuppAutomatedOnNet": { + "allOf": [ + { + "$ref": "#/components/schemas/LnpOrderBasicModifiableFields" }, - "Immediately": { - "type": "boolean" + { + "$ref": "#/components/schemas/LnpOrderAdditionalModifiableFields" + } + ], + "type": "object", + "title": "LnpOrderSupp", + "properties": { + "NewBillingTelephoneNumber": { + "type": "string" }, - "Triggered": { - "type": "boolean" + "WirelessInfo": { + "$ref": "#/components/schemas/WirelessInfoSupp" }, - "BillingType": { + "PartialPort": { "type": "string" }, - "AutoActivation": { + "LoaAuthorizingPerson": { "type": "string" }, - "TnAttributes": { + "ListOfPhoneNumbers": { "type": "array", "items": { - "$ref": "#/components/schemas/TnAttribute" + "$ref": "#/components/schemas/PhoneNumber" } + } + } + }, + "LnpOrderSuppAutomatedOnNetWireless": { + "allOf": [ + { + "$ref": "#/components/schemas/LnpOrderBasicModifiableFields" }, - "OverrideValidation": { - "type": "boolean" - }, - "AlternateSpid": { - "type": "string" - }, - "SiteId": { - "type": "integer", - "format": "int32" - }, - "ActualFocDate": { - "type": "string", - "format": "date-time" - }, - "RetryValidation": { - "type": "boolean" + { + "$ref": "#/components/schemas/LnpOrderAdditionalModifiableFields" + } + ], + "type": "object", + "title": "LnpOrderSupp", + "properties": { + "WirelessInfo": { + "$ref": "#/components/schemas/WirelessInfoSupp" }, "ListOfPhoneNumbers": { "type": "array", @@ -22959,6 +23652,64 @@ } } }, + "LnpOrderSuppAutomatedOffNet": { + "allOf": [ + { + "$ref": "#/components/schemas/LnpOrderBasicModifiableFields" + }, + { + "$ref": "#/components/schemas/LnpOrderAdditionalModifiableFields" + } + ], + "type": "object", + "title": "LnpOrderSupp", + "properties": { + "Subscriber": { + "allOf": [ + { + "$ref": "#/components/schemas/PortinSubscriberSupp" + } + ], + "type": "object", + "title": "LnpOrderSupp", + "description": "Cannot be SUPPed after FOC received." + } + } + }, + "LnpOrderSuppInternal": { + "allOf": [ + { + "$ref": "#/components/schemas/LnpOrderBasicModifiableFields" + }, + { + "$ref": "#/components/schemas/LnpOrderAdditionalModifiableFields" + } + ], + "type": "object", + "title": "LnpOrderSupp", + "properties": { + "NewBillingTelephoneNumber": { + "type": "string" + }, + "WirelessInfo": { + "$ref": "#/components/schemas/WirelessInfoSupp" + }, + "PartialPort": { + "type": "string" + }, + "LoaAuthorizingPerson": { + "type": "string" + }, + "Immediately": { + "type": "boolean", + "description": "May be included in the PUT payload as is, but cannot be changed." + }, + "OverrideValidation": { + "type": "boolean", + "description": "This Bandwidth internal flag forces port-out to bypass validity checking (if there are no terminal errors). This flag can be SUPPed only for orders in EXCEPTION status." + } + } + }, "ActivationStatus": { "type": "object", "properties": { @@ -25291,7 +26042,8 @@ "description": "Subscriber information.", "properties": { "Name": { - "description": "Subscriber business / customer name. Max length is 45 characters.", + "description": "Subscriber business / customer name.", + "maxLength": 45, "type": "string" }, "ServiceAddress": { @@ -29142,6 +29894,10 @@ "LnpOrderResponse": { "type": "object", "properties": { + "OrderId": { + "type": "string", + "description": "Unique orderId that is used to manage the order" + }, "Status": { "type": "object", "properties": {