# LitmusEdgeManager 2.31.x API Documentation/Admin Console APIs/License Server Mgmt - LE, LEM, LUNS API Docs

## 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

```http
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/version
```
## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.
## Response

```json
{ "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

```json
{
    "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

```http
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/licenses/offline/info
```
## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.
## Response

```json
{ "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

```json
{
    "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

```http
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/licenses?primary=true
```
## 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

```json
[
    {
        "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

```http
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/licenses?primary=false
```
## 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

```json
[
    {
        "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

```http
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/allocation-summary
```
## 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

```json
{
    "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
        }
    ]
}
```

---

## 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

```http
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/usage/summary
```
## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.
## Response

```json
{ "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

```json
{
    "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

```http
GET {{LEM_adminURL}}/admin/v1/litmus-licensing/apikeys/extended
```
## 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

```json
[
    {
        "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"
        }
    }
]
```

---

