# Changelog: LitmusEdgeManager 2.26.x to 2.31.x - LE, LEM, LUNS API Docs

> You are at https://api.litmus.io/reference/changelog-lem.md.
> Parent: https://api.litmus.io/agents.md (product router: /lem/agents.md)
> What changed in the LEM API between 2.26.x and 2.31.x. This tree documents 2.31.x only; 2.26.x endpoints live only in the full collection JSON.

## Added in 2.31.x

- **Device Level User Management:** Create, update, read, and assign groups to users in LE devices from within LEM. Docs: /lem/edge-lifecycle/rbac.md
- **Digital Twin v2 Attribute Parameters:** Read attribute parameters from digital twins. Docs: /lem/digital-twins.md
- **Notifications:** Access service level notifications for LEM and the LEM admin console. Docs: /lem/edge-lifecycle/dashboard.md, /lem/admin-console/dashboard.md
- **Git Tracking:** Set a remote git tracking repository, schedule routine sync, and configure project level settings. Docs: /lem/admin-console/integration.md
- **Asset Management Roles:** Assign and revoke asset management roles to LEM users via the admin console. Docs: /lem/admin-console/admin-console-settings.md
- **AI Assistant Settings:** Configure and validate AI assistant settings via the admin console. Docs: /lem/admin-console/integration.md
- **Admin Console Instance Alerts:** Read, create, update, and test instance alert triggers and action templates. Docs: /lem/admin-console/instance-alerts.md
- **Improved Admin-Level Log Querying:** Improved filtering for getting logs from the admin console in a parameterizable format. Docs: /lem/admin-console/logs.md

## Deprecated in 2.31.x

- **Licensing:** All `/licenses/` endpoints, moving to `/licenses2`. Docs: /lem/edge-lifecycle/licenses.md
- **Digital Twins:** `/dt2/{static-attribute, dynamic-attribute}` POST and DELETE operations
- **Firmware Job:** All `/firmware/job` endpoints

## Removed in 2.31.x

- **Device Polling:** `/device/poll/exec` endpoints removed

## Complete operation change list

### Added (LEM main API, `{{LEM_URL}}/api/v1/...`)

- **GET** `/loopedge-user/{deviceId}/users`
- **POST** `/loopedge-user/{deviceId}/users`
- **PUT** `/loopedge-user/{deviceId}/users/{userId}`
- **DELETE** `/loopedge-user/{deviceId}/users/{userId}`
- **GET** `/loopedge-user/{deviceId}/users/{userId}/groups`
- **PUT** `/loopedge-user/{deviceId}/users/{userId}/groups`
- **POST** `/loopedge-user/{deviceId}/password`
- **GET** `/loopedge-user/{deviceId}/roles`
- **GET** `/loopedge-user/{deviceId}/permissions`
- **GET** `/loopedge-user/{deviceId}/groups`
- **GET** `/dt2/attribute-parameters/{modelId}`
- **GET** `/system/notifications`
- **GET** `/auth/validate`

### Added (LEM Admin Console, `{{LEM_adminURL}}/admin/v1/...`)

- **GET** `/git/provider`
- **POST** `/git/provider`
- **DELETE** `/git/provider`
- **POST** `/git/provider/validate`
- **GET** `/git/provider/public-key`
- **GET** `/git/schedule`
- **POST** `/git/schedule`
- **DELETE** `/git/schedule`
- **GET** `/git/tracking`
- **PUT** `/git/tracking/{projectId}`
- **POST** `/git/tracking/{projectId}/sync`
- **POST** `/user/asset-mgmt/revoke`
- **POST** `/user/asset-mgmt/grant`
- **GET** `/user/asset-mgmt/roles`
- **GET** `/ai-assistant-settings`
- **POST** `/ai-assistant-settings`
- **POST** `/ai-assistant-settings/validate`
- **DELETE** `/ai-assistant-settings/apikey`
- **GET** `/system/notifications`
- **GET** `/instance-alert/trigger/definition`
- **POST** `/instance-alert/trigger/definition`
- **GET** `/instance-alert/trigger/variables/{sourceType}`
- **GET** `/instance-alert/trigger/templates`
- **DELETE** `/instance-alert/trigger/definition/{triggerId}`
- **POST** `/instance-alert/action/test/webhook`
- **GET** `/instance-alert/action/templates`
- **POST** `/instance-alert/action/templates`
- **DELETE** `/instance-alert/action/templates/{templateId}`
- **GET** `/instance-alert/events-registry`
- **GET** `/logs`
- **GET** `/logs/contexts`
- **DELETE** `/registry/image/`

### Deprecated

- **POST** `/image/{objectName}`
- **POST** `/firmware/start/{projectId}/{jobId}`
- **GET** `/firmware/job`
- **POST** `/firmware/job`
- **GET** `/firmware/job/list`
- **POST** `/dt2/transformation/{modelId}`
- **DELETE** `/dt2/transformation/{id}`
- **POST** `/dt2/static-attribute`
- **DELETE** `/dt2/static-attribute`
- **POST** `/dt2/dynamic-attribute`
- **DELETE** `/dt2/dynamic-attribute`
- **GET** `/licenses`
- **GET** `/licenses/usage`
- **GET** `/licenses/offline`
- **GET** `/licenses/entitlement/performance`
- **GET** `/licenses/entitlement/features`
- **GET** `/licenses/current-version`
