SENDO NUMBERS - DID API

Buy, track, and manage your inbound phone numbers (DIDs), and query your account's numbering, orders, rates, CDRs, and billing data.


This API lets an external system manage its own phone numbering (DIDs) and query its own account data without going through the web portal. Two things define how it behaves everywhere:

  • There are only 5 write operations, all under /api/management (below). Everything under /api/data is entirely read-only — POST, PUT, PATCH and DELETE are explicitly disabled there.

  • Everything is scoped to your account automatically. There is no parameter to query “another account” — the account is enforced by the bearer token, so every response only ever contains your own data.

Every request requires Authorization: Bearer <token> (OAuth2 / Auth0). The token must include the namespaced email claim — a plain client_credentials token without it will not work for this API.

Management — Actions

The 5 write operations. Everything else in this document is read-only.

Buy Numbering

POSThttps://didm.sendo.cloud/qbert-web/api/management/buyDids

The API’s central operation. In a single call it validates, creates the number group (DID Set), creates the order and its line, reserves the available numbers that match, and returns the ones it got.

numbers may come back incomplete and that is not an error. If it finds fewer than quantity (or none), the order is still created in PROCESSING status: you must not retry the purchase. Re-buying because you didn’t see numbers in the response is the most likely integration mistake, and it causes duplicate orders and duplicate charges.

Requires an inbound rate (inboundDidRates) that exactly covers the destination + features + number types combination; otherwise, 404.

Required attributes


FieldTypeDescriptionDefault ValueOptionalExample
destinationIdintegerMust exist. Obtained from GET /api/data/destinations.noneNo143
quantityintegerGreater than 0.noneNo3
numberTypesarrayPossible values: NONE, GEOGRAPHIC, MOBILE, TOLL_FREE, SHARED_COST, NATIONAL, VOIP, ITFS, PSTN, CALL_API.noneNo["TOLL_FREE"]
featuresarrayPossible values: NONE, CALL_IN, CALL_OUT, MSG_IN, MSG_OUT, FAX, EMERGENCY, LEGAL_INTERCEPT, CALL_API.noneNo["CALL_IN"]
referencestringUnique within your account, cannot be reused even after cancellation.noneNoCRM-ORDER-00417

Request body.


curl --location 'https://didm.sendo.cloud/qbert-web/api/management/buyDids' --header 'Authorization: Bearer YOUR_TOKEN' --header 'Content-Type: application/json' --data-raw  '{
"destinationId": 143,
"quantity": 3,
"numberTypes": ["TOLL_FREE"],
"features": ["CALL_IN"],
"reference": "CRM-ORDER-00417"
}'
Response — order created. numbers may come back empty or partial (backorder).
CodeDescription
200Order created
{
  "orderId": 88213,
  "orderStatus": "PROCESSING",
  "numbers": [
    "51170000012",
    "51170000013"
  ]
}

Server responses.


Cancel an Order

GEThttps://didm.sendo.cloud/qbert-web/api/management/cancelOrder/{id}

The order must be in PROCESSING; any other status returns 400. Cancels every line of the order and leaves it in CANCELED.

Watch the verb: it’s a GET that modifies data. If your HTTP client, proxy, or service mesh automatically retries GET requests, the action may run twice (although it’s idempotent in its final effect: an already-cancelled order returns 400).

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerOrder id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/management/cancelOrder/88213' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200Cancelled
true

Server responses.


Release a Number

GEThttps://didm.sendo.cloud/qbert-web/api/management/releaseDid

Marks the number as released (released = true + release date) and registers the negative adjustment to the monthly fee. It does not unlink the number from the account instantly — the final disconnection (releaseDidNow) is run by Administration.

The account’s minimum cancellation period is checked (minimumCancelPeriod, 12 months by default for self-registered accounts): the order line’s completion date must be earlier than today minus minimumCancelPeriod months.

⚠️ If the number belongs to an order that hasn’t been completed yet, that date is null and the call may fail with 500 instead of a clear message. Don’t try to release a number whose order isn’t closed.

There is no reverse operation (unrelease) via API: only from the portal.

Watch the verb: it’s a GET that modifies data (see the note on Cancel an Order).

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
numberstringNumber in E.164 format without +, exactly as returned by the API.noneNo51170000012

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/management/releaseDid?number=51170000012' --header 'Authorization: Bearer YOUR_TOKEN'
Response — release request recorded (does not mean “number already released”).
CodeDescription
200Release request recorded
true

Server responses.


