api:networkmanagement:device:update
Table of Contents
API : Network Device Update
Introduction
This request will update a network device on a given customer.
A successful update queues a provisioning job that pushes the changes to the device, so the returned device is in state PROVISIONING until the job completes.
Request
| URL | https://api.telecomx.dk/network/device/DEVICE_ID | ||
|---|---|---|---|
| Method | POST | ||
| Access level | MANAGER or OWNER if user belongs to the customer. RESELLER if customer belongs to the reseller or a sub reseller. ADMIN. The customer must have the NETWORK_MANAGEMENT feature. |
||
| Param | DEVICE_ID | ID of network device | |
| Property | Type | Description | |
| Body | name | String | Name of device - max 64 characters. |
| notes | String | Free text note field - max 4096 characters. | |
| wifi | Object | WiFi settings - set to null if not used. | |
| wifi.enabled | Boolean | True if wifi is enabled on 2.4GHz. | |
| wifi.ssid | String | SSID of the 2.4GHz network - 1-32 characters, null if unused. | |
| wifi.password | String | Password of the 2.4GHz network - 8-63 characters, null if unused. | |
| wifi.enabled5G | Boolean | True if wifi is enabled on 5GHz. | |
| wifi.ssid5G | String | SSID of the 5GHz network - 1-32 characters, null if unused. | |
| wifi.password5G | String | Password of the 5GHz network - 8-63 characters, null if unused. | |
| wifi.enabled6G | Boolean | True if wifi is enabled on 6GHz. | |
| wifi.ssid6G | String | SSID of the 6GHz network - 1-32 characters, null if unused. | |
| wifi.password6G | String | Password of the 6GHz network - 8-63 characters, null if unused. | |
| wifi.bandsteering | Boolean | True to enable bandsteering (all bands have same SSID and clients will move freely between bands). | |
| dhcp | Object | DHCP settings - set to null if not used. | |
| dhcp.enable | Boolean | True to enable DHCP. | |
| dhcp.ipPoolStart | String | First IP address to assign to DHCP clients. Must be a usable host address within the device's LAN subnet, and not after ipPoolEnd. | |
| dhcp.ipPoolEnd | String | Last IP address to assign to DHCP clients. Must be a usable host address within the device's LAN subnet. | |
| dhcp.leaseTime | Number | Number of minutes DHCP leases last - 1 to 2880. | |
| dhcp.primaryDnsServer | String | IP address of DNS server clients shall use. | |
| dhcp.reservedClients[] | Array | List of DHCP clients with reservations. | |
| dhcp.reservedClients[].mac | String | MAC address of the client. | |
| dhcp.reservedClients[].ip | String | IP address to assign to the client. | |
| dhcp.reservedClients[].enable | Boolean | True if reservation is active. | |
| dhcp.reservedClients[].id | Number | Optional id of the reservation, as assigned by the device. | |
Only properties to update needs to be provided.
Query examples
{ "name": "My Primary Router", "wifi": { "ssid": "SkyNet", "password": "1NT3RN3T!" } }
Response
| Property | Type | Description |
|---|---|---|
| _id | Id | Unique id of the device. |
| state | String | Which state the device is in: ACTIVE, PROVISIONING, DELETING. A successful update leaves the device in PROVISIONING. |
| name | String | Name of device |
| model | Id | Id of the network device model |
| modelType | String | Model type |
| modelBrand | String | Brand name |
| modelDescription | String | Description of model |
| modelPicture | Id | Id of picture of the device model, on the image servers. |
| customer | Id | Customer the device belongs to |
| macAddress | String | MAC address |
| serialNumber | String | Serial number |
| mvnoAccount | Id | MVNO account that it is linked to. Used when the router is uplinked through a SIM-card. |
| activeSim | String | Number of the active SIM card in the device. |
| jobs | Number | Number of provisioning jobs currently in progress. |
| notes | String | Free text note field. |
| createdAt | Date | When the device was created. |
| wifi | Object | WiFi settings - set to null if not used. |
| wifi.enabled | Boolean | True if wifi is enabled on 2.4GHz. |
| wifi.ssid | String | SSID of the 2.4GHz network. |
| wifi.password | String | Password of the 2.4GHz network. |
| wifi.enabled5G | Boolean | True if wifi is enabled on 5GHz. |
| wifi.ssid5G | String | SSID of the 5GHz network. |
| wifi.password5G | String | Password of the 5GHz network. |
| wifi.enabled6G | Boolean | True if wifi is enabled on 6GHz. |
| wifi.ssid6G | String | SSID of the 6GHz network. |
| wifi.password6G | String | Password of the 6GHz network. |
| wifi.bandsteering | Boolean | True to enable bandsteering (all bands have same SSID and clients will move freely between bands. |
| dhcp | Object | DHCP settings - set to null if not used. |
| dhcp.enable | Boolean | True to enable DHCP. |
| dhcp.ipPoolStart | String | First IP address to assign to DHCP clients. |
| dhcp.ipPoolEnd | String | Last IP address to assign to DHCP clients. |
| dhcp.leaseTime | Number | Number of minutes DHCP leases last. |
| dhcp.primaryDnsServer | String | IP address of DNS server clients shall use. |
| dhcp.reservedClients[] | Array | List of DHCP clients with reservations. |
| dhcp.reservedClients[].mac | String | MAC address of the client. |
| dhcp.reservedClients[].ip | String | IP address to assign to the client. |
| dhcp.reservedClients[].enable | Boolean | True if reservation is active. |
| dhcp.reservedClients[].id | Number | Optional id of the reservation, as assigned by the device. |
| status | Object | Status info (read only) |
| status.provisioned | Boolean | True if the device is provisioned. |
| status.lastComm | Date | Timestamp of the last time this device was communicated with, either directly or through a third-party service |
| status.online | Boolean | True if the device is online. |
| status.lanIp | String | LAN IP address. |
| status.subnetMask | String | Subnet mask. |
| status.gateway | String | Default gateway IP address. |
| status.wanIp | String | WAN IP address. |
| status.publicIp | String | Public IP address (may differ from WAN). |
| status.upTime | Number | Number of seconds the device has been running. |
| status.dns | String | IP address of primary DNS server. |
| status.dns2 | String | IP address of secondary DNS server. |
| status.ipv6 | String | IPv6 address, if available. |
| status.ipv6Dns | String | IPv6 primary DNS server. |
| status.ipv6Dns2 | String | Ipv6 secondary DNS server. |
| status.simStatus | String | SIM status (mobile router): 1 = ready, 2 = pin_verified, 3 = pin_lock, 4 = puk_lock, 5 = blocked, 6 = no_sim, 7 = unknown |
| status.networkType | String | Type of network connection (mobile router only): 1 = none, 2 = gsm, 4 = wcdma, 8 = lte, 16 = lte_plus, 32 = nr |
| status.signalStrength | Number | 4G signal strength (mobile router only) - 0-100 |
| status.ssSignalStrength | Number | 5G signal strength (mobile router only) - 0-100 |
| status.uplinkRate | Number | Uplink speed in Kbps. |
| status.downlinkRate | Number | Downlink speed in Kbps. |
| status.connectionTime | Number | Number of seconds device has been connected to the mobile network (mobile router only). |
| status.provisionError | Object | Latest permanent provisioning-job failure. Only present after a job has permanently failed; cleared when a later CREATE or UPDATE job succeeds. |
| status.provisionError.message | String | Human-readable error message from the failed job. |
| status.provisionError.action | String | The job that failed: CREATE, UPDATE, DELETE, REBOOT_DEVICE. |
| status.provisionError.errorCode | Number | Error code from the device vendor's cloud, when available. May be null or absent. |
| status.provisionError.at | Date | When the job permanently failed. |
Note that properties holding no value may be omitted from the object.
Example
{ "_id": "12345678901234567890ABCD", "state": "PROVISIONING", "name": "My Primary Router", "model": "12345678901234567890AAAA", "modelType": "ROUTER", "modelBrand": "TP-LINK", "modelDescription": "5G router with 2.4/5GHz wifi and 3 ethernet ports", "modelPicture": "12345678901234567890BBBB", "customer": "12345678901234567890CCCC", "macAddress": "123456789012", "serialNumber": "484T563TYEHFCU38HCNB4", "mvnoAccount": "12345678901234567890DDDD", "jobs": 1, "notes": "Note about device", "createdAt": "2026-08-05T12:00:00.000Z", "wifi": { "enabled": true, "ssid": "SkyNet", "password": "1NT3RN3T!", "enabled5G": true, "ssid5G": "Need4Speed", "password5G": "SarahConner", "enabled6G": false, "ssid6G": null, "password6G": null, "bandsteering": false }, "dhcp": { "enable": true, "ipPoolStart": "192.168.0.100", "ipPoolEnd": "192.168.0.200", "leaseTime": 1440, "primaryDnsServer": "8.8.8.8", "reservedClients": [ { "mac": "123456789013", "ip": "192.168.0.10", "enable": true, "id": 1 } ] }, "status": { "provisioned": true, "lastComm": "2025-01-01T00:00:00.000Z", "online": true, "lanIp": "192.168.0.1", "subnetMask": "255.255.255.0", "gateway": "100.64.0.1", "wanIp": "100.64.0.123", "publicIp": "203.0.113.232", "upTime": 123456, "dns": "8.8.8.8", "dns2": "1.1.1.1", "ipv6": "", "ipv6Dns": "", "ipv6Dns2": "", "simStatus": "1", "networkType": "32", "signalStrength": 0, "ssSignalStrength": 50, "uplinkRate": 1234, "downlinkRate": 5432, "connectionTime": 1234567 } }
Errors
| Error code | Message | Description |
|---|---|---|
| 400 | dhcp.ipPool | IP pool addresses must be valid IPv4 addresses, the start must not be after the end, and both must be usable host addresses within the device's LAN subnet. |
| 400 | dhcp.leaseTime | Lease time must be between 1 and 2880 minutes. |
| 403 | access_denied | Insufficient access level |
| 404 | not_found | Network device not found |
| 404 | <field> | A required field is missing after the update is applied - e.g. a partial dhcp object sent to a device that has no DHCP configuration yet. |
| 422 | <field> | A field value is invalid. |
| 500 | internal_error | <Unspecified> |
api/networkmanagement/device/update.txt · Last modified: by Mikkel Meerwaldt Jørgensen