Table of Contents
API : Customer Update
Introduction
This request will update an existing customer.
When updating a customer, you do not need to send the full customer object. As little as a single property can be sent, so only send the properties you need to update, and the rest will be untouched.
Request
| URL | https://api.telecomx.dk/customer/CUSTOMER_ID | ||
|---|---|---|---|
| Method | POST | ||
| Access level | MANAGER or OWNER if user belongs to the customer. RESELLER if customer belongs to the reseller or a subreseller. RESELLER_ADMIN or ADMIN. |
||
| Param | CUSTOMER_ID | Id of the customer (24 hex-char string) | |
| Body | name | String | Name of the customer. |
| phoneNumber | String | Primary customer phone number. | |
| faxNumber | String | [optional] primary customer fax number. |
|
| state | Enum | State of the customer: ACTIVE, BLOCKED (all services disabled). A customer cannot be deleted by setting the state, instead use the delete api. | |
| parentReseller | Id | [optional] Id of the reseller the customer belongs to. Top level resellers does not have a parent reseller. Requires access level RESELLER or ADMIN to set, otherwise it is ignored. A reseller may point to self or sub resellers, only admins may set a customer as top level (null). |
|
| emailAddress | String | Primary e-mail address. | |
| website | String | [optional] Primary website address. |
|
| notes | String | [optional] Notes about the customer (only visible for reseller/admin, can only be changed by RESELLER and up). |
|
| addresses (at least 1 must be present at any time) | |||
| addresses[].primary | Boolean | True if this is the primary address. | |
| addresses[].alternativeName | String | [optional] Alternative name for this address. |
|
| addresses[].address | String | Street, number etc., min 5 chars. | |
| addresses[].zip | String | Zip code, if country is Denmark or blank, zip is validated, otherwise min. 3 chars. | |
| addresses[].city | String | City, min. 2 chars. If country is Denmark (or blank), the city is automatically set from the zip code. | |
| addresses[].state | String | [optional] State, only applies to US addresses. |
|
| addresses[].country | String | ISO3166-1 2-char country code. | |
| addresses[].fixedNumber | String | [optional] Fixed phone number on this address, if it differs from the primary. |
|
| addresses[].faxNumber | String | [optional] Fax number on this address, if it differs from the primary. |
|
| addresses[].municipalityCode | Integer | Municipality code, automatically set by the system. | |
| Finanical settings | |||
| finance.vatNumber | String | VAT number. | |
| finance.accountingSystemId | String | [optional] Id for linking the customer to the accounting system that does the invoicing. |
|
| finance.accountingSystemRef | String | [optional] Name of the customer contact in the accounting system that does the invoicing. |
|
| finance.invoiceMethod | Enum | How the customer wishes to be invoiced: MAIL, EMAIL, ELECTRONIC. | |
| finance.emailAddress | String | If invoiceMethod is EMAIL, this is the e-mail address to send it to. | |
| finance.electronicAddress | String | If invoiceMethod is ELECTRONIC, this is the address to send it to. | |
| finance.paymentTerms | Enum | Payment terms: DAYS_5, DAYS_7, DAYS_14, DAYS_30, DAYS_60, DAYS_90, CURRENT_MONTH_PLUS_DAYS_7, CURRENT_MONTH_PLUS_DAYS_14, CURRENT_MONTH_PLUS_DAYS_30. | |
| finance.sipUsageLimit | Integer | Combined maximum monthly usage in DKK for all SIP accounts. Range 1000-1000000. Values above 25000 are reduced to 25000 unless set by an ADMIN or a RESELLER_ADMIN with tele rights. | |
| finance.mvnoUsageLimit | Integer | Maximum monthly usage in DKK for an MVNO account. Range 100-20000. Values above 5000 are reduced to 5000 unless set by an ADMIN or a RESELLER_ADMIN with tele rights. | |
| finance.channelLimit | Integer | Maximum number of concurrent calls the customer may conduct on SIP accounts. Range 2-1000. | |
| finance.numberRentProduct | Id | Id of the product used to invoice number rent. | |
| finance.durationMethod | Number | 0 for standard, >0 for custom (ADMIN or RESELLER_ADMIN with finance rights only). | |
| finance.skipInvoicing | Boolean | This customer's invoices will not be shown in various endpoints that fetches lists of invoices. Used in cases where resellers don't want to bill a specific customer. Defaults to false. Can only be set by ADMIN or a RESELLER_ADMIN with finance rights. | |
| finance.skipResellerInvoicing | Boolean | If true, this customer is skipped when the reseller's own invoicing is generated. Defaults to false. Can only be set by ADMIN or a RESELLER_ADMIN with finance rights. | |
| isReseller | Boolean | True if customer is a reseller who can create and manage other customers. Can only be set by RESELLER_ADMIN and up. | |
| resellerPortal | String | [optional] If customer is a reseller and have a customized management portal, this is the URL for the site. The standard site check if this points to it and will then customize the branding accordingly. |
|
| resellerInvoice | Boolean | [optional] True if the platform sends out invoices to the customers (e-mail and electronic), false if reseller sends out invoices from their financial system. |
|
| resellerNextInvoiceNumber | Integer | [optional] Invoice number to use on the next invoice that is generated. auto-incremented when an invoice is created. Only used if resellerInvoice is true. |
|
| resellerSkin | String | Name of the skin to apply on UI for this resellers customers: EARTH, TEAL, DARK. | |
| resellerEmailAsSender | Boolean | Sends e-mails with the reseller's own e-mail as sender. Requires the reseller setting up an SPF-record for Telecom X, for it to work properly. (min. RESELLER only) | |
| resellerCustomerGroups | Array | List of customer groups the reseller wish to use. | |
| resellerCustomerGroups[]._id | Id | Id of group. | |
| resellerCustomerGroups[].name | String | Name of group. | |
| MVNO settings | |||
| mvno.dataTopUpSms | Boolean | If true, then a link allowing a mobile account to buy top-up data, will be included in the SMS that warns the mobile user that they are approaching their data limit. Can only be set by OWNER and up; ignored unless the customer has the MVNO feature. | |
| Misc settings | |||
| features | Array | List of features in the TelecomX platform that the customer has access to. Can only be set by ADMIN or RESELLER users. A reseller can only assign features that the reseller has to the resellers customers. The available features are: CUSTOMER - Basics, addresses, financial, usage limits, employees SIP - SIP trunks MVNO - Mobile phones PBX - Hosted PBX, SIP phones, music on hold, Webhooks (auto-enables SIP, MVNO, CUSTOMER) DNS - Domain management INTERNET - Fiber & xDSL IPTVPRIVATE - Private IPTV customer IPTVBUSINESS - Business IPTV customer FLEXCARE - FlexCare HealthTech ZEROTIER - ZeroTier networking EXTERNAL_LICENSES - external licenses NETWORK_MANAGEMENT - allows managing network devices DIALOG - FlexCare dialog CHANGELOG - logging to short term changelog is enabled ORGANIZATION - customer has organizational rights. |
|
| organizationResellers | Array | List of ids of resellers this organization can manage. Can only be set by RESELLER_ADMIN and up, and only when the customer has the ORGANIZATION feature. | |
| authenticationSecurity | String | [optional] The required security level for all users when performing login: NONE - only username/password (default) SMS - 2FA using SMS required AUTHENTICATOR - 2FA using authenticator app. |
|
| custom | Object | [optional] Optional custom data that 3rd parties may append to a customer, max. 4Kb. |
|
| Storage information | |||
| storage.total | Number | Maximum file storage capacity in bytes, default is 1 gigabyte (can only be set by RESELLER and up) | |
| Integrations | |||
| integrations | Object | Contains information about 3rd party integrations | |
| integrations.billing | Object | Contains billing integrations | |
| integrations.billing.economic | Object | Integration for visma e-conomic (settings can only be changed by RESELLER and up, for customers that are resellers) | |
| integrations.billing.economic.enabled | Boolean | True if the integration is enabled, default false. | |
| integrations.billing.economic.agreementGrantToken | String | Agreement grant token. It's set when allowing the “Telecom X Billing Integration” e-conomic app to access the reseller's e-conomic account. | |
| integrations.billing.economic.accrual | Boolean | Determines whether the reseller wants to use the accrual-module in e-conomic. Requires the module to be bought in e-conomic. | |
| integrations.billing.rackbeat | Object | Integration for rackbeat | |
| integrations.billing.rackbeat.enabled | Boolean | True if the integration is enabled, defaults false | |
| integrations.billing.rackbeat.bearerToken | String | Bearer token created from rackbeat, used to verify against their API | |
| integrations.billing.uniconta | Object | Integration for Uniconta | |
| integrations.billing.uniconta.enabled | Boolean | True if the integration is enabled, defaults false | |
| integrations.billing.uniconta.username | String | Username for logging into Uniconta | |
| integrations.billing.uniconta.password | String | Password for logging into Uniconta | |
| integrations.billing.uniconta.companyId | String | Company Id the user is connected to, in Uniconta | |
| integrations.licenses | Object | Licenses from 3rd parties, e.g ALSO. | |
| integrations.licenses.also | Object | ALSO licenses integration (can only be set by RESELLER and up) | |
| integrations.licenses.also.enabled | Boolean | Whether this customer/reseller should have their licenses synchronized from ALSO, etc. | |
| integrations.licenses.also.username | String | ALSO username | |
| integrations.licenses.also.password | String | ALSO password | |
| integrations.licenses.also.customerId | String | The customer's ID from ALSO. | |
| integrations.criipto | Object | Settings for the integration with criipto | |
| integrations.criipto.enabled | Boolean | True if the integration is enabled, defaults false | |
| integrations.criipto.clientId | String | UUID for creating signature orders with criipto | |
| integrations.criipto.clientSecret | String | Client secret for creating signature orders with criipto | |
| integrations.criipto.domain | String | Domain for redirection login | |
| integrations.criipto.clientIdRealm | String | Client Id for domain | |
| integrations.ms365 | Object | Settings for integration with Microsoft 365 | |
| integrations.ms365.enabled | Boolean | Whether this integration is enabled for this customer. | |
| integrations.ms365.tenantId | String | Id of customers tenant in MS 365 | |
| integrations.ms365.verified | Boolean | True if connection to tenant has been verified | |
| integrations.ms365.calendarSync | Boolean | True to integrate users calendars | |
| integrations.ms365.contactsSync | Boolean | True to integrate users contacts | |
| integrations.ms365.orgContactsSync | Boolean | True to integrate the organisation contacts | |
| integrations.ms365.presenceSync | Boolean | True to sync presence and/or Trams InAMeeting/InACall status | |
| integrations.ms365.calendarShowAsMappings | Object | Calendar mappings | |
| integrations.ms365.calendarShowAsMappings.free | String | Presence state to map free to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK, HOLIDAY or IGNORE to do nothing. | |
| integrations.ms365.calendarShowAsMappings.tentative | String | Presence state to map tentative to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK, HOLIDAY or IGNORE to do nothing. | |
| integrations.ms365.calendarShowAsMappings.busy | String | Presence state to map busy to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK, HOLIDAY or IGNORE to do nothing. | |
| integrations.ms365.calendarShowAsMappings.oof | String | Presence state to map oof to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK, HOLIDAY or IGNORE to do nothing. | |
| integrations.ms365.calendarShowAsMappings.workingElsewhere | String | Presence state to map workingElsewhere to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK, HOLIDAY or IGNORE to do nothing. | |
| integrations.ms365.calendarCategoryMappings | Array | List of calendar category mappings | |
| integrations.ms365.calendarCategoryMappings[].category | String | Category label to map to presence state. | |
| integrations.ms365.calendarCategoryMappings[].presence | String | Presence state to map the category to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK or HOLIDAY. | |
| integrations.mvnoPrivate | Object | Settings for integration with MVNO for private customers (can only be set by RESELLER_ADMIN and up) | |
| integrations.mvnoPrivate.enabled | Boolean | True to enable the integration | |
| integrations.mvnoPrivate.portal | String | The portal URL to redirect customers to | |
| Service-level Agreements | (Can only be set by RESELLER_ADMIN and up) | ||
| serviceLevelAgreements | Object | Contains information about service-level agreements between the customer and their reseller. Only used currently for specific customers, and is not available to everyone. | |
| serviceLevelAgreements.remote | Object | Contains information about remote service-level agreement | |
| serviceLevelAgreements.remote.responseTime | Number | Response-time in hours. Valid values are 1, 3, 8, 24. | |
| serviceLevelAgreements.remote.days | String | Which days of the week this service-level agreement covers. Valid values are “WEEK_DAYS”, “WEEK_DAYS_AND_SATURDAY”, “ALL” | |
| serviceLevelAgreements.remote.period | String | Which period/hours in the day this service-level-agreement covers. Valid values are “07:45-16:00”, “08:00-22:00”, “00:00-23:59” | |
| serviceLevelAgreements.onsite | Object | Contains information about on-site service-level agreement | |
| serviceLevelAgreements.onsite.responseTime | Number | Response-time in hours. Valid values are 1, 3, 8, 24. | |
| serviceLevelAgreements.onsite.days | String | Which days of the week this service-level agreement covers. Valid values are “WEEK_DAYS”, “WEEK_DAYS_AND_SATURDAY”, “ALL” | |
| serviceLevelAgreements.onsite.period | String | Which period/hours in the day this service-level-agreement covers. Valid values are “07:45-16:00”, “08:00-22:00”, “00:00-23:59” | |
| serviceLevelAgreements.services | Object | Which services are covered as a part of this service-level agreement. | |
| serviceLevelAgreements.services.phoneSupportErrors | Boolean | Phone support - troubleshooting/bug fixing included | |
| serviceLevelAgreements.services.phoneSupportChanges | Boolean | Phone support - functional changes included | |
| serviceLevelAgreements.services.onsiteInclusive | Boolean | On-site assistance included | |
| serviceLevelAgreements.services.hardwareInclusive | Boolean | Hardware-parts included | |
| serviceLevelAgreements.services.mitelSwas | Boolean | Mitel software assurance included | |
| serviceLevelAgreements.services.prescriptionStatus | Boolean | Prescription status included, used when integrating with medical systems. | |
| simTag | String | Optional name of the eSIM pool to assign sims from. | |
| bindingDate | Date | A date field that can be used by resellers to document when a customer's contract with their reseller expires. | |
| customerGroup | Id | Id of group the customer belongs to, null if not using groups. | |
Access note: MANAGER and OWNER users cannot change notes, isReseller, resellerPortal, resellerEmailAsSender, storage or the finance fields sipUsageLimit, mvnoUsageLimit, channelLimit, paymentTerms, accountingSystemId, numberRentProduct and vatNumber - these fields are ignored when sent. finance.numberRentUntil and finance.numberRentCount are read-only for everybody.
Request body example
{ "name": "Example Company", "phoneNumber": "+4588888888", "emailAddress": "info@example.dk", "finance": { "sipUsageLimit": 15000 } }
Response
The response will be the updated customer, if no errors occurred.
| Json object | ||
|---|---|---|
| _id | Id | Unique customer id |
| name | String | Name of the customer |
| phoneNumber | String | Primary customer phone number |
| faxNumber | String | primary customer fax number |
| state | Enum | State of the customer: ACTIVE, BLOCKED (all services disabled), DELETED |
| parentReseller | Id | Id of the reseller the customer belongs to (only top level resellers does not have a parent reseller) |
| emailAddress | String | Primary e-mail address |
| website | String | Primary website address |
| notes | String | Notes about the customer (only visible for reseller) |
| Addresses | ||
| addresses[]._id | Id | Id of address |
| addresses[].primary | Boolean | True if this is the primary address |
| addresses[].alternativeName | String | Alternative name for this address |
| addresses[].address | String | Street, number etc., min. 5 chars. |
| addresses[].zip | String | Zip code |
| addresses[].city | String | City |
| addresses[].state | String | State |
| addresses[].country | String | Country |
| addresses[].fixedNumber | String | Fixed phone number on this address, if it differs from the primary |
| addresses[].faxNumber | String | Fax number on this address, if it differs from the primary |
| addresses[].municipalityCode | Integer | Municipality code, automatically set by the system |
| Financial settings | ||
| finance.vatNumber | String | VAT number |
| finance.accountingSystemId | String | Id for linking the customer to the accounting system that does the invoicing |
| finance.accountingSystemRef | String | Saved customer contact in the accounting system that does the invoicing |
| finance.invoiceMethod | String | How the customer wishes to be invoiced: MAIL, EMAIL, ELECTRONIC |
| finance.emailAddress | String | If invoiceMethod is EMAIL, this is the e-mail address to send it to |
| finance.electronicAddress | String | If invoiceMethod is ELECTRONIC, this is the address to send it to |
| finance.paymentTerms | String | Payment terms: DAYS_5, DAYS_7, DAYS_14, DAYS_30, DAYS_60, DAYS_90, CURRENT_MONTH_PLUS_DAYS_7, CURRENT_MONTH_PLUS_DAYS_14, CURRENT_MONTH_PLUS_DAYS_30 |
| finance.sipUsageLimit | Integer | Combined maximum monthly usage in DKK for all SIP accounts |
| finance.mvnoUsageLimit | Integer | Maximum monthly usage in DKK for a MVNO account |
| finance.channelLimit | Integer | Maximum number of concurrent calls the customer may conduct on SIP accounts |
| finance.numberRentProduct | Id | Id of the product used to invoice number rent. |
| finance.numberRentUntil | Date | Date that number rent has been invoiced until. |
| finance.numberRentCount.singles | Integer | Number of single phone numbers counted during last invoicing. |
| finance.numberRentCount.hundreds | Integer | Number of 100-number-series counted during last invoicing. |
| finance.numberRentLastProduct | Id | Id of the product used at the last number rent invoicing. |
| finance.durationMethod | Number | 0 for standard, >0 for custom (ADMIN only). |
| finance.skipInvoicing | Boolean | This customer's invoices will not be shown in various endpoints that fetches lists of invoices. Used in cases where resellers don't want to bill a specific customer. Defaults to false. |
| finance.skipResellerInvoicing | Boolean | If true, this customer is skipped when the reseller's own invoicing is generated. |
| finance.billingCustomers | Array | List of ids of billing customers linked to this customer. |
| isReseller | Boolean | True if customer is a reseller who can create and manage other customers |
| resellerPortal | String | If customer is a reseller and have a customized management portal, this is the URL for the login page. |
| resellerInvoice | Boolean | True if the platform sends out invoices to the customers (e-mail and electronic), false if reseller sends out invoices from their financial system. |
| resellerNextInvoiceNumber | Integer | Invoice number to use on the next invoice that is generated. auto-incremented when an invoice is created. Only used if resellerInvoice is true. |
| resellerSkin | String | Name of the skin to apply on UI for this resellers customers: EARTH, TEAL, DARK. |
| resellerEmailAsSender | Boolean | Sends e-mails with the reseller's own e-mail as sender. Requires the reseller setting up an SPF-record for Telecom X, for it to work properly. |
| resellerCustomerGroups | Array | List of customer groups the reseller wish to use. |
| resellerCustomerGroups[]._id | Id | Id of group. |
| resellerCustomerGroups[].name | String | Name of group. |
| MVNO settings | ||
| mvno.dataTopUpSms | Boolean | If true, a link allowing a mobile account to buy top-up data is included in the data-limit warning SMS, for all mobile accounts on this customer. |
| Misc settings | ||
| features | Array | List of features in the TelecomX platform that the customer has access to. Can only be set by ADMIN or RESELLER users. A reseller can only assign features that the reseller has to the resellers customers. The available features are: CUSTOMER - Basics, addresses, financial, usage limits, employees SIP - SIP trunks MVNO - Mobile phones PBX - Hosted PBX, SIP phones, music on hold, Webhooks (auto-enables SIP, MVNO, CUSTOMER) DNS - Domain management INTERNET - Fiber & xDSL IPTVPRIVATE - Private IPTV customer IPTVBUSINESS - Business IPTV customer FLEXCARE - FlexCare HealthTech ZEROTIER - ZeroTier networking EXTERNAL_LICENSES - external licenses NETWORK_MANAGEMENT - allows managing network devices DIALOG - FlexCare dialog CHANGELOG - logging to short term changelog is enabled ORGANIZATION - customer has organizational rights. |
| organizationResellers | Array | List of ids of resellers this organization can manage (only if customer has ORGANIZATION feture, otherwise null). |
| authenticationSecurity | String | The required security level for all users when performing login: NONE - only username/password SMS - 2FA using SMS required AUTHENTICATOR - 2FA using authenticator app. |
| custom | Object | Optional custom data that 3rd parties may append to a customer, max. 4Kb |
| Storage information | ||
| storage.total | Number | Maximum file storage capacity in bytes, default is 1 gigabyte |
| Integrations | ||
| integrations | Object | Contains information about 3rd party integrations |
| integrations.billing | Object | Contains billing integrations |
| integrations.billing.economic | Object | Integration for visma e-conomic |
| integrations.billing.economic.enabled | Boolean | True if the integration is enabled, default false. |
| integrations.billing.economic.agreementGrantToken | String | Agreement grant token. It's set when allowing the “Telecom X Billing Integration” e-conomic app to access the reseller's e-conomic account. |
| integrations.billing.economic.accrual | Boolean | Determines whether the reseller wants to use the accrual-module in e-conomic. Requires the module to be bought in e-conomic. |
| integrations.billing.rackbeat | Object | Integration for rackbeat |
| integrations.billing.rackbeat.enabled | Boolean | True if the integration is enabled |
| integrations.billing.rackbeat.bearerToken | String | Bearer token created from rackbeat, used to verify against their API |
| integrations.billing.uniconta | Object | Integration for Uniconta |
| integrations.billing.uniconta.enabled | Boolean | True if the integration is enabled, defaults false |
| integrations.billing.uniconta.username | String | Username for logging into Uniconta |
| integrations.billing.uniconta.password | String | Password for logging into Uniconta |
| integrations.billing.uniconta.companyId | String | Company Id the user is connected to, in Uniconta |
| integrations.licenses | Object | Licenses from 3rd parties, e.g ALSO. |
| integrations.licenses.also | Object | ALSO licenses integration |
| integrations.licenses.also.enabled | Boolean | Whether this customer/reseller should have their licenses synchronized from ALSO, etc. |
| integrations.licenses.also.username | String | ALSO username |
| integrations.licenses.also.password | String | ALSO password |
| integrations.licenses.also.customerId | String | The customer's ID from ALSO. |
| integrations.licenses.also.tenantId | String | The Microsoft tenant ID of the customer, synchronized from ALSO. |
| integrations.criipto | Object | Settings for the integration with criipto |
| integrations.criipto.enabled | Boolean | True if the integration is enabled, defaults false |
| integrations.criipto.clientId | String | UUID for creating signature orders with criipto |
| integrations.criipto.clientSecret | String | Client secret for creating signature orders with criipto |
| integrations.criipto.domain | String | Domain for redirection login |
| integrations.criipto.clientIdRealm | String | Client Id for domain |
| integrations.ms365 | Object | Settings for integration with Microsoft 365 |
| integrations.ms365.enabled | Boolean | Whether this integration is enabled for this customer. |
| integrations.ms365.tenantId | String | Id of customers tenant in MS 365 |
| integrations.ms365.verified | Boolean | True if connection to tenant has been verified |
| integrations.ms365.calendarSync | Boolean | True to integrate users calendars |
| integrations.ms365.contactsSync | Boolean | True to integrate users contacts |
| integrations.ms365.orgContactsSync | Boolean | True to integrate the organisation contacts |
| integrations.ms365.presenceSync | Boolean | True to sync presence and/or Trams InAMeeting/InACall status |
| integrations.ms365.calendarShowAsMappings | Object | Calendar mappings |
| integrations.ms365.calendarShowAsMappings.free | String | Presence state to map free to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK, HOLIDAY or IGNORE to do nothing. |
| integrations.ms365.calendarShowAsMappings.tentative | String | Presence state to map tentative to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK, HOLIDAY or IGNORE to do nothing. |
| integrations.ms365.calendarShowAsMappings.busy | String | Presence state to map busy to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK, HOLIDAY or IGNORE to do nothing. |
| integrations.ms365.calendarShowAsMappings.oof | String | Presence state to map oof to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK, HOLIDAY or IGNORE to do nothing. |
| integrations.ms365.calendarShowAsMappings.workingElsewhere | String | Presence state to map workingElsewhere to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK, HOLIDAY or IGNORE to do nothing. |
| integrations.ms365.calendarCategoryMappings | Array | List of calendar category mappings |
| integrations.ms365.calendarCategoryMappings[].category | String | Category label to map to presence state. |
| integrations.ms365.calendarCategoryMappings[].presence | String | Presence state to map the category to: AVAILABLE, BUSY, OUT_OF_OFFICE, OFF_WORK or HOLIDAY. |
| integrations.mvnoPrivate | Object | Settings for integration with MVNO for private customers |
| integrations.mvnoPrivate.enabled | Boolean | True to enable the integration |
| integrations.mvnoPrivate.portal | String | The portal URL to redirect customers to |
| Service-level Agreements | (Can only be viewed by RESELLER, RESELLER_ADMIN or ADMIN) | |
| serviceLevelAgreements | Object | Contains information about service-level agreements between the customer and their reseller. Only used currently for specific customers, and is not available to everyone. |
| serviceLevelAgreements.remote | Object | Contains information about remote service-level agreement |
| serviceLevelAgreements.remote.responseTime | Number | Response-time in hours. Valid values are 1, 3, 8, 24. |
| serviceLevelAgreements.remote.days | String | Which days of the week this service-level agreement covers. Valid values are “WEEK_DAYS”, “WEEK_DAYS_AND_SATURDAY”, “ALL” |
| serviceLevelAgreements.remote.period | String | Which period/hours in the day this service-level-agreement covers. Valid values are “07:45-16:00”, “08:00-22:00”, “00:00-23:59” |
| serviceLevelAgreements.onsite | Object | Contains information about on-site service-level agreement |
| serviceLevelAgreements.onsite.responseTime | Number | Response-time in hours. Valid values are 1, 3, 8, 24. |
| serviceLevelAgreements.onsite.days | String | Which days of the week this service-level agreement covers. Valid values are “WEEK_DAYS”, “WEEK_DAYS_AND_SATURDAY”, “ALL” |
| serviceLevelAgreements.onsite.period | String | Which period/hours in the day this service-level-agreement covers. Valid values are “07:45-16:00”, “08:00-22:00”, “00:00-23:59” |
| serviceLevelAgreements.services | Object | Which services are covered as a part of this service-level agreement. |
| serviceLevelAgreements.services.phoneSupportErrors | Boolean | Phone support - troubleshooting/bug fixing included |
| serviceLevelAgreements.services.phoneSupportChanges | Boolean | Phone support - functional changes included |
| serviceLevelAgreements.services.onsiteInclusive | Boolean | On-site assistance included |
| serviceLevelAgreements.services.hardwareInclusive | Boolean | Hardware-parts included |
| serviceLevelAgreements.services.mitelSwas | Boolean | Mitel software assurance included |
| serviceLevelAgreements.services.prescriptionStatus | Boolean | Prescription status included, used when integrating with medical systems. |
| simTag | String | Optional name of the eSIM pool to assign sims from. |
| bindingDate | Date | A date field that can be used by resellers to document when a customer's contract with their reseller expires. |
| customerGroup | Id | Id of group the customer belongs to, null if not using groups. |
Note that properties holding no value may be omitted from the object.
Example
{ "_id": "650000000000000000000101", "name": "Example Company", "phoneNumber": "+4588888888", "faxNumber": "", "state": "ACTIVE", "parentReseller": "650000000000000000000201", "emailAddress": "info@example.dk", "website": "https://www.example.dk", "notes": "Contact the finance department before changing subscriptions.", "authenticationSecurity": "AUTHENTICATOR", "addresses": [ { "_id": "650000000000000000000301", "primary": true, "alternativeName": "", "address": "Eksempelvej 23", "zip": "4000", "city": "Roskilde", "country": "DK", "municipalityCode": 265 } ], "finance": { "vatNumber": "12345678", "accountingSystemId": "12345", "accountingSystemRef": "Finance department", "invoiceMethod": "EMAIL", "emailAddress": "invoice@example.dk", "electronicAddress": "", "paymentTerms": "DAYS_14", "sipUsageLimit": 15000, "mvnoUsageLimit": 3000, "channelLimit": 25, "numberRentProduct": "650000000000000000000401", "numberRentUntil": "2026-01-01T00:00:00.000Z", "numberRentCount": { "singles": 23, "hundreds": 1 }, "numberRentLastProduct": "650000000000000000000401", "durationMethod": 0, "billingCustomers": [], "skipInvoicing": false, "skipResellerInvoicing": false }, "isReseller": false, "resellerPortal": "", "resellerInvoice": false, "resellerNextInvoiceNumber": 1, "resellerSkin": "EARTH", "resellerEmailAsSender": false, "features": ["CUSTOMER", "SIP", "MVNO"], "organizationResellers": null, "mvno": { "dataTopUpSms": false }, "storage": { "total": 1073741824 }, "integrations": { "billing": { "economic": { "enabled": true, "agreementGrantToken": "<AGREEMENT_GRANT_TOKEN>", "accrual": false }, "rackbeat": { "enabled": false }, "uniconta": { "enabled": false } }, "licenses": { "also": { "enabled": false } }, "ms365": { "enabled": false }, "mvnoPrivate": { "enabled": false }, "criipto": { "enabled": false } }, "simTag": "providerx", "bindingDate": null, "customerGroup": "650000000000000000000601" }
Errors
| Error code | Message | Description |
|---|---|---|
| 422 | id | Customer id is invalid |
| 404 | not_found | Customer not found |
| 422 | multiple | Multiple errors (the inner property holds an array of errors this request generated, which can be any of the errors below) |
| 404 | name | Name is missing |
| 422 | name | Name is invalid |
| 422 | phoneNumber | Phone number is not a valid number |
| 404 | phoneNumber | Phone number is required for resellers with SIP, MVNO or PBX |
| 422 | faxNumber | Fax number is not a valid number |
| 422 | emailAddress | Email address is invalid |
| 404 | emailAddress | Email address is required for resellers with SIP, MVNO or PBX |
| 422 | parentReseller | Parent reseller id is invalid |
| 404 | parentReseller | The selected reseller was not found or not a reseller |
| 403 | parentReseller | Insufficient access level to set parentReseller |
| 422 | finance.emailAddress | E-mail address for invoicing is not valid |
| 422 | finance.channelLimit | Channel limit is out of range (2-1000) |
| 422 | finance.sipUsageLimit | SIP usage limit is out of range (1000-1000000) |
| 422 | finance.mvnoUsageLimit | MVNO usage limit is out of range (100-20000) |
| 404 | finance.numberRentProduct | Number rent product not found |
| 404 | numberRentProduct | No master number rent product available to inherit |
| 409 | numberRentProduct | There is no number rent product that can be assigned to this customer |
| 422 | storage.total | The customer's storage cannot be higher than the maximum storage limit |
| 422 | custom | Custom data too large, max. 4Kb |
| 404 | addresses | At least 1 address is required |
| 422 | addresses[index]._id | Invalid id |
| 422 | addresses[index].address | Invalid address |
| 422 | addresses[index].zip | Invalid danish zip code |
| 422 | addresses[index].zip | Invalid zip code |
| 422 | addresses[index].country | Invalid country |
| 422 | addresses[index].city | Invalid city |
| 422 | addresses[index].fixedNumber | Number is not a valid phone number |
| 422 | addresses[index].faxNumber | Number is not a valid phone number |
| 404 | integrations.mvnoPrivate.portal | Portal not found |
| 403 | features | Cannot assign features to customer - reseller does not have access to the features |
| 403 | features | Insufficient access level to add ORGANIZATION feature |
| 409 | features | IPTVPRIVATE and IPTVBUSINESS is mutual exclusive |
| 409 | features | Telecom X and Powernet cannot be organization customers |
| 409 | features_pbx | The PBX feature flag can not be added, before a PBX user product is added to the customer, or the users are deleted. |
| 409 | features_pbx_reseller | The PBX feature flag can not be added, because the reseller has no PBX user products to inherit from. |
| 404 | organizationResellers | One or more of the selected organization resellers were not found or not resellers |
| 409 | organizationResellers | Telecom X and Powernet cannot be added as organization resellers |
| 403 | access_denied | Insufficient access level |
| 500 | internal_error | <Unspecified> |
| 409 | address | Addresses in use, cannot be deleted |
| 409 | address | Addresses in use for Internet accounts cannot be changed |