Numbers Assigned to an Order

GEThttps://didm.sendo.cloud/qbert-web/api/management/getDidsFromOrder

The tracking endpoint: called periodically after Buy Numbering until it returns as many numbers as requested. An empty list is normal if no numbers have been assigned yet.

Known limitation (QBE-4402): it combines the order’s lines with AND instead of OR, so for an order with more than one line it returns an empty list. Orders created by Buy Numbering always have a single line, so it’s reliable for them; for portal orders with multiple lines, use Order Lines of an Order followed by List Numbers (DIDs).

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerOrder id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/management/getDidsFromOrder?id=88213' --header 'Authorization: Bearer YOUR_TOKEN'
Response — list of numbers in E.164 format without +.
CodeDescription
200OK
[
  "51170000012",
  "51170000013"
]

Server responses.


Your Numbers in a Country

GEThttps://didm.sendo.cloud/qbert-web/api/management/getDidsByISO2CountryCode

Returns the full list at once, not paginated — with large inventories the response can be bulky. Includes released numbers: it doesn’t filter by release status.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
ccstringThe country's ISO-2 code. Case-insensitive.noneNoPE

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/management/getDidsByISO2CountryCode?cc=PE' --header 'Authorization: Bearer YOUR_TOKEN'
Response — list of numbers in E.164 format without +.
CodeDescription
200OK
[
  "51170000012",
  "51170000013",
  "51170000014"
]

Server responses.


Data API (Read-Only)

Every route below is under /api/data and only supports GETPOST, PUT, PATCH, and DELETE return 405. List endpoints share the same paginated response envelope (content, totalElements, totalPages, number, size, first, last, empty); number is the 0-based internal page index even though the page query parameter you send is 1-based.

Account Data

Resources filtered to your account: orders, order lines, numbers, CDRs, invoices and their breakdowns, and billing info.

List Orders

GEThttps://didm.sendo.cloud/qbert-web/api/data/orders

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/orders?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "id": 88213,
      "orderStatus": "PROCESSING",
      "purchaseDate": "2024-09-23",
      "completeDate": null,
      "reference": "CRM-ORDER-00417"
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


Get an Order

GEThttps://didm.sendo.cloud/qbert-web/api/data/orders/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerOrder id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/orders/{id}' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "id": 88213,
  "orderStatus": "PROCESSING",
  "purchaseDate": "2024-09-23",
  "completeDate": null,
  "reference": "CRM-ORDER-00417"
}

Server responses.


List Order Lines

GEThttps://didm.sendo.cloud/qbert-web/api/data/orderItems

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/orderItems?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "id": 120933,
      "orderId": 88213,
      "destination": {
        "id": 143,
        "name": "Peru Inbound",
        "description": "Geographic numbers, Lima area",
        "country": {
          "id": 51,
          "name": "Peru",
          "shortName": "Peru",
          "isoCode": "PE",
          "e164Code": {
            "id": 51,
            "description": "Peru",
            "e164CodeType": "COUNTRY"
          },
          "geographicAreaId": 7,
          "domestic": false,
          "international": true
        },
        "destinationType": "INBOUND",
        "e164Code": {
          "id": 511,
          "description": "Lima",
          "e164CodeType": "AREA"
        }
      },
      "country": {
        "id": 51,
        "name": "Peru",
        "shortName": "Peru",
        "isoCode": "PE",
        "e164Code": {
          "id": 51,
          "description": "Peru",
          "e164CodeType": "COUNTRY"
        },
        "geographicAreaId": 7,
        "domestic": false,
        "international": true
      },
      "areaCode": "1",
      "quantity": 3,
      "orderItemStatus": "PROCESSING",
      "capacity": null,
      "didFeatureTypes": [
        "CALL_IN"
      ],
      "didNumberTypes": [
        "GEOGRAPHIC"
      ]
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


Get an Order Line

