Litmus Edge Manager 3.0.x - Edge Lifecycle: Licenses
License Summary - Status
GET {{LEM_URL}}/api/v1/device-license-pool/stats?projectId={{project_id}}
License Summary -- Status
Returns counts of licenses by state in the project pool: active / used / unused / expired.
Endpoint
GET {{LEM_URL}}/api/v1/device-license-pool/stats?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) |
| ## Response |
{ "active": 1, "used": 1, "unused": 0, "expired": 0 }
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
{
"active": 1,
"used": 1,
"unused": 0,
"expired": 0
}
Licenses List SKUs
GET {{LEM_URL}}/api/v1/device-license-pool/skus?projectId={{project_id}}
Licenses List SKUs
Returns the SKUs allocated to the project's license pool, with count per SKU and the isCore flag.
Endpoint
GET {{LEM_URL}}/api/v1/device-license-pool/skus?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) |
| ## Response |
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
licenseSku |
string | SKU identifier (e.g. litmusedge-scale-nl). |
count |
integer | Number of license entitlements of this SKU. |
isCore |
boolean | True for the core LE license SKU. |
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
[
{
"licenseSku": "litmusedge-scale-nl",
"count": 1,
"isCore": true,
"core": true
}
]
Used Licenses
GET {{LEM_URL}}/api/v1/device-license-pool/used?projectId={{project_id}}
Used Licenses
Returns paginated list of licenses currently used by devices in the project pool, with feature expiry, MAC address, and device friendly name.
Endpoint
GET {{LEM_URL}}/api/v1/device-license-pool/used?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) |
| ## Response |
200 OK -- application/json. Paged. Each elements[] entry carries projectId, deviceId, deviceName, deviceFriendlyName, macAddress, expiryFeatureDate, and an array of licenses[] records.
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": [
{
"projectId": "39abjcmqdc6r4gsctj7zjufnv",
"deviceId": "88mqx2r8dv6fgsc968ybvw43k",
"deviceName": "litmus-edge-005056b98eb5",
"deviceFriendlyName": "API Portal (00:50:56:b9:8e:b5)",
"macAddress": "00:50:56:b9:8e:b5",
"expiryFeatureDate": 1786233599000,
"licenses": [
{
"id": "2e4392ee-2d75-4850-994f-13f36c1fdbc7",
"companyName": null,
"projectId": "39abjcmqdc6r4gsctj7zjufnv",
"projectName": null,
"deviceId": "88mqx2r8dv6fgsc968ybvw43k",
"deviceName": null,
"deviceFriendlyName": null,
"macAddress": null,
"licenseKey": "0000-0000-0000-0000",
"licenseSku": "litmusedge-scale-nl",
"activationDate": null,
"expiryDate": 1786233599000,
"isCore": true,
"isTrial": false,
"status": "OK",
"origin": "EDGE",
"reservedUntil": null,
"votmSensorCount": null,
"expiryFeatureDate": 1786233599000,
"trial": false,
"core": true
}
]
}
]
}
Edge License Features
GET {{LEM_URL}}/api/v1/feature
Edge License Features
Returns the LEM-level feature catalog (server features such as EdgeEvents, DigitalTwin, OmaRegistry). Each carries a type (STABLE/EXPERIMENTAL) and an enabled flag.
Endpoint
GET {{LEM_URL}}/api/v1/feature
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. Array of feature objects with entryID, name, description, type, enabled (1/0), createdOn, updatedOn.
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": 1,
"name": "EdgeEvents",
"description": "Edge events management",
"type": "EXPERIMENTAL",
"enabled": 1,
"createdOn": 1597449600000,
"updatedOn": null
},
{
"entryID": 2,
"name": "DigitalTwin",
"description": "Asset Management",
"type": "EXPERIMENTAL",
"enabled": 0,
"createdOn": 1597449600000,
"updatedOn": null
},
{
"entryID": 3,
"name": "OmaRegistry",
"description": "OMA Registry management",
"type": "STABLE",
"enabled": 1,
"createdOn": 1597449600000,
"updatedOn": null
},
{
"entryID": 4,
"name": "RemoteUI",
"description": "Edge device remote UI",
"type": "STABLE",
"enabled": 1,
"createdOn": 1613779200000,
"updatedOn": null
},
{
"entryID": 5,
"name": "ParameterizedTemplates",
"description": "Edge device parameterized templates management",
"type": "STABLE",
"enabled": 1,
"createdOn": 1615420800000,
"updatedOn": null
},
{
"entryID": 6,
"name": "EdgeRemoteNetwork",
"description": "Edge Remote Networks management",
"type": "STABLE",
"enabled": 1,
"createdOn": 1616716800000,
"updatedOn": null
}
]
License Features
GET {{LEM_URL}}/api/v1/licenses2/features
License Features
Returns the LEM license's allowed features with expiry. Different from Edge License Features -- this is what the LEM license itself unlocks (core, catalog, ...), not the feature catalog.
Endpoint
GET {{LEM_URL}}/api/v1/licenses2/features
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. Each entry: name, desc, expires, expiresTimestamp, count (-1 unmetered), limited, enabled.
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
[
{
"name": "core",
"desc": "core",
"expires": "2025-09-02T00:00:00Z",
"expiresTimestamp": 1756771200000,
"count": -1,
"limited": false,
"enabled": true
},
{
"name": "catalog",
"desc": "catalog",
"expires": "2025-09-02T00:00:00Z",
"expiresTimestamp": 1756771200000,
"count": -1,
"limited": false,
"enabled": true
}
]
Verify LEM License
GET {{LEM_URL}}/api/v1/licenses2/verify
Verify LEM License
Checks whether the LEM license is valid and how long it has left. Same answer as the admin console Verify License, available to project users.
Endpoint
GET {{LEM_URL}}/api/v1/licenses2/verify
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.
| Field | Type | Description |
|---|---|---|
status |
string | S = valid. |
expDays |
integer | Days until the license expires. |
message / messageDetails |
string | Warning text, e.g. when a trial is about to expire. null otherwise. |
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
{
"status": "S",
"expDays": 13,
"message": null,
"messageDetails": null
}
Upload License CSV
POST {{LEM_URL}}/api/v1/device-license-pool/csv?projectId={{project_id}}
Upload License CSV
Bulk-imports licenses into the project pool from a CSV file. Multipart form-data; one file in the file part.
Endpoint
POST {{LEM_URL}}/api/v1/device-license-pool/csv?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) |
| ## Request body |
Multipart form-data with a single file part containing the CSV.
Response
200 OK -- application/json
{ "code": "S", "message": null, "messageDetails": null }
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
Response
Status: 200 OK
{
"code": "S",
"message": null,
"messageDetails": null
}
Generate Report to CSV
POST {{LEM_URL}}/api/v1/device-license-pool/all/csv?projectId={{project_id}}
Generate Report to CSV
Generates a license-usage report for the specified devices and returns it as a CSV string. Pass deviceIds: [] to include every device in the project.
Endpoint
POST {{LEM_URL}}/api/v1/device-license-pool/all/csv?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) |
| ## Request body |
{ "deviceIds": ["{{edge_device_id}}"] }
Response
200 OK -- text/csv. Columns: Project ID, Device ID, Device name, Device friendly name, Device MAC address, License key, SKU, Activation date, Expiry date, Feature Expiry Date, Is core, Is trial, Status.
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
{
"deviceIds": [
"{{edge_device_id}}"
]
}
Response
Status: 200 OK
"Project ID","Device ID","Device name","Device friendly name","Device MAC address","License key","SKU","Activation date","Expiry date","Feature Expiry Date","Is core","Is trial","Status"
"39abjcmqdc6r4gsctj7zjufnv","88mqx2r8dv6fgsc968ybvw43k","litmus-edge-005056b98eb5","API Portal (00:50:56:b9:8e:b5)","00:50:56:b9:8e:b5","0000-0000-0000-0000","litmusedge-scale-nl",,"2026-08-08T23:59:59","2026-08-08T23:59:59","true","false","OK"
Generate Report to Email
POST {{LEM_URL}}/api/v1/device-license-pool/all/csv/email?projectId={{project_id}}
Generate Report to Email
Same report as Generate Report to CSV but emails it to the specified addresses instead of returning it.
Endpoint
POST {{LEM_URL}}/api/v1/device-license-pool/all/csv/email?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) |
| ## Request body |
{
"deviceIds": ["{{edge_device_id}}"],
"emails": ["parth.shah@litmus.io"]
}
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
{
"deviceIds": [
"{{edge_device_id}}"
],
"emails": [
"parth.shah@litmus.io"
]
}