LitmusEdgeManager 2.31.x API Documentation/Digital Twins/Asset Management - LE, LEM, LUNS API Docs
DigitalTwin Model Details
GET {{LEM_URL}}/api/v1/dt2/model/{{LEM_DT_Model_ID}}
DigitalTwin Model Details
Returns the top-level fields for one model. Same shape as one entry of Get DigitalTwin Models but addressed by model ID instead of company name.
Endpoint
GET {{LEM_URL}}/api/v1/dt2/model/{{LEM_DT_Model_ID}}
Authentication
X-AuthToken header set to your LEM admin API token (X-AuthToken: {{LEM_AdminApiToken}}). Tokens are generated in the LEM Admin Console under Settings > Tokens.
Path parameters
| Location | Name | Required | Description |
|---|---|---|---|
| Path | {{LEM_DT_Model_ID}} |
Yes | Model UUID. |
Response
200 OK -- application/json. See Get DigitalTwin Models for the field reference.
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
{
"hasImage": true,
"ID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"Name": "PlantModel",
"CompanyName": "solutions",
"Description": "",
"Assets": "ASSET",
"ImagePreviewUrl": "https://10.17.10.247:443/api/v1/image/dt2-model-image-preview-2f00a759-96d8-4b2c-acd6-6861542f65b2",
"ImageUrl": "https://10.17.10.247:443/api/v1/image/dt2-model-image-2f00a759-96d8-4b2c-acd6-6861542f65b2",
"RootNodeID": "5fdfd55f-38ff-4406-ab57-9c41c8f92ab6",
"Version": 0
}
DigitalTwin Model Static Attributes
GET {{LEM_URL}}/api/v1/dt2/static-attributes/{{LEM_DT_Model_ID}}
DigitalTwin Model Static Attributes
Returns the static (constant) attributes attached to one model. Each attribute is a typed key/value pair.
Endpoint
GET {{LEM_URL}}/api/v1/dt2/static-attributes/{{LEM_DT_Model_ID}}
Authentication
X-AuthToken header set to your LEM admin API token (X-AuthToken: {{LEM_AdminApiToken}}). Tokens are generated in the LEM Admin Console under Settings > Tokens.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
ID |
string | Attribute UUID. |
ModelID |
string | Parent model UUID. |
InstanceID |
string | null for model-level attributes; UUID for per-instance overrides (not applicable at LEM scope). |
Key |
string | Attribute name (e.g. Manufacturer). |
Value |
string | Attribute value. |
[
{ "ID": "362e4c6c-f3ba-4e55-b759-0d07c18b1879", "ModelID": "2f00a759-...", "InstanceID": null, "Key": "Type", "Value": "Manufacturing" },
{ "ID": "6f4374ad-ec7a-40a4-8dcd-89cce0bf8943", "ModelID": "2f00a759-...", "InstanceID": null, "Key": "Location", "Value": "Los Angeles, CA, USA" }
]
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
[
{
"ID": "362e4c6c-f3ba-4e55-b759-0d07c18b1879",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"Key": "Type",
"Value": "Manufacturing"
},
{
"ID": "6f4374ad-ec7a-40a4-8dcd-89cce0bf8943",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"Key": "Location",
"Value": "Los Angeles, CA, USA"
},
{
"ID": "f11c264c-c206-4070-bb97-fcf6cd707562",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"Key": "Plant Code",
"Value": " "
},
{
"ID": "f30b7800-c644-4161-83e8-7791f822ff3f",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"Key": "Business Group",
"Value": "Automotive"
}
]
DigitalTwin Dynamic Attributes
GET {{LEM_URL}}/api/v1/dt2/dynamic-attributes/{{LEM_DT_Model_ID}}
DigitalTwin Dynamic Attributes
Returns the dynamic (live-signal) attributes attached to one model. Each dynamic attribute carries name, data type, unit, and an optional topic + transformation schema binding.
Endpoint
GET {{LEM_URL}}/api/v1/dt2/dynamic-attributes/{{LEM_DT_Model_ID}}
Authentication
X-AuthToken header set to your LEM admin API token (X-AuthToken: {{LEM_AdminApiToken}}). Tokens are generated in the LEM Admin Console under Settings > Tokens.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
ID |
string | Attribute UUID. |
Name |
string | Attribute name. |
DataType |
string | OPC UA-style type (int, float, bool, ...). Empty for unspecified. |
Unit |
string | Engineering unit. |
ModelID |
string | Parent model. |
InstanceID |
string | null at LEM scope. |
SchemaID |
string | UUID of an attached transformation, or null. |
Topic |
string | Source MQTT topic when the attribute is bound to a live data source. |
SkipParentKey |
boolean | If true, omit the parent hierarchy node's name from the published payload key. |
[
{
"ID": "2583268f-4816-4fce-9769-c5db7a781987",
"Name": "Equipment_7",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": 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.
Response
Status: 200 OK
[
{
"ID": "2583268f-4816-4fce-9769-c5db7a781987",
"Name": "Equipment_7",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
{
"ID": "4440a44d-8947-4d03-8c12-3f4a7d72f269",
"Name": "Equipment_3",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
{
"ID": "674bc555-f4b8-4cb3-8fcf-5564ebd439f3",
"Name": "Equipment_4",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
{
"ID": "80f8ce9b-14fa-4612-9166-c4fa890e02cb",
"Name": "Equipment_2",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
{
"ID": "87099aba-6d49-4d32-947e-9ab3f59bb434",
"Name": "Equipment_1",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
{
"ID": "a4ac30fe-a5d1-4e6d-94e6-42ddba583d66",
"Name": "Equipment_6",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
{
"ID": "fc1d0f09-b090-431e-9dbc-796cb4edac92",
"Name": "Equipment_5",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
}
]
DigitalTwin Transformations
GET {{LEM_URL}}/api/v1/dt2/transformations/{{LEM_DT_Model_ID}}
DigitalTwin Transformations
Returns the transformations (named JSON Schemas) defined for one model. Dynamic attributes reference transformations via their SchemaID to validate / shape payloads before publishing.
Endpoint
GET {{LEM_URL}}/api/v1/dt2/transformations/{{LEM_DT_Model_ID}}
Authentication
X-AuthToken header set to your LEM admin API token (X-AuthToken: {{LEM_AdminApiToken}}). Tokens are generated in the LEM Admin Console under Settings > Tokens.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
ID |
string | Transformation UUID. Used as SchemaID from dynamic attributes. |
Name |
string | Display name. |
ModelID |
string | Parent model. |
Schema |
string | JSON Schema (or JSONPath mapping) as a string. Decode client-side. |
SchemaType |
string | json for JSON Schema, other values reserved. |
[
{ "ID": "28099054-40b7-4fa4-930d-5696779f628c", "Name": "plant", "ModelID": "2f00a759-...", "Schema": "{\"plant\":\"$.metadata.plant\"}", "SchemaType": "json" }
]
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
[
{
"ID": "28099054-40b7-4fa4-930d-5696779f628c",
"Name": "plant",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"Schema": "{\"plant\":\"$.metadata.plant\"}",
"SchemaType": "json"
},
{
"ID": "776eab7e-caa0-4ee3-b28d-6add7197b8a3",
"Name": "OEE",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"Schema": "{\"OEE\":\"$.OEE\"}",
"SchemaType": "json"
}
]
DigitalTwin Get Heirarchy
GET {{LEM_URL}}/api/v1/dt2/model/node/{{LEM_DT_Model_RootNodeID}}
DigitalTwin Get Hierarchy
Returns the full hierarchical node tree for one model, starting at the root node. Each node carries an Object reference and an array of ChildNodes.
Despite the Postman name's misspelling ("Heirarchy"), the underlying field is Hierarchy. The path takes the root node ID (not the model ID): obtain it from Get DigitalTwin Models > RootNodeID.
Endpoint
GET {{LEM_URL}}/api/v1/dt2/model/node/{{LEM_DT_Model_RootNodeID}}
Authentication
X-AuthToken header set to your LEM admin API token (X-AuthToken: {{LEM_AdminApiToken}}). Tokens are generated in the LEM Admin Console under Settings > Tokens.
Path parameters
| Location | Name | Required | Description |
|---|---|---|---|
| Path | {{LEM_DT_Model_RootNodeID}} |
Yes | Root node UUID (from RootNodeID). |
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
ID |
string | Node UUID. |
Name |
string | Node display name. |
NodeType |
string | MODEL, FOLDER, STATIC_ATTRIBUTE, DYNAMIC_ATTRIBUTE. |
Object |
object | Embedded entity record (the model itself for the root; an attribute / folder for children). |
ChildNodes |
object[] | Recursive nested nodes. |
{
"ID": "5fdfd55f-38ff-4406-ab57-9c41c8f92ab6",
"Name": "root",
"Object": {
"hasImage": true,
"ID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"Name": "PlantModel",
"CompanyName": "solutions",
"Description": "",
"Assets": "ASSET",
"RootNodeID": "5fdfd55f-38ff-4406-ab57-9c41c8f92ab6",
"Version": 1
},
"NodeType": "MODEL",
"ChildNodes": [
{
"ID": "cd9f0df5-88f9-415e-8ffc-31067ea59461",
"Name": "Plant",
"Object": {}
}
]
}
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
{
"ID": "5fdfd55f-38ff-4406-ab57-9c41c8f92ab6",
"Name": "root",
"Object": {
"hasImage": true,
"ID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"Name": "PlantModel",
"CompanyName": "solutions",
"Description": "",
"Assets": "ASSET",
"ImagePreviewUrl": null,
"ImageUrl": null,
"RootNodeID": "5fdfd55f-38ff-4406-ab57-9c41c8f92ab6",
"Version": 1
},
"NodeType": "MODEL",
"ChildNodes": [
{
"ID": "cd9f0df5-88f9-415e-8ffc-31067ea59461",
"Name": "Plant",
"Object": null,
"NodeType": "FOLDER",
"ChildNodes": [
{
"ID": "aa5f0924-e7c3-4182-a3b6-cd06d890f81a",
"Name": "Area_1",
"Object": null,
"NodeType": "FOLDER",
"ChildNodes": [
{
"ID": "20cb18cd-1b26-45df-bb46-70e77d664f3e",
"Name": "Line_1",
"Object": null,
"NodeType": "FOLDER",
"ChildNodes": [
{
"ID": "d1418fae-dd3c-41fb-9fdf-29c047b1edf5",
"Name": "Equipment",
"Object": null,
"NodeType": "FOLDER",
"ChildNodes": [
{
"ID": "73e24a5e-9b0d-42a0-a0e8-cd073bf22902",
"Name": "Equipment_1",
"Object": {
"ID": "87099aba-6d49-4d32-947e-9ab3f59bb434",
"Name": "Equipment_1",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
"NodeType": "DYNAMIC_ATTRIBUTE",
"ChildNodes": [],
"CompanyName": null,
"Position": 0
},
{
"ID": "b724b712-b39b-4906-a69b-e35befe75a01",
"Name": "Equipment_2",
"Object": {
"ID": "80f8ce9b-14fa-4612-9166-c4fa890e02cb",
"Name": "Equipment_2",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
"NodeType": "DYNAMIC_ATTRIBUTE",
"ChildNodes": [],
"CompanyName": null,
"Position": 1
}
],
"CompanyName": null,
"Position": 0
}
],
"CompanyName": null,
"Position": 0
},
{
"ID": "6ec2d6c9-0658-4ccc-bdcb-f873ddc45c6e",
"Name": "Line_2",
"Object": null,
"NodeType": "FOLDER",
"ChildNodes": [
{
"ID": "9796a912-547b-4461-8570-8e2f26d77751",
"Name": "Equipment",
"Object": null,
"NodeType": "FOLDER",
"ChildNodes": [
{
"ID": "b950f2cf-054e-40ea-a8d6-2aa62c99e93a",
"Name": "Equipment_3",
"Object": {
"ID": "4440a44d-8947-4d03-8c12-3f4a7d72f269",
"Name": "Equipment_3",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
"NodeType": "DYNAMIC_ATTRIBUTE",
"ChildNodes": [],
"CompanyName": null,
"Position": 0
},
{
"ID": "5f797d31-3c48-45e9-b5f5-686a4aa87267",
"Name": "Equipment_4",
"Object": {
"ID": "674bc555-f4b8-4cb3-8fcf-5564ebd439f3",
"Name": "Equipment_4",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
"NodeType": "DYNAMIC_ATTRIBUTE",
"ChildNodes": [],
"CompanyName": null,
"Position": 1
}
],
"CompanyName": null,
"Position": 0
}
],
"CompanyName": null,
"Position": 1
}
],
"CompanyName": null,
"Position": 0
},
{
"ID": "b46e88b5-141e-40c2-9219-4bb260801624",
"Name": "Area_2",
"Object": null,
"NodeType": "FOLDER",
"ChildNodes": [
{
"ID": "06c8ba1e-97d4-48ee-a954-34b08c7cd1da",
"Name": "Line_1",
"Object": null,
"NodeType": "FOLDER",
"ChildNodes": [
{
"ID": "f3a30960-5a82-4970-94c6-ae5b535b9774",
"Name": "Equipment",
"Object": null,
"NodeType": "FOLDER",
"ChildNodes": [
{
"ID": "812d1584-5ee9-4df5-97a6-d034cc711151",
"Name": "Equipment_5",
"Object": {
"ID": "fc1d0f09-b090-431e-9dbc-796cb4edac92",
"Name": "Equipment_5",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
"NodeType": "DYNAMIC_ATTRIBUTE",
"ChildNodes": [],
"CompanyName": null,
"Position": 0
}
],
"CompanyName": null,
"Position": 0
}
],
"CompanyName": null,
"Position": 0
},
{
"ID": "a7992c75-d485-46e9-9626-cedc8482b8a3",
"Name": "Line_2",
"Object": null,
"NodeType": "FOLDER",
"ChildNodes": [
{
"ID": "24dda06e-808f-439f-8fcd-4249cc580ee6",
"Name": "Equipment",
"Object": null,
"NodeType": "FOLDER",
"ChildNodes": [
{
"ID": "0b3e9d27-32b6-497f-abe6-f973cb043a07",
"Name": "Equipment_6",
"Object": {
"ID": "a4ac30fe-a5d1-4e6d-94e6-42ddba583d66",
"Name": "Equipment_6",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
"NodeType": "DYNAMIC_ATTRIBUTE",
"ChildNodes": [],
"CompanyName": null,
"Position": 0
},
{
"ID": "ad070e43-67db-4ffa-b92a-a4510975914e",
"Name": "Equipment_7",
"Object": {
"ID": "2583268f-4816-4fce-9769-c5db7a781987",
"Name": "Equipment_7",
"DataType": "",
"Unit": "",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"SchemaID": null,
"Topic": "",
"SkipParentKey": false
},
"NodeType": "DYNAMIC_ATTRIBUTE",
"ChildNodes": [],
"CompanyName": null,
"Position": 1
}
],
"CompanyName": null,
"Position": 0
}
],
"CompanyName": null,
"Position": 1
}
],
"CompanyName": null,
"Position": 1
},
{
"ID": "bb2199dd-d557-418f-91a9-537e9d540f06",
"Name": "Type",
"Object": {
"ID": "362e4c6c-f3ba-4e55-b759-0d07c18b1879",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"Key": "Type",
"Value": "Manufacturing"
},
"NodeType": "STATIC_ATTRIBUTE",
"ChildNodes": [],
"CompanyName": null,
"Position": 2
},
{
"ID": "7d344e61-750e-42ef-832b-b74b91feaf71",
"Name": "Plant Code",
"Object": {
"ID": "f11c264c-c206-4070-bb97-fcf6cd707562",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"Key": "Plant Code",
"Value": " "
},
"NodeType": "STATIC_ATTRIBUTE",
"ChildNodes": [],
"CompanyName": null,
"Position": 3
},
{
"ID": "92d7422e-48c6-4210-8706-76b50e10ece2",
"Name": "Location",
"Object": {
"ID": "6f4374ad-ec7a-40a4-8dcd-89cce0bf8943",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"Key": "Location",
"Value": "Los Angeles, CA, USA"
},
"NodeType": "STATIC_ATTRIBUTE",
"ChildNodes": [],
"CompanyName": null,
"Position": 4
},
{
"ID": "119f4d46-39e5-42d3-9ba5-dd5f829534c5",
"Name": "Business Group",
"Object": {
"ID": "f30b7800-c644-4161-83e8-7791f822ff3f",
"ModelID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"InstanceID": null,
"Key": "Business Group",
"Value": "Automotive"
},
"NodeType": "STATIC_ATTRIBUTE",
"ChildNodes": [],
"CompanyName": null,
"Position": 5
}
],
"CompanyName": null,
"Position": 0
}
],
"CompanyName": "solutions",
"Position": 0
}
Save Changes to DigitalTwin Model
POST {{LEM_URL}}/api/v1/dt2/model/complete/{{company_name}}
Save Changes to DigitalTwin Model (transactional)
Applies a batch of edits to one model atomically: create / update / delete static and dynamic attributes in a single transaction. Used by the LEM UI to commit every edit in the model editor in one round trip.
The request envelope groups changes by kind (createStaticAttributes[], updateStaticAttributes[], delStaticAttributes[], createDynamicAttributes[], updateDynamicAttributes[], delDynamicAttributes[]). Pass empty arrays for any kind you don't need.
Endpoint
POST {{LEM_URL}}/api/v1/dt2/model/complete/{{company_name}}
Content-Type: application/json
Authentication
X-AuthToken header set to your LEM admin API token (X-AuthToken: {{LEM_AdminApiToken}}). Tokens are generated in the LEM Admin Console under Settings > Tokens.
Request body
{
"modelId": "{{LEM_DT_Model_ID}}",
"createStaticAttributes": [
{
"ID": "eed5f265-a24b-4856-a5c1-0b3683506b9c",
"ModelID": "{{LEM_DT_Model_ID}}",
"InstanceID": null,
"Key": "Serial",
"Value": "$EDGE_DT_MODEL_NAME",
"$isNew": true
}
],
"updateStaticAttributes": [],
"delStaticAttributes": [],
"createDynamicAttributes": [],
"updateDynamicAttributes": [],
"delDynamicAttributes": []
}
| Field | Type | Required | Description |
|---|---|---|---|
modelId |
string | Yes | Target model UUID. |
createStaticAttributes[] |
object[] | No | Static attrs to create. Each item carries ID (caller-generated), Key, Value, plus $isNew: true. |
updateStaticAttributes[] |
object[] | No | Static attrs to update. Each item has ID, Key, Value. |
delStaticAttributes[] |
object[] | No | Static attrs to delete. Each item has just {ID}. |
createDynamicAttributes[] / updateDynamicAttributes[] / delDynamicAttributes[] |
object[] | No | Same shape, for dynamic attrs. |
Response
200 OK -- application/json. Returns the post-edit model record with bumped Version.
{
"hasImage": true,
"ID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"Name": "PlantModel",
"CompanyName": "solutions",
"RootNodeID": "5fdfd55f-38ff-4406-ab57-9c41c8f92ab6",
"Version": 4
}
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
{
"modelId": "{{LEM_DT_Model_ID}}",
"createStaticAttributes": [
{
"ID": "eed5f265-a24b-4856-a5c1-0b3683506b9c",
"ModelID": "{{LEM_DT_Model_ID}}",
"InstanceID": null,
"Key": "Serial",
"Value": "$EDGE_DT_MODEL_NAME",
"$isNew": true
}
],
"updateStaticAttributes": [],
"delStaticAttributes": [],
"createDynamicAttributes": [],
"updateDynamicAttributes": [],
"delDynamicAttributes": [],
"createTransformations": [],
"updateTransformations": [],
"deleteTransformations": [],
"saveHierarchy": null
}
Response
Status: 200 OK
{
"hasImage": true,
"ID": "2f00a759-96d8-4b2c-acd6-6861542f65b2",
"Name": "PlantModel",
"CompanyName": "solutions",
"Description": "",
"Assets": "ASSET",
"ImagePreviewUrl": null,
"ImageUrl": null,
"RootNodeID": "5fdfd55f-38ff-4406-ab57-9c41c8f92ab6",
"Version": 4
}
Get Attribute Parameters
GET {{LEM_URL}}/api/v1/dt2/attribute-parameters/{{LEM_DT_Model_ID}}
Get Attribute Parameters
Returns the list of attribute parameters for a model. Parameters are free-form (Name, Value) pairs attached to an owner (ownerType: 0 = model, other values reserved). They behave like static attributes for templated bindings.
Endpoint
GET {{LEM_URL}}/api/v1/dt2/attribute-parameters/{{LEM_DT_Model_ID}}
Authentication
X-AuthToken header set to your LEM admin API token (X-AuthToken: {{LEM_AdminApiToken}}). Tokens are generated in the LEM Admin Console under Settings > Tokens.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
ID |
string | Parameter UUID. |
ModelID |
string | Parent model UUID (echo of path parameter). |
ownerId |
string | UUID of the parameter's owner (model or attribute). |
ownerType |
integer | 0 = model. Other values reserved for future owner kinds. |
Name / Value |
string | Parameter key/value. |
[
{
"ownerId": "e75dc5b0-2dec-4d1a-b45c-ec01884875d4",
"ownerType": 0,
"ID": "e5027b6f-423a-4af2-a9bf-f4f20b3d8aab",
"ModelID": "e75dc5b0-2dec-4d1a-b45c-ec01884875d4",
"Name": "test",
"Value": "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.
Response
Status: 200 OK
[
{
"ownerId": "e75dc5b0-2dec-4d1a-b45c-ec01884875d4",
"ownerType": 0,
"ID": "e5027b6f-423a-4af2-a9bf-f4f20b3d8aab",
"ModelID": "e75dc5b0-2dec-4d1a-b45c-ec01884875d4",
"Name": "test",
"Value": "value"
}
]
Deploy DigitalTwin Models to Edge Device
POST {{LEM_URL}}/api/v1/dt2/model/push/{{project_id}}/{{edge_device_id}}
Deploy DigitalTwin Models to Edge Device
Pushes one or more Digital Twin models from LEM to a single edge device. This is the direct, synchronous equivalent of the Deploy action in the LEM Digital Twins UI. Use it when you are deploying to one device and want the per-model result in the response.
To deploy to several devices in one operation, use Bulk Deploy DigitalTwin Models to Edge Devices instead.
Endpoint
POST {{LEM_URL}}/api/v1/dt2/model/push/{projectId}/{deviceId}
Content-Type: application/json
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId |
string | Yes | LEM project that owns the device. 25-character LEM ID, not a UUID. |
deviceId |
string | Yes | Target edge device. 25-character LEM ID, not a UUID. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
modelIds |
string[] |
Yes | Digital Twin model IDs to deploy. These are UUIDs, as returned by Get DigitalTwin Models in the ID field. |
{
"modelIds": ["{{LEM_DT_Model_ID}}"]
}
Note the ID mismatch: projectId and deviceId are LEM-format 25-character identifiers, while modelIds entries are UUIDs. Mixing them up is the most common cause of a 404 here.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
responseItems |
array |
One entry per model ID you submitted. |
responseItems[].modelId |
string |
The model this result refers to. |
responseItems[].success |
boolean |
Whether that model deployed. |
responseItems[].message |
string |
Failure detail. null on success. |
Results are per model, so a 200 does not mean every model deployed. Always check each success flag.
Deploying a model that is already on the device succeeds and overwrites it, so this call is safe to repeat.
Errors
| HTTP status | When it happens |
|---|---|
401 |
Missing or invalid API token. |
404 |
Device not found in the given project. Body is {"code":"E","message":"Failed to push Digital Twin models: device <id> not found"}. |
TLS note: LEM installations commonly use a self-signed certificate. Either install the CA in your client trust store or disable certificate verification when calling these endpoints directly.
Request Body
{
"modelIds": [
"{{LEM_DT_Model_ID}}"
]
}
Response
Status: 200 OK
{
"responseItems": [
{
"modelId": "87647a08-d8ea-46f7-a8d6-0984936f0a16",
"success": true,
"message": null
}
]
}
Bulk Deploy DigitalTwin Models to Edge Devices
POST {{LEM_URL}}/api/v1/async-task/task-with-subtasks
Bulk Deploy DigitalTwin Models to Edge Devices
Deploys Digital Twin models to one or more edge devices as an asynchronous task. This is what the LEM UI issues for a multi-device Digital Twin deployment.
The request returns a taskId immediately; the deployment runs in the background. Poll Verify DigitalTwin Deploy Task to follow it to completion.
This endpoint is the generic LEM async-task entry point, shared with application launches and AI/ML model uploads. What makes it a Digital Twin deployment is the task type DIGITAL_TWINS_MODEL_DEPLOY.
Endpoint
POST {{LEM_URL}}/api/v1/async-task/task-with-subtasks
Content-Type: application/json
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Display name for the task, shown in the LEM task list. |
description |
string | No | Free-form description. |
params |
object | Yes | Task-level parameters. Empty for this task type. |
companyName |
string | Yes | Company that owns the models. |
projectId |
string | Yes | LEM project. 25-character LEM ID, not a UUID. |
type |
enum | Yes | DIGITAL_TWINS_MODEL_DEPLOY. |
waitForOnline |
boolean | No | If true, hold the subtask until the device comes online instead of failing it. |
subtasks |
array | Yes | One entry per target device. See below. |
Subtask
| Field | Type | Required | Description |
|---|---|---|---|
deviceId |
string | Yes | Target edge device. 25-character LEM ID, not a UUID. |
num |
integer | Yes | Zero-based index of this subtask within the task. |
type |
enum | Yes | DIGITAL_TWINS_MODEL_DEPLOY. Must match the task-level type. |
params.modelIds |
string[] | Yes | Digital Twin model UUIDs to deploy to this device. |
plannedExecTime |
integer | Yes | Unix ms for a scheduled run, or 0 to run immediately. |
To deploy to several devices, add one subtask per device and increment num.
Digital Twin task types
GET {{LEM_URL}}/api/v1/async-task/task-types returns every task type valid on your instance. DIGITAL_TWINS_MODEL_DEPLOY and DIGITAL_TWINS_INSTANCES_UPGRADE are present on all supported LEM versions; newer builds add DIGITAL_TWINS_INSTANCE_CREATE and DIGITAL_TWINS_INSTANCE_CREATE_WITH_PARAMETERS. Query the endpoint rather than hardcoding the list.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
taskId |
string | UUID of the created task. Pass to Verify DigitalTwin Deploy Task. |
A 200 means the task was accepted, not that anything deployed. Per-device outcomes only appear on the subtasks.
Errors
| HTTP status | When it happens |
|---|---|
401 |
Missing or invalid API token. |
409 |
Malformed body, or an unrecognised type. The error message enumerates every valid task type. |
Passing a UUID where
deviceIdexpects a 25-character LEM ID returns a409carrying a raw SQL error rather than a validation message. If you seeData too long for column 'deviceId', you used the wrong ID format.TLS note: LEM installations commonly use a self-signed certificate. Either install the CA in your client trust store or disable certificate verification when calling these endpoints directly.
Request Body
{
"companyName": "{{company_name}}",
"description": "",
"name": "Deploy DT models (1 edge device)",
"params": {},
"projectId": "{{project_id}}",
"subtasks": [
{
"deviceId": "{{edge_device_id}}",
"num": 0,
"params": {
"modelIds": [
"{{LEM_DT_Model_ID}}"
]
},
"plannedExecTime": 0,
"type": "DIGITAL_TWINS_MODEL_DEPLOY"
}
],
"type": "DIGITAL_TWINS_MODEL_DEPLOY",
"waitForOnline": false
}
Response
Status: 200 OK
{
"taskId": "f67436eb-1a20-45cb-ab23-3ef8831074bd"
}
Verify DigitalTwin Deploy Task
GET {{LEM_URL}}/api/v1/async-task/{{task_id}}/subtasks
Verify DigitalTwin Deploy Task
Returns the per-device subtasks of a deployment task created by Bulk Deploy DigitalTwin Models to Edge Devices. Poll this until every subtask reports done: true.
Endpoint
GET {{LEM_URL}}/api/v1/async-task/{taskId}/subtasks
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
taskId |
string | Yes | UUID returned by the bulk deploy call. |
For a task-level rollup instead of per-device detail, use GET {{LEM_URL}}/api/v1/async-task/task/{taskId}, which returns the same status, progress, and done fields plus subtasksNum.
Response
200 OK -- application/json. An array with one object per target device.
| Field | Type | Description |
|---|---|---|
id |
string | Subtask UUID. |
taskId |
string | Parent task UUID. |
num |
integer | Subtask index within the task. |
deviceId |
string | Target edge device. |
devicePrettyName |
string | Device display name. null if the device was never resolved. |
type |
enum | DIGITAL_TWINS_MODEL_DEPLOY. |
params |
object | The parameters submitted for this device, echoed back. |
progress |
number | 0.0 to 1.0. |
status |
enum | NEW, WAITING, RUNNING, CANCELING, SUCCESS, ERROR, CANCEL. |
msg |
string | Failure detail when status is ERROR. null otherwise. |
startTime |
integer | Unix ms, 0 if not started. |
stopTime |
integer | Unix ms, 0 if not finished. |
createdBy |
string | Principal that created the task. API-token callers appear as token=<token-name>. |
done |
boolean | Terminal state reached. Poll until true. |
A successful deployment ends at status: "SUCCESS" with progress: 1.0. Note that done: true only means the subtask stopped; done: true with status: "ERROR" is a completed failure. Check status, not just done.
TLS note: LEM installations commonly use a self-signed certificate. Either install the CA in your client trust store or disable certificate verification when calling these endpoints directly.
Response
Status: 200 OK
[
{
"id": "30da9432-9d9b-48ac-b91b-9062633f59d1",
"taskId": "f67436eb-1a20-45cb-ab23-3ef8831074bd",
"num": 0,
"deviceId": "73rw480yh5ca3p8z3pfmt3g8y",
"devicePrettyName": "VM",
"type": "DIGITAL_TWINS_MODEL_DEPLOY",
"params": {
"modelIds": [
"87647a08-d8ea-46f7-a8d6-0984936f0a16"
]
},
"plannedExecTime": 0,
"progress": 1.0,
"status": "SUCCESS",
"msg": null,
"startTime": 1787942679000,
"stopTime": 1787942680000,
"context": null,
"createdOn": 1787942676000,
"updatedOn": 1787942680000,
"createdBy": "token=api-tests",
"updatedBy": "token=api-tests",
"companyName": "companyautotest-preset",
"projectId": "eknmwmp700amjhime0fudn60w",
"done": true
}
]
Get Deployed DigitalTwin Models
GET {{LEM_URL}}/api/v1/dt2/deployed-models?companyName={{company_name}}
Get Deployed DigitalTwin Models
Returns the Digital Twin models currently deployed to edge devices. Use this to confirm a deployment landed, or to audit which models are live on which devices.
Endpoint
GET {{LEM_URL}}/api/v1/dt2/deployed-models?companyName={{company_name}}
Query parameters
All are optional and combine as filters. With none supplied, the response covers everything the token can see.
| Parameter | Type | Description |
|---|---|---|
companyName |
string | Restrict to one company. |
deviceId |
string | Restrict to one edge device. |
modelId |
string | Restrict to one Digital Twin model UUID. |
isOnline |
boolean | Filter by whether the hosting device is currently online. |
isModifiable |
boolean | Filter by whether the deployed copy can be edited on the edge. |
Response
200 OK -- application/json. An array of deployed-model records.
| Field | Type | Description |
|---|---|---|
id |
string | Model UUID. Matches the ID from Get DigitalTwin Models. |
name |
string | Model name. |
companyName |
string | Owning company. |
deviceId |
string | Edge device hosting the model. |
devicePrettyName |
string | Device display name. |
version |
integer | Model version deployed. |
origin |
string | Where the deployed copy came from, e.g. external for a model pushed from LEM. |
modifiable |
boolean | Whether the copy can be edited on the edge. |
projectId |
string | Project that owns the device. |
projectName |
string | Project display name. |
online |
boolean | Whether the hosting device is currently online. |
createdOn |
integer | Unix ms of first deployment. |
updatedOn |
integer | Unix ms of last update. null if never updated since deployment. |
An empty array means nothing is deployed for the given filters.
TLS note: LEM installations commonly use a self-signed certificate. Either install the CA in your client trust store or disable certificate verification when calling these endpoints directly.
Response
Status: 200 OK
[
{
"id": "87647a08-d8ea-46f7-a8d6-0984936f0a16",
"name": "apidocs-dt-deploy",
"companyName": "companyautotest-preset",
"deviceId": "73rw480yh5ca3p8z3pfmt3g8y",
"version": 0,
"origin": "external",
"modifiable": true,
"createdOn": 1787942680000,
"updatedOn": null,
"projectId": "eknmwmp700amjhime0fudn60w",
"projectName": "AutoTestProject",
"devicePrettyName": "VM",
"online": true
}
]
Get DigitalTwin Models
GET {{LEM_URL}}/api/v1/dt2/models/{{company_name}}
Get DigitalTwin Models
Lists every digital twin model defined for one company.
Endpoint
GET {{LEM_URL}}/api/v1/dt2/models/{{company_name}}
Authentication
X-AuthToken header set to your LEM admin API token (X-AuthToken: {{LEM_AdminApiToken}}). Tokens are generated in the LEM Admin Console under Settings > Tokens.
Path parameters
| Location | Name | Required | Description |
|---|---|---|---|
| Path | {{company_name}} |
Yes | Company slug. |
Response
200 OK -- application/json. Array of model objects.
| Field | Type | Description |
|---|---|---|
ID |
string | Model UUID. Use as {{LEM_DT_Model_ID}} in subsequent calls. |
Name |
string | Display name. |
CompanyName |
string | Owning company (echo of path parameter). |
Description |
string | Free-form description. |
Assets |
string | Asset category (free-form grouping; default ASSET). |
hasImage |
boolean | Whether an image is attached. |
ImagePreviewUrl |
string | URL to a thumbnail of the model's image, or null. |
ImageUrl |
string | URL to the full-size image, or null. |
RootNodeID |
string | UUID of the model's root hierarchy node. |
Version |
integer | Schema version (increments on save). |
[
{
"hasImage": false,
"ID": "6e2976a8-1bd8-44c7-959d-27f18c006881",
"Name": "api-test",
"CompanyName": "solutions",
"Description": "Test DT model",
"Assets": "ASSET",
"ImagePreviewUrl": null,
"ImageUrl": null,
"RootNodeID": "5c48fd61-2237-42bc-b262-daf8cf79bfe0",
"Version": 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
[
{
"hasImage": false,
"ID": "6e2976a8-1bd8-44c7-959d-27f18c006881",
"Name": "api-test",
"CompanyName": "solutions",
"Description": "Test DT model",
"Assets": "ASSET",
"ImagePreviewUrl": null,
"ImageUrl": null,
"RootNodeID": "5c48fd61-2237-42bc-b262-daf8cf79bfe0",
"Version": 0
}
]
Create DigitalTwin Model
POST {{LEM_URL}}/api/v1/dt2/model/{{company_name}}
Create DigitalTwin Model
Creates a new digital twin model inside one company. The new model starts empty -- populate attributes and hierarchy via Digital Twin Model Details > Save Changes to DigitalTwin Model.
Endpoint
POST {{LEM_URL}}/api/v1/dt2/model/{{company_name}}
Content-Type: application/json
Authentication
X-AuthToken header set to your LEM admin API token (X-AuthToken: {{LEM_AdminApiToken}}). Tokens are generated in the LEM Admin Console under Settings > Tokens.
Path parameters
| Location | Name | Required | Description |
|---|---|---|---|
| Path | {{company_name}} |
Yes | Owning company slug. |
Request body
{
"ID": null,
"Name": "api-test",
"Description": "Test DT model",
"Assets": "ASSET"
}
| Field | Type | Required | Description |
|---|---|---|---|
ID |
string? | No | Pass null to let the server generate a UUID. Provide a UUID to use a specific one. |
Name |
string | Yes | Display name. Must be unique within the company. |
Description |
string | No | Free-form description. |
Assets |
string | No | Asset category (default ASSET). |
Response
200 OK -- application/json. Returns the newly created model with its server-assigned ID and RootNodeID.
{
"hasImage": false,
"ID": "6e2976a8-1bd8-44c7-959d-27f18c006881",
"Name": "api-test",
"CompanyName": "solutions",
"Description": "Test DT model",
"Assets": "ASSET",
"ImagePreviewUrl": null,
"ImageUrl": null,
"RootNodeID": "5c48fd61-2237-42bc-b262-daf8cf79bfe0",
"Version": 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.
Request Body
{
"Assets": "ASSET",
"Description": "Test DT model",
"ID": null,
"Name": "api-test"
}
Response
Status: 200 OK
{
"hasImage": false,
"ID": "6e2976a8-1bd8-44c7-959d-27f18c006881",
"Name": "api-test",
"CompanyName": "solutions",
"Description": "Test DT model",
"Assets": "ASSET",
"ImagePreviewUrl": null,
"ImageUrl": null,
"RootNodeID": "5c48fd61-2237-42bc-b262-daf8cf79bfe0",
"Version": 0
}