GEThttps://didm.sendo.cloud/qbert-web/api/data/orderItems/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerOrder line id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/orderItems/{id}' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "id": 120933,
  "orderId": 88213,
  "destination": {
    "id": 143,
    "name": "Peru Inbound",
    "description": "Geographic numbers, Lima area",
    "country": {
      "id": 51,
      "name": "Peru",
      "shortName": "Peru",
      "isoCode": "PE",
      "e164Code": {
        "id": 51,
        "description": "Peru",
        "e164CodeType": "COUNTRY"
      },
      "geographicAreaId": 7,
      "domestic": false,
      "international": true
    },
    "destinationType": "INBOUND",
    "e164Code": {
      "id": 511,
      "description": "Lima",
      "e164CodeType": "AREA"
    }
  },
  "country": {
    "id": 51,
    "name": "Peru",
    "shortName": "Peru",
    "isoCode": "PE",
    "e164Code": {
      "id": 51,
      "description": "Peru",
      "e164CodeType": "COUNTRY"
    },
    "geographicAreaId": 7,
    "domestic": false,
    "international": true
  },
  "areaCode": "1",
  "quantity": 3,
  "orderItemStatus": "PROCESSING",
  "capacity": null,
  "didFeatureTypes": [
    "CALL_IN"
  ],
  "didNumberTypes": [
    "GEOGRAPHIC"
  ]
}

Server responses.


Order Lines of an Order

GEThttps://didm.sendo.cloud/qbert-web/api/data/orderItems/byOrder/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account). Preferred way to read a multi-line order’s lines — see the note on getDidsFromOrder’s known limitation above.

Path & Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerOrder id.noneNo88213
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/orderItems/byOrder/88213?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "id": 120933,
      "orderId": 88213,
      "destination": {
        "id": 143,
        "name": "Peru Inbound",
        "description": "Geographic numbers, Lima area",
        "country": {
          "id": 51,
          "name": "Peru",
          "shortName": "Peru",
          "isoCode": "PE",
          "e164Code": {
            "id": 51,
            "description": "Peru",
            "e164CodeType": "COUNTRY"
          },
          "geographicAreaId": 7,
          "domestic": false,
          "international": true
        },
        "destinationType": "INBOUND",
        "e164Code": {
          "id": 511,
          "description": "Lima",
          "e164CodeType": "AREA"
        }
      },
      "country": {
        "id": 51,
        "name": "Peru",
        "shortName": "Peru",
        "isoCode": "PE",
        "e164Code": {
          "id": 51,
          "description": "Peru",
          "e164CodeType": "COUNTRY"
        },
        "geographicAreaId": 7,
        "domestic": false,
        "international": true
      },
      "areaCode": "1",
      "quantity": 3,
      "orderItemStatus": "PROCESSING",
      "capacity": null,
      "didFeatureTypes": [
        "CALL_IN"
      ],
      "didNumberTypes": [
        "GEOGRAPHIC"
      ]
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List Numbers (DIDs)

GEThttps://didm.sendo.cloud/qbert-web/api/data/e164Numbers

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/e164Numbers?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "id": 552341,
      "number": "51170000012",
      "e164Code": {
        "id": 511,
        "description": "Lima",
        "e164CodeType": "AREA"
      },
      "country": {
        "id": 51,
        "name": "Peru",
        "shortName": "Peru",
        "isoCode": "PE",
        "e164Code": {
          "id": 51,
          "description": "Peru",
          "e164CodeType": "COUNTRY"
        },
        "geographicAreaId": 7,
        "domestic": false,
        "international": true
      },
      "destination": {
        "id": 143,
        "name": "Peru Inbound",
        "description": "Geographic numbers, Lima area",
        "country": {
          "id": 51,
          "name": "Peru",
          "shortName": "Peru",
          "isoCode": "PE",
          "e164Code": {
            "id": 51,
            "description": "Peru",
            "e164CodeType": "COUNTRY"
          },
          "geographicAreaId": 7,
          "domestic": false,
          "international": true
        },
        "destinationType": "INBOUND",
        "e164Code": {
          "id": 511,
          "description": "Lima",
          "e164CodeType": "AREA"
        }
      },
      "npa": {
        "id": 9,
        "prefix": "1",
        "location": "Lima"
      },
      "e164NumberStatus": "ASSIGNED",
      "inboundDidRate": {
        "country": {
          "id": 51,
          "name": "Peru",
          "shortName": "Peru",
          "isoCode": "PE",
          "e164Code": {
            "id": 51,
            "description": "Peru",
            "e164CodeType": "COUNTRY"
          },
          "geographicAreaId": 7,
          "domestic": false,
          "international": true
        },
        "destination": {
          "id": 143,
          "name": "Peru Inbound",
          "description": "Geographic numbers, Lima area",
          "country": {
            "id": 51,
            "name": "Peru",
            "shortName": "Peru",
            "isoCode": "PE",
            "e164Code": {
              "id": 51,
              "description": "Peru",
              "e164CodeType": "COUNTRY"
            },
            "geographicAreaId": 7,
            "domestic": false,
            "international": true
          },
          "destinationType": "INBOUND",
          "e164Code": {
            "id": 511,
            "description": "Lima",
            "e164CodeType": "AREA"
          }
        },
        "npa": {
          "id": 9,
          "prefix": "1",
          "location": "Lima"
        },
        "mrc": 2.5,
        "setup": 10,
        "perMinute": 0.01,
        "mobilePerMinute": 0.02,
        "didFeatureTypes": [
          "CALL_IN"
        ],
        "didNumberTypes": [
          "GEOGRAPHIC"
        ]
      },
      "didSettings": {
        "translation": null,
        "cnam": null,
        "clientRoutingNumber": null,
        "released": false,
        "releasedOn": null
      },
      "didNumberTypes": [
        "GEOGRAPHIC"
      ],
      "didFeatureTypes": [
        "CALL_IN"
      ]
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


