This request will return the list of all external licenses for a specific customer.
| URL | https://api.telecomx.dk/externalLicense | ||
|---|---|---|---|
| Method | GET | ||
| Access level | RESELLER if customer belongs to the reseller or a sub reseller. RESELLER_ADMIN ADMIN. Requires that the External Licenses service is enabled on the customer/reseller account. | ||
| Query | offset | Number | [optional] Index of the first license to return, default 0. |
| limit | Number | [optional] The number of licenses to return, default 100, min 1, max 500. |
|
| customer | String | [optional] Id of the customer to list licenses for, defaults to user's own customer if not set. |
|
| reseller | String | [optional] Id of the reseller to list licenses for. If this value is given, it will fetch all licenses of this reseller's customers. |
|
| withoutProduct | Boolean | [optional] When true, only returns licenses that do not have a Telecom X product assigned yet. |
|
| format | String | [optional] Format to get the data in. Allowed values are csv and json. Defaults to json. |
|
| sort | String | [optional] Sort field. Allowed values are PLATFORM_ID, NAME, UNITS, START, END, INVOICE_START, PLATFORM_CUSTOMER_ID, PRODUCT_CODE, PRODUCT_NAME, CUSTOMER_NAME, WHOLESALE and PRICE. |
|
https://api.telecomx.dk/externalLicense https://api.telecomx.dk/externalLicense?customer=1234567890ABCDEF12345678 https://api.telecomx.dk/externalLicense?customer=1234567890ABCDEF12345678&withoutProduct=true https://api.telecomx.dk/externalLicense?reseller=1234567890ABCDEF12345678&withoutProduct=true
| JSON object | ||
|---|---|---|
| Property | Type | Description |
| offset | Number | Index of the first license returned. |
| limit | Number | Number of licenses to return. Note that the actual number of items returned may be lower. |
| total | Number | Number of licenses that can be returned when offset and limit is not considered. This is to be used for paging through the data. |
| externalLicenses | Array | List of licenses, see definition below. |
| External license | ||
|---|---|---|
| Property | Type | Description |
| _id | ObjectId | Unique ID |
| name | String | Name of the license in the external system, if any. |
| platformId | Enum | Platform enum of system this is synchronized from. Allowed value is ALSO. |
| platformLicenseId | String | The license's ID in the external system - can be a number, string, objectId, etc., depending on the system. |
| customer | Id or Object | The Telecom X customer this license belongs to. Plain customer id in the per-customer listing; the resolved customer document (see API : Customer Get) when listing by reseller. |
| product | Object | The Telecom X product this license is sold as — the resolved product document with all fields except cost (see API : Product Get). Null if no product is assigned; the raw product id if the referenced product no longer exists. |
| billingCustomer | ObjectId | [optional] Override billing customer; defaults to the license owner. |
| units | number | Amount of licenses. |
| invoicedUntil | Date | When this license is billed until in Telecom X |
| invoiceStart | Date | Date that Telecom X will start to bill this license from. If null, license will not be billed. |
| created | Date | Timestamp of when the license was fetched from the external system, and saved to Telecom X |
| lastSeen | Date | Timestamp of when the license was last seen in the external system |
| start | Date | Billing start date of the license. |
| end | Date | Billing end date/expiration date, null if not given |
| also | Object | Contains properties only related to ALSO. |
| also.wholesalePrice | Number | Wholesale price of the license, fetched from ALSO. Used as a guideline for the product's wholesale price. |
| also.price | Number | Customer price of the license, fetched from ALSO. Used as a guideline for the product's price. |
| also.renew | Boolean | Whether the license will be renewed, when license passes the end date |
| also.bindingPeriod | String | Defines for how long the license is bound. Allowed values are MONTHLY, QUARTERLY, YEARLY |
| also.lockedWholesalePrice | Number | Wholesale price of the license, which will be used until the binding period is over. |
| also.lockedPrice | Number | Customer price of the license, which will be used until the binding period is over. |
| also.billingType | String | Billing type from ALSO. |
When format=csv is set, the response is a downloadable CSV file (semicolon-separated, Danish locale, Content-Disposition: attachment;filename=external-licenses.csv) rather than JSON. Columns correspond to the JSON response fields above; when listing by reseller a customer name column is prepended. The CSV always contains the full result set (offset and limit are ignored).
Note that properties holding no value may be omitted from the object.
{ "offset": 0, "limit": 100, "total": 2, "externalLicenses": [ { "_id": "650000000000000000000001", "name": "Office E3 2026", "platformId": "ALSO", "platformLicenseId": "571481273", "customer": "650000000000000000000002", "product": { "_id": "650000000000000000000003", "type": "EXTERNAL_LICENSE", "productCode": "M365-E3", "name": "Microsoft 365 E3", "unitType": "UNITS", "recurrence": "MONTHLY", "wholesale": 75, "price": 125, "customer": "650000000000000000000002", "inheritFromReseller": "650000000000000000000004" }, "units": 15, "invoicedUntil": "2026-06-30T22:00:00.000Z", "invoiceStart": "2026-01-31T23:00:00.000Z", "created": "2026-01-25T12:35:00.000Z", "lastSeen": "2026-07-30T12:35:00.000Z", "start": "2026-01-05T00:00:00.000Z", "end": "2027-01-05T00:00:00.000Z", "also": { "billingType": "Monthly (with 1-year commitment) - P1Y", "wholesalePrice": 51.32, "price": 182.12, "renew": false, "bindingPeriod": "YEARLY", "lockedWholesalePrice": 75, "lockedPrice": 125 } }, { "_id": "650000000000000000000005", "name": "Office Business Premium", "platformId": "ALSO", "platformLicenseId": "571481274", "customer": "650000000000000000000002", "product": null, "units": 5, "created": "2026-02-25T09:00:00.000Z", "lastSeen": "2026-07-30T12:35:00.000Z", "start": "2026-02-05T00:00:00.000Z", "end": null, "also": { "billingType": "Monthly - P1M", "wholesalePrice": 110, "price": 180, "renew": true, "bindingPeriod": "MONTHLY", "lockedWholesalePrice": null, "lockedPrice": null } } ] }
| Error code | Message | Description |
|---|---|---|
| 403 | access_denied | Required feature not enabled |
| 403 | access_denied | Insufficient access level |
| 404 | customer | Customer not found |
| 409 | parentReseller | Customer has no parent reseller |
| 422 | customer | Customer id is not valid |
| 422 | reseller | Reseller id is not valid |
| 422 | withoutProduct | Value is not a valid boolean |
| 500 | internal_error | <Unspecified> |