Litmus Edge 4.4.x - Integration: Streaming

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

Requires: an existing Integration instance (InstanceID from Create Instance or List Instances). An unknown ID fails with instance not found. LocalName is not checked: it may name a topic that no device publishes yet.

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/s first 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:

  1. Download CSV for Instance/s -> grab the current subscriptions.
  2. Edit in a spreadsheet (add/remove rows, change RemoteName, toggle Enable).
  3. 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"
        }
    }
}

List Subscriptions with Paging and Filter

POST {{edgeUrl}}/cc/v2

List Subscriptions with Paging and Filter

Lists an instance's topics a page at a time, optionally filtered. This is what the UI's topic table uses; prefer it over List Instance Subscriptions for instances with many topics, which that query returns in one response.

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 ListSubscriptionsWithPagingAndFilter($input: ListSubscriptionsWithPagingAndFilterRequest!) {
  ListSubscriptionsWithPagingAndFilter(input: $input) {
    Subscriptions {
      TopicID
      IsLocalToRemote
      Enabled
      LocalName
      RemoteName
      Config
      Description
    }
    TotalCount
    Last
  }
}

Variables (input: ListSubscriptionsWithPagingAndFilterRequest!)

Field Type Required Description
InstanceID UUID! Yes Instance whose topics to list.
Limit Int No Page size. Omit to return every matching topic.
SkipCount Int No Number of matching topics to skip. Page n (from 0) is n * Limit.
FilterOptions [SubscriptionFilterOptionRequest] No Filters, all of which must match.

Each filter:

Field Type Required Description
Field SubscriptionFilterOptionFieldNameEnum! Yes TOPIC_ID, ENABLED, LOCAL_NAME, REMOTE_NAME, DESCRIPTION, IS_LOCAL_TO_REMOTE or CONFIG.
SearchOption SubscriptionFilterPatternOptionsEnum! Yes CONTAINS, EQUAL_TO, NOT_EQUAL or REGEX.
FilterValue String! Yes Value or pattern to match.
ConfigField String No Key inside the topic's Config JSON, used with Field: CONFIG.
IsCaseSensitive Boolean No Deprecated. Sending it at all, true or false, fails with deprecated filter option; omit it.
{
  "input": {
    "InstanceID": "{{integration_instance_id}}",
    "Limit": 2,
    "SkipCount": 0,
    "FilterOptions": [
      { "Field": "REMOTE_NAME", "SearchOption": "REGEX", "FilterValue": "^plant/line[13]$" }
    ]
  }
}

Response

200 OK -- application/json. data.ListSubscriptionsWithPagingAndFilter:

Field Type Description
Subscriptions [Topic!]! The page of topics, same shape as List Instance Subscriptions.
TotalCount Int! Number of topics matching the filters, across all pages.
Last Boolean! true when this page reaches the end of the matches.

Keep requesting with SkipCount increased by Limit until Last is true. The example response is the first page of an instance with three topics and Limit: 2.

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 ListSubscriptionsWithPagingAndFilter($input: ListSubscriptionsWithPagingAndFilterRequest!) {
    ListSubscriptionsWithPagingAndFilter(input: $input) {
        Subscriptions {
            TopicID
            IsLocalToRemote
            Enabled
            LocalName
            RemoteName
            Config
            Description
        }
        TotalCount
        Last
    }
}

Variables

{
  "input": {
    "InstanceID": "{{integration_instance_id}}",
    "Limit": 2,
    "SkipCount": 0,
    "FilterOptions": []
  }
}

Response

Status: 200 OK

{
    "data": {
        "ListSubscriptionsWithPagingAndFilter": {
            "Subscriptions": [
                {
                    "TopicID": "2ABE8221-67A6-49FC-B185-423B485945F8",
                    "IsLocalToRemote": true,
                    "Enabled": false,
                    "LocalName": "apidocs/backfill/line1",
                    "RemoteName": "plant/line1",
                    "Config": "{}",
                    "Description": ""
                },
                {
                    "TopicID": "C5B1EB6B-C86B-4A90-8F28-0C4EC3AE4B53",
                    "IsLocalToRemote": true,
                    "Enabled": false,
                    "LocalName": "apidocs/backfill/line2",
                    "RemoteName": "plant/line2",
                    "Config": "{}",
                    "Description": ""
                }
            ],
            "TotalCount": 3,
            "Last": false
        }
    }
}

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