Get a Number (DID)

GEThttps://didm.sendo.cloud/qbert-web/api/data/e164Numbers/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerNumber id (not the phone number itself).noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/e164Numbers/{id}' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "id": 552341,
  "number": "51170000012",
  "e164Code": {
    "id": 511,
    "description": "Lima",
    "e164CodeType": "AREA"
  },
  "country": {
    "id": 51,
    "name": "Peru",
    "shortName": "Peru",
    "isoCode": "PE",
    "e164Code": {
      "id": 51,
      "description": "Peru",
      "e164CodeType": "COUNTRY"
    },
    "geographicAreaId": 7,
    "domestic": false,
    "international": true
  },
  "destination": {
    "id": 143,
    "name": "Peru Inbound",
    "description": "Geographic numbers, Lima area",
    "country": {
      "id": 51,
      "name": "Peru",
      "shortName": "Peru",
      "isoCode": "PE",
      "e164Code": {
        "id": 51,
        "description": "Peru",
        "e164CodeType": "COUNTRY"
      },
      "geographicAreaId": 7,
      "domestic": false,
      "international": true
    },
    "destinationType": "INBOUND",
    "e164Code": {
      "id": 511,
      "description": "Lima",
      "e164CodeType": "AREA"
    }
  },
  "npa": {
    "id": 9,
    "prefix": "1",
    "location": "Lima"
  },
  "e164NumberStatus": "ASSIGNED",
  "inboundDidRate": {
    "country": {
      "id": 51,
      "name": "Peru",
      "shortName": "Peru",
      "isoCode": "PE",
      "e164Code": {
        "id": 51,
        "description": "Peru",
        "e164CodeType": "COUNTRY"
      },
      "geographicAreaId": 7,
      "domestic": false,
      "international": true
    },
    "destination": {
      "id": 143,
      "name": "Peru Inbound",
      "description": "Geographic numbers, Lima area",
      "country": {
        "id": 51,
        "name": "Peru",
        "shortName": "Peru",
        "isoCode": "PE",
        "e164Code": {
          "id": 51,
          "description": "Peru",
          "e164CodeType": "COUNTRY"
        },
        "geographicAreaId": 7,
        "domestic": false,
        "international": true
      },
      "destinationType": "INBOUND",
      "e164Code": {
        "id": 511,
        "description": "Lima",
        "e164CodeType": "AREA"
      }
    },
    "npa": {
      "id": 9,
      "prefix": "1",
      "location": "Lima"
    },
    "mrc": 2.5,
    "setup": 10,
    "perMinute": 0.01,
    "mobilePerMinute": 0.02,
    "didFeatureTypes": [
      "CALL_IN"
    ],
    "didNumberTypes": [
      "GEOGRAPHIC"
    ]
  },
  "didSettings": {
    "translation": null,
    "cnam": null,
    "clientRoutingNumber": null,
    "released": false,
    "releasedOn": null
  },
  "didNumberTypes": [
    "GEOGRAPHIC"
  ],
  "didFeatureTypes": [
    "CALL_IN"
  ]
}

Server responses.


List CDRs (Calls)

GEThttps://didm.sendo.cloud/qbert-web/api/data/cdrs

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/cdrs?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "callId": "1737575163.412",
      "callerId": "51170000012",
      "calledId": "17862345678",
      "orgCallerId": null,
      "orgCalledId": null,
      "translationAni": null,
      "translationDni": null,
      "startTime": "2024-09-23T14:12:03Z",
      "answerTime": "2024-09-23T14:12:08Z",
      "disconnectTime": "2024-09-23T14:14:52Z",
      "ratedTime": 164,
      "rate": 0.01,
      "rateOut": null,
      "ratedAmount": 0.0274,
      "ratedAmountIn": 0.0274,
      "ratedAmountOut": null,
      "invoice": 90441,
      "releaseCode": "16",
      "completeCode": "200",
      "ratingStatus": "RATED",
      "mobile": false,
      "domesticCall": false,
      "ratedOn": "2024-09-23T14:14:53Z"
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


