LitmusEdgeManager 2.31.x API Documentation/Edge Lifecycle Management/Activation - LE, LEM, LUNS API Docs
Activation Config List
GET {{LEM_URL}}/api/v1/activation/config/list?projectId={{project_id}}
Activation Config List
Returns the activation configurations available to the project. Each carries an activation code, expiresAt, allowed device count, current usage counts, attached license keys / templates, lease TTL, license type, and license-server settings.
Endpoint
GET {{LEM_URL}}/api/v1/activation/config/list?projectId={{project_id}}
Authentication
HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.
Errors
| HTTP status | When it happens |
|---|---|
400 Bad Request |
Missing or malformed query/body parameter. |
401 Unauthorized |
Missing or invalid credentials. |
403 Forbidden |
Token lacks permission for this operation. |
404 Not Found |
Target entity does not exist. |
5xx |
Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support. |
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Response
Status: 200 OK
[
{
"projectId": "462j1mq70mph31wa100t1yuxa",
"code": "V9ZUA-DY6FX-CFC7V-JJY7D-V3OVF",
"expiresAt": 1722668400000,
"deviceCount": 10,
"usageCount": 1,
"usages": [
"1a5wiavluwxuhwai5leb1v0hc"
],
"licenseKeys": [],
"templateNames": [],
"leaseTtl": 365,
"licenseType": "NODE_LOCKED",
"licenseServerHost": null,
"licenseServerPort": 0,
"options": {
"DEFAULT_PASSWORD_POLICY": false
},
"createdOn": 1691104130000,
"wgPersistentKeepalive": null,
"firstUnusedLicense": null
}
]
Add Activation Config
POST {{LEM_URL}}/api/v1/activation/config
Add Activation Config
Creates a new activation configuration in the project. The server generates the activation code if code: null. The config is what new devices use during onboarding to bind to the right project / license / template set.
Endpoint
POST {{LEM_URL}}/api/v1/activation/config
Authentication
HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.
Request body
{
"projectId": "{{project_id}}",
"code": null,
"expiresAt": 1756191600000,
"deviceCount": 10,
"leaseTtl": 365,
"licenseSkus": [],
"templateNames": [],
"licenseType": "NODE_LOCKED",
"licenseServerHost": null,
"licenseServerPort": 5053,
"options": { "DEFAULT_PASSWORD_POLICY": false }
}
Errors
| HTTP status | When it happens |
|---|---|
400 Bad Request |
Missing or malformed query/body parameter. |
401 Unauthorized |
Missing or invalid credentials. |
403 Forbidden |
Token lacks permission for this operation. |
404 Not Found |
Target entity does not exist. |
5xx |
Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support. |
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
{
"projectId": "{{project_id}}",
"code": null,
"expiresAt": 1756191600000,
"deviceCount": 10,
"leaseTtl": 365,
"licenseSkus": [],
"templateNames": [],
"licenseType": "NODE_LOCKED",
"licenseServerHost": null,
"licenseServerPort": 5053,
"options": {
"DEFAULT_PASSWORD_POLICY": false
},
"wgPersistentKeepalive": null
}
Response
Status: 200 OK
{
"projectId": "{{project_id}}",
"code": "4JOOD-2CWAQ-KNDWX-7EUUM-9Y7LF",
"expiresAt": 1756191600000,
"deviceCount": 10,
"usageCount": 0,
"usages": [],
"templateNames": [],
"leaseTtl": 365,
"licenseType": "NODE_LOCKED",
"licenseServerHost": null,
"licenseServerPort": 0,
"options": {
"DEFAULT_PASSWORD_POLICY": false
},
"createdOn": null,
"wgPersistentKeepalive": null,
"licenseSkus": []
}
Requests List
GET {{LEM_URL}}/api/v1/activation/request?projectId={{project_id}}
Requests List
Returns activation requests for the project. Each request represents a device asking to onboard, with hardware info, activation code used, current status, message, and per-step timestamps.
Endpoint
GET {{LEM_URL}}/api/v1/activation/request?projectId={{project_id}}
Authentication
HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.
Errors
| HTTP status | When it happens |
|---|---|
400 Bad Request |
Missing or malformed query/body parameter. |
401 Unauthorized |
Missing or invalid credentials. |
403 Forbidden |
Token lacks permission for this operation. |
404 Not Found |
Target entity does not exist. |
5xx |
Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support. |
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Response
Status: 200 OK
[
{
"entryID": 4,
"code": "V9ZUA-DY6FX-CFC7V-JJY7D-V3OVF",
"hostname": "litmus-edge-94c6911b9c77",
"macAddress": "a1:b2:c3:d4:e5:00,a0:c5:89:af:cd:af",
"info": {
"type": "litmusedge",
"version": "3.5.4",
"memoryGb": 7847,
"storageGb": 223791,
"virtualization": null,
"hw": "physical"
},
"status": "ACTIVATED",
"message": "",
"projectId": "462j1mq70mph31wa100t1yuxa",
"deviceId": "1a5wiavluwxuhwai5leb1v0hc",
"createdOn": 1691104159000,
"hostID": "94c6911b9c77",
"provisionStatus": [
{
"stage": "ACTIVATION",
"stageName": "Activation",
"stageStatus": "DONE",
"step": "RECEIVED",
"stepName": "Activation request received",
"properties": {},
"stepStatus": "DONE",
"message": null,
"updatedAt": 1691104169263
},
{
"stage": "ACTIVATION",
"stageName": "Activation",
"stageStatus": "DONE",
"step": "APPROVED",
"stepName": "Activation request approved",
"properties": {},
"stepStatus": "DONE",
"message": null,
"updatedAt": 1691104170160
},
{
"stage": "ACTIVATION",
"stageName": "Activation",
"stageStatus": "DONE",
"step": "CONFIRMED",
"stepName": "Activation request confirmed",
"properties": {},
"stepStatus": "DONE",
"message": null,
"updatedAt": 1691104179588
},
{
"stage": "PROVISION",
"stageName": "Provision",
"stageStatus": "DONE",
"step": "LICENSE_GENERATED",
"stepName": "Offline license generated",
"properties": {},
"stepStatus": "SKIPPED",
"message": "No license key defined",
"updatedAt": 1691104179596
},
{
"stage": "PROVISION",
"stageName": "Provision",
"stageStatus": "DONE",
"step": "LICENSE_PROVISIONED",
"stepName": "License provisioned to the device",
"properties": {},
"stepStatus": "SKIPPED",
"message": "No license key defined",
"updatedAt": 1691104179597
}
],
"zerotierNodeId": "19a0049b29",
"prettyName": "Litmus Edge (a1:b2:c3:d4:e5:00)- SJ office sensor",
"templates": [],
"licenseType": "NODE_LOCKED",
"updatedBy": "user_name"
}
]
Request Details
GET {{LEM_URL}}/api/v1/activation/config?code={{activation_code}}&projectId={{project_id}}
Request Details
Returns the configuration backing one activation request identified by its code. Same shape as one element of Activation Config List.
Endpoint
GET {{LEM_URL}}/api/v1/activation/config?code={{activation_code}}&projectId={{project_id}}
Authentication
HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.
Errors
| HTTP status | When it happens |
|---|---|
400 Bad Request |
Missing or malformed query/body parameter. |
401 Unauthorized |
Missing or invalid credentials. |
403 Forbidden |
Token lacks permission for this operation. |
404 Not Found |
Target entity does not exist. |
5xx |
Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support. |
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Response
Status: 200 OK
{
"projectId": "462j1mq70mph31wa100t1yuxa",
"code": "V9ZUA-DY6FX-CFC7V-JJY7D-V3OVF",
"expiresAt": 1722668400000,
"deviceCount": 10,
"usageCount": 1,
"usages": [
"1a5wiavluwxuhwai5leb1v0hc"
],
"licenseKeys": [],
"templateNames": [],
"leaseTtl": 365,
"licenseType": "NODE_LOCKED",
"licenseServerHost": null,
"licenseServerPort": 0,
"options": {
"DEFAULT_PASSWORD_POLICY": false
},
"createdOn": 1691104130000,
"wgPersistentKeepalive": null,
"firstUnusedLicense": null
}
Approve Request
POST {{LEM_URL}}/api/v1/activation/request/status
Approve Request
Approves a pending activation request. After approval, LEM provisions the device's license / template / certificate set.
Endpoint
POST {{LEM_URL}}/api/v1/activation/request/status
Authentication
HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.
Request body
{
"entryID": {{project_entry_id}},
"projectId": "{{project_id}}",
"status": "APPROVED"
}
Errors
| HTTP status | When it happens |
|---|---|
400 Bad Request |
Missing or malformed query/body parameter. |
401 Unauthorized |
Missing or invalid credentials. |
403 Forbidden |
Token lacks permission for this operation. |
404 Not Found |
Target entity does not exist. |
5xx |
Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support. |
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
{
"entryID": {{project_entry_id}},
"projectId": "{{project_id}}",
"status": "APPROVED"
}
Reject Request
POST {{LEM_URL}}/api/v1/activation/request/status
Reject Request
Rejects a pending activation request. The device's onboarding attempt fails.
Endpoint
POST {{LEM_URL}}/api/v1/activation/request/status
Authentication
HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.
Request body
{
"entryID": {{project_entry_id}},
"projectId": "{{project_id}}",
"status": "REJECTED"
}
Errors
| HTTP status | When it happens |
|---|---|
400 Bad Request |
Missing or malformed query/body parameter. |
401 Unauthorized |
Missing or invalid credentials. |
403 Forbidden |
Token lacks permission for this operation. |
404 Not Found |
Target entity does not exist. |
5xx |
Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support. |
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
{
"entryID": {{project_entry_id}},
"projectId": "{{project_id}}",
"status": "REJECTED"
}
Retry Failed Request
POST {{LEM_URL}}/api/v1/activation/request/request-retry-provision?entryId={{project_entry_id}}&projectId={{project_id}}
Retry Failed Request
Re-runs the provisioning step for a failed activation request. Useful when the original failure was transient (license-server blip, image download glitch).
Endpoint
POST {{LEM_URL}}/api/v1/activation/request/request-retry-provision?entryId={{project_entry_id}}&projectId={{project_id}}
Authentication
HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.
Errors
| HTTP status | When it happens |
|---|---|
400 Bad Request |
Missing or malformed query/body parameter. |
401 Unauthorized |
Missing or invalid credentials. |
403 Forbidden |
Token lacks permission for this operation. |
404 Not Found |
Target entity does not exist. |
5xx |
Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support. |
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Response
Status: 204 No Content
List ZeroTouch Configs
GET {{LEM_URL}}/api/v1/zt/{{project_id}}/config
List ZeroTouch Configs
Returns the Zero-Touch configurations for the project. Each Zero-Touch config produces a .zip bundle that ships with new devices for hands-off provisioning -- the device boots, reads the bundle, and self-registers with LEM.
Endpoint
GET {{LEM_URL}}/api/v1/zt/{{project_id}}/config
Authentication
HTTP Basic Auth. Username is your API token, password is empty. Tokens are managed under System > Access Control > Tokens.
Response
200 OK -- application/json. Paged. Each entry: id, projectId, configName, staticIPEnabled, asyncSubtaskId, ztBundleFileName, ztBundleFileSize, checksum.
Errors
| HTTP status | When it happens |
|---|---|
400 Bad Request |
Missing or malformed query/body parameter. |
401 Unauthorized |
Missing or invalid credentials. |
403 Forbidden |
Token lacks permission for this operation. |
404 Not Found |
Target entity does not exist. |
5xx |
Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support. |
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Response
Status: 200 OK
{
"pageNum": 0,
"pagesCount": 1,
"size": 1,
"totalSize": 1,
"elements": [
{
"id": "f490e8e5-9ea6-4e38-917f-1a0332b990c7",
"projectId": "39abjcmqdc6r4gsctj7zjufnv",
"configName": "ui-test",
"staticIPEnabled": false,
"asyncSubtaskId": "ce28b00e-d841-44cf-b43d-23fe237bc0d5",
"ztBundleFileName": "39abjcmqdc6r4gsctj7zjufnv/zerotouch-ui-test-f490e8e5.zip",
"ztBundleFileSize": 2055,
"checksum": "sha256:5bcdf55c86a3cdcbc30f32c6019e3c0fb417272601dfe77304b835e9658cafff",
"createdBy": "demo",
"createTime": 1755721657000,
"updatedBy": "demo",
"updateTime": 1755721666000,
"generatedBy": "demo",
"generateTime": 1755721665000,
"ztConfig": {
"version": "1.0",
"activation": {
"code": "5GFPO-4GMZ5-FDENG-HTVG9-WXSL9",
"url": "https://10.17.10.247",
"cert": "-----BEGIN CERTIFICATE-----\nMIIDSzCCAjOgAwIBAgIUQYLKBq7xn4lfOvZmkNyaAD+HoxAwDQYJKoZIhvcNAQELBQAwLTErMCkGA1UEAxMiTGl0bXVzIEVkZ2UgTWFuYWdlciBDQSAyNTA4MjMxMjIzOTAeFw0yNTA4MTkyMjM4NTVaFw00NTA4MTQyMjM5MjRaMC0xKzApBgNVBAMTIkxpdG11cyBFZGdlIE1hbmFnZXIgQ0EgMjUwODIzMTIyMzkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwzdhYBvlK+Cwy7mxEI9J86B+6JjMpMN3Wul0U2PZ8O/B8vQ+UOpAqNT8sRm1jMHv4zo0UTmpwg5SR1u8gSokkSB6cnUItbOZRwVMKmnJnonw4DMKawgD1LuXqdUbSVrzte80YetR93ugkWSlC6Cwr8qdXoBjzBU7KqEivGK/KpSWigyN/185asBrFQtwQxODD7CVleYa2XWwdazqmLTea8ogYmIoIEByQAoODZ+Gp4m7t3rsPin4X+aGrMteHQi4yNDvHE9UL3J8e+2iIDT1DkbpIepT+vxZsx7IC7mGH7s7xYtLYIycVZlEs9qevf/zVQ4lDIrxIe6JwdhG0PFGnAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS/NdppA6lG+Gy0WlZ151/562Ia/jAfBgNVHSMEGDAWgBS/NdppA6lG+Gy0WlZ151/562Ia/jANBgkqhkiG9w0BAQsFAAOCAQEALAqI3IT30t1/a+afBM7mxK/PYPPZPcKnI6E7zhEmSaUMg6Y2EdHHiv5gNHX1AwQLItO34yTm1xkykUTI4n1tEMloXdmKNflz6o0Ec/HrtcqKP9Cln14NAwiahtXJloS/YihBCBn3DuH5XUmBcKbvJn8qQ4CUH6SoFvcu7AJ/SVBuJUacIMJBS9cdTWQ8OKdIzY9nwT2VOyQ76at+gSXLikLMNSr7au/eg7zEKg5t1PD3rhdNSMtabwj2WKDxXSol1wfGXf9gPkSOiXS5xGDPXxrhJS220v43ZKwUlsDQfri80VkrT3m5p1EZQVRrjJUFHXCKGS9hipI7gN2MqKmwdg==\n-----END CERTIFICATE-----"
},
"containers": [
{
"name": "hello",
"run-cmd": "/bin/bash"
}
]
},
"asyncSubtaskStatus": "SUCCESS",
"asyncSubtaskProgress": 1
}
]
}