Litmus Edge Manager 3.0.x - Edge Lifecycle: Activation
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
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
| ## 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
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
| ## 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": []
}
Delete Activation Config
DELETE {{LEM_URL}}/api/v1/activation/config
Delete Activation Config
Deletes an activation code from a project. Devices already activated with the code stay activated; new devices can no longer use it. Delete any ZeroTouch configuration that embeds the code first.
Endpoint
DELETE {{LEM_URL}}/api/v1/activation/config
Authentication
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
Request body
application/json
| Field | Type | Required | Description |
|---|---|---|---|
projectId |
string | Yes | Project ID. |
code |
string | Yes | Activation code, from Activation Config List. |
Response
204 No Content, empty body. The spec documents 200.
Errors
| HTTP status | When it happens |
|---|---|
401 Unauthorized |
Missing or invalid X-AuthToken. |
404 Not Found |
Activation config with code <code> not found. |
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": "{{activation_code}}"
}
Response
Status: 204 No Content
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
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
| ## 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"
}
]
Activation Status Summary
GET {{LEM_URL}}/api/v1/activation/status-summaries?projectId={{project_id}}
Activation Status Summary
Counts the project's activation requests by status. Backs the status chips above the Activation > Requests table.
Endpoint
GET {{LEM_URL}}/api/v1/activation/status-summaries?projectId={{project_id}}
Authentication
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId |
string | Yes | Project ID. |
Response
200 OK. Array of {status, cnt}, one entry per status that has at least one request (ACTIVATED, PENDING, REJECTED, ...). A project with no requests returns [].
Errors
| HTTP status | When it happens |
|---|---|
401 Unauthorized |
Missing or invalid X-AuthToken. |
400 Bad Request |
projectId missing. |
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
[
{
"status": "ACTIVATED",
"cnt": 1
}
]
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
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
| ## 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
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
| ## 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
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
| ## 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
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
| ## 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
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
| ## 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
}
]
}
Create or Update ZeroTouch Config
POST {{LEM_URL}}/api/v1/zt/{{project_id}}/config
Create or Update ZeroTouch Config
Saves a ZeroTouch configuration: the activation settings a new Litmus Edge device picks up on first boot. Leave id null to create; set it to update that configuration. The activation code must already exist in the project (Add Activation Config).
Endpoint
POST {{LEM_URL}}/api/v1/zt/{{project_id}}/config
Authentication
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | Yes | Project ID. |
Request body
application/json
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | No | Configuration ID. null to create. |
configName |
string | Yes | Display name. |
staticIPEnabled |
boolean | No | Ship a static IP configuration in the bundle. |
ztConfig.version |
string | Yes | Bundle format version, 1.0. |
ztConfig.activation.code |
string | Yes | Activation code in this project. |
ztConfig.containers |
array | Yes | Containers to deploy on first boot; [] for none. |
Response
200 OK. The saved configuration. LEM fills ztConfig.activation.url (this LEM's address) and ztConfig.activation.cert (the LEM CA certificate the device will trust), plus createdBy / updatedBy (token=<token name> for API calls) and timestamps. ztBundleFileName stays null until a bundle is generated.
Errors
| HTTP status | When it happens |
|---|---|
401 Unauthorized |
Missing or invalid X-AuthToken. |
400 Bad Request |
Invalid activation code in activation: the code is not in this project. |
409 Conflict |
ztConfig missing or not an object (the message is a Java cast error). |
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
{
"id": null,
"configName": "Plant 2 gateways",
"staticIPEnabled": false,
"ztConfig": {
"version": "1.0",
"activation": {
"code": "{{activation_code}}"
},
"containers": []
}
}
Response
Status: 200 OK
{
"id": "b0b092e1-0b74-4eb7-b4ec-7b6668f8ff70",
"projectId": "b83xktzsmclqsz3o9e2nblqc5",
"configName": "Plant 2 gateways",
"staticIPEnabled": false,
"asyncSubtaskId": null,
"ztBundleFileName": null,
"ztBundleFileSize": 0,
"checksum": null,
"createdBy": "token=<token name>",
"createTime": 1792096379000,
"updatedBy": "token=<token name>",
"updateTime": 1792096379000,
"generatedBy": null,
"generateTime": null,
"ztConfig": {
"version": "1.0",
"activation": {
"code": "Z2URE-S79YR-X9Y2X-LZCDZ-9MZEY",
"url": "https://<LEM host>",
"cert": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----\n"
},
"containers": []
}
}
Delete ZeroTouch Config
DELETE {{LEM_URL}}/api/v1/zt/{{project_id}}/config/{{zt_config_id}}
Delete ZeroTouch Config
Deletes a ZeroTouch configuration. The activation code it references is not touched.
Endpoint
DELETE {{LEM_URL}}/api/v1/zt/{{project_id}}/config/{{zt_config_id}}
Authentication
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | Yes | Project ID. |
zt_config_id |
string | Yes | Configuration id, from List ZeroTouch Configs. |
Response
200 OK with {"code": "S"}.
An unknown ID also returns 200 OK, with {"code": "E", "message": "ZeroTouch configuration not found"}. Check code, not the status.
Errors
| HTTP status | When it happens |
|---|---|
401 Unauthorized |
Missing or invalid X-AuthToken. |
200 OK with code: E |
Configuration not found. |
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
{
"code": "S",
"message": null,
"messageDetails": null
}
Get device activation status by device ID or by activation entry ID and hostname
GET {{LEM_URL}}/api/v1/activation/device-status?projectId=
Get device activation status by device ID or by activation entry ID and hostname
Reports a device's activation status. Identify the device either by deviceId, or by the activation entryId together with its hostname.
Endpoint
GET {{LEM_URL}}/api/v1/activation/device-status
Authentication
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
| ## Parameters |
| Parameter | In | Notes |
|---|---|---|
projectId |
query | Required. Project scope. |
deviceId |
query | The device id (one way to identify the device). |
entryId |
query | Activation entry id (use with hostname). |
hostname |
query | Device hostname (use with entryId). |
Response
Activation status for the device (activated / pending and related metadata).
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.
Get Activation Request Template Parameters
GET {{LEM_URL}}/api/v1/activation/request/template/vars/v2?projectId={{project_id}}&requestId={{activation_request_id}}&templateName={{template_name}}
New in 3.0.
Get Activation Request Template Parameters
Returns the Solution Template parameter values saved on an activation request, keyed by scope. The Solution Template counterpart of GET /activation/request/template/vars, which serves the LEM-side variables of a 1.x template.
Endpoint
GET {{LEM_URL}}/api/v1/activation/request/template/vars/v2?projectId={{project_id}}&requestId=<id>&templateName=<name>
Authentication
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
| ## Parameters |
| Parameter | In | Notes |
|---|---|---|
projectId |
query | Required. |
requestId |
query | Required. Activation request id (integer). An unknown id answers 404 Activation request <id> not found in project <projectId>. |
templateName |
query | Required. Full template name, e.g. hg-test/default/default/COMPANY/1791836046753. |
Response
200 OK.
{
"templateName": "default/default/default/INSTANCE/1595335856644",
"parameters": {
"_global": [{ "UniqueName": "siteId", "UserValue": "NYC-01" }]
}
}
Parameter values are keyed by scope: _global for parameters declared at the top of the Solution Template, or a component key for parameters declared inside one component. The same UniqueName may exist in _global and in a component; each takes its own value.
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.
Save Activation Request Template Parameters
POST {{LEM_URL}}/api/v1/activation/request/template/vars/v2
New in 3.0.
Save Activation Request Template Parameters
Saves Solution Template parameter values on an activation request, keyed by scope. The counterpart of POST /activation/request/template/vars for a template that declares its parameters in the document. A null UserValue leaves the declared default in place.
Endpoint
POST {{LEM_URL}}/api/v1/activation/request/template/vars/v2
Authentication
API key in a request header (case sensitive). The value is the LEM admin API token.
| URL prefix | Auth header |
|---|---|
{{LEM_URL}}/api/v1/... (main fleet API) |
X-AuthToken: <token> |
{{LEM_adminURL}}/admin/v1/... (admin console, port 8446) |
X-AuthToken: <token> |
{{LEM_URL}}/mpcs/... (Marketplace Catalog) |
Authorization: <token> (3.0.x also accepts X-AuthToken) |
| ## Request body |
| Field | Type | Notes |
|---|---|---|
projectId |
string | Required. |
requestId |
integer | Required. Activation request id. |
templateName |
string | Required. |
parameters |
object | Required. Scope -> list of {UniqueName, UserValue}. |
{
"projectId": "{{project_id}}",
"requestId": 7,
"templateName": "default/default/default/INSTANCE/1595335856644",
"parameters": {
"_global": [{ "UniqueName": "siteId", "UserValue": "NYC-01" }],
"historian": [{ "UniqueName": "siteId", "UserValue": "NYC-01-H" }]
}
}
Response
200 OK. Parameter values are keyed by scope: _global for parameters declared at the top of the Solution Template, or a component key for parameters declared inside one component. The same UniqueName may exist in _global and in a component; each takes its own value.
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": "f00lnx2idyl93gz5kq7c7fpm7",
"requestId": 7,
"templateName": "default/default/default/INSTANCE/1595335856644",
"parameters": {}
}