Get a CDR

GEThttps://didm.sendo.cloud/qbert-web/api/data/cdrs/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerCDR id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/cdrs/{id}' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "callId": "1737575163.412",
  "callerId": "51170000012",
  "calledId": "17862345678",
  "orgCallerId": null,
  "orgCalledId": null,
  "translationAni": null,
  "translationDni": null,
  "startTime": "2024-09-23T14:12:03Z",
  "answerTime": "2024-09-23T14:12:08Z",
  "disconnectTime": "2024-09-23T14:14:52Z",
  "ratedTime": 164,
  "rate": 0.01,
  "rateOut": null,
  "ratedAmount": 0.0274,
  "ratedAmountIn": 0.0274,
  "ratedAmountOut": null,
  "invoice": 90441,
  "releaseCode": "16",
  "completeCode": "200",
  "ratingStatus": "RATED",
  "mobile": false,
  "domesticCall": false,
  "ratedOn": "2024-09-23T14:14:53Z"
}

Server responses.


List Invoices

GEThttps://didm.sendo.cloud/qbert-web/api/data/invoices

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/invoices?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "numInvoice": "INV-2024-090441",
      "fromDate": "2024-09-01",
      "toDate": "2024-09-30",
      "invoiceDate": "2024-10-01",
      "paymentDate": null,
      "amountFixed": 45.5,
      "amountCalls": 12.34,
      "amountChannels": 0,
      "amount": 57.84
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


Get an Invoice

GEThttps://didm.sendo.cloud/qbert-web/api/data/invoices/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerInvoice id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/invoices/{id}' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "numInvoice": "INV-2024-090441",
  "fromDate": "2024-09-01",
  "toDate": "2024-09-30",
  "invoiceDate": "2024-10-01",
  "paymentDate": null,
  "amountFixed": 45.5,
  "amountCalls": 12.34,
  "amountChannels": 0,
  "amount": 57.84
}

Server responses.


List Fixed-Fee Lines

GEThttps://didm.sendo.cloud/qbert-web/api/data/invoiceFixedChargeses

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account). Breaks down an invoice’s amountFixed.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/invoiceFixedChargeses?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "invoiceId": 90441,
      "number": "51170000012",
      "mrc": 2.5,
      "setup": 0
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


Get a Fixed-Fee Line

GEThttps://didm.sendo.cloud/qbert-web/api/data/invoiceFixedChargeses/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerFixed-fee line id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/invoiceFixedChargeses/{id}' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "invoiceId": 90441,
  "number": "51170000012",
  "mrc": 2.5,
  "setup": 0
}

Server responses.


Fixed-Fee Lines of an Invoice

GEThttps://didm.sendo.cloud/qbert-web/api/data/invoiceFixedChargeses/byInvoice/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path & Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerInvoice id.noneNo88213
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/invoiceFixedChargeses/byInvoice/88213?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "invoiceId": 90441,
      "number": "51170000012",
      "mrc": 2.5,
      "setup": 0
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List Channel Lines

GEThttps://didm.sendo.cloud/qbert-web/api/data/invoiceChannelChargeses

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account). Breaks down an invoice’s amountChannels.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/invoiceChannelChargeses?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "invoiceId": 90441,
      "number": "51170000012",
      "groupName": "default-trunk",
      "extraChannels": 2,
      "mrcExtraChannels": 5,
      "nrcExtraChannels": 0
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


Get a Channel Line

GEThttps://didm.sendo.cloud/qbert-web/api/data/invoiceChannelChargeses/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerChannel line id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/invoiceChannelChargeses/{id}' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "invoiceId": 90441,
  "number": "51170000012",
  "groupName": "default-trunk",
  "extraChannels": 2,
  "mrcExtraChannels": 5,
  "nrcExtraChannels": 0
}

Server responses.


Channel Lines of an Invoice