Updated in 4.2.x. Instance gained ExecCommandEnabled: Boolean, reporting whether the instance is permitted to run commands received over the integration.

It sits alongside TagSyncEnabled as a per-instance capability flag. Treat a null as 'not applicable to this provider' rather than as false.

Additive: queries that do not select it behave as in 4.1.x.

Request Body

GraphQL Query

query ListInstances($input: ListInstancesRequest) {
    ListInstances(input: $input) {
        InstanceID
        ProviderID
        ProviderName
        Enabled
        ErrorLogging
        TagSyncEnabled
        ExecCommandEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}

Variables

{
  "input": {
    "Limit": 50,
    "SkipCount": 0
  }
}

Delete Instance

POST {{edgeUrl}}/cc/v2

Delete Instance

Also deletes: the instance's subscriptions. There is no need to delete them first.

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

Updated in 4.1.x. Added ProviderName to the Instance selection set.

Request Body

GraphQL Query

mutation UpdateInstance($input: UpdateInstanceRequest!) {
    UpdateInstance(input: $input) {
        InstanceID
        ProviderID
        ProviderName
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}

Variables

{
    "input": {
        "InstanceID": "{{integration_instance_id}}",
        "ErrorLogging": false,
        "Config": "{\"name\":\"Updated Instance Name\"}"
    }
}

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

Subscribe to Instance Status

POST {{edgeUrl}}/cc/v2

New in 4.1.x. WebSocket subscription. Response gains InstanceState enum (Enabled | Disabled). Convert to a WebSocket request after import (URL: wss://.../cc/v2).

Request Body

GraphQL Query

subscription GetInstanceStatus($input: GetInstanceStatusRequest!) {
    GetInstanceStatus(input: $input) {
        ID
        Status
        StatusCode
        StatusCodeType
        ErrCode
        ErrMsg
        SizeOnDisk
        InstanceState
    }
}

Variables

{
    "input": {
        "InstanceIDs": [
            "{{integration_instance_id}}"
        ]
    }
}

Get Instance

POST {{edgeUrl}}/cc/v2

Updated in 4.2.x. Same ExecCommandEnabled addition as on ListInstances.

Config is the provider configuration as a JSON string. After upgrading an instance off a retired provider, re-read it here to confirm the new connectionType value landed.

Request Body

GraphQL Query

query GetInstance($input: GetInstanceRequest!) {
    GetInstance(input: $input) {
        InstanceID
        ProviderID
        ProviderName
        Config
        Enabled
        ErrorLogging
        TagSyncEnabled
        ExecCommandEnabled
        System
        Online
        Status
        SizeOnDisk
        ErrCode
        ErrMsg
    }
}

Variables

{
  "input": {
    "InstanceID": "{{cc_instance_id}}"
  }
}

Get Provider Schema

POST {{edgeUrl}}/cc/v2

Updated in 4.4.x. This item replaces its 4.3.x counterpart.

Each property's Value gains Required: Boolean, so whether a property is required is now stated on the property itself. OneOf[].Required, the list of required keys on ProviderSchema.OneOf (type Config), is deprecated in its favour: it still works, but read the per-property flag in new code.

Otherwise unchanged. The query returns the description of a provider's configuration: every property, its type, default, allowed values, and whether it is protected, read-only or required.

This is still the reliable way to discover the exact Config shape a provider expects, rather than copying a config between versions or between providers.

Request Body

GraphQL Query

query GetProviderSchema($input: GetProviderInfoRequest!) {
    GetProviderSchema(input: $input) {
        ID
        Type
        IsExperimental
        Properties {
            Key
            Value {
                Type Default Enum Label ToolTip
                Protected ReadOnly Advanced AllowEmpty Required
                Minimum Maximum MinLength MaxLength
            }
        }
        OneOf { Required Order }
        LimitDataDirectionScope
    }
}

Variables

{
  "input": {
    "ProviderID": "{{cc_provider_id}}"
  }
}

List Providers

POST {{edgeUrl}}/cc/v2

Updated in 4.3.x. This item replaces its 4.2.x counterpart.

New in 4.3.x: IsExperimental: Boolean! marks a provider Litmus ships for evaluation rather than production. It is non-null, so every provider carries an explicit true or false and there is no 'unknown' state to handle. Surface it wherever you present a provider picker, so an operator is not choosing an experimental integration without knowing it.

Field Meaning
ID ProviderID. The value every instance operation expects
Name Display name. Do not key on it, it can change between releases
Logo Provider logo
Hidden Provider is not offered in the UI picker
IsExperimental New in 4.3.x. Shipped for evaluation, not production

Hidden and IsExperimental are independent: an experimental provider is still listed and selectable unless it is also hidden. Filter on both if you are building a production-only picker.

This query remains the right way to resolve a ProviderID at runtime rather than pinning a UUID in client code.

Request Body

GraphQL Query

query ListProviders {
    ListProviders {
        ID
        Name
        Logo
        Hidden
        IsExperimental
    }
}

List Providers Grouped

POST {{edgeUrl}}/cc/v2

Updated in 4.3.x. This item replaces its 4.2.x counterpart.

GroupedProvider gains IsExperimental: Boolean!, the same flag ListProviders returns.

New in 4.3.x: IsExperimental: Boolean! marks a provider Litmus ships for evaluation rather than production. It is non-null, so every provider carries an explicit true or false and there is no 'unknown' state to handle. Surface it wherever you present a provider picker, so an operator is not choosing an experimental integration without knowing it.

Note the flag is on the nested Providers entries, not on the ProviderGroup itself: a group can hold a mix of production and experimental providers, so there is no group-level answer to read instead.

Use this form when you are rendering the provider catalogue by category and ListProviders when you just need to resolve one ID.

Request Body

GraphQL Query

query ListProvidersGrouped {
    ListProvidersGrouped {
        ID
        Name
        Logo
        Providers {
            ID
            Name
            Logo
            Hidden
            IsExperimental
        }
    }
}

Get Provider Description

POST {{edgeUrl}}/cc/v2

Get Provider Description

Returns a provider's documentation as one Markdown string: an overview, supported versions, which directions it supports (outbound from the edge, inbound to the edge), and a table of its configuration settings. This is the text the UI shows beside the configuration form when you add an integration.

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 GetProviderDescription($input: GetProviderInfoRequest!) {
  GetProviderDescription(input: $input)
}

Variables (input: GetProviderInfoRequest!)

Field Type Required Description
ProviderID String! Yes Provider to describe. Take it from List Providers.
{
  "input": {
    "ProviderID": "{{integration_provider_id}}"
  }
}

Response

200 OK -- application/json. data.GetProviderDescription is a String! holding Markdown, with \n line breaks. Render it as Markdown; it is not structured data. For the machine-readable configuration fields, use Provider Schemas - Reference (GetProviderSchema).

An unknown ID returns provider id "<id>": provider not found.

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 GetProviderDescription($input: GetProviderInfoRequest!) {
    GetProviderDescription(input: $input)
}

Variables

{
  "input": {
    "ProviderID": "{{integration_provider_id}}"
  }
}

Response

Status: 200 OK

{
    "data": {
        "GetProviderDescription": "Overview\n--------\n\nNATS Integration enables Edge System to connect to NATS server.\n\nSupported Communication\n-----------------------\n\n* Outbound (Publish data from Edge to NATS server) - Yes\n\n* Inbound (Subscribe data from NATS Server to Edge) - Yes\n\n\nConfigurations\n--------------\n\n| **Variable** | **Detail** | **Required** |\n| --- | --- | --- |\n| Name | Connector Name | Yes |\n| Hostname | NATS server host name | Yes |\n| Port | NATS server port | Yes |\n| NATS username | NATS username, which is part of the client's authentication credentials. | No  |\n| NATS password | NATS password, which is part of the client's authentication credentials. | No  |\n| Default topic name | Default topic for publishing | Yes |\n| Enable TLS secure connection | If enabled, message are transmitted securely. This certificate ensures that data transmitted between the server and clients is encrypted and secure, safeguarding it from unauthorized access and eavesdropping. | No  |\n| Insecure skip verify | If enabled, the verification of the server's certificate and hostname is skipped. | No  |\n| Throttling limit | Set a limit on the number of outbound messages per second. If sending data to a server that has restrictions on the rate of incoming messages, this ensures that no messages are lost. | No  |\n| Persistent storage | If enabled, messages in the outbound queue are stored on disk. If there are interruptions in connection or power loss, messages will be retained and eventually sent when the connection is restored. | No  |\n| Queue mode | Select the sequence of data transfer: FIFO or LIFO. Selecting FIFO (First In First Out) will send the earliest message first. Selecting LIFO (Last In First Out) will send the latest message first. | No  |\n\nCompatibility Validation\n------------------------\n\nThis information is just for reference. More products and versions may be supported.\n\n| **Product** | **Version** | **Date** |\n| --- | --- | --- |\n| N/A | N/A | N/A |"
    }
}

Get Provider Tag Schema

POST {{edgeUrl}}/cc/v2

Get Provider Tag Schema

Returns the per-topic settings a provider accepts, separately for outbound and inbound topics. These are the extra fields the UI shows when you add a topic to an instance, and they end up in the topic's Config JSON string (see Create Subscription). For MQTT providers, for example, it is the per-topic QoS.

Many providers have no per-topic settings and return two empty arrays.

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 GetProviderTagSchema($input: GetProviderInfoRequest!) {
  GetProviderTagSchema(input: $input) {
    Inbound { Type TagType FieldId Label Tooltip DefaultValue TagDefaultValue Enum TagEnum Example }
    Outbound { Type TagType FieldId Label Tooltip DefaultValue TagDefaultValue Enum TagEnum Example }
  }
}

Variables (input: GetProviderInfoRequest!)

Field Type Required Description
ProviderID String! Yes Provider to read. Take it from List Providers.

Response

200 OK -- application/json. data.GetProviderTagSchema has Inbound (topics with IsLocalToRemote: false) and Outbound (topics with IsLocalToRemote: true), each a list of fields:

Field Type Description
FieldId String! Key to use inside the topic's Config JSON.
TagType TagSchemaType! Integer, String, Boolean or TextBox.
Type String Underlying JSON type, e.g. string.
Label String Form label.
Tooltip String Help text.
DefaultValue String Default as a string.
TagDefaultValue Any Default in its native type.
Enum [String] Allowed values as strings, when the field is a choice.
TagEnum [Any] Allowed values in their native type.
Example String Example value, often empty.

An unknown ID returns provider id "<id>": provider not found.

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 GetProviderTagSchema($input: GetProviderInfoRequest!) {
    GetProviderTagSchema(input: $input) {
        Inbound {
            Type
            TagType
            FieldId
            Label
            Tooltip
            DefaultValue
            TagDefaultValue
            Enum
            TagEnum
            Example
        }
        Outbound {
            Type
            TagType
            FieldId
            Label
            Tooltip
            DefaultValue
            TagDefaultValue
            Enum
            TagEnum
            Example
        }
    }
}

Variables

{
  "input": {
    "ProviderID": "{{integration_provider_id}}"
  }
}

Response

Status: 200 OK

{
    "data": {
        "GetProviderTagSchema": {
            "Inbound": [
                {
                    "Type": "string",
                    "TagType": "String",
                    "FieldId": "qos",
                    "Label": "Qos",
                    "Tooltip": "Qos",
                    "DefaultValue": "default",
                    "TagDefaultValue": "default",
                    "Enum": [
                        "default",
                        "0",
                        "1",
                        "2"
                    ],
                    "TagEnum": [
                        "default",
                        "0",
                        "1",
                        "2"
                    ],
                    "Example": ""
                }
            ],
            "Outbound": [
                {
                    "Type": "string",
                    "TagType": "String",
                    "FieldId": "qos",
                    "Label": "Qos",
                    "Tooltip": "Qos",
                    "DefaultValue": "default",
                    "TagDefaultValue": "default",
                    "Enum": [
                        "default",
                        "0",
                        "1",
                        "2"
                    ],
                    "TagEnum": [
                        "default",
                        "0",
                        "1",
                        "2"
                    ],
                    "Example": ""
                }
            ]
        }
    }
}

Create Instance (REST)

POST {{edgeUrl}}/cc/instances

Create Instance (REST)

Creates an Integration instance through the service's REST API instead of the GraphQL CreateInstance mutation. It takes the same provider ID and configuration and returns the new instance. GET {{edgeUrl}}/cc/instances (Dashboard > Number of Integrations) lists instances in the same shape. Manage the instance afterwards with the GraphQL calls in this folder (Get Instance, Update Instance, Delete Instance).

Endpoint

POST {{edgeUrl}}/cc/instances

Authentication

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

Request body

Field Type Required Description
providerId string Yes Provider ID from List Providers. 4.0.x uses slugs such as generic-mqtt-tcp; later releases use UUIDs.
config string Yes Provider configuration as a JSON-encoded string. Must contain name; the other keys follow Get Provider Description / the provider schema.
enabled boolean No Start the instance right away. Default false.
errorLogging boolean No Error logging flag, as in CreateInstance.

Response

200 OK -- application/json. The instance, with lower-camel-case keys (the GraphQL API uses InstanceID, ProviderID, ...). Secrets in config come back as <protected>.

Field Type Description
instanceId string New instance ID.
providerId string Provider ID.
config string Stored configuration, JSON-encoded.
enabled boolean Running state requested.
errorLogging boolean Error logging flag.
tagSyncEnabled boolean Tag sync flag.
system boolean true for instances the device created itself.
online boolean Connected to the target.
status string DISABLED for an instance created with enabled: false.
sizeOnDisk integer Persistence layer size in bytes.

Errors

HTTP status Body / when it happens
400 Bad Request {"Msg":"provider id \"<id>\": provider not found"}: unknown or missing providerId.
400 Bad Request {"Msg":"name field not found in config value not exists"}: config has no name.
401 Unauthorized Missing or invalid API token.

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

{
    "providerId": "generic-mqtt-tcp",
    "config": "{\"name\": \"My MQTT Integration\", \"hostname\": \"192.168.1.100\", \"port\": 1883, \"clientId\": \"edge-mqtt-1\", \"username\": \"admin\", \"password\": \"password\", \"qos\": 1, \"workersCount\": 100, \"topic\": \"integration/data\", \"throttlingLimit\": 0, \"persistentStorage\": false, \"queueMode\": \"lifo\", \"plSizeLimitMB\": 1024, \"plSizeLimitGB\": 1}",
    "enabled": false,
    "errorLogging": false
}

Response

Status: 200 OK

{
    "instanceId": "812719a5-32dc-46ac-83a7-56dfd4e90808",
    "providerId": "generic-mqtt-tcp",
    "config": "{\"clientId\":\"edge-mqtt-1\",\"hostname\":\"192.168.1.100\",\"name\":\"My MQTT Integration\",\"password\":\"<protected>\",\"persistentStorage\":false,\"plSizeLimitGB\":1,\"plSizeLimitMB\":1024,\"port\":1883,\"qos\":1,\"queueMode\":\"lifo\",\"throttlingLimit\":0,\"topic\":\"integration/data\",\"username\":\"admin\",\"workersCount\":100}",
    "enabled": false,
    "errorLogging": false,
    "tagSyncEnabled": true,
    "system": false,
    "online": false,
    "status": "DISABLED",
    "sizeOnDisk": 0
}

View this page as Markdown