Litmus Edge Manager 3.0.x - Admin Console: License Server Mgmt
License Server Version
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/version
License Server Version
Returns the version + git revision of LEM's bundled license server.
Endpoint
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/version
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 |
{ "git": "4b3d954", "version": "2.10.8" }
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
{
"git": "4b3d954",
"version": "2.10.8"
}
Offline License Info
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/licenses/offline/info
Offline License Info
Returns the activation URL + host ID needed to activate the LEM license offline. Pair with the LE licensing portal.
Endpoint
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/licenses/offline/info
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 |
{ "activationURL": "https://litmus.activate.id/", "hostid": "idk=833408b59c9524fe" }
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
{
"activationURL": "https://litmus.activate.id/",
"hostid": "idk=833408b59c9524fe"
}
Core License List
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/licenses?primary=true
Core License List
Returns the primary (core) licenses activated on LEM. Use primary=true to filter.
Endpoint
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/licenses?primary=true
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
[
{
"akey": "6932-1633-0984-4110",
"expiryDate": "2024-08-02T00:00:00Z",
"name": "litmus-scale-1y-site",
"totalCount": 1
}
]
Feature License List
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/licenses?primary=false
Feature License List
Returns the feature (non-core) licenses: per-feature entitlements that ride on top of a core license.
Endpoint
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/licenses?primary=false
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
[
{
"expiryDate": "2024-08-02T00:00:00Z",
"name": "ll-core",
"totalCount": 1
},
{
"expiryDate": "2024-08-02T00:00:00Z",
"name": "le-dt",
"totalCount": 999999
},
{
"expiryDate": "2024-08-02T00:00:00Z",
"name": "le-opcua",
"totalCount": 999999
},
{
"expiryDate": "2024-08-02T00:00:00Z",
"name": "le-marketplace",
"totalCount": 999999
},
{
"expiryDate": "2024-08-02T00:00:00Z",
"name": "le-backup",
"totalCount": 999999
},
{
"expiryDate": "2024-08-02T00:00:00Z",
"name": "le-core",
"totalCount": 999999
},
{
"expiryDate": "2024-08-02T00:00:00Z",
"name": "le-devices",
"totalCount": 999999
},
{
"expiryDate": "2024-08-02T00:00:00Z",
"name": "le-updates",
"totalCount": 999999
},
{
"expiryDate": "2024-08-02T00:00:00Z",
"name": "le-analytics",
"totalCount": 999999
},
{
"expiryDate": "2024-08-02T00:00:00Z",
"name": "",
"totalCount": 1
},
{
"expiryDate": "2024-08-02T00:00:00Z",
"name": "",
"totalCount": 1
},
{
"expiryDate": "2024-08-02T00:00:00Z",
"limited": true,
"name": "le-tags",
"totalCount": 50000
}
]
Licensing Allocation Summary
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/allocation-summary
Licensing Allocation Summary
Returns the paginated allocation summary: per-(company, project) license allocations with allocated counts, data-point limits, and expiry.
Endpoint
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/allocation-summary
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
{
"pageNum": 0,
"pagesCount": 2,
"size": 10,
"totalSize": 18,
"elements": [
{
"companyName": "pm",
"projectId": "detk20ap42y5rcvfsdfe9790",
"projectName": "LEProduction",
"allocated": null,
"allocationId": null,
"allocatedDatapoints": null,
"usedDatapoints": null,
"allocationExpiry": null
},
{
"companyName": "hardware",
"projectId": "2prp72ljt3e2149umck473xrl",
"projectName": "Emerson",
"allocated": null,
"allocationId": null,
"allocatedDatapoints": null,
"usedDatapoints": null,
"allocationExpiry": null
},
{
"companyName": "production",
"projectId": "b38spzrhu24fpl90juboyu3i3",
"projectName": "docker",
"allocated": null,
"allocationId": null,
"allocatedDatapoints": null,
"usedDatapoints": null,
"allocationExpiry": null
},
{
"companyName": "solutions",
"projectId": "2uqgh8aiy8z827jgllw5678j3",
"projectName": "stefan",
"allocated": null,
"allocationId": null,
"allocatedDatapoints": null,
"usedDatapoints": null,
"allocationExpiry": null
},
{
"companyName": "production",
"projectId": "87fuuaai4nlww3wfy0wnjj1tm",
"projectName": "Parker",
"allocated": null,
"allocationId": null,
"allocatedDatapoints": null,
"usedDatapoints": null,
"allocationExpiry": null
},
{
"companyName": "production",
"projectId": "7sno16edx0bhv9knnpdbdq393",
"projectName": "HyperV",
"allocated": null,
"allocationId": null,
"allocatedDatapoints": null,
"usedDatapoints": null,
"allocationExpiry": null
},
{
"companyName": "production",
"projectId": "cel45m3qbizspgqszngdroxd1",
"projectName": "LTE",
"allocated": null,
"allocationId": null,
"allocatedDatapoints": null,
"usedDatapoints": null,
"allocationExpiry": null
},
{
"companyName": "solutions",
"projectId": "462j1mq70mph31wa100t1yuxa",
"projectName": "parth",
"allocated": null,
"allocationId": null,
"allocatedDatapoints": null,
"usedDatapoints": null,
"allocationExpiry": null
},
{
"companyName": "ccsj",
"projectId": "24kpfvotkgyi8hyx5i1lzn1dc",
"projectName": "2024Project",
"allocated": null,
"allocationId": null,
"allocatedDatapoints": null,
"usedDatapoints": null,
"allocationExpiry": null
},
{
"companyName": "belden",
"projectId": "8h0lim73udgl5r8ex4v0d1vr7",
"projectName": "Docker",
"allocated": null,
"allocationId": null,
"allocatedDatapoints": null,
"usedDatapoints": null,
"allocationExpiry": null
}
]
}
Licensing Allocation Summary CSV
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/allocation-summary/csv
Licensing Allocation Summary CSV
The Licensing Allocation Summary as a CSV download, one row per company / project. Takes the same filters.
Endpoint
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/allocation-summary/csv
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
All optional, query.
| Parameter | Type | Description |
|---|---|---|
companyName |
string | Only this company. |
projectId |
string | Only this project. |
filter |
string | Free-text filter. |
allocated |
boolean | Only allocated (true) or unallocated (false) projects. |
allocationId |
string | Only this allocation. |
allocationExpiryFrom / allocationExpiryTo |
integer | Expiry window, epoch milliseconds. |
Response
200 OK -- text/csv. Header row: Company name, Project ID, Project name, Allocated, Allocation ID, Allocated data points, Used data points, Allocation expiry. Columns are empty for projects with no allocation.
Errors
| HTTP status | When it happens |
|---|---|
401 Unauthorized |
Missing or invalid X-AuthToken. |
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
"Company name","Project ID","Project name","Allocated","Allocation ID","Allocated data points","Used data points","Allocation expiry"
"archie","30jol3hs1odsiwzlo70t1zwcn","project2",,,,,
"archie","b8zxnqwuhnbqoytsqfs928f9u","project1",,,,,
"hg","b83xktzsmclqsz3o9e2nblqc5","hg",,,,,
"test","1a5kz8nzch6cw4q1dmxswoaui","aa",,,,,
Set Project Allocation
POST {{LEM_adminURL}}/admin/v1/litmus-licensing/allocations?companyName={{company_name}}&projectId={{project_id}}
Set Project Allocation
Allocates license capacity from the licensing server to one project.
Endpoint
POST {{LEM_adminURL}}/admin/v1/litmus-licensing/allocations?companyName={{company_name}}&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) |
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
companyName |
query | string | Yes | Company slug. |
projectId |
query | string | Yes | Project ID. |
Request body
application/json.
| Field | Type | Description |
|---|---|---|
limit |
integer | Allocation limit (data points). |
expiry |
integer | Allocation expiry, epoch milliseconds. |
Response
200 OK -- application/json. ApiResponse: code, message, messageDetails.
Errors
| HTTP status | When it happens |
|---|---|
401 Unauthorized |
Missing or invalid X-AuthToken. |
Example source: not called on a live device, because it changes instance-wide state. Request and response examples are derived from the LEM 2.31.x OpenAPI schema.
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
{
"limit": 1000,
"expiry": 1830297600000
}
Response
Status: 200 OK
{
"code": "S",
"message": null,
"messageDetails": null
}
Delete Project Allocation
DELETE {{LEM_adminURL}}/admin/v1/litmus-licensing/allocations?companyName={{company_name}}&projectId={{project_id}}
Delete Project Allocation
Removes a project's license allocation, returning the capacity to the pool.
Endpoint
DELETE {{LEM_adminURL}}/admin/v1/litmus-licensing/allocations?companyName={{company_name}}&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) |
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
companyName |
query | string | Yes | Company slug. |
projectId |
query | string | Yes | Project ID. |
Response
200 OK -- application/json. ApiResponse: code, message, messageDetails.
Errors
| HTTP status | When it happens |
|---|---|
401 Unauthorized |
Missing or invalid X-AuthToken. |
Example source: not called on a live device, because it changes instance-wide state. Request and response examples are derived from the LEM 2.31.x OpenAPI schema.
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
}
License Usage Summary
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/usage/summary
License Usage Summary
Returns instance-wide usage by feature name (lem-catalog, lem-core, etc.).
Endpoint
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/usage/summary
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 |
{ "usage": { "lem-catalog": 1, "lem-core": 1 } }
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
{
"usage": {
"lem-catalog": 1,
"lem-core": 1
}
}
License Clients
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/apikeys/extended
License Clients
Returns the license-server clients (typically edge devices with an active API key). Each carries hostid, hostname, label, last-seen time, and embedded edge-device coordinates.
Endpoint
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/apikeys/extended
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
[
{
"hostid": "idk=03c3a082e87347e2",
"hostname": "0857de459ebd",
"label": "8es3c1fnto6pzg9m3bcgqgmuq",
"lastSeen": "2023-10-30 20:53:20.518Z",
"prettyName": "company docker",
"edge-device": {
"deviceId": "8es3c1fnto6pzg9m3bcgqgmuq",
"companyName": "company",
"projectId": "8h0lim73udgl5r8ex4v0d1vr7",
"projectName": "Docker"
}
}
]
API Keys by Label
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/apikeys/labels/{{label}}
API Keys by Label
Returns the licensing-server API keys tied to a label. The label of a client is shown in License Clients (for edge devices it is the device ID).
Endpoint
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/apikeys/labels/{{label}}
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 | Type | Required | Description |
|---|---|---|---|---|
label |
path | string | Yes | Client label. |
locale |
query | string | No | Locale for response messages. |
Response
200 OK -- application/json when the label has keys. The example shows the key returned for one label.
Errors
| HTTP status | When it happens |
|---|---|
401 Unauthorized |
Missing or invalid X-AuthToken. |
404 Not Found |
No keys for that label: {"msg":"not found","msgCode":""}. |
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
{
"hostid": "idk=7ea57fc4252d565f",
"hostname": "8bba4e7b636b",
"label": "4bu2ujo3cslh6rucnb277ccd0",
"lastSeen": "2026-10-15 20:30:33.283Z",
"prettyName": "litmus edge docker",
"projectId": "b83xktzsmclqsz3o9e2nblqc5"
}
Create Activation Request
POST {{LEM_adminURL}}/admin/v1/litmus-licensing/activations
Create Activation Request
Submits an activation request to the Litmus licensing server.
Endpoint
POST {{LEM_adminURL}}/admin/v1/litmus-licensing/activations
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 | Type | Required | Description |
|---|---|---|---|---|
locale |
query | string | No | Locale for response messages. |
Request body
application/json. The schema types the body as an opaque string (Payload). Its format is not published in the 2.31 spec.
Response
200 OK -- a string. The schema does not define its content.
Errors
| HTTP status | When it happens |
|---|---|
401 Unauthorized |
Missing or invalid X-AuthToken. |
Example source: not called on a live device, because it changes instance-wide state. Request and response examples are derived from the LEM 2.31.x OpenAPI schema.
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
"<payload>"