GEThttps://didm.sendo.cloud/qbert-web/api/data/invoiceChannelChargeses/byInvoice/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path & Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerInvoice id.noneNo88213
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/invoiceChannelChargeses/byInvoice/88213?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "invoiceId": 90441,
      "number": "51170000012",
      "groupName": "default-trunk",
      "extraChannels": 2,
      "mrcExtraChannels": 5,
      "nrcExtraChannels": 0
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List Product Lines

GEThttps://didm.sendo.cloud/qbert-web/api/data/invoiceProductAmountses

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account). Usage detail per product/DID set.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/invoiceProductAmountses?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "invoiceId": 90441,
      "number": "51170000012",
      "productName": "Inbound Minutes",
      "didSetDescription": "Peru Geographic - Lima",
      "usageTotal": 12.34
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


Get a Product Line

GEThttps://didm.sendo.cloud/qbert-web/api/data/invoiceProductAmountses/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerProduct line id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/invoiceProductAmountses/{id}' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "invoiceId": 90441,
  "number": "51170000012",
  "productName": "Inbound Minutes",
  "didSetDescription": "Peru Geographic - Lima",
  "usageTotal": 12.34
}

Server responses.


Product Lines of an Invoice

GEThttps://didm.sendo.cloud/qbert-web/api/data/invoiceProductAmountses/byInvoice/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path & Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerInvoice id.noneNo88213
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/invoiceProductAmountses/byInvoice/88213?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "invoiceId": 90441,
      "number": "51170000012",
      "productName": "Inbound Minutes",
      "didSetDescription": "Peru Geographic - Lima",
      "usageTotal": 12.34
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List Billing Info

GEThttps://didm.sendo.cloud/qbert-web/api/data/billingInfos

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/billingInfos?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "contact": "Jane Doe",
      "email": "billing@yourcompany.com",
      "address": "123 Main St",
      "city": "Lima",
      "state": "Lima",
      "postcode": "15001",
      "country": "Peru",
      "phone": "+51170000000",
      "fax": null
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


Get Billing Info

GEThttps://didm.sendo.cloud/qbert-web/api/data/billingInfos/{id}

Read-only resource, filtered to your account (enforced by the token — there is no parameter to query another account).

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerBilling info id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/billingInfos/{id}' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "contact": "Jane Doe",
  "email": "billing@yourcompany.com",
  "address": "123 Main St",
  "city": "Lima",
  "state": "Lima",
  "postcode": "15001",
  "country": "Peru",
  "phone": "+51170000000",
  "fax": null
}

Server responses.


Rates

Rates assigned to your rate plan.

List Inbound (DID) Rates

GEThttps://didm.sendo.cloud/qbert-web/api/data/inboundDidRates

Rates assigned to your rate plan, read-only. Used to check, before calling buyDids, whether your rate plan covers a destination + features + number types combination.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/inboundDidRates?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "country": {
        "id": 51,
        "name": "Peru",
        "shortName": "Peru",
        "isoCode": "PE",
        "e164Code": {
          "id": 51,
          "description": "Peru",
          "e164CodeType": "COUNTRY"
        },
        "geographicAreaId": 7,
        "domestic": false,
        "international": true
      },
      "destination": {
        "id": 143,
        "name": "Peru Inbound",
        "description": "Geographic numbers, Lima area",
        "country": {
          "id": 51,
          "name": "Peru",
          "shortName": "Peru",
          "isoCode": "PE",
          "e164Code": {
            "id": 51,
            "description": "Peru",
            "e164CodeType": "COUNTRY"
          },
          "geographicAreaId": 7,
          "domestic": false,
          "international": true
        },
        "destinationType": "INBOUND",
        "e164Code": {
          "id": 511,
          "description": "Lima",
          "e164CodeType": "AREA"
        }
      },
      "npa": {
        "id": 9,
        "prefix": "1",
        "location": "Lima"
      },
      "mrc": 2.5,
      "setup": 10,
      "perMinute": 0.01,
      "mobilePerMinute": 0.02,
      "didFeatureTypes": [
        "CALL_IN"
      ],
      "didNumberTypes": [
        "GEOGRAPHIC"
      ]
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


Get an Inbound (DID) Rate

GEThttps://didm.sendo.cloud/qbert-web/api/data/inboundDidRates/{id}

