LitmusEdge 4.0.x API Documentation/Integration/Streaming - LE, LEM, LUNS API Docs
List Instance Subscriptions
POST {{edgeUrl}}/cc/v2
List Instance Subscriptions
Returns every topic / subscription configured on one instance. Each subscription is a (LocalName -> RemoteName) pair plus a direction flag and per-subscription config.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query ListSubscriptions($input: ListSubscriptionsRequest!) {
ListSubscriptions(input: $input) {
TopicID
IsLocalToRemote
Enabled
LocalName
RemoteName
Config
Description
}
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
InstanceID |
ID! |
Yes | UUID of the instance. |
{ "input": { "InstanceID": "{{integration_instance_id}}" } }
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
TopicID |
string | Subscription UUID. Use as {{integration_topic_id}} in mutation calls. |
IsLocalToRemote |
boolean | true for outbound (local-to-remote); false for inbound (remote-to-local). |
Enabled |
boolean | Whether the subscription is active. |
LocalName |
string | Local topic name (e.g. devicehub.alias.<device>.<tag>). |
RemoteName |
string | Remote topic / table / queue name. Empty when the provider uses a single fixed sink. |
Config |
string | Provider-specific subscription config (JSON-encoded). Typically empty. |
Description |
string | Free-form description. By default holds the source tag's display name. |
{
"data": {
"ListSubscriptions": [
{
"TopicID": "92057D78-AE19-4653-8DC9-69CACBF6D678",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.BadPart",
"RemoteName": "",
"Config": "",
"Description": "BadPart"
}
]
}
}
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
query ListSubscriptions($input: ListSubscriptionsRequest!) {
ListSubscriptions(input: $input) {
TopicID
IsLocalToRemote
Enabled
LocalName
RemoteName
Config
Description
}
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}"
}
}
Response
Status: 200 OK
{
"data": {
"ListSubscriptions": [
{
"TopicID": "92057D78-AE19-4653-8DC9-69CACBF6D678",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.BadPart",
"RemoteName": "",
"Config": "",
"Description": "BadPart"
},
{
"TopicID": "C2030499-AD56-4109-96FD-DB90CA39E2F0",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.BadPartInterval_Base",
"RemoteName": "",
"Config": "",
"Description": "BadPartInterval_Base"
},
{
"TopicID": "2C453EE5-CD4D-4C59-9F60-605F06F53EF9",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.BadPartInterval_Variation",
"RemoteName": "",
"Config": "",
"Description": "BadPartInterval_Variation"
},
{
"TopicID": "CED861F9-A32B-4FB5-85F7-F2604FCDAD6F",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Current",
"RemoteName": "",
"Config": "",
"Description": "Current"
},
{
"TopicID": "1F6F4DBA-9834-43D2-B957-5D8629456750",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.CycleStarted",
"RemoteName": "",
"Config": "",
"Description": "CycleStarted"
},
{
"TopicID": "31D89E00-11D9-4A62-86B4-5D57223E7849",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.CycleTime_Base",
"RemoteName": "",
"Config": "",
"Description": "CycleTime_Base"
},
{
"TopicID": "D5F096ED-0A45-4AFE-9697-B992AC6A6088",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.CycleTime_Variation_Factor",
"RemoteName": "",
"Config": "",
"Description": "CycleTime_Variation_Factor"
},
{
"TopicID": "A4919906-2639-4788-A544-0DC32C67A919",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Downtime_Base",
"RemoteName": "",
"Config": "",
"Description": "Downtime_Base"
},
{
"TopicID": "E82F143A-E8DF-47F2-B853-6AB7098F5B02",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Downtime_Variation_Factor",
"RemoteName": "",
"Config": "",
"Description": "Downtime_Variation_Factor"
},
{
"TopicID": "272D0394-7778-4E88-A54A-8BEDA35E3EF9",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.FaultCode",
"RemoteName": "",
"Config": "",
"Description": "FaultCode"
},
{
"TopicID": "3FB51294-F342-41C8-A0BC-22896A30E231",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.FaultCode_L2",
"RemoteName": "",
"Config": "",
"Description": "FaultCode_L2"
},
{
"TopicID": "DB645339-6BB3-437C-8AE2-8BFC23F79F79",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.FaultCode_L2_Max_Value",
"RemoteName": "",
"Config": "",
"Description": "FaultCode_L2_Max_Value"
},
{
"TopicID": "4D40E836-17A0-4B24-A706-078C49991FA1",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.FaultCode_L2_Min_Value",
"RemoteName": "",
"Config": "",
"Description": "FaultCode_L2_Min_Value"
},
{
"TopicID": "D8502A19-0724-472F-A13D-CE66C2EEADFF",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.FaultCode_Max_Value",
"RemoteName": "",
"Config": "",
"Description": "FaultCode_Max_Value"
},
{
"TopicID": "340BB4BC-DA34-4CB5-A744-A5ECDC38D2DD",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.FaultCode_Min_Value",
"RemoteName": "",
"Config": "",
"Description": "FaultCode_Min_Value"
},
{
"TopicID": "0CB7E9C1-2868-4200-9EAE-03FEDCD22ABC",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.FaultOccurrence_Factor",
"RemoteName": "",
"Config": "",
"Description": "FaultOccurrence_Factor"
},
{
"TopicID": "E9FFF342-0C90-46EE-8277-029510FF09A8",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.GoodPart",
"RemoteName": "",
"Config": "",
"Description": "GoodPart"
},
{
"TopicID": "06162BE6-FEA4-4847-A119-4699BA1B76C7",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Level_PV",
"RemoteName": "",
"Config": "",
"Description": "Level_PV"
},
{
"TopicID": "7FE5FBA6-9C9F-4E6B-84DE-073EF44FE00E",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Level_SP",
"RemoteName": "",
"Config": "",
"Description": "Level_SP"
},
{
"TopicID": "7223CD70-CCC5-41DB-AB05-4328AFE12507",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.PartMade",
"RemoteName": "",
"Config": "",
"Description": "PartMade"
},
{
"TopicID": "29F99299-A911-4BFA-9C3D-AA5341D47FF5",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.PartSize_TestResult",
"RemoteName": "",
"Config": "",
"Description": "PartSize_TestResult"
},
{
"TopicID": "C01CC7EE-426D-408C-BCC7-E07EA1D52592",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Pressure",
"RemoteName": "",
"Config": "",
"Description": "Pressure"
},
{
"TopicID": "C6317894-4209-4507-909C-9871219AB040",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Pressure_PV",
"RemoteName": "",
"Config": "",
"Description": "Pressure_PV"
},
{
"TopicID": "948AC14C-0547-445E-ACF2-DE0BE0EFB3A8",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Pressure_SP",
"RemoteName": "",
"Config": "",
"Description": "Pressure_SP"
},
{
"TopicID": "0BA2094C-B6EF-46F1-BD01-7A226C5EC4F3",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.QualityCode",
"RemoteName": "",
"Config": "",
"Description": "QualityCode"
},
{
"TopicID": "F3A2BC52-3F33-4744-B415-AAC2A8A830A7",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.QualityCode_Scrap_Max",
"RemoteName": "",
"Config": "",
"Description": "QualityCode_Scrap_Max"
},
{
"TopicID": "0AAA2D6B-A6E2-4F44-AF24-40FE0D838931",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.QualityCode_Scrap_Min",
"RemoteName": "",
"Config": "",
"Description": "QualityCode_Scrap_Min"
},
{
"TopicID": "560FD6D9-E7D5-4D38-9033-7924E200D194",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.ReasonCode",
"RemoteName": "",
"Config": "",
"Description": "ReasonCode"
},
{
"TopicID": "7E49D5A8-0DE1-4EA9-A3CB-2D7592DF2B32",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.ReasonCode_L2",
"RemoteName": "",
"Config": "",
"Description": "ReasonCode_L2"
},
{
"TopicID": "282EF144-28AE-4F82-958B-21FFBB380D78",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.ReasonCode_L2_Max",
"RemoteName": "",
"Config": "",
"Description": "ReasonCode_L2_Max"
},
{
"TopicID": "5C562A95-E141-4377-B63B-3BB5C73189AB",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.ReasonCode_L2_Min",
"RemoteName": "",
"Config": "",
"Description": "ReasonCode_L2_Min"
},
{
"TopicID": "64F05A8C-1DE8-4798-884E-E03D2D4DCD51",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.ReasonCode_Max",
"RemoteName": "",
"Config": "",
"Description": "ReasonCode_Max"
},
{
"TopicID": "1660D3C4-D6F9-4A98-B9C5-95D86975E1CA",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.ReasonCode_Min",
"RemoteName": "",
"Config": "",
"Description": "ReasonCode_Min"
},
{
"TopicID": "176B5687-7E32-4578-A8B4-6D250368B506",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.SKU",
"RemoteName": "",
"Config": "",
"Description": "SKU"
},
{
"TopicID": "A3D20A43-E258-4AEA-B5A0-4EE4F0C8ED89",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.SerialNumber",
"RemoteName": "",
"Config": "",
"Description": "SerialNumber"
},
{
"TopicID": "85352165-1A4D-4343-A68D-53B834AD562D",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Speed",
"RemoteName": "",
"Config": "",
"Description": "Speed"
},
{
"TopicID": "9239CC17-EE9D-4D76-A3B1-7A023FFB7D16",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Step1",
"RemoteName": "",
"Config": "",
"Description": "Step1"
},
{
"TopicID": "339BB520-312A-482A-85D1-6533291155C4",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Step2",
"RemoteName": "",
"Config": "",
"Description": "Step2"
},
{
"TopicID": "B68A52F5-42F2-4D0B-A510-483911BBB0E0",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Step3",
"RemoteName": "",
"Config": "",
"Description": "Step3"
},
{
"TopicID": "FA890F08-A4AB-4F5F-9F2F-6D145C9B7838",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Step4",
"RemoteName": "",
"Config": "",
"Description": "Step4"
},
{
"TopicID": "3B7EC3CF-BB0F-4B7D-AD71-BD753B399C2A",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Step5",
"RemoteName": "",
"Config": "",
"Description": "Step5"
},
{
"TopicID": "348162D8-C971-4463-9BAD-55F88F5029B3",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.TaktTime_Base",
"RemoteName": "",
"Config": "",
"Description": "TaktTime_Base"
},
{
"TopicID": "90B6CF0D-A93F-4CB3-9E3C-F6B616CD1919",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.TaktTime_Variation_Factor",
"RemoteName": "",
"Config": "",
"Description": "TaktTime_Variation_Factor"
},
{
"TopicID": "68DF5D61-171E-4F20-8CAC-11E5120F5B5E",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Temperature",
"RemoteName": "",
"Config": "",
"Description": "Temperature"
},
{
"TopicID": "E4D347C5-9C2A-4DFB-B0E8-493C9966BB81",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Temperature_LowerControlLimit",
"RemoteName": "",
"Config": "",
"Description": "Temperature_LowerControlLimit"
},
{
"TopicID": "0116A824-440D-4168-826F-CDA652522BF6",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Temperature_PV",
"RemoteName": "",
"Config": "",
"Description": "Temperature_PV"
},
{
"TopicID": "41D5E445-CA4C-43CC-8E81-4391DDDE78DE",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Temperature_SP",
"RemoteName": "",
"Config": "",
"Description": "Temperature_SP"
},
{
"TopicID": "4308A622-E9FC-43BB-966A-A5665551EA99",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Temperature_UpperControlLimit",
"RemoteName": "",
"Config": "",
"Description": "Temperature_UpperControlLimit"
},
{
"TopicID": "DDDFC41C-C3B5-401F-9156-6E9AB1650CD8",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Uptime_Base",
"RemoteName": "",
"Config": "",
"Description": "Uptime_Base"
},
{
"TopicID": "F4503821-AC59-446F-A703-30EB60762B43",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Uptime_Variation_Factor",
"RemoteName": "",
"Config": "",
"Description": "Uptime_Variation_Factor"
},
{
"TopicID": "77055F65-4E68-48E5-B34B-20FBAB33580E",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Voltage",
"RemoteName": "",
"Config": "",
"Description": "Voltage"
},
{
"TopicID": "62F74BA7-AC14-44C6-A098-F65AC3A1616B",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.isFaulted",
"RemoteName": "",
"Config": "",
"Description": "isFaulted"
},
{
"TopicID": "8B809E5F-DDAE-4845-AF55-BBE2CEEA6A16",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.isRunning",
"RemoteName": "",
"Config": "",
"Description": "isRunning"
}
]
}
}
Create Subscription
POST {{edgeUrl}}/cc/v2
Create Subscription
Creates one or more subscriptions inside an instance. Each subscription wires a local NATS topic to a remote topic / table / queue on the upstream system.
The mutation is batched -- pass a Subscriptions[] array to create many in one call. Useful for bulk provisioning after running Import Topics.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation CreateSubscriptions($input: CreateSubscriptionsRequest!) {
CreateSubscriptions(input: $input) {
TopicID
IsLocalToRemote
Enabled
LocalName
RemoteName
Config
Description
__typename
}
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
InstanceID |
ID! |
Yes | UUID of the instance. |
Subscriptions |
[SubscriptionInput!]! |
Yes | One or more subscription inputs. |
Subscriptions[].LocalName |
String! |
Yes | Local NATS topic (e.g. devicehub.alias.<device>.<tag>). |
Subscriptions[].RemoteName |
String |
No | Remote topic / table / queue. Empty for providers with fixed sinks. |
Subscriptions[].IsLocalToRemote |
Boolean |
Yes | true = outbound, false = inbound. |
Subscriptions[].Enabled |
Boolean |
No | Default false. Use Enable Topic/s Subscription later. |
Subscriptions[].Description |
String |
No | Free-form description. |
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"Subscriptions": [
{
"Description": "",
"Enabled": false,
"IsLocalToRemote": true,
"LocalName": "{{integration_topic_name}}",
"RemoteName": "apiCreatedRemoteTopic"
}
]
}
}
Response
200 OK -- application/json. Returns the new subscriptions with their server-assigned TopicIDs.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
mutation CreateSubscriptions($input: CreateSubscriptionsRequest!) {
CreateSubscriptions(input: $input) {
TopicID
IsLocalToRemote
Enabled
LocalName
RemoteName
Config
Description
__typename
}
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"Subscriptions": [
{
"Description": "",
"Enabled": false,
"IsLocalToRemote": true,
"LocalName": "{{integration_topic_name}}",
"RemoteName": "{{integration_remote_topic_name}}",
"TopicID": null,
"Config": "{}"
}
]
}
}
Response
Status: 200 OK
{
"data": {
"CreateSubscriptions": [
{
"TopicID": "D678051A-09D8-4A05-A534-745F5327A8CE",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "{{integration_topic_name}}",
"RemoteName": "apiCreatedRemoteTopic",
"Config": "{}",
"Description": "",
"__typename": "Topic"
}
]
}
}
Update Subscription
POST {{edgeUrl}}/cc/v2
Update Subscription
Updates one or more subscriptions in place. Pass the full subscription object inside Subscriptions[] -- this is not a patch.
Common changes: re-target a different RemoteName, switch direction (IsLocalToRemote), update the description, change per-subscription config.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation UpdateSubscriptions($input: UpdateSubscriptionsRequest!) {
UpdateSubscriptions(input: $input) {
TopicID
IsLocalToRemote
Enabled
LocalName
RemoteName
Config
Description
}
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"Subscriptions": [
{
"Description": "Downtime_Base",
"Enabled": false,
"IsLocalToRemote": true,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Downtime_Base",
"RemoteName": ""
}
]
}
}
The Postman example omits TopicID; the service identifies the subscription by (InstanceID, LocalName, IsLocalToRemote). Include TopicID in your own client for safety against rename races.
Response
Same shape as Create Subscription.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
mutation UpdateSubscriptions($input: UpdateSubscriptionsRequest!) {
UpdateSubscriptions(input: $input) {
TopicID
IsLocalToRemote
Enabled
LocalName
RemoteName
Config
Description
}
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"Subscriptions": [
{
"Description": "Downtime_Base",
"Enabled": false,
"IsLocalToRemote": true,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Downtime_Base",
"RemoteName": "",
"TopicID": "{{integration_topic_id}}",
"Config": "{}"
}
]
}
}
Response
Status: 200 OK
{
"data": {
"UpdateSubscriptions": [
{
"TopicID": "A4919906-2639-4788-A544-0DC32C67A919",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Downtime_Base",
"RemoteName": "",
"Config": "{}",
"Description": "Downtime_Base"
}
]
}
}
Enable Topic/s Subscription
POST {{edgeUrl}}/cc/v2
Enable Topic/s Subscription
Enables one or more subscriptions by their TopicIDs. The instance begins forwarding (or receiving) messages on the enabled subscriptions immediately, assuming the instance itself is Enabled and Online.
Idempotent for already-enabled subscriptions.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation EnableSubscriptions($input: EnableSubscriptionsRequest!) {
EnableSubscriptions(input: $input) {
TopicID
IsLocalToRemote
Enabled
LocalName
RemoteName
Config
Description
}
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
InstanceID |
ID! |
Yes | UUID of the instance. |
TopicIDs |
[ID!]! |
Yes | Subscription UUIDs to enable. |
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"TopicIDs": ["{{integration_topic_id}}"]
}
}
Response
200 OK -- application/json. Returns the updated subscriptions.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
mutation EnableSubscriptions($input: EnableSubscriptionsRequest!) {
EnableSubscriptions(input: $input) {
TopicID
IsLocalToRemote
Enabled
LocalName
RemoteName
Config
Description
}
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"TopicIDs": [
"{{integration_topic_id}}"
]
}
}
Response
Status: 200 OK
{
"data": {
"EnableSubscriptions": [
{
"TopicID": "A4919906-2639-4788-A544-0DC32C67A919",
"IsLocalToRemote": true,
"Enabled": true,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Downtime_Base",
"RemoteName": "",
"Config": "{}",
"Description": "Downtime_Base"
}
]
}
}
Disable Topic/s Subscription
POST {{edgeUrl}}/cc/v2
Disable Topic/s Subscription
Disables one or more subscriptions by their TopicIDs. The instance stops forwarding / receiving on the disabled subscriptions; the configuration is preserved (re-enable with Enable Topic/s Subscription).
Idempotent for already-disabled subscriptions.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation DisableSubscriptions($input: DisableSubscriptionsRequest!) {
DisableSubscriptions(input: $input) {
TopicID
IsLocalToRemote
Enabled
LocalName
RemoteName
Config
Description
}
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"TopicIDs": ["{{integration_topic_id}}"]
}
}
Response
Same shape as Enable Topic/s Subscription.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
mutation DisableSubscriptions($input: DisableSubscriptionsRequest!) {
DisableSubscriptions(input: $input) {
TopicID
IsLocalToRemote
Enabled
LocalName
RemoteName
Config
Description
}
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"TopicIDs": [
"{{integration_topic_id}}"
]
}
}
Response
Status: 200 OK
{
"data": {
"DisableSubscriptions": [
{
"TopicID": "A4919906-2639-4788-A544-0DC32C67A919",
"IsLocalToRemote": true,
"Enabled": false,
"LocalName": "devicehub.alias.L1_Machine1_1_OPC.Downtime_Base",
"RemoteName": "",
"Config": "{}",
"Description": "Downtime_Base"
}
]
}
}
Remove Topic/s Subscription
POST {{edgeUrl}}/cc/v2
Remove Topic/s Subscription
Permanently deletes one or more subscriptions by TopicID. The configuration is gone; re-create via Create Subscription to restore.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation DeleteSubscriptions($input: DeleteSubscriptionsRequest!) {
DeleteSubscriptions(input: $input)
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"TopicIDs": ["{{integration_topic_id}}"]
}
}
Response
200 OK -- application/json. No data returned on success.
{ "data": { "DeleteSubscriptions": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
mutation DeleteSubscriptions($input: DeleteSubscriptionsRequest!) {
DeleteSubscriptions(input: $input)
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"TopicIDs": ["{{integration_topic_id}}"]
}
}
Response
Status: 200 OK
{
"data": {
"DeleteSubscriptions": null
}
}
Download Topic Sample
POST {{edgeUrl}}/cc/v2
Download Topic Sample
Returns a sample CSV template showing the expected column layout for the instance's subscription import (Upload CSV). The sample has the header row plus one placeholder row -- use it as a skeleton when building a CSV from scratch in a spreadsheet.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query DownloadTemplate($input: DownloadTemplateRequest!) {
DownloadTemplate(input: $input)
}
Variables
{ "input": { "InstanceID": "{{integration_instance_id}}" } }
Response
200 OK -- application/json. data.DownloadTemplate is a CSV-formatted string -- parse client-side or write to a file.
{
"data": {
"DownloadTemplate": "InstanceInfo ID,InstanceInfo Name,Direction,Local Remote Topic,Remote Data Topic,Enable,Description\n\"<the instance id>\",\"<the instance name>\",Inbound/Outbound,<local-remote-topic>,<remote-data-topic>,true/false,<description>\n"
}
}
CSV columns
| Column | Maps to |
|---|---|
InstanceInfo ID |
InstanceID. |
InstanceInfo Name |
Cosmetic -- the service identifies by ID. |
Direction |
Inbound (= IsLocalToRemote: false) or Outbound (= true). |
Local Remote Topic |
LocalName. |
Remote Data Topic |
RemoteName. |
Enable |
true / false. |
Description |
Description. |
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
query DownloadTemplate($input: DownloadTemplateRequest!) {
DownloadTemplate(input: $input)
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}"
}
}
Response
Status: 200 OK
{
"data": {
"DownloadTemplate": "InstanceInfo ID,InstanceInfo Name,Direction,Local Remote Topic,Remote Data Topic,Enable,Description\n\"<the instance id, ie. 7b7628c4-a065-425e-9515-f8469d7a2c7f>\",\"<the instance name, ie. local mqtt>\",Inbound/Outbound,<local-remote-topic>,<remote-data-topic>,true/false,<description>\n"
}
}
Download CSV for Instance/s
POST {{edgeUrl}}/cc/v2
Download CSV for Instance/s
Exports the actual subscription list of one or more instances as a CSV string. Compatible with Upload CSV: download, edit in a spreadsheet, re-upload to apply.
Different from Download Topic Sample -- that endpoint returns a header-only skeleton with one placeholder row; this one returns the live data.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query DownloadCSV($input: DownloadCSVRequest!) {
DownloadCSV(input: $input)
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
InstanceIDs |
[ID!]! |
Yes | UUIDs to include. Pass an array even for a single instance. |
{ "input": { "InstanceIDs": ["{{integration_instance_id}}"] } }
Response
200 OK -- application/json. data.DownloadCSV is a CSV string with the same columns as Download Topic Sample, one row per subscription.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
query DownloadCSV($input: DownloadCSVRequest!) {
DownloadCSV(input: $input)
}
Variables
{
"input": {
"InstanceIDs": [
"{{integration_instance_id}}"
]
}
}
Response
Status: 200 OK
{
"data": {
"DownloadCSV": "InstanceInfo ID,InstanceInfo Name,Direction,Local Remote Topic,Remote Data Topic,Enable,Description\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Temperature_PV,,false,Temperature_PV\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Level_PV,,false,Level_PV\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.QualityCode_Scrap_Min,,false,QualityCode_Scrap_Min\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.QualityCode,,false,QualityCode\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.FaultOccurrence_Factor,,false,FaultOccurrence_Factor\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.ReasonCode_Min,,false,ReasonCode_Min\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.SKU,,false,SKU\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.FaultCode,,false,FaultCode\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.ReasonCode_L2_Max,,false,ReasonCode_L2_Max\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.PartSize_TestResult,,false,PartSize_TestResult\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.BadPartInterval_Variation,,false,BadPartInterval_Variation\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.CycleTime_Base,,false,CycleTime_Base\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Step2,,false,Step2\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.FaultCode_Min_Value,,false,FaultCode_Min_Value\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.TaktTime_Base,,false,TaktTime_Base\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Step5,,false,Step5\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.FaultCode_L2,,false,FaultCode_L2\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Temperature_SP,,false,Temperature_SP\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Temperature_UpperControlLimit,,false,Temperature_UpperControlLimit\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.FaultCode_L2_Min_Value,,false,FaultCode_L2_Min_Value\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.ReasonCode,,false,ReasonCode\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.ReasonCode_L2_Min,,false,ReasonCode_L2_Min\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.isFaulted,,false,isFaulted\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.ReasonCode_Max,,false,ReasonCode_Max\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Temperature,,false,Temperature\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.PartMade,,false,PartMade\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Voltage,,false,Voltage\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.ReasonCode_L2,,false,ReasonCode_L2\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Level_SP,,false,Level_SP\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Speed,,false,Speed\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.isRunning,,false,isRunning\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.TaktTime_Variation_Factor,,false,TaktTime_Variation_Factor\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.BadPart,,false,BadPart\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Step1,,false,Step1\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Pressure_SP,,false,Pressure_SP\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.SerialNumber,,false,SerialNumber\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Step3,,false,Step3\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Pressure,,false,Pressure\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.BadPartInterval_Base,,false,BadPartInterval_Base\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Pressure_PV,,false,Pressure_PV\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Current,,false,Current\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.CycleTime_Variation_Factor,,false,CycleTime_Variation_Factor\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.FaultCode_Max_Value,,false,FaultCode_Max_Value\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.FaultCode_L2_Max_Value,,false,FaultCode_L2_Max_Value\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Uptime_Base,,false,Uptime_Base\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Temperature_LowerControlLimit,,false,Temperature_LowerControlLimit\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Downtime_Variation_Factor,,false,Downtime_Variation_Factor\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.GoodPart,,false,GoodPart\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.QualityCode_Scrap_Max,,false,QualityCode_Scrap_Max\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Uptime_Variation_Factor,,false,Uptime_Variation_Factor\n75d68c24-b8c3-47b5-ae08-5a30cbd7751f,Azure,outbound,devicehub.alias.L1_Machine1_1_OPC.Step4,,false,Step4\n"
}
}
Import Topics
POST {{edgeUrl}}/cc/v2
Import Topics
Bulk-imports topics from other LE services (DeviceHub registers, Digital Twins instances, Analytics outputs) into one instance as subscriptions. This is the API equivalent of the LE UI's "Pick from DeviceHub / Digital Twins / Analytics" buttons.
Each section in the body addresses one source service and lists (ParentID, ChildIDs) pairs -- the parent is the device / instance / group, the children are the specific registers / attributes / topics to import.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation ImportTopics($input: ImportTopicsRequest!) {
ImportTopics(input: $input) {
DeviceHub { ImportedTags UpdatedTags SkippedTags Error }
DigitalTwins { ImportedTags UpdatedTags SkippedTags Error }
Analytics { ImportedTags UpdatedTags SkippedTags Error }
}
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
InstanceID |
ID! |
Yes | Target Integration instance. |
DeviceHub[].ParentID |
ID |
No | DeviceHub device UUID. ChildIDs: [] to import every register on the device. |
DeviceHub[].ChildIDs |
[ID!]! |
No | Register UUIDs to import from that device. |
DigitalTwins[] |
object[] | No | Same shape, with ParentID = Instance UUID, ChildIDs = dynamic-attribute UUIDs. |
Analytics[] |
object[] | No | ParentID = group name. (No ChildIDs for analytics -- imports all outputs of the group.) |
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"DeviceHub": [
{ "ParentID": "{{deviceID}}", "ChildIDs": ["{{register_id}}"] }
],
"Analytics": [
{ "ParentID": "{{analytics_group_name}}" }
]
}
}
Response
200 OK -- application/json. Per-source counters:
| Field | Type | Description |
|---|---|---|
data.ImportTopics.DeviceHub.ImportedTags |
integer | Newly created subscriptions. |
data.ImportTopics.DeviceHub.UpdatedTags |
integer | Subscriptions already present and refreshed. |
data.ImportTopics.DeviceHub.SkippedTags |
integer | Subscriptions skipped (typically duplicates). |
data.ImportTopics.DeviceHub.Error |
string[] | Per-tag error messages. |
{
"data": {
"ImportTopics": {
"DeviceHub": { "ImportedTags": 1, "UpdatedTags": 0, "SkippedTags": 0, "Error": [] },
"DigitalTwins": { "ImportedTags": 1, "UpdatedTags": 0, "SkippedTags": 0, "Error": [] },
"Analytics": { "ImportedTags": 1, "UpdatedTags": 0, "SkippedTags": 0, "Error": [] }
}
}
}
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
mutation ImportTopics($input: ImportTopicsRequest!) {
ImportTopics(input: $input) {
DeviceHub {
ImportedTags
UpdatedTags
SkippedTags
Error
}
DigitalTwins {
ImportedTags
UpdatedTags
SkippedTags
Error
}
Analytics {
ImportedTags
UpdatedTags
SkippedTags
Error
}
}
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"DeviceHub": [
{
"ParentID": "{{deviceID}}",
"ChildIDs": [
"{{register_id}}"
]
}
],
"Analytics": [
{
"ParentID": "{{analytics_group_name}}"
}
],
"DigitalTwins": [
{
"ParentID": "{{digital_twins_model_id}}",
"ChildIDs": [
"{{digital_twins_instance_id}}"
]
}
]
}
}
Response
Status: 200 OK
{
"data": {
"ImportTopics": {
"DeviceHub": {
"ImportedTags": 1,
"UpdatedTags": 0,
"SkippedTags": 0,
"Error": []
},
"DigitalTwins": {
"ImportedTags": 1,
"UpdatedTags": 0,
"SkippedTags": 0,
"Error": []
},
"Analytics": {
"ImportedTags": 1,
"UpdatedTags": 0,
"SkippedTags": 0,
"Error": []
}
}
}
}
Enable All Topics
POST {{edgeUrl}}/cc/v2
Enable All Topics
Enables every subscription on one instance in a single call. Useful after a bulk import.
Idempotent.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation EnableAllTopics($input: EnableAllTopicsRequest!) {
EnableAllTopics(input: $input)
}
Variables
{ "input": { "InstanceID": "{{integration_instance_id}}" } }
Response
200 OK -- application/json. No data returned on success.
{ "data": { "EnableAllTopics": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
mutation EnableAllTopics($input: EnableAllTopicsRequest!) {
EnableAllTopics(input: $input)
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}"
}
}
Response
Status: 200 OK
{
"data": {
"EnableAllTopics": null
}
}
Disable All Topics
POST {{edgeUrl}}/cc/v2
Disable All Topics
Disables every subscription on one instance. The configuration is preserved; re-enable individually via Enable Topic/s Subscription or all at once via Enable All Topics.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation DisableAllTopics($input: DisableAllTopicsRequest!) {
DisableAllTopics(input: $input)
}
Variables
{ "input": { "InstanceID": "{{integration_instance_id}}" } }
Response
200 OK -- application/json. No data returned on success.
{ "data": { "DisableAllTopics": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
mutation DisableAllTopics($input: DisableAllTopicsRequest!) {
DisableAllTopics(input: $input)
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}"
}
}
Response
Status: 200 OK
{
"data": {
"DisableAllTopics": null
}
}
Delete All Topics
POST {{edgeUrl}}/cc/v2
Delete All Topics
Permanently deletes every subscription on one instance. The instance configuration itself is preserved (use Delete Instance to remove the instance too).
Destructive. Export with
Download CSV for Instance/sfirst if you may want to restore.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation DeleteAllTopics($input: DeleteAllTopicsRequest!) {
DeleteAllTopics(input: $input)
}
Variables
{ "input": { "InstanceID": "{{integration_instance_id}}" } }
Response
200 OK -- application/json. No data returned on success.
{ "data": { "DeleteAllTopics": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
mutation DeleteAllTopics($input: DeleteAllTopicsRequest!) {
DeleteAllTopics(input: $input)
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}"
}
}
Response
Status: 200 OK
{
"data": {
"DeleteAllTopics": null
}
}
Upload CSV
POST {{edgeUrl}}/cc/v2
Upload CSV
Imports subscriptions from a CSV file. Multipart form-data following the GraphQL multipart request spec.
The CSV format must match what Download Topic Sample / Download CSV for Instance/s produces. A typical round-trip:
Download CSV for Instance/s-> grab the current subscriptions.- Edit in a spreadsheet (add/remove rows, change
RemoteName, toggleEnable). Upload CSV-> apply.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: multipart/form-data
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body (form-data parts)
| Form key | Type | Description |
|---|---|---|
operations |
text | GraphQL envelope (see below) with a null placeholder where the file should go. |
map |
text | JSON mapping form file keys to placeholder locations within operations. |
1 |
file | The CSV file. |
operations value
{
"operationName": "UploadCSV",
"variables": { "input": { "InstanceID": "{{integration_instance_id}}", "File": null } },
"query": "mutation UploadCSV($input: UploadCSVRequest!) { UploadCSV(input: $input) { Errors { Line Column Error } } }"
}
map value
{ "1": ["variables.input.File"] }
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
data.UploadCSV.Errors |
[CSVError!]! |
One entry per error row. Empty array means clean import. |
data.UploadCSV.Errors[].Line |
integer (nullable) | 1-indexed CSV line number, or null for summary entries. |
data.UploadCSV.Errors[].Column |
integer (nullable) | 1-indexed column, or null. |
data.UploadCSV.Errors[].Error |
string | Error message. |
{ "data": { "UploadCSV": { "Errors": [] } } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
{
"data": {
"UploadCSV": {
"Errors": [],
"__typename": "UploadCSVResponse"
}
}
}
Get Stats
POST {{edgeUrl}}/cc/v2
Get Stats (subscription)
Streams per-instance runtime statistics in real time: messages sent, dropped, live, persisted, and on-disk size. This is a GraphQL subscription -- a one-shot POST returns at most a single event. For continuous streaming, use a WebSocket transport (graphql-ws / subscriptions-transport-ws).
Transport
WebSocket: wss://{{edgeHost}}/cc/v2. The Postman item is shown as a POST for documentation; switch to a Postman WebSocket request when actually streaming.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Subscription body
subscription GetStats {
GetStats(input: { Metrics: null, Tags: null, GroupByInMSec: null, BeginShiftSec: null }) {
Columns
Values
}
}
Variables (input: GetStatsRequest!)
| Field | Type | Required | Description |
|---|---|---|---|
Metrics |
[String!]? |
No | Filter to specific metric names (e.g. ["field_SentCount"]). null returns all. |
Tags |
object? | No | Tag filter (e.g. by instance ID). |
GroupByInMSec |
Int? |
No | Aggregation bucket in milliseconds. |
BeginShiftSec |
Int? |
No | Window size in seconds. |
Passing null for all fields uses the LE UI's defaults (1-second buckets, last few minutes).
Event shape
Each event carries a Columns array and a Values array of rows, the same shape used by the /sysinfo/* REST endpoints.
{
"data": {
"GetStats": {
"Columns": [
"time",
"field_DiskUsageSize",
"field_DropCount",
"field_LiveCount",
"field_SentCount",
"field_PersistenceSize"
],
"Values": [
["2025-09-12T00:08:54Z", 0, 0, 0, 0, 0]
]
}
}
}
Metric reference
| Metric | Description |
|---|---|
field_SentCount |
Messages successfully forwarded to the upstream system. |
field_DropCount |
Messages dropped (typically because the persistence layer overflowed). |
field_LiveCount |
Messages currently in flight (sent but unacknowledged). |
field_PersistenceSize |
Messages currently queued in the persistence layer. |
field_DiskUsageSize |
Bytes on disk used by the persistence layer. |
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
subscription GetStats {
GetStats(
input: { Metrics: null, Tags: null, GroupByInMSec: null, BeginShiftSec: null }
) {
Columns
Values
}
}
Response
Status: 200 OK
{
"data": {
"GetStats": {
"Columns": [
"time",
"field_DiskUsageSize",
"field_DropCount",
"field_LiveCount",
"field_SentCount",
"field_PersistenceSize"
],
"Values": [
[
"2025-09-12T00:08:54Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:08:55Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:08:56Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:08:57Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:08:58Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:08:59Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:00Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:01Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:02Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:03Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:04Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:05Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:06Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:07Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:08Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:09Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:10Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:11Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:12Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:13Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:14Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:15Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:16Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:17Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:18Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:19Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:20Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:21Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:22Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:23Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:24Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:25Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:26Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:27Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:28Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:29Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:30Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:31Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:32Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:33Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:34Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:35Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:36Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:37Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:38Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:39Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:40Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:41Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:42Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:43Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:44Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:45Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:46Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:47Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:48Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:49Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:50Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:51Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:52Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:53Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:54Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:55Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:56Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:57Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:58Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:09:59Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:00Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:01Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:02Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:03Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:04Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:05Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:06Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:07Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:08Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:09Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:10Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:11Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:12Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:13Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:14Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:15Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:16Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:17Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:18Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:19Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:20Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:21Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:22Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:23Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:24Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:25Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:26Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:27Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:28Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:29Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:30Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:31Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:32Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:33Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:34Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:35Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:36Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:37Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:38Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:39Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:40Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:41Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:42Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:43Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:44Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:45Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:46Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:47Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:48Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:49Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:50Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:51Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:52Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:53Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:54Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:55Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:56Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:57Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:58Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:10:59Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:00Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:01Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:02Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:03Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:04Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:05Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:06Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:07Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:08Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:09Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:10Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:11Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:12Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:13Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:14Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:15Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:16Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:17Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:18Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:19Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:20Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:21Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:22Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:23Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:24Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:25Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:26Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:27Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:28Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:29Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:30Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:31Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:32Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:33Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:34Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:35Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:36Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:37Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:38Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:39Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:40Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:41Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:42Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:43Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:44Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:45Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:46Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:47Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:48Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:49Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:50Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:51Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:52Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:53Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:54Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:55Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:56Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:57Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:58Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:11:59Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:00Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:01Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:02Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:03Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:04Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:05Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:06Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:07Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:08Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:09Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:10Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:11Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:12Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:13Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:14Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:15Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:16Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:17Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:18Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:19Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:20Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:21Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:22Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:23Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:24Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:25Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:26Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:27Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:28Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:29Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:30Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:31Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:32Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:33Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:34Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:35Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:36Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:37Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:38Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:39Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:40Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:41Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:42Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:43Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:44Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:45Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:46Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:47Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:48Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:49Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:50Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:51Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:52Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:53Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:54Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:55Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:56Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:57Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:58Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:12:59Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:00Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:01Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:02Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:03Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:04Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:05Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:06Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:07Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:08Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:09Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:10Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:11Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:12Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:13Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:14Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:15Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:16Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:17Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:18Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:19Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:20Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:21Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:22Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:23Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:24Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:25Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:26Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:27Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:28Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:29Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:30Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:31Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:32Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:33Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:34Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:35Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:36Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:37Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:38Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:39Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:40Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:41Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:42Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:43Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:44Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:45Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:46Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:47Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:48Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:49Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:50Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:51Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:52Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:53Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:54Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:55Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:56Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:57Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:58Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:13:59Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:00Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:01Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:02Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:03Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:04Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:05Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:06Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:07Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:08Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:09Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:10Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:11Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:12Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:13Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:14Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:15Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:16Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:17Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:18Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:19Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:20Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:21Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:22Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:23Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:24Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:25Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:26Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:27Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:28Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:29Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:30Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:31Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:32Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:33Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:34Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:35Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:36Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:37Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:38Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:39Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:40Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:41Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:42Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:43Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:44Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:45Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:46Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:47Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:48Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:49Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:50Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:51Z",
0,
0,
0,
0,
0
],
[
"2025-09-12T00:14:52Z",
0,
0,
0,
0,
0
]
]
}
}
}
List Instances
POST {{edgeUrl}}/cc/v2
List Instances
Returns every Integration instance on the device along with its configuration, runtime state, and last-known status. Pass an empty input object to list all; pass { InstanceIDs: [...] } to filter.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query ListInstances($input: ListInstancesRequest!) {
ListInstances(input: $input) {
InstanceID
ProviderID
Config
Enabled
ErrorLogging
TagSyncEnabled
System
Online
Status
SizeOnDisk
ErrCode
ErrMsg
}
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
InstanceIDs |
[ID!] |
No | Filter to specific instances. Omit (or {}) to return every instance. |
{ "input": {} }
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
InstanceID |
string | Instance UUID. Use as {{integration_instance_id}} in subsequent calls. |
ProviderID |
string | Provider slug (e.g. generic-mqtt-ssl, azure-iothub-mqtt-device-cert, kafka). |
Config |
string | JSON-encoded provider-specific configuration. Decode before reading. Secrets are masked as <protected>. |
Enabled |
boolean | Whether the instance is enabled (started on boot). |
ErrorLogging |
boolean | Surface errors from this instance in System > Events. |
TagSyncEnabled |
boolean | Sync tag selection between LE and the upstream system (when the provider supports it). |
System |
boolean | true for system-managed instances; false for user-created. |
Online |
boolean | Last-observed connection state. |
Status |
string | Human-readable status (Online, Offline, Error: ...). |
SizeOnDisk |
integer | Bytes used by the instance's persistence layer (queued / buffered messages). |
ErrCode / ErrMsg |
string | Most recent error, if any. |
Sensitive data:
Configcontains the provider's credentials. Secrets like passwords, API keys, and TLS keys are masked as<protected>(\u003cprotected\u003ein the wire-encoded form), but hostnames, ports, and topic patterns come back verbatim. Treat the entire response as sensitive.
{
"data": {
"ListInstances": [
{
"InstanceID": "75D68C24-B8C3-47B5-AE08-5A30CBD7751F",
"ProviderID": "azure-iothub-mqtt-device-cert",
"Config": "{\"certificate\":\"<protected>\",\"clientId\":\"...\",\"hostname\":\"{IoTHub}.azure-devices.net\",\"name\":\"Azure\",\"port\":8883}",
"Enabled": true,
"ErrorLogging": true,
"TagSyncEnabled": true,
"System": false,
"Online": true,
"Status": "Online",
"SizeOnDisk": 0,
"ErrCode": "",
"ErrMsg": ""
}
]
}
}
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
query ListInstances($input: ListInstancesRequest!) {
ListInstances(input: $input) {
InstanceID
ProviderID
Config
Enabled
ErrorLogging
TagSyncEnabled
System
Online
Status
SizeOnDisk
ErrCode
ErrMsg
}
}
Variables
{"input": {}}
Response
Status: 200 OK
{
"data": {
"ListInstances": [
{
"InstanceID": "75D68C24-B8C3-47B5-AE08-5A30CBD7751F",
"ProviderID": "azure-iothub-mqtt-device-cert",
"Config": "{\"certificate\":\"\\u003cprotected\\u003e\",\"clientId\":\"630c95e8-03e4-4de6-84da-50376daefa79\",\"deviceId\":\"device\",\"hostname\":\"{IoTHub}.azure-devices.net\",\"name\":\"Azure\",\"port\":8883,\"privateKey\":\"\\u003cprotected\\u003e\",\"topic\":\"devices/device/messages/events/\",\"willPayloadType\":\"string\",\"willQoS\":0,\"willRetained\":false,\"workersCount\":16}",
"Enabled": false,
"ErrorLogging": false,
"TagSyncEnabled": false,
"System": false,
"Online": false,
"Status": "DISABLED",
"SizeOnDisk": 0,
"ErrCode": null,
"ErrMsg": null
},
{
"InstanceID": "0D934847-FC33-4E1A-861B-34CE264CFFF4",
"ProviderID": "mssql",
"Config": "{\"createTable\":false,\"database\":\"litmus\",\"hostname\":\"172.172.0.1\",\"mapping\":{\"SKU\":\"{{.SKU}}\",\"asset\":\"{{.asset}}\",\"comment\":\"{{.comment}}\",\"duration\":\"{{.duration}}\",\"endTime\":\"{{.downtimeEnd}}\",\"line\":\"{{.line}}\",\"planned\":\"{{.planned}}\",\"plant\":\"{{.plant}}\",\"reasonCode_L1\":\"{{.reasonCode_L1}}\",\"reasonCode_L1_text\":\"{{.reasonCode_L1_text}}\",\"reasonCode_L2\":\"{{.reasonCode_L2}}\",\"reasonCode_L2_text\":\"{{.reasonCode_L2_text}}\",\"reasoncode_entered\":\"{{.reasoncode_entered}}\",\"shift\":\"{{.shift}}\",\"startTime\":\"{{.downtimeStart}}\\t\"},\"name\":\"Insert Downtime History\",\"password\":\"\\u003cprotected\\u003e\",\"persistentStorage\":true,\"plSizeLimitMB\":1024,\"port\":1433,\"queueMode\":\"lifo\",\"table\":\"downtimeHistory\",\"throttlingLimit\":0,\"username\":\"sa\"}",
"Enabled": true,
"ErrorLogging": false,
"TagSyncEnabled": false,
"System": false,
"Online": false,
"Status": "FAILED",
"SizeOnDisk": 0,
"ErrCode": "CONNECTION_LOST",
"ErrMsg": "unable to open tcp connection with host '172.172.0.1:1433': dial tcp 172.172.0.1:1433: connect: connection refused"
},
{
"InstanceID": "9A733283-F977-4E10-AF5C-5CE0DA7FE0F3",
"ProviderID": "gcloud-pubsub",
"Config": "{\"key\":\"\\u003cprotected\\u003e\",\"name\":\"Google\",\"persistentStorage\":true,\"plSizeLimitMB\":1024,\"projectId\":\"ASDDSAS\",\"publishByteThreshold\":0,\"publishCountThreshold\":0,\"publishDelayThreshold\":0,\"throttlingLimit\":0,\"topic\":\"DSFDSFG\",\"workersCount\":100}",
"Enabled": false,
"ErrorLogging": false,
"TagSyncEnabled": true,
"System": false,
"Online": false,
"Status": "DISABLED",
"SizeOnDisk": 0,
"ErrCode": null,
"ErrMsg": null
},
{
"InstanceID": "78794A5D-1FBB-449B-BF0C-083C2845DFA9",
"ProviderID": "mssql",
"Config": "{\"bulkSize\":0,\"commitTimeout\":1000,\"createTable\":false,\"database\":\"litmus\",\"hostname\":\"172.172.0.1\",\"mapping\":{\"Assigned_To\":\"{{.Assigned_To}}\",\"Priority\":\"{{.Priority}}\",\"Task_Description\":\"{{.Task_Description}}\",\"WO_Date\":\"{{.WO_Date}}\",\"WO_Number\":\"{{.WO_Number}}\",\"WO_Type\":\"{{.WO_Type}}\",\"asset\":\"{{.asset}}\",\"line\":\"{{.line}}\",\"plant\":\"{{.plant}}\"},\"maxTransactionSize\":100,\"name\":\"Insert Scheduled Work Order\",\"password\":\"\\u003cprotected\\u003e\",\"persistentStorage\":true,\"plSizeLimitMB\":1024,\"port\":1433,\"queueMode\":\"lifo\",\"table\":\"ScheduledWorkOrders\",\"throttlingLimit\":0,\"username\":\"sa\"}",
"Enabled": true,
"ErrorLogging": false,
"TagSyncEnabled": false,
"System": false,
"Online": false,
"Status": "FAILED",
"SizeOnDisk": 0,
"ErrCode": "CONNECTION_LOST",
"ErrMsg": "unable to open tcp connection with host '172.172.0.1:1433': dial tcp 172.172.0.1:1433: connect: connection refused"
},
{
"InstanceID": "E7F3F8A5-0399-4246-BF68-A772A4B66F52",
"ProviderID": "generic-mqtt-tcp",
"Config": "{\"clientId\":\"randomClient\",\"hostname\":\"10.17.100.136\",\"name\":\"MQTT\",\"persistentStorage\":true,\"plSizeLimitMB\":1024,\"port\":1883,\"qos\":1,\"queueMode\":\"lifo\",\"throttlingLimit\":0,\"willPayloadType\":\"string\",\"willQoS\":1,\"willRetained\":false,\"workersCount\":100}",
"Enabled": false,
"ErrorLogging": false,
"TagSyncEnabled": true,
"System": false,
"Online": false,
"Status": "DISABLED",
"SizeOnDisk": 0,
"ErrCode": null,
"ErrMsg": null
},
{
"InstanceID": "34C194F0-0BF9-4F7A-867F-724C2AF27B26",
"ProviderID": "rest",
"Config": "{\"endpoint\":\"http://example-endpoint.com\",\"insecureSkipVerify\":true,\"method\":\"POST\",\"name\":\"REST API\",\"persistentStorage\":true,\"plSizeLimitMB\":1024,\"queueMode\":\"lifo\",\"throttlingLimit\":0,\"workersCount\":100}",
"Enabled": false,
"ErrorLogging": false,
"TagSyncEnabled": true,
"System": false,
"Online": false,
"Status": "DISABLED",
"SizeOnDisk": 0,
"ErrCode": null,
"ErrMsg": null
},
{
"InstanceID": "19AEA71E-C750-4968-B2FC-0B27D79064D6",
"ProviderID": "mssql",
"Config": "{\"createTable\":false,\"database\":\"litmus\",\"hostname\":\"172.172.0.1\",\"mapping\":{\"SKU\":\"{{.SKU}}\",\"asset\":\"{{.asset}}\",\"comment\":\"{{.comment}}\",\"line\":\"{{.line}}\",\"plant\":\"{{.plant}}\",\"scrapCode\":\"{{.scrapCode}}\",\"scrapCode_text\":\"{{.scrapCode_text}}\",\"scrapTime\":\"{{.scrapTime}}\",\"shift\":\"{{.shift}}\"},\"name\":\"Insert Scrap History\",\"password\":\"\\u003cprotected\\u003e\",\"persistentStorage\":true,\"plSizeLimitMB\":1024,\"port\":1433,\"queueMode\":\"lifo\",\"table\":\"scrapHistory\",\"throttlingLimit\":0,\"username\":\"sa\"}",
"Enabled": true,
"ErrorLogging": false,
"TagSyncEnabled": false,
"System": false,
"Online": false,
"Status": "FAILED",
"SizeOnDisk": 0,
"ErrCode": "CONNECTION_LOST",
"ErrMsg": "unable to open tcp connection with host '172.172.0.1:1433': dial tcp 172.172.0.1:1433: connect: connection refused"
},
{
"InstanceID": "7C5660C9-C2DA-43ED-BB00-40355E23F023",
"ProviderID": "mssql",
"Config": "{\"createTable\":false,\"database\":\"litmus\",\"hostname\":\"172.172.0.1\",\"mapping\":{\"anomaly\":\"{{.anomaly}}\",\"asset\":\"{{.asset}}\",\"line\":\"{{.line}}\",\"numDeviations\":\"{{.numDeviations}}\",\"plant\":\"{{.plant}}\",\"time\":\"{{.time}}\"},\"name\":\"Insert Anomaly History\",\"password\":\"\\u003cprotected\\u003e\",\"persistentStorage\":true,\"plSizeLimitMB\":1024,\"port\":1433,\"queueMode\":\"fifo\",\"table\":\"anomalyHistory\",\"throttlingLimit\":0,\"username\":\"sa\"}",
"Enabled": true,
"ErrorLogging": false,
"TagSyncEnabled": false,
"System": false,
"Online": false,
"Status": "FAILED",
"SizeOnDisk": 0,
"ErrCode": "CONNECTION_LOST",
"ErrMsg": "unable to open tcp connection with host '172.172.0.1:1433': dial tcp 172.172.0.1:1433: connect: connection refused"
},
{
"InstanceID": "89402763-7B7E-48C1-B130-F22D0B25FA87",
"ProviderID": "aws-iotcore-mqtt-ssl",
"Config": "{\"certificate\":\"\\u003cprotected\\u003e\",\"clientId\":\"AWSClientID\",\"hostname\":\"AWS.Hostname\",\"name\":\"AWS\",\"port\":8883,\"privateKey\":\"\\u003cprotected\\u003e\",\"qos\":0,\"throttlingLimit\":0,\"topic\":\"AWSIntegrationTopic\",\"willPayloadType\":\"string\",\"willQoS\":0,\"willRetained\":false,\"workersCount\":100}",
"Enabled": false,
"ErrorLogging": false,
"TagSyncEnabled": false,
"System": false,
"Online": false,
"Status": "DISABLED",
"SizeOnDisk": 0,
"ErrCode": null,
"ErrMsg": null
}
]
}
}
Delete Instance
POST {{edgeUrl}}/cc/v2
Delete Instance
Deletes a single Integration instance. The instance's queued messages (in its persistence layer) are also discarded -- if you want to flush them upstream first, ensure the instance is Online and Enabled before deleting, or clear them explicitly with Clear Persistence Layer.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation DeleteInstance($input: DeleteInstanceRequest!) {
DeleteInstance(input: $input)
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
InstanceID |
ID! |
Yes | UUID of the instance to delete. |
{ "input": { "InstanceID": "{{integration_instance_id}}" } }
Response
200 OK -- application/json. No data returned on success.
{ "data": { "DeleteInstance": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
mutation DeleteInstance($input: DeleteInstanceRequest!) {
DeleteInstance(input: $input)
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}"
}
}
Response
Status: 200 OK
{
"data": {
"DeleteInstance": null
}
}
Update Instance
POST {{edgeUrl}}/cc/v2
Update Instance
Updates an existing instance's configuration. The mutation is a full replacement of Config (and the other top-level fields you include).
Config is a JSON string -- not a nested object -- so you have to stringify the provider's config map before sending. The shape inside Config is provider-specific; the example below is for mssql.
To discover the legal Config keys for a provider, use the matching entry in Provider Schemas - Reference (the schema includes JSON-Schema validators for every field).
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation UpdateInstance($input: UpdateInstanceRequest!) {
UpdateInstance(input: $input) {
InstanceID
ProviderID
Config
Enabled
ErrorLogging
TagSyncEnabled
System
Online
Status
SizeOnDisk
ErrCode
ErrMsg
}
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
InstanceID |
ID! |
Yes | UUID of the instance to update. |
Config |
String! |
Yes | New JSON-encoded provider-specific config. See Provider Schemas - Reference > <provider>. |
Enabled |
Boolean |
No | Toggle started / stopped. |
ErrorLogging |
Boolean |
No | Toggle error surfacing. |
TagSyncEnabled |
Boolean |
No | Toggle tag synchronization (when supported by the provider). |
{
"input": {
"InstanceID": "{{integration_instance_id}}",
"Config": "{\"commitTimeout\":1000,\"createTable\":false,\"hostname\":\"172.172.0.1\",\"database\":\"litmus\",\"name\":\"Insert Scrap\"}"
}
}
Response
200 OK -- application/json. Echoes the updated instance (same shape as List Instances).
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
Operational note
Updating connection-relevant fields (hostname, port, credentials) restarts the instance's worker behind the scenes -- expect a brief window of Offline status until it reconnects.
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
GraphQL Query
mutation UpdateInstance($input: UpdateInstanceRequest!) {
UpdateInstance(input: $input) {
InstanceID
ProviderID
Config
Enabled
ErrorLogging
TagSyncEnabled
System
Online
Status
SizeOnDisk
ErrCode
ErrMsg
}
}
Variables
{
"input": {
"Config": "{\"commitTimeout\":1000,\"createTable\":false,\"mapping\":{\"SKU\":\"{{.SKU}}\",\"asset\":\"{{.asset}}\",\"comment\":\"{{.comment}}\",\"line\":\"{{.line}}\",\"plant\":\"{{.plant}}\",\"scrapCode\":\"{{.scrapCode}}\",\"scrapCode_text\":\"{{.scrapCode_text}}\",\"scrapTime\":\"{{.scrapTime}}\",\"shift\":\"{{.shift}}\"},\"maxTransactionSize\":100,\"plSizeLimitMB\":1024,\"port\":1433,\"bulkSize\":0,\"workersCount\":1,\"queueMode\":\"lifo\",\"persistentStorage\":true,\"table\":\"scrapHistory\",\"username\":\"sa\",\"name\":\"Insert Scrap History\",\"hostname\":\"172.172.0.1\",\"password\":\"<protected>\",\"throttlingLimit\":0,\"database\":\"litmus\"}",
"ErrorLogging": false,
"InstanceID": "{{integration_instance_id}}"
}
}
Response
Status: 200 OK
{
"data": {
"UpdateInstance": {
"InstanceID": "19AEA71E-C750-4968-B2FC-0B27D79064D6",
"ProviderID": "mssql",
"Config": "{\"bulkSize\":0,\"commitTimeout\":1000,\"createTable\":false,\"database\":\"litmus\",\"hostname\":\"172.172.0.1\",\"mapping\":{\"SKU\":\"{{.SKU}}\",\"asset\":\"{{.asset}}\",\"comment\":\"{{.comment}}\",\"line\":\"{{.line}}\",\"plant\":\"{{.plant}}\",\"scrapCode\":\"{{.scrapCode}}\",\"scrapCode_text\":\"{{.scrapCode_text}}\",\"scrapTime\":\"{{.scrapTime}}\",\"shift\":\"{{.shift}}\"},\"maxTransactionSize\":100,\"name\":\"Insert Scrap History\",\"password\":\"\\u003cprotected\\u003e\",\"persistentStorage\":true,\"plSizeLimitMB\":1024,\"port\":1433,\"queueMode\":\"lifo\",\"table\":\"scrapHistory\",\"throttlingLimit\":0,\"username\":\"sa\",\"workersCount\":1}",
"Enabled": true,
"ErrorLogging": false,
"TagSyncEnabled": false,
"System": false,
"Online": false,
"Status": "FAILED",
"SizeOnDisk": 0,
"ErrCode": "CONNECTION_LOST",
"ErrMsg": "unable to open tcp connection with host '172.172.0.1:1433': dial tcp 172.172.0.1:1433: connect: connection refused"
}
}
}
Clear Persistence Layer
POST {{edgeUrl}}/cc/v2
Clear Persistence Layer
Flushes the persistence layer of one instance -- the local queue of buffered messages that have not yet been delivered upstream. The mutation returns the number of KB reclaimed.
Use this to recover from a stuck instance whose persistence layer has grown unbounded (visible as a high SizeOnDisk in List Instances), or when you have changed the upstream's schema and the buffered messages are no longer valid.
Destructive: cleared messages are lost. Confirm you don't need to flush upstream before calling.
Endpoint
POST {{edgeUrl}}/cc/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation ClearInstancePersistenceLayer($input: ClearInstancePersistenceLayerRequest!) {
ClearInstancePersistenceLayer(input: $input) {
CleanUpSizeKb
}
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
InstanceID |
ID! |
Yes | UUID of the instance. |
{ "input": { "InstanceID": "{{integration_instance_id}}" } }
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
data.ClearInstancePersistenceLayer.CleanUpSizeKb |
integer | KB reclaimed from the persistence layer. |
{ "data": { "ClearInstancePersistenceLayer": { "CleanUpSizeKb": 0 } } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
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
GraphQL Query
mutation ClearInstancePersistenceLayer($input: ClearInstancePersistenceLayerRequest!) {
ClearInstancePersistenceLayer(input: $input) {
CleanUpSizeKb
}
}
Variables
{
"input": {
"InstanceID": "{{integration_instance_id}}"
}
}
Response
Status: 200 OK
{
"data": {
"ClearInstancePersistenceLayer": {
"CleanUpSizeKb": 0
}
}
}