Rates assigned to your rate plan, read-only.

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerRate id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/inboundDidRates/{id}' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "country": {
    "id": 51,
    "name": "Peru",
    "shortName": "Peru",
    "isoCode": "PE",
    "e164Code": {
      "id": 51,
      "description": "Peru",
      "e164CodeType": "COUNTRY"
    },
    "geographicAreaId": 7,
    "domestic": false,
    "international": true
  },
  "destination": {
    "id": 143,
    "name": "Peru Inbound",
    "description": "Geographic numbers, Lima area",
    "country": {
      "id": 51,
      "name": "Peru",
      "shortName": "Peru",
      "isoCode": "PE",
      "e164Code": {
        "id": 51,
        "description": "Peru",
        "e164CodeType": "COUNTRY"
      },
      "geographicAreaId": 7,
      "domestic": false,
      "international": true
    },
    "destinationType": "INBOUND",
    "e164Code": {
      "id": 511,
      "description": "Lima",
      "e164CodeType": "AREA"
    }
  },
  "npa": {
    "id": 9,
    "prefix": "1",
    "location": "Lima"
  },
  "mrc": 2.5,
  "setup": 10,
  "perMinute": 0.01,
  "mobilePerMinute": 0.02,
  "didFeatureTypes": [
    "CALL_IN"
  ],
  "didNumberTypes": [
    "GEOGRAPHIC"
  ]
}

Server responses.


List Termination Rates

GEThttps://didm.sendo.cloud/qbert-web/api/data/terminationRates

Rates assigned to your rate plan, read-only.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/terminationRates?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "destination": {
        "id": 143,
        "name": "Peru Inbound",
        "description": "Geographic numbers, Lima area",
        "country": {
          "id": 51,
          "name": "Peru",
          "shortName": "Peru",
          "isoCode": "PE",
          "e164Code": {
            "id": 51,
            "description": "Peru",
            "e164CodeType": "COUNTRY"
          },
          "geographicAreaId": 7,
          "domestic": false,
          "international": true
        },
        "destinationType": "INBOUND",
        "e164Code": {
          "id": 511,
          "description": "Lima",
          "e164CodeType": "AREA"
        }
      },
      "perMinute": 0.015,
      "international": false,
      "apiCAllRate": null
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


Get a Termination Rate

GEThttps://didm.sendo.cloud/qbert-web/api/data/terminationRates/{id}

Rates assigned to your rate plan, read-only.

Path Parameters


FieldTypeDescriptionDefault ValueOptionalExample
idintegerRate id.noneNo88213

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/terminationRates/{id}' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "destination": {
    "id": 143,
    "name": "Peru Inbound",
    "description": "Geographic numbers, Lima area",
    "country": {
      "id": 51,
      "name": "Peru",
      "shortName": "Peru",
      "isoCode": "PE",
      "e164Code": {
        "id": 51,
        "description": "Peru",
        "e164CodeType": "COUNTRY"
      },
      "geographicAreaId": 7,
      "domestic": false,
      "international": true
    },
    "destinationType": "INBOUND",
    "e164Code": {
      "id": 511,
      "description": "Lima",
      "e164CodeType": "AREA"
    }
  },
  "perMinute": 0.015,
  "international": false,
  "apiCAllRate": null
}

Server responses.


Catalogs

Common reference data, not filtered by account.

List Countries

GEThttps://didm.sendo.cloud/qbert-web/api/data/countries

Common catalog, not filtered by account, read-only.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/countries?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "id": 51,
      "name": "Peru",
      "shortName": "Peru",
      "isoCode": "PE",
      "e164Code": {
        "id": 51,
        "description": "Peru",
        "e164CodeType": "COUNTRY"
      },
      "geographicAreaId": 7,
      "domestic": false,
      "international": true
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List Destinations

GEThttps://didm.sendo.cloud/qbert-web/api/data/destinations

Common catalog, not filtered by account, read-only.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/destinations?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "id": 143,
      "name": "Peru Inbound",
      "description": "Geographic numbers, Lima area",
      "country": {
        "id": 51,
        "name": "Peru",
        "shortName": "Peru",
        "isoCode": "PE",
        "e164Code": {
          "id": 51,
          "description": "Peru",
          "e164CodeType": "COUNTRY"
        },
        "geographicAreaId": 7,
        "domestic": false,
        "international": true
      },
      "destinationType": "INBOUND",
      "e164Code": {
        "id": 511,
        "description": "Lima",
        "e164CodeType": "AREA"
      }
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List Geographic Areas

GEThttps://didm.sendo.cloud/qbert-web/api/data/geographicAreas

Common catalog, not filtered by account, read-only.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/geographicAreas?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "id": 7,
      "name": "South America"
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List E.164 Codes

GEThttps://didm.sendo.cloud/qbert-web/api/data/e164Codes

Common catalog, not filtered by account, read-only.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/e164Codes?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "id": 511,
      "description": "Lima",
      "e164CodeType": "AREA"
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List NPAs

GEThttps://didm.sendo.cloud/qbert-web/api/data/npas

Common catalog, not filtered by account, read-only.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/npas?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "id": 9,
      "prefix": "1",
      "location": "Lima"
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List Internal Area Codes

GEThttps://didm.sendo.cloud/qbert-web/api/data/internalAreaCodes

Common catalog, not filtered by account, read-only.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/internalAreaCodes?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "areaCode": "1",
      "destination": {
        "id": 143,
        "name": "Peru Inbound",
        "description": "Geographic numbers, Lima area",
        "country": {
          "id": 51,
          "name": "Peru",
          "shortName": "Peru",
          "isoCode": "PE",
          "e164Code": {
            "id": 51,
            "description": "Peru",
            "e164CodeType": "COUNTRY"
          },
          "geographicAreaId": 7,
          "domestic": false,
          "international": true
        },
        "destinationType": "INBOUND",
        "e164Code": {
          "id": 511,
          "description": "Lima",
          "e164CodeType": "AREA"
        }
      }
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List Fixed/Mobile Codes

GEThttps://didm.sendo.cloud/qbert-web/api/data/fixedMobileCodes

Common catalog, not filtered by account, read-only.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/fixedMobileCodes?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "name": "Lima Mobile",
      "code": "1",
      "country": {
        "id": 51,
        "name": "Peru",
        "shortName": "Peru",
        "isoCode": "PE",
        "e164Code": {
          "id": 51,
          "description": "Peru",
          "e164CodeType": "COUNTRY"
        },
        "geographicAreaId": 7,
        "domestic": false,
        "international": true
      },
      "codeType": "MOBILE"
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List Activation Requirements

GEThttps://didm.sendo.cloud/qbert-web/api/data/activationRequirements

Common catalog, not filtered by account, read-only.

Query Parameters


FieldTypeDescriptionDefault ValueOptionalExample
pageintegerPage number. Starts at 1, not 0.1Yes1
sizeintegerElements per page.20Yes50
sortstringField and sort direction: field,asc|desc. Can be repeated to sort by multiple fields.noneYesid,desc

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/activationRequirements?page=1&size=50&sort=id,desc' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
{
  "content": [
    {
      "destination": {
        "id": 143,
        "name": "Peru Inbound",
        "description": "Geographic numbers, Lima area",
        "country": {
          "id": 51,
          "name": "Peru",
          "shortName": "Peru",
          "isoCode": "PE",
          "e164Code": {
            "id": 51,
            "description": "Peru",
            "e164CodeType": "COUNTRY"
          },
          "geographicAreaId": 7,
          "domestic": false,
          "international": true
        },
        "destinationType": "INBOUND",
        "e164Code": {
          "id": 511,
          "description": "Lima",
          "e164CodeType": "AREA"
        }
      },
      "didNumberTypes": [
        "GEOGRAPHIC"
      ],
      "activationRequirementTypes": [
        "PROOF_OF_ADDRESS",
        "PROOF_OF_IDENTITY"
      ]
    }
  ],
  "totalElements": 137,
  "totalPages": 3,
  "number": 0,
  "size": 50,
  "first": true,
  "last": false,
  "empty": false
}

Server responses.


List Number Types

GEThttps://didm.sendo.cloud/qbert-web/api/data/numberTypes

Common catalog, not filtered by account, read-only.

This resource is a small, fixed catalog — the response is a plain array, not paginated.

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/numberTypes' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
[
  {
    "id": 1,
    "name": "NONE"
  },
  {
    "id": 2,
    "name": "GEOGRAPHIC"
  },
  {
    "id": 3,
    "name": "MOBILE"
  },
  {
    "id": 4,
    "name": "TOLL_FREE"
  }
]

Server responses.


List Features

GEThttps://didm.sendo.cloud/qbert-web/api/data/features

Common catalog, not filtered by account, read-only.

This resource is a small, fixed catalog — the response is a plain array, not paginated.

Request.


curl --location 'https://didm.sendo.cloud/qbert-web/api/data/features' --header 'Authorization: Bearer YOUR_TOKEN'
Response
CodeDescription
200OK
[
  {
    "id": 1,
    "name": "NONE"
  },
  {
    "id": 2,
    "name": "CALL_IN"
  },
  {
    "id": 3,
    "name": "CALL_OUT"
  }
]

Server responses.