Litmus Edge 4.4.x - OPC UA

Get Node Root

POST {{edgeUrl}}/opcua/v2

Updated in 4.1.x: NodeItem gained AccessControl: AccessControlEnum (Read | Write | ReadWrite, null when unset). Existing queries that don't select it keep working.

Get Node Root

Returns the synthetic root node of the OPC UA hierarchy. The root has NodeID: "edgedevice", is a FOLDER, and has NodeSource: "import". Every other node lives under it.

Use this as the entry point when walking the tree -- list its Children, then call Get Nodes by Paths to traverse further.

Endpoint

POST {{edgeUrl}}/opcua/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 GetNodeRoot {
  GetNodeRoot {
    NodeID
    ParentID
    Name
    NodeType
    NodeSource
    Data { DataType TopicName }
    Children
    Path
    WorkerNodeID
    WorkerNodeIDMode
    ArrayLength
  }
}

No arguments.

Response

200 OK -- application/json

Field Type Description
NodeID string UUID (or sentinel edgedevice for the root).
ParentID string UUID of the parent node, empty string for the root.
Name string Display name (EdgeDevice for the root).
NodeType string FOLDER, DEVICE, or TAG.
NodeSource string import (auto from DH) or manual (created via API).
Data object Non-null only for TAG nodes. {DataType, TopicName}.
Data.DataType string OPC UA data type: bool, float, int, string, ...
Data.TopicName string Source topic (a DeviceHub-published topic the node subscribes to).
Children array Direct children. May be null for leaf nodes or when not requested in the selection.
Path string[] Slash-style address used by Get Nodes by Paths. Starts with "NODE", then UUIDs.
WorkerNodeID string Stable identifier exposed to OPC UA clients (e.g. EdgeDevice).
WorkerNodeIDMode string hierarchical (auto-derived) or fixed.
ArrayLength integer Non-null for tag nodes whose data is array-typed.
{
  "data": {
    "GetNodeRoot": {
      "NodeID": "edgedevice",
      "ParentID": "",
      "Name": "EdgeDevice",
      "NodeType": "FOLDER",
      "NodeSource": "import",
      "Data": null,
      "Children": null,
      "Path": ["NODE", "edgedevice"],
      "WorkerNodeID": "EdgeDevice",
      "WorkerNodeIDMode": "fixed",
      "ArrayLength": 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

query GetNodeRoot {
    GetNodeRoot {
        NodeID
        ParentID
        Name
        NodeType
        AccessControl
        NodeSource
        Data {
            DataType
            TopicName
        }
        Children
        Path
        WorkerNodeID
        WorkerNodeIDMode
        ArrayLength
    }
}

Response

Status: 200 OK

{
    "data": {
        "GetNodeRoot": {
            "NodeID": "edgedevice",
            "ParentID": "",
            "Name": "EdgeDevice",
            "NodeType": "FOLDER",
            "NodeSource": "import",
            "Data": null,
            "Children": null,
            "Path": [
                "NODE",
                "edgedevice"
            ],
            "WorkerNodeID": "EdgeDevice",
            "WorkerNodeIDMode": "fixed",
            "ArrayLength": null
        }
    }
}

Get Nodes by Paths

POST {{edgeUrl}}/opcua/v2

Updated in 4.1.x: NodeItem gained AccessControl: AccessControlEnum (Read | Write | ReadWrite, null when unset). Existing queries that don't select it keep working.

Get Nodes by Paths

Returns the children of the node addressed by Path. Use this to walk the hierarchy depth-first: start at ["NODE", "edgedevice"], read its children, then dive in by appending each child's NodeID.

The response is an array because the query supports addressing multiple nodes in one call (one path per element), although the Postman example uses a single path.

Endpoint

POST {{edgeUrl}}/opcua/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 GetNodesByPath($input: GetNodeByPathRequest!) {
  GetNodesByPath(input: $input) {
    NodeID
    ParentID
    Name
    NodeType
    NodeSource
    Data { DataType TopicName }
    Children
    Path
    WorkerNodeID
    WorkerNodeIDMode
    ArrayLength
  }
}

Variables

Field Type Required Description
Path [String!] Yes Slash-style path. Starts with the literal "NODE", followed by NodeIDs from root downward.
{
  "input": {
    "Path": ["NODE", "edgedevice"]
  }
}

Response

200 OK -- application/json. Array of nodes -- the children of the addressed node. See Get Node Root for the per-field reference.

{
  "data": {
    "GetNodesByPath": [
      {
        "NodeID": "8b43db5e-e32e-4780-8387-63b37cf2ff00",
        "ParentID": "edgedevice",
        "Name": "tag1",
        "NodeType": "TAG",
        "NodeSource": "manual",
        "Data": { "DataType": "bool", "TopicName": "tag1" },
        "Children": null,
        "Path": ["NODE", "edgedevice", "8b43db5e-e32e-4780-8387-63b37cf2ff00"],
        "WorkerNodeID": "EdgeDevice.tag1",
        "WorkerNodeIDMode": "hierarchical",
        "ArrayLength": 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

query GetNodesByPath($input: GetNodeByPathRequest!) {
  GetNodesByPath(input: $input) {
        NodeID
        ParentID
        Name
        NodeType
        AccessControl
        NodeSource
        Data {
            DataType
            TopicName
        }
        Children
        Path
        WorkerNodeID
        WorkerNodeIDMode
        ArrayLength
    }
}

Variables

{
    "input": {
        "Path": [
            "NODE",
            "edgedevice"
        ]
    }
}

Response

Status: 200 OK

{
    "data": {
        "GetNodesByPath": [
            {
                "NodeID": "8b43db5e-e32e-4780-8387-63b37cf2ff00",
                "ParentID": "edgedevice",
                "Name": "tag1",
                "NodeType": "TAG",
                "NodeSource": "manual",
                "Data": {
                    "DataType": "bool",
                    "TopicName": "tag1"
                },
                "Children": null,
                "Path": [
                    "NODE",
                    "edgedevice",
                    "8b43db5e-e32e-4780-8387-63b37cf2ff00"
                ],
                "WorkerNodeID": "EdgeDevice.tag1",
                "WorkerNodeIDMode": "hierarchical",
                "ArrayLength": null
            }
        ]
    }
}

Add Node - Folder

POST {{edgeUrl}}/opcua/v2

Add Node - Folder

Requires: a ParentID, either the root's NodeID from Get Node Root or a node ID returned by an earlier Add Node call. An unknown parent fails with parent node "<id>" not found.

Creates a new FOLDER node under an existing parent. Folders are purely organizational and do not bind to any data source.

Three node kinds use the same CreateNode mutation, differing only by the NodeType value:

Endpoint

POST {{edgeUrl}}/opcua/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 CreateNode($input: NodeRequest!) {
  CreateNode(input: $input)
}

Variables (input: NodeRequest!)

Field Type Required Description
Name String! Yes Display name. Must be unique among the parent's children.
NodeType String! Yes FOLDER, DEVICE, or TAG.
ParentID String! Yes UUID (or edgedevice for the root) of the parent node.
WorkerNodeIDMode String! Yes hierarchical (NodeID derived from path) or fixed (use WorkerNodeID explicitly).
WorkerNodeID String? No Required when WorkerNodeIDMode: "fixed". The literal NodeID exposed to OPC UA clients.
Data NodeData? mixed Required for NodeType: "TAG". {TopicName, DataType} binding the tag to a DeviceHub topic.

Variables (example)

{
  "input": {
    "Name": "apiFolder",
    "NodeType": "FOLDER",
    "WorkerNodeIDMode": "hierarchical",
    "ParentID": "edgedevice"
  }
}

Response

200 OK -- application/json. Returns the new node's UUID as a string.

{
  "data": {
    "CreateNode": "1932e708-4a11-4d0e-87ac-a650bf4d7bf9"
  }
}

Save the returned UUID as {{opc_node_id}} for follow-up calls.

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

Variables

{
    "input": {
        "Name": "apiFolder",
        "NodeType": "FOLDER",
        "WorkerNodeIDMode": "hierarchical",
        "ParentID": "edgedevice"
    }
}

Response

Status: 200 OK

{
    "data": {
        "CreateNode": "1932e708-4a11-4d0e-87ac-a650bf4d7bf9"
    }
}

Add Node - Device

POST {{edgeUrl}}/opcua/v2

Add Node - Device

Requires: a ParentID, either the root from Get Node Root or a FOLDER node's ID from Add Node - Folder.

Creates a new DEVICE node. DEVICE nodes are organizational like FOLDER but mark a logical device boundary so external OPC UA clients can detect device-level grouping.

Three node kinds use the same CreateNode mutation, differing only by the NodeType value:

Endpoint

POST {{edgeUrl}}/opcua/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 CreateNode($input: NodeRequest!) {
  CreateNode(input: $input)
}

Variables (input: NodeRequest!)

Field Type Required Description
Name String! Yes Display name. Must be unique among the parent's children.
NodeType String! Yes FOLDER, DEVICE, or TAG.
ParentID String! Yes UUID (or edgedevice for the root) of the parent node.
WorkerNodeIDMode String! Yes hierarchical (NodeID derived from path) or fixed (use WorkerNodeID explicitly).
WorkerNodeID String? No Required when WorkerNodeIDMode: "fixed". The literal NodeID exposed to OPC UA clients.
Data NodeData? mixed Required for NodeType: "TAG". {TopicName, DataType} binding the tag to a DeviceHub topic.

Variables (example)

{
  "input": {
    "Name": "apiDevice",
    "NodeType": "DEVICE",
    "WorkerNodeIDMode": "hierarchical",
    "WorkerNodeID": null,
    "ParentID": "edgedevice"
  }
}

Response

200 OK -- application/json. Returns the new node's UUID as a string.

{
  "data": {
    "CreateNode": "d508ec1b-25da-4ceb-abdd-20e4fe37f863"
  }
}

Save the returned UUID as {{opc_node_id}} for follow-up calls.

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

Variables

{
    "input": {
        "Name": "apiDevice",
        "NodeType": "DEVICE",
        "WorkerNodeIDMode": "hierarchical",
        "WorkerNodeID": null,
        "ParentID": "edgedevice"
  }
}

Response

Status: 200 OK

{
    "data": {
        "CreateNode": "d508ec1b-25da-4ceb-abdd-20e4fe37f863"
    }
}

Add Node - Tag

POST {{edgeUrl}}/opcua/v2

Requires: a parent node ID, normally a DEVICE node from Add Node - Device. The server also accepts a FOLDER as the parent. Data.TopicName is not checked against DeviceHub, so a misspelt topic creates a tag node that never receives a value.

Updated in 4.2.x. CreateNode gained an optional originId argument, echoed back on the resulting SubscribeTreeChanged event.

Unchanged otherwise. Calls that omit originId behave exactly as in 4.1.x.

Request Body

GraphQL Query

mutation CreateNode($input: NodeRequest!, $originId: String) {
    CreateNode(input: $input, originId: $originId)
}

Variables

{
  "input": {
    "ParentID": "edgedevice",
    "Name": "apiTag",
    "NodeType": "TAG",
    "WorkerNodeIDMode": "hierarchical",
    "WorkerNodeID": null,
    "Data": {
      "TopicName": "devicehub.topic",
      "DataType": "float"
    },
    "AccessControl": "ReadWrite"
  },
  "originId": "{{opc_origin_id}}"
}

Update Node by ID

POST {{edgeUrl}}/opcua/v2

DEPRECATED in 4.2.x. Use UpdateNodeByRef, which addresses the node by (ID, ParentID) and is unambiguous when node IDs collide. UpdateNode still works and is not scheduled for removal in this release.

Also updated in 4.2.x: gained an optional originId argument, and NodeRequest gained an optional ExpectedVersion field for optimistic concurrency. A stale ExpectedVersion is rejected with VERSION_CONFLICT.

Read Version off the node first, pass it as ExpectedVersion, and the update is rejected if the node changed since. Both fields are optional; 4.1.x-style calls still work.

Request Body

GraphQL Query

mutation UpdateNode($nodeID: NodeID!, $input: NodeRequest!, $originId: String) {
    UpdateNode(nodeID: $nodeID, input: $input, originId: $originId)
}

Variables

{
  "nodeID": "{{opc_node_id}}",
  "input": {
    "ParentID": "edgedevice",
    "Name": "apiTag",
    "NodeType": "TAG",
    "Data": {
      "DataType": "float",
      "TopicName": "devicehub.topic"
    },
    "WorkerNodeID": "EdgeDevice.apiTag",
    "WorkerNodeIDMode": "hierarchical",
    "AccessControl": "Read",
    "ExpectedVersion": "{{opc_node_version}}"
  },
  "originId": "{{opc_origin_id}}"
}

Remove Single Node by ID

POST {{edgeUrl}}/opcua/v2

Also deletes: every node beneath it. Removing a FOLDER removes its DEVICE and TAG nodes in the same call.

DEPRECATED in 4.2.x. Use DeleteNodeByRef. DeleteNode still works.

Also updated in 4.2.x: gained optional expectedVersion and originId arguments. Both may be omitted for the 4.1.x behaviour. A stale expectedVersion is rejected with VERSION_CONFLICT.

Request Body

GraphQL Query

mutation DeleteNode($input: NodeID!, $expectedVersion: ID, $originId: String) {
    DeleteNode(input: $input, expectedVersion: $expectedVersion, originId: $originId)
}

Variables

{
  "input": "{{opc_node_id}}",
  "expectedVersion": "{{opc_node_version}}",
  "originId": "{{opc_origin_id}}"
}

Reset Imported Hierarchy

POST {{edgeUrl}}/opcua/v2

Reset Imported Hierarchy

Removes every node whose NodeSource is import -- i.e. every node that was auto-created when importing DeviceHub tags. Nodes created via the API (NodeSource: "manual") are preserved.

The ResetNodes mutation takes a single SourceType selector:

SourceType Effect
Import Removes nodes auto-imported from DeviceHub (NodeSource: "import").
Manual Removes nodes created via this API (NodeSource: "manual").
All Removes every node (effectively wiping the address space back to the synthetic root).

Endpoint

POST {{edgeUrl}}/opcua/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 ResetNodes($input: NodeResetRequest!) {
  ResetNodes(input: $input)
}

Variables

Field Type Required Description
SourceType String! Yes One of Import, Manual, All. Selects which nodes to remove.
{
  "input": { "SourceType": "Import" }
}

Response

200 OK -- application/json. No data returned on success.

{ "data": { "ResetNodes": 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.

Recoverability

There is no undo. Snapshot the hierarchy with Export As JSON before calling this if you may want to restore.

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

Variables

{
    "input": {
        "SourceType": "Import"
    }
}

Response

Status: 200 OK

{
    "data": {
        "ResetNodes": null
    }
}

Reset Manually Created Hierarchy

POST {{edgeUrl}}/opcua/v2

Reset Manually Created Hierarchy

Removes every node whose NodeSource is manual -- i.e. every node created via the OPC UA API. Auto-imported DeviceHub nodes (NodeSource: "import") are preserved.

The ResetNodes mutation takes a single SourceType selector:

SourceType Effect
Import Removes nodes auto-imported from DeviceHub (NodeSource: "import").
Manual Removes nodes created via this API (NodeSource: "manual").
All Removes every node (effectively wiping the address space back to the synthetic root).

Endpoint

POST {{edgeUrl}}/opcua/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 ResetNodes($input: NodeResetRequest!) {
  ResetNodes(input: $input)
}

Variables

Field Type Required Description
SourceType String! Yes One of Import, Manual, All. Selects which nodes to remove.
{
  "input": { "SourceType": "Manual" }
}

Response

200 OK -- application/json. No data returned on success.

{ "data": { "ResetNodes": 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.

Recoverability

There is no undo. Snapshot the hierarchy with Export As JSON before calling this if you may want to restore.

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

Variables

{
    "input": {
        "SourceType": "Manual"
    }
}

Response

Status: 200 OK

{
    "data": {
        "ResetNodes": null
    }
}

Reset All Hierarchy

POST {{edgeUrl}}/opcua/v2

Reset All Hierarchy

Removes every node, regardless of NodeSource. The hierarchy is reset to just the synthetic root.

The ResetNodes mutation takes a single SourceType selector:

SourceType Effect
Import Removes nodes auto-imported from DeviceHub (NodeSource: "import").
Manual Removes nodes created via this API (NodeSource: "manual").
All Removes every node (effectively wiping the address space back to the synthetic root).

Endpoint

POST {{edgeUrl}}/opcua/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 ResetNodes($input: NodeResetRequest!) {
  ResetNodes(input: $input)
}

Variables

Field Type Required Description
SourceType String! Yes One of Import, Manual, All. Selects which nodes to remove.
{
  "input": { "SourceType": "All" }
}

Response

200 OK -- application/json. No data returned on success.

{ "data": { "ResetNodes": 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.

Recoverability

There is no undo. Snapshot the hierarchy with Export As JSON before calling this if you may want to restore.

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

Variables

{
    "input": {
        "SourceType": "All"
    }
}

Response

Status: 200 OK

{
    "data": {
        "ResetNodes": null
    }
}

Export As JSON

POST {{edgeUrl}}/opcua/v2

Export As JSON

Exports all of the nodes in the hierarchy as a nested JSON tree. In the LE UI this lives under the Hierarchy pane's Action menu and downloads straight to disk; the option only appears when a hierarchy exists.

Use this for backups, source-control snapshots, or migration to another device (re-import via Import JSON).

The query is named GetNodeTree; the response payload is the same shape UploadHierarchy (Import JSON) accepts.

Use Postman's Send and Download button if you want the response body saved straight to disk.

Endpoint

POST {{edgeUrl}}/opcua/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

``` graphql
query GetNodeTree {
  GetNodeTree
}

 ```

No arguments.

## Response

`200 OK` -- `application/json`. `data.GetNodeTree` is the root node of the tree, with `children` recursively populated. The wire field names are **lower_snake_case** in this projection (`worker_node_id`, `node_source`) -- contrast with the PascalCase used by `Get Node Root` / `GetNodesByPath`. Both shapes describe the same data; this one is the round-trip format for `Import JSON`.

``` json
{
  "data": {
    "GetNodeTree": {
      "id": "edgedevice",
      "parent_id": "",
      "name": "EdgeDevice",
      "type": "FOLDER",
      "node_source": "import",
      "data": null,
      "children": null,
      "path": ["NODE", "edgedevice"],
      "worker_node_id": "EdgeDevice",
      "worker_node_id_mode": "fixed"
    }
  }
}

 ```

## Errors

GraphQL endpoints return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

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

```graphql
query GetNodeTree {
    GetNodeTree
}

Response

Status: 200 OK

{
    "data": {
        "GetNodeTree": {
            "id": "edgedevice",
            "parent_id": "",
            "name": "EdgeDevice",
            "type": "FOLDER",
            "node_source": "import",
            "data": null,
            "children": null,
            "path": [
                "NODE",
                "edgedevice"
            ],
            "worker_node_id": "EdgeDevice",
            "worker_node_id_mode": "fixed"
        }
    }
}

Import JSON

POST {{edgeUrl}}/opcua/v2

Import JSON

Imports nodes from a JSON document into the OPC UA hierarchy. The imported nodes are merged with the existing hierarchy -- they do not replace it. Existing nodes whose IDs match nodes in the import are updated; the rest of the tree is left intact.

Action required after import: the OPC UA server must be reset for the merged hierarchy to take effect. Stop and start the server with Management > Stop OPC UA Service followed by Management > Start OPC UA Service. See the LE UI's Manage the OPC UA Server documentation for the equivalent UI flow.

The mutation accepts the snake_case JSON shape produced by Export As JSON -- you can round-trip an export verbatim.

Endpoint

POST {{edgeUrl}}/opcua/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

``` graphql
mutation UploadHierarchy($input: Any!) {
  UploadHierarchy(input: $input)
}

 ```

### Variables

The `input` is the root tree from `Export As JSON` -- a single object with `id`, `name`, `type: "FOLDER"`, and a recursive `children` array.

``` json
{
  "input": {
    "id": "a335157b-013b-415e-8138-8c78faa571ee",
    "parent_id": "",
    "name": "EdgeDevice",
    "type": "FOLDER",
    "node_source": "manual",
    "data": null,
    "children": [
      {
        "id": "10c45ba5-589b-4034-8bfb-45684c67c9...",
        "...": "..."
      }
    ]
  }
}

 ```

## Response

`200 OK` -- `application/json`. No data returned on success.

``` json
{ "data": { "UploadHierarchy": null } }

 ```

## Post-import steps

``` text
1. Import JSON                  -> hierarchy is merged in storage
2. Management > Stop OPC UA Service
3. Management > Start OPC UA Service  -> merged hierarchy is now served
4. Connections > Get Server Metrics   -> verify clients can reconnect

 ```

Until the service is reset, **external OPC UA clients continue to see the pre-import hierarchy** even though the storage has been merged.

## Errors

GraphQL endpoints return `200 OK` even on logical errors. Inspect the `errors` array in the response body:

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

### To replace instead of merge

If you want a true replacement (not a merge), wipe first then import:

1. `Reset All Hierarchy` (`SourceType: "All"`).

2. `Import JSON`.

3. Stop / Start the service.


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

```graphql
mutation UploadHierarchy($input: Any!) {
    UploadHierarchy(input: $input)
}

Variables

{
    "input": {
        "id": "a335157b-013b-415e-8138-8c78faa571ee",
        "parent_id": "",
        "name": "EdgeDevice",
        "type": "FOLDER",
        "node_source": "manual",
        "data": null,
        "children": [
            {
                "id": "10c45ba5-589b-4034-8bfb-45684c67c9e1",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "device1",
                "type": "DEVICE",
                "node_source": "manual",
                "data": null,
                "children": null,
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "10c45ba5-589b-4034-8bfb-45684c67c9e1"
                ]
            },
            {
                "id": "231b695d-8603-4bc2-bcc9-abec6caca02a",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "Device1",
                "type": "TAG",
                "node_source": "manual",
                "data": {
                    "dataType": "int32",
                    "topic": "tag1"
                },
                "children": null,
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "231b695d-8603-4bc2-bcc9-abec6caca02a"
                ]
            },
            {
                "id": "41FBD12E-C6CD-4539-AD50-336D278B207C",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "Rack 2b M258",
                "type": "DEVICE",
                "node_source": "import",
                "data": null,
                "children": null,
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "41FBD12E-C6CD-4539-AD50-336D278B207C"
                ]
            },
            {
                "id": "474E42B0-C7B8-42DE-8DE2-FFED7030A563",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "DTA windows tia",
                "type": "DEVICE",
                "node_source": "import",
                "data": null,
                "children": null,
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "474E42B0-C7B8-42DE-8DE2-FFED7030A563"
                ]
            },
            {
                "id": "4C4B9CCC-F5E4-4C2E-A4C0-EAF5C32B0D1A",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "AB CLX API testing",
                "type": "DEVICE",
                "node_source": "import",
                "data": null,
                "children": [
                    {
                        "id": "8BA821A2-CC97-48DE-9AB4-35AA3CE69BDD",
                        "parent_id": "4C4B9CCC-F5E4-4C2E-A4C0-EAF5C32B0D1A",
                        "name": "cAM_BadVoltageAllPot",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "bool",
                            "topic": "devicehub.alias.AB_CLX_API_testing.cAM_BadVoltageAllPot"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "4C4B9CCC-F5E4-4C2E-A4C0-EAF5C32B0D1A",
                            "8BA821A2-CC97-48DE-9AB4-35AA3CE69BDD"
                        ]
                    }
                ],
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "4C4B9CCC-F5E4-4C2E-A4C0-EAF5C32B0D1A"
                ]
            },
            {
                "id": "70a2d234-5df7-4e4c-8985-971f907e3a07",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "folder1",
                "type": "FOLDER",
                "node_source": "manual",
                "data": null,
                "children": null,
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "70a2d234-5df7-4e4c-8985-971f907e3a07"
                ]
            },
            {
                "id": "779F42F3-54FC-4A87-B9A6-CD39CFA4A97D",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "Simulator2",
                "type": "DEVICE",
                "node_source": "import",
                "data": null,
                "children": [
                    {
                        "id": "1A5572B2-8242-40C8-BC63-FFEBC7DAF1E4",
                        "parent_id": "779F42F3-54FC-4A87-B9A6-CD39CFA4A97D",
                        "name": "apiTag",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1A5572B2-8242-40C8-BC63-FFEBC7DAF1E4"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "779F42F3-54FC-4A87-B9A6-CD39CFA4A97D",
                            "1A5572B2-8242-40C8-BC63-FFEBC7DAF1E4"
                        ]
                    },
                    {
                        "id": "5CE8DB00-8A03-475D-865F-BB34887D51C6",
                        "parent_id": "779F42F3-54FC-4A87-B9A6-CD39CFA4A97D",
                        "name": "apiCSVTag",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5CE8DB00-8A03-475D-865F-BB34887D51C6"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "779F42F3-54FC-4A87-B9A6-CD39CFA4A97D",
                            "5CE8DB00-8A03-475D-865F-BB34887D51C6"
                        ]
                    }
                ],
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "779F42F3-54FC-4A87-B9A6-CD39CFA4A97D"
                ]
            },
            {
                "id": "79F3914E-32A1-4227-AC16-023E627EB26E",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "aa",
                "type": "DEVICE",
                "node_source": "import",
                "data": null,
                "children": null,
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "79F3914E-32A1-4227-AC16-023E627EB26E"
                ]
            },
            {
                "id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "ClassificationSimulator",
                "type": "DEVICE",
                "node_source": "import",
                "data": null,
                "children": [
                    {
                        "id": "0BB9BE0A-EBC8-4932-9CCC-D9E3A994D986",
                        "parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                        "name": "motionTopic8",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.alias.ClassificationSimulator.motionTopic8"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                            "0BB9BE0A-EBC8-4932-9CCC-D9E3A994D986"
                        ]
                    },
                    {
                        "id": "2ADE6AFF-A950-413B-82EA-2D142A76C741",
                        "parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                        "name": "motionTopic1",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.alias.ClassificationSimulator.motionTopic1"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                            "2ADE6AFF-A950-413B-82EA-2D142A76C741"
                        ]
                    },
                    {
                        "id": "5DA5BD59-D25E-488C-A37B-B0E90649F22D",
                        "parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                        "name": "motionTopic6",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.alias.ClassificationSimulator.motionTopic6"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                            "5DA5BD59-D25E-488C-A37B-B0E90649F22D"
                        ]
                    },
                    {
                        "id": "665E3EA1-7FFA-469F-ADCB-F9FB5472D16B",
                        "parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                        "name": "motionTopic5",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.alias.ClassificationSimulator.motionTopic5"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                            "665E3EA1-7FFA-469F-ADCB-F9FB5472D16B"
                        ]
                    },
                    {
                        "id": "A8091B99-DBCD-4C9B-BEE1-EE571D84797A",
                        "parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                        "name": "motionTopic0",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.alias.ClassificationSimulator.motionTopic0"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                            "A8091B99-DBCD-4C9B-BEE1-EE571D84797A"
                        ]
                    },
                    {
                        "id": "A9D97FFC-72B6-4775-AA5E-895378650B74",
                        "parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                        "name": "motionTopic2",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.alias.ClassificationSimulator.motionTopic2"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                            "A9D97FFC-72B6-4775-AA5E-895378650B74"
                        ]
                    },
                    {
                        "id": "E3DEC8C0-EE07-4D7F-8525-26C585E2B603",
                        "parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                        "name": "motionTopic3",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.alias.ClassificationSimulator.motionTopic3"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                            "E3DEC8C0-EE07-4D7F-8525-26C585E2B603"
                        ]
                    },
                    {
                        "id": "E4E22269-5B67-4EF2-BFD8-578072AE1A29",
                        "parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                        "name": "motionTopic4",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.alias.ClassificationSimulator.motionTopic4"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
                            "E4E22269-5B67-4EF2-BFD8-578072AE1A29"
                        ]
                    }
                ],
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "89C52E9A-0901-4D8D-B842-7B533F64E1B7"
                ]
            },
            {
                "id": "BAFD349E-21B6-408A-AE2F-B9C682912571",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "Boiler",
                "type": "DEVICE",
                "node_source": "import",
                "data": null,
                "children": null,
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "BAFD349E-21B6-408A-AE2F-B9C682912571"
                ]
            },
            {
                "id": "CDC283FB-72E2-42DF-A587-4D6299D70C9A",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "sim1",
                "type": "DEVICE",
                "node_source": "import",
                "data": null,
                "children": [
                    {
                        "id": "5EAEBA93-B17D-45FC-8291-CA5CFCEFB994",
                        "parent_id": "CDC283FB-72E2-42DF-A587-4D6299D70C9A",
                        "name": "sine1",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.alias.sim1.sine1"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "CDC283FB-72E2-42DF-A587-4D6299D70C9A",
                            "5EAEBA93-B17D-45FC-8291-CA5CFCEFB994"
                        ]
                    },
                    {
                        "id": "A21EB566-296F-41A8-8436-C5C73E2C5448",
                        "parent_id": "CDC283FB-72E2-42DF-A587-4D6299D70C9A",
                        "name": "sine2",
                        "type": "TAG",
                        "node_source": "import",
                        "data": {
                            "dataType": "float64",
                            "topic": "devicehub.alias.sim1.sine2"
                        },
                        "children": null,
                        "path": [
                            "NODE",
                            "a335157b-013b-415e-8138-8c78faa571ee",
                            "CDC283FB-72E2-42DF-A587-4D6299D70C9A",
                            "A21EB566-296F-41A8-8436-C5C73E2C5448"
                        ]
                    }
                ],
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "CDC283FB-72E2-42DF-A587-4D6299D70C9A"
                ]
            },
            {
                "id": "D0C3FE53-5069-4FD7-B565-4F362AED18E9",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "aba",
                "type": "DEVICE",
                "node_source": "import",
                "data": null,
                "children": null,
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "D0C3FE53-5069-4FD7-B565-4F362AED18E9"
                ]
            },
            {
                "id": "EEF5EE7F-54C7-415A-B1C7-4F9386112DEB",
                "parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
                "name": "D14 Boiler Power PAC4200",
                "type": "DEVICE",
                "node_source": "import",
                "data": null,
                "children": null,
                "path": [
                    "NODE",
                    "a335157b-013b-415e-8138-8c78faa571ee",
                    "EEF5EE7F-54C7-415A-B1C7-4F9386112DEB"
                ]
            }
        ],
        "path": [
            "NODE",
            "a335157b-013b-415e-8138-8c78faa571ee"
        ]
    }
}

Response

Status: 200 OK

{
    "data": {
        "UploadHierarchy": null
    }
}

Import Some DH Tags

POST {{edgeUrl}}/opcua/v2

Updated in 4.2.x. ImportSomeDeviceHubTagsResponse gained TruncatedDevices: [String!], with the same meaning as on ImportTopics.

Note the input type is ImportSomeDeviceTagsRequest (no Hub), taking a Tags list of { DeviceID, RegistersID }. Omit RegistersID to import every register on that device.

Request Body

GraphQL Query

mutation ImportSomeDeviceHubTags($input: ImportSomeDeviceTagsRequest!) {
    ImportSomeDeviceHubTags(input: $input) {
        ImportedCount
        FailedCount
        SkippedCount
        TruncatedDevices
    }
}

Variables

{
  "input": {
    "Tags": [
      {
        "DeviceID": "{{devicehub_device_uuid}}",
        "RegistersID": [
          "{{devicehub_tag_uuid_1}}",
          "{{devicehub_tag_uuid_2}}"
        ]
      }
    ]
  }
}

Import all DH Tags of a Device

POST {{edgeUrl}}/opcua/v2

Import all DH Tags of a Device

Imports every DeviceHub tag from a single device into the OPC UA hierarchy. Convenience form of Import Some DH Tags with an empty RegistersID array.

The mutation reused under the hood is ImportSomeDeviceHubTags; this endpoint exists to make the "all-on-one-device" intent obvious in the collection.

Endpoint

POST {{edgeUrl}}/opcua/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 ImportSomeDeviceHubTags($input: ImportSomeDeviceTagsRequest!) {
  ImportSomeDeviceHubTags(input: $input) {
    ImportedCount
    FailedCount
    SkippedCount
  }
}

Variables

{
  "input": {
    "Tags": [
      {
        "DeviceID": "{{deviceID}}",
        "RegistersID": []
      }
    ]
  }
}

RegistersID: [] is the "all registers on this device" signal.

Response

Same shape as Import Some DH Tags. Typical response for a device with 230 tags:

{
  "data": {
    "ImportSomeDeviceHubTags": {
      "ImportedCount": 230,
      "FailedCount": 0,
      "SkippedCount": 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 ImportSomeDeviceHubTags($input: ImportSomeDeviceTagsRequest!) {
    ImportSomeDeviceHubTags(input: $input) {
        ImportedCount
        FailedCount
        SkippedCount
    }
}

Variables

{
    "input": {
        "Tags": [
            {
                "DeviceID": "{{deviceID}}",
                "RegistersID": []
            }
        ]
    }
}

Response

Status: 200 OK

{
    "data": {
        "ImportSomeDeviceHubTags": {
            "ImportedCount": 230,
            "FailedCount": 0,
            "SkippedCount": 0
        }
    }
}

Import ALL DH Tags

POST {{edgeUrl}}/opcua/v2

Import ALL DH Tags

Imports every DeviceHub tag from every device into the OPC UA hierarchy in one call. This is the wholesale "expose everything" shortcut.

The response is the full resulting tree -- handy for verifying the import succeeded without a separate Get Node Root / Get Nodes by Paths walk.

Endpoint

POST {{edgeUrl}}/opcua/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 ImportDeviceHubTag {
  ImportDeviceHubTags
}

No arguments.

Response

200 OK -- application/json. data.ImportDeviceHubTags is the root of the resulting hierarchy (same shape as Export As JSON).

{
  "data": {
    "ImportDeviceHubTags": {
      "name": "EdgeDevice",
      "type": "FOLDER",
      "id": "edgedevice",
      "data": null,
      "children": [
        {
          "name": "apiTestDevice",
          "type": "DEVICE",
          "id": "apiTestDevice",
          "node_source": "import",
          "worker_node_id": "EdgeDevice.apiTestDevice",
          "worker_node_id_mode": "hierarchical",
          "children": []
        }
      ]
    }
  }
}

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 ImportDeviceHubTag {
    ImportDeviceHubTags
}

Response

Status: 200 OK

{
    "data": {
        "ImportDeviceHubTags": {
            "name": "EdgeDevice",
            "type": "FOLDER",
            "id": "edgedevice",
            "data": null,
            "children": [
                {
                    "name": "apiTestDevice",
                    "type": "DEVICE",
                    "id": "apiTestDevice",
                    "node_source": "import",
                    "data": null,
                    "worker_node_id": "EdgeDevice.apiTestDevice",
                    "worker_node_id_mode": "hierarchical",
                    "children": [
                        {
                            "name": "fake123",
                            "type": "TAG",
                            "id": "fake123",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.apiTestDevice.fake123"
                            },
                            "worker_node_id": "EdgeDevice.apiTestDevice.fake123",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "asdf",
                            "type": "TAG",
                            "id": "asdf",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.apiTestDevice.asdf"
                            },
                            "worker_node_id": "EdgeDevice.apiTestDevice.asdf",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        }
                    ]
                },
                {
                    "name": "Rack_2b_M258",
                    "type": "DEVICE",
                    "id": "Rack_2b_M258",
                    "node_source": "import",
                    "data": null,
                    "worker_node_id": "EdgeDevice.Rack 2b M258",
                    "worker_node_id_mode": "hierarchical",
                    "children": [
                        {
                            "name": "fake",
                            "type": "TAG",
                            "id": "fake",
                            "node_source": "import",
                            "data": {
                                "dataType": "bool",
                                "topic": "devicehub.raw.41FBD12E-C6CD-4539-AD50-336D278B207C.EAFA65F1-C38B-48F5-BC81-1B6F5DC126C6"
                            },
                            "worker_node_id": "EdgeDevice.Rack 2b M258.fake",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        }
                    ]
                },
                {
                    "name": "DTA_windows_tia",
                    "type": "DEVICE",
                    "id": "DTA_windows_tia",
                    "node_source": "import",
                    "data": null,
                    "worker_node_id": "EdgeDevice.DTA windows tia",
                    "worker_node_id_mode": "hierarchical",
                    "children": null
                },
                {
                    "name": "AB_CLX_API_testing",
                    "type": "DEVICE",
                    "id": "AB_CLX_API_testing",
                    "node_source": "import",
                    "data": null,
                    "worker_node_id": "EdgeDevice.AB CLX API testing",
                    "worker_node_id_mode": "hierarchical",
                    "children": [
                        {
                            "name": "cAM_BadVoltageAllPot",
                            "type": "TAG",
                            "id": "cAM_BadVoltageAllPot",
                            "node_source": "import",
                            "data": {
                                "dataType": "bool",
                                "topic": "devicehub.alias.AB_CLX_API_testing.cAM_BadVoltageAllPot"
                            },
                            "worker_node_id": "EdgeDevice.AB CLX API testing.cAM_BadVoltageAllPot",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        }
                    ]
                },
                {
                    "name": "Simulator2",
                    "type": "DEVICE",
                    "id": "Simulator2",
                    "node_source": "import",
                    "data": null,
                    "worker_node_id": "EdgeDevice.Simulator2",
                    "worker_node_id_mode": "hierarchical",
                    "children": [
                        {
                            "name": "AirFlow16PV",
                            "type": "TAG",
                            "id": "AirFlow16PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.007398CD-51DC-47B8-A3FD-F51929EA61DF"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow16PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow7SP",
                            "type": "TAG",
                            "id": "WaterFlow7SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.01133640-EFBC-44F1-8188-A1447C00A5CC"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow7SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step7PressureSP",
                            "type": "TAG",
                            "id": "Step7PressureSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.020EF751-10AB-433E-BF38-A9013A4B8971"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step7PressureSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow13PV",
                            "type": "TAG",
                            "id": "WaterFlow13PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.035CD2C9-35CF-405D-A984-1E5DFC816583"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow13PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel18PV",
                            "type": "TAG",
                            "id": "AirChannel18PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.049ED31A-F0A3-491B-92BC-D47E85237174"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel18PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration14SP",
                            "type": "TAG",
                            "id": "AirDuration14SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.04C0FEB1-227D-400B-87F7-6C8478DA7944"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration14SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration11SP",
                            "type": "TAG",
                            "id": "AirDuration11SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.05E3241F-43BB-4045-BF69-4A26EE4F5705"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration11SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay16SP",
                            "type": "TAG",
                            "id": "WaterDelay16SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.05FE7CD0-8751-4C0B-AE1F-185B86E974F8"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay16SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration19SP",
                            "type": "TAG",
                            "id": "AirDuration19SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0671BF01-6365-482B-A08D-404ABB2BB075"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration19SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay13SP",
                            "type": "TAG",
                            "id": "WaterDelay13SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.07611094-25D2-4FF5-BD6F-8EB4B00C5CE4"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay13SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration12SP",
                            "type": "TAG",
                            "id": "WaterDuration12SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.08463862-6FF0-48DB-9B38-3B25AC7F13FC"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration12SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow3SP",
                            "type": "TAG",
                            "id": "AirFlow3SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.09EDAB62-CF5C-4841-9FE4-96E8A7BB53A0"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow3SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "PressurisationSP",
                            "type": "TAG",
                            "id": "PressurisationSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0A39EA69-3EBB-4321-AA5C-0C004EF73829"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.PressurisationSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step1PressureSP",
                            "type": "TAG",
                            "id": "Step1PressureSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0A760E01-3953-49FB-BBF2-04157B193C0E"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step1PressureSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow18SP",
                            "type": "TAG",
                            "id": "AirFlow18SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0B370978-F01B-45B8-9A45-4BB8A3B520AD"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow18SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration7SP",
                            "type": "TAG",
                            "id": "AirDuration7SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0B3BE0F5-1969-4116-AF67-D14D18C65F29"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration7SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel5PV",
                            "type": "TAG",
                            "id": "AirChannel5PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0BF9FE07-1348-4FAC-83B3-37713C4611FC"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel5PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel16PV",
                            "type": "TAG",
                            "id": "AirChannel16PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0F7F573F-AD8A-435D-A9E5-1A253EAA9052"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel16PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration4SP",
                            "type": "TAG",
                            "id": "WaterDuration4SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0FCDA97E-6418-4DF4-AB0B-9B719C8148E0"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration4SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel8PV",
                            "type": "TAG",
                            "id": "AirChannel8PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0FFEBA8C-3BD1-4257-B637-F55AD8A8DE05"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel8PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow4PV",
                            "type": "TAG",
                            "id": "AirFlow4PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.105EED56-0778-40FB-BA0F-1DD98B23D892"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow4PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow19PV",
                            "type": "TAG",
                            "id": "AirFlow19PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.10CE0BEA-D926-4E6D-83FC-461A79AB1DA8"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow19PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow10PV",
                            "type": "TAG",
                            "id": "WaterFlow10PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1399FCAF-FA13-4CA3-A32D-9C366126B5A0"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow10PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow1SP",
                            "type": "TAG",
                            "id": "AirFlow1SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.13DEA627-851E-4B00-801C-5C428F3E5EBC"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow1SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration1SP",
                            "type": "TAG",
                            "id": "AirDuration1SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1425F7ED-0017-4BD6-BD4B-87727648AA2F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration1SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow11PV",
                            "type": "TAG",
                            "id": "WaterFlow11PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1530314B-613A-4E8A-BC0D-BD28D0E9C5EB"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow11PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay9SP",
                            "type": "TAG",
                            "id": "AirDelay9SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.16953B90-212E-4A40-A8D5-81CDA2280A5C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay9SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow11SP",
                            "type": "TAG",
                            "id": "AirFlow11SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1A297B2B-2365-45CF-8FFB-28C5BCD67C0C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow11SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow17SP",
                            "type": "TAG",
                            "id": "AirFlow17SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1A6A591B-5552-4BA0-9F24-4D452CFD2D77"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow17SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow5SP",
                            "type": "TAG",
                            "id": "WaterFlow5SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1A90845F-8949-436F-BD15-4CB5153F32EB"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow5SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow23SP",
                            "type": "TAG",
                            "id": "AirFlow23SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1CAE0D52-E438-4F67-A9AE-844C65649A1E"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow23SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay10SP",
                            "type": "TAG",
                            "id": "AirDelay10SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1D113184-E045-493C-BA3A-A1504AD96B65"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay10SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow3PV",
                            "type": "TAG",
                            "id": "AirFlow3PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2326983B-9990-4A14-8214-D62F128DE158"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow3PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "MoldTemp1PV",
                            "type": "TAG",
                            "id": "MoldTemp1PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.23C11F34-D27C-4F2A-B7DA-ABCAA0A4FB64"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.MoldTemp1PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow6PV",
                            "type": "TAG",
                            "id": "WaterFlow6PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.26D1C814-82D0-4EA4-A706-57EA008C3520"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow6PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow1PV",
                            "type": "TAG",
                            "id": "WaterFlow1PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2741C160-07FD-4284-AEDD-6085D80004AA"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow1PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel7PV",
                            "type": "TAG",
                            "id": "AirChannel7PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2750B941-11C6-45D4-B186-4F7333C672CD"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel7PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow13PV",
                            "type": "TAG",
                            "id": "AirFlow13PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.28084D2B-AF2A-4F45-9977-B296558C5124"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow13PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow9PV",
                            "type": "TAG",
                            "id": "WaterFlow9PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.28EBC92A-3DE4-44E5-ADC8-489AD7DCBAAC"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow9PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "RamSpeedUp",
                            "type": "TAG",
                            "id": "RamSpeedUp",
                            "node_source": "import",
                            "data": {
                                "dataType": "bool",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2B284910-42E0-4876-A0BE-47A4253064ED"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.RamSpeedUp",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel11PV",
                            "type": "TAG",
                            "id": "AirChannel11PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2BB70BB8-A7EC-442E-AF3F-835F1D778E6B"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel11PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel24PV",
                            "type": "TAG",
                            "id": "AirChannel24PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2BBC85B9-9A2C-44E5-A160-84D13AE40322"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel24PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow8SP",
                            "type": "TAG",
                            "id": "AirFlow8SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2C696F5C-2082-44E3-9D7C-00DACCFB95E4"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow8SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration9SP",
                            "type": "TAG",
                            "id": "AirDuration9SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2CE02B16-7BF1-4CDA-9EB2-CAD1C9AC7ED6"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration9SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay12SP",
                            "type": "TAG",
                            "id": "AirDelay12SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2D173909-8A22-4B1B-9D27-E9A4C24D70DD"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay12SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step5PressureSP",
                            "type": "TAG",
                            "id": "Step5PressureSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2E833A1F-2700-4A41-A4A6-5B4B51D4DE0E"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step5PressureSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow2SP",
                            "type": "TAG",
                            "id": "AirFlow2SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2ECC5790-C2C8-4E20-A5CD-1649FA0C7259"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow2SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "HalfCycle1",
                            "type": "TAG",
                            "id": "HalfCycle1",
                            "node_source": "import",
                            "data": {
                                "dataType": "bool",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2F63B774-B35F-43CA-B25F-394FD41FFD5C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.HalfCycle1",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow4SP",
                            "type": "TAG",
                            "id": "AirFlow4SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2F884021-E5A8-4934-9BF7-9CA73B224596"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow4SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "HFDoorOpen",
                            "type": "TAG",
                            "id": "HFDoorOpen",
                            "node_source": "import",
                            "data": {
                                "dataType": "bool",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.30A2F3B9-83A2-46B7-8318-E975E51D54A4"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.HFDoorOpen",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow13SP",
                            "type": "TAG",
                            "id": "WaterFlow13SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.313E6FF2-5169-4DFC-9595-DFBAB62EB6FA"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow13SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration15SP",
                            "type": "TAG",
                            "id": "WaterDuration15SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.342D8268-951A-4831-BBA7-D66E3D11F0E5"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration15SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay23SP",
                            "type": "TAG",
                            "id": "AirDelay23SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.34B14B4C-3CBC-41D0-9561-2AB91BF17D22"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay23SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel2PV",
                            "type": "TAG",
                            "id": "AirChannel2PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.352A50A9-21AE-4D40-B9D1-4BDC710306DC"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel2PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterChannel12PV",
                            "type": "TAG",
                            "id": "WaterChannel12PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.37687BD5-6546-49C9-89DB-1C2841167226"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterChannel12PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "HFMetalTempPV",
                            "type": "TAG",
                            "id": "HFMetalTempPV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.38982E38-89BC-4C0C-8DB6-0A8EFEED0C5D"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.HFMetalTempPV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow20PV",
                            "type": "TAG",
                            "id": "AirFlow20PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.38E30062-C936-4037-8B08-9C02BA082960"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow20PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel10PV",
                            "type": "TAG",
                            "id": "AirChannel10PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3A277C99-3181-4FF5-B536-D060C91D7399"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel10PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay7SP",
                            "type": "TAG",
                            "id": "AirDelay7SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3C0CCB7A-6392-4668-B095-03B450903D9F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay7SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step2TimeSP",
                            "type": "TAG",
                            "id": "Step2TimeSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3CE02796-3711-400E-87EA-0AE7D3FAB287"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step2TimeSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow1SP",
                            "type": "TAG",
                            "id": "WaterFlow1SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3D8FC076-57B3-46E8-8DDC-55CA58228C8D"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow1SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay2SP",
                            "type": "TAG",
                            "id": "WaterDelay2SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3DBF7A4B-9FA7-45F5-B69A-3AF4F4A646BB"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay2SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration10SP",
                            "type": "TAG",
                            "id": "AirDuration10SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3E28C867-FC8E-41C0-A060-549186244137"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration10SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay11SP",
                            "type": "TAG",
                            "id": "WaterDelay11SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3E36835D-D1B8-4551-93FD-A077094E827A"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay11SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration15SP",
                            "type": "TAG",
                            "id": "AirDuration15SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3EDBDDAF-9707-4687-B250-D4FC846D309C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration15SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel19PV",
                            "type": "TAG",
                            "id": "AirChannel19PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4146B7AA-06C9-452B-A94D-DFF4751719B8"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel19PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "MoldTemp4PV",
                            "type": "TAG",
                            "id": "MoldTemp4PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.43011C4F-90D3-4491-B8AE-04E11C4BD614"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.MoldTemp4PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Mold",
                            "type": "TAG",
                            "id": "Mold",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.458B95A1-5079-4A26-8A3C-3993C423C963"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Mold",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay4SP",
                            "type": "TAG",
                            "id": "WaterDelay4SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.45DEB525-CE9F-4733-8BDC-55F719999E50"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay4SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration18SP",
                            "type": "TAG",
                            "id": "AirDuration18SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.47EFDBA0-517B-4791-ABAD-2526B90B2275"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration18SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterTempPV",
                            "type": "TAG",
                            "id": "WaterTempPV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4813C546-8947-4D42-8B3B-496F71703C4F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterTempPV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow16PV",
                            "type": "TAG",
                            "id": "WaterFlow16PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.495C9AF9-E495-4948-9811-D6457191CE64"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow16PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow4PV",
                            "type": "TAG",
                            "id": "WaterFlow4PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4A28046D-948B-485F-B449-A797A642B603"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow4PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "HFMetalTempSP",
                            "type": "TAG",
                            "id": "HFMetalTempSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4CBEEB37-C07A-43D8-BFC9-C591CC523FFD"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.HFMetalTempSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow15PV",
                            "type": "TAG",
                            "id": "AirFlow15PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4CCBBA4A-40EA-4062-96B3-BE2BE59AD4D6"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow15PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow16SP",
                            "type": "TAG",
                            "id": "AirFlow16SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4D6C1FB5-EBB9-41C3-828C-D90F267B8491"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow16SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration8SP",
                            "type": "TAG",
                            "id": "WaterDuration8SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4E4CDE8D-2879-41B2-ACFB-945B2E151B7F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration8SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay19SP",
                            "type": "TAG",
                            "id": "AirDelay19SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4F1E2CE9-7317-4114-9CFF-8E52B81ACF50"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay19SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step5TimeSP",
                            "type": "TAG",
                            "id": "Step5TimeSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.55F4925D-82CA-4800-BEA8-0A3449726D1C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step5TimeSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow11PV",
                            "type": "TAG",
                            "id": "AirFlow11PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5603E3A3-502F-491B-BA10-EC2E45042136"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow11PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay14SP",
                            "type": "TAG",
                            "id": "WaterDelay14SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.586B583A-C111-475D-B13D-EA27228007F6"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay14SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration6SP",
                            "type": "TAG",
                            "id": "WaterDuration6SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.58B3CD67-57D2-4D9E-9B7E-8FB4D5E95154"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration6SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow8PV",
                            "type": "TAG",
                            "id": "WaterFlow8PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5980A582-E5A5-4B8D-8FAA-797170FCB053"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow8PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow6SP",
                            "type": "TAG",
                            "id": "WaterFlow6SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5A77DBE1-0446-48FA-8552-EB8617B5D7E9"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow6SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay15SP",
                            "type": "TAG",
                            "id": "AirDelay15SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5BDDD1EB-6D2C-407E-B8DA-E7AC6A2B25CE"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay15SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step7TimeSP",
                            "type": "TAG",
                            "id": "Step7TimeSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5DFA21D6-FC78-4DC9-9E9A-FA73D9551EA0"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step7TimeSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration13SP",
                            "type": "TAG",
                            "id": "WaterDuration13SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5E8D6D28-A577-48EF-9059-C9B5A0AF7D27"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration13SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration5SP",
                            "type": "TAG",
                            "id": "WaterDuration5SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.6088D0F0-66FE-4A71-A1A1-BE15229285A7"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration5SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel3PV",
                            "type": "TAG",
                            "id": "AirChannel3PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.61073BD5-4D06-4588-85D9-B9EABFC58FD9"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel3PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow14SP",
                            "type": "TAG",
                            "id": "AirFlow14SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.611A1DEA-DA2C-4337-8D62-CC4D3D49D4DF"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow14SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step6PressureSP",
                            "type": "TAG",
                            "id": "Step6PressureSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.617E1B9D-F11D-4D8B-9CC7-6D51BD8899E4"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step6PressureSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration24SP",
                            "type": "TAG",
                            "id": "AirDuration24SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.65E499B4-56F5-43AE-8133-320DD1AB66F0"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration24SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay2SP",
                            "type": "TAG",
                            "id": "AirDelay2SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.67B86F3A-518A-4F5B-9858-AABB9D5A2E07"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay2SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "PartId2",
                            "type": "TAG",
                            "id": "PartId2",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.684E0337-2981-429A-AE1B-F8C281FC1B4B"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.PartId2",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "PressurisationPV",
                            "type": "TAG",
                            "id": "PressurisationPV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.693FD8A3-D186-4D2C-97D3-B2ABFA3BF7BD"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.PressurisationPV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Product",
                            "type": "TAG",
                            "id": "Product",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.6B2DDA4D-F4C7-42FB-8BF6-582914B76719"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Product",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay3SP",
                            "type": "TAG",
                            "id": "WaterDelay3SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.6B59BA54-ADA6-4F9E-BB85-A0BA264A9F60"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay3SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow12PV",
                            "type": "TAG",
                            "id": "AirFlow12PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.6D5EC569-FFD6-4642-9599-BEAC0EDE71B4"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow12PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration11SP",
                            "type": "TAG",
                            "id": "WaterDuration11SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.6D6FBCE3-DA5E-4FB4-BB93-596D7AD3068C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration11SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirTempPV",
                            "type": "TAG",
                            "id": "AirTempPV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.70FFE8BC-D156-4256-9291-A825057EBAFC"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirTempPV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration8SP",
                            "type": "TAG",
                            "id": "AirDuration8SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.72011829-8CC7-4A56-BC8D-A71A25D5EE65"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration8SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow24PV",
                            "type": "TAG",
                            "id": "AirFlow24PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.753BBAEF-FFB3-4A72-B6C6-35E6BE8F06C4"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow24PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel4PV",
                            "type": "TAG",
                            "id": "AirChannel4PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.75A6A198-ACBF-45E2-A09E-3E4CFB9A1807"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel4PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay16SP",
                            "type": "TAG",
                            "id": "AirDelay16SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.772AB7FD-900E-4209-B36E-48324BA02C5B"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay16SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay3SP",
                            "type": "TAG",
                            "id": "AirDelay3SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.77C7B31A-9F21-4345-9589-0DA26AD2032E"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay3SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration6SP",
                            "type": "TAG",
                            "id": "AirDuration6SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.782D14D8-EFBB-49E6-A047-7E47F8E456F3"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration6SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration20SP",
                            "type": "TAG",
                            "id": "AirDuration20SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7A4FA8A3-C52A-42C3-9282-01A06BDA881C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration20SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow14PV",
                            "type": "TAG",
                            "id": "WaterFlow14PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7A62E47A-F2B7-4906-859E-33B7E88D998E"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow14PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay14SP",
                            "type": "TAG",
                            "id": "AirDelay14SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7A7F95C4-44FD-46E2-81A5-D03BD1EA79BA"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay14SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow2PV",
                            "type": "TAG",
                            "id": "AirFlow2PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7ACF6C69-8B83-48F6-9EBF-71C62D72B39C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow2PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "PartId1",
                            "type": "TAG",
                            "id": "PartId1",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7C086C70-E2FF-4418-A77B-292E1132A166"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.PartId1",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step2PressureSP",
                            "type": "TAG",
                            "id": "Step2PressureSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7E3544DE-E813-4688-B9A5-97C0CDF51709"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step2PressureSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay8SP",
                            "type": "TAG",
                            "id": "AirDelay8SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7E778672-79FB-48F6-902C-18D237CE819F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay8SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow24SP",
                            "type": "TAG",
                            "id": "AirFlow24SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7F16DDB2-62FB-49BD-96FF-259F46C7EAE6"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow24SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "MoldTemp2PV",
                            "type": "TAG",
                            "id": "MoldTemp2PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.80B8C0D9-D61A-4B52-9493-A85DD794CDE2"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.MoldTemp2PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow19SP",
                            "type": "TAG",
                            "id": "AirFlow19SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8179CF1A-8D84-4AEB-946C-3903BBC48389"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow19SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow22SP",
                            "type": "TAG",
                            "id": "AirFlow22SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.823D577D-B4FE-44E0-AC07-D5506FFDA025"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow22SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration4SP",
                            "type": "TAG",
                            "id": "AirDuration4SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.82693835-30E8-42EF-9F1A-3BB649B5F738"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration4SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow14SP",
                            "type": "TAG",
                            "id": "WaterFlow14SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.826DFC1E-3C4E-401D-BBDD-F4834D0B398F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow14SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow4SP",
                            "type": "TAG",
                            "id": "WaterFlow4SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.829BAA07-6F60-4711-9E72-ED3608EC6F69"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow4SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay1SP",
                            "type": "TAG",
                            "id": "WaterDelay1SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.83FFCB83-32F2-42B0-8720-660E73F4A346"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay1SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow20SP",
                            "type": "TAG",
                            "id": "AirFlow20SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.84BF47D7-9DBD-415B-808E-98A010D9A2E2"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow20SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay8SP",
                            "type": "TAG",
                            "id": "WaterDelay8SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8562F827-6E1E-43DD-A58A-D6AC13EA21BF"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay8SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "NormalCycle",
                            "type": "TAG",
                            "id": "NormalCycle",
                            "node_source": "import",
                            "data": {
                                "dataType": "bool",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.85D5E4F4-DE3B-4CD0-AE51-62A17F441BF7"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.NormalCycle",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow18PV",
                            "type": "TAG",
                            "id": "AirFlow18PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.86A215A6-6665-4F4C-9076-A6955822D16F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow18PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay24SP",
                            "type": "TAG",
                            "id": "AirDelay24SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.88C85F1E-AA58-4C73-9998-A9D42EBE86DE"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay24SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "HalfCycle3",
                            "type": "TAG",
                            "id": "HalfCycle3",
                            "node_source": "import",
                            "data": {
                                "dataType": "bool",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8925F28D-53B3-42BB-B3A8-FA8B33618D39"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.HalfCycle3",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "HoldingTimeSP",
                            "type": "TAG",
                            "id": "HoldingTimeSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8B4A2274-D4E3-463E-BBD0-36B1603CD295"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.HoldingTimeSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay9SP",
                            "type": "TAG",
                            "id": "WaterDelay9SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8BD09C94-C269-4A8B-B34F-5CB8E317178D"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay9SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration16SP",
                            "type": "TAG",
                            "id": "AirDuration16SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8BD353FE-B6A4-4C20-A828-B569C68FAB1C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration16SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow12SP",
                            "type": "TAG",
                            "id": "AirFlow12SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8D405273-0132-42FC-96B0-6FF6D1B4279C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow12SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration1SP",
                            "type": "TAG",
                            "id": "WaterDuration1SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8ED3098F-349E-4B08-A087-6EEB80F29F56"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration1SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration13SP",
                            "type": "TAG",
                            "id": "AirDuration13SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.90A5F721-3B86-4A8A-95C7-D539387C36C5"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration13SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "CatcherSpeedOut",
                            "type": "TAG",
                            "id": "CatcherSpeedOut",
                            "node_source": "import",
                            "data": {
                                "dataType": "bool",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.93A9D9FF-15E6-41B1-A103-1F38DEB2E19E"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.CatcherSpeedOut",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow3SP",
                            "type": "TAG",
                            "id": "WaterFlow3SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.95C40711-9381-4CE2-AE69-8C795AA4E1FD"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow3SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel13PV",
                            "type": "TAG",
                            "id": "AirChannel13PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.97DE4DD2-D0BE-4159-86BE-4FACCDDDB602"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel13PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow7SP",
                            "type": "TAG",
                            "id": "AirFlow7SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.988FAC5F-CAFA-477A-916C-BBA4DBB0AE11"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow7SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration3SP",
                            "type": "TAG",
                            "id": "WaterDuration3SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.99065854-8756-458C-B819-830CF8AAD847"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration3SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration9SP",
                            "type": "TAG",
                            "id": "WaterDuration9SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.99428415-F8B3-4532-B51C-0FCAF2E0B7F7"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration9SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay22SP",
                            "type": "TAG",
                            "id": "AirDelay22SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.9C40696C-3940-46AE-9571-CDBE55DBB897"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay22SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow17PV",
                            "type": "TAG",
                            "id": "AirFlow17PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.9CEF13C7-83B5-42F3-8791-D584E164D060"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow17PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel15PV",
                            "type": "TAG",
                            "id": "AirChannel15PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.9E66BA53-24A3-4C5E-965A-DF620B0CB9AF"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel15PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow12SP",
                            "type": "TAG",
                            "id": "WaterFlow12SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.9FA96094-04F9-4F55-A659-2E189A17A91F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow12SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow15SP",
                            "type": "TAG",
                            "id": "WaterFlow15SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.9FCCB844-4E7D-4CA3-B074-3832A43271CE"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow15SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow8SP",
                            "type": "TAG",
                            "id": "WaterFlow8SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A31733ED-84B6-4110-9653-61A2E5046EF2"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow8SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "MoldTemp3PV",
                            "type": "TAG",
                            "id": "MoldTemp3PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A46AF57B-48F3-49DA-BF68-B19668D04A4F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.MoldTemp3PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow15SP",
                            "type": "TAG",
                            "id": "AirFlow15SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A4A8C0F3-5824-419F-BFD7-40DFE8D0F350"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow15SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel22PV",
                            "type": "TAG",
                            "id": "AirChannel22PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A4E328FA-9832-4D7B-AC03-996BDF32E9B1"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel22PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterChannel15PV",
                            "type": "TAG",
                            "id": "WaterChannel15PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A52DA03B-E852-4699-8910-1245DFC833C0"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterChannel15PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow6SP",
                            "type": "TAG",
                            "id": "AirFlow6SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A5A9C47E-BD7B-4E8E-9403-F23B323BD989"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow6SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step8TimeSP",
                            "type": "TAG",
                            "id": "Step8TimeSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A5F9922A-1026-42EB-BACC-D9429F186EBD"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step8TimeSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow22PV",
                            "type": "TAG",
                            "id": "AirFlow22PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A62FA8B2-BA7A-414B-BEA6-723B0FE07BF0"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow22PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "PartWeightSP",
                            "type": "TAG",
                            "id": "PartWeightSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A8C800D0-9B13-40CD-84B9-817A23AC17B1"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.PartWeightSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay12SP",
                            "type": "TAG",
                            "id": "WaterDelay12SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A9530283-8C7F-4CEB-A60A-D376EFADC8C4"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay12SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay17SP",
                            "type": "TAG",
                            "id": "AirDelay17SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.AA0609EF-6E31-4EDA-959A-79AED0582B69"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay17SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration7SP",
                            "type": "TAG",
                            "id": "WaterDuration7SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.AB25B043-2561-4D11-B6D4-3DA86140F967"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration7SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay5SP",
                            "type": "TAG",
                            "id": "WaterDelay5SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.AC3DCCF4-B843-40DE-8A1B-4FDAFF6FFBB5"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay5SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow2SP",
                            "type": "TAG",
                            "id": "WaterFlow2SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.AD17B4A5-7CE3-4FB7-A4CA-2570C16A2011"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow2SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow10PV",
                            "type": "TAG",
                            "id": "AirFlow10PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B02A9EC4-E4EA-493F-BC82-9258A1AEB548"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow10PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step3TimeSP",
                            "type": "TAG",
                            "id": "Step3TimeSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B2F0EE2A-AE46-4EBA-A510-C990CFB3C3FC"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step3TimeSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow23PV",
                            "type": "TAG",
                            "id": "AirFlow23PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B3619189-9417-46A6-9A7D-5ACC63837C88"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow23PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow7PV",
                            "type": "TAG",
                            "id": "AirFlow7PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B4A8620F-C4A6-4C9F-A0F0-E079C39D5BF2"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow7PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow9SP",
                            "type": "TAG",
                            "id": "WaterFlow9SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B7B06973-CCB7-4314-A400-C2786F8EEB10"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow9SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration21SP",
                            "type": "TAG",
                            "id": "AirDuration21SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B8CDF42B-8B6F-4646-92A4-52E4417A7A10"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration21SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow5SP",
                            "type": "TAG",
                            "id": "AirFlow5SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.BB156F9D-04F8-4B5B-B731-7600739DDEAC"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow5SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow9PV",
                            "type": "TAG",
                            "id": "AirFlow9PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.BD468C80-C257-4D1F-8C06-29ACE23FE7DC"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow9PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel21PV",
                            "type": "TAG",
                            "id": "AirChannel21PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C030A692-C00F-4A02-B4AA-1FEAC7E5DA1A"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel21PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "DieClose",
                            "type": "TAG",
                            "id": "DieClose",
                            "node_source": "import",
                            "data": {
                                "dataType": "bool",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C1816CDF-B574-4881-8421-0FFED125DC1A"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.DieClose",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay6SP",
                            "type": "TAG",
                            "id": "AirDelay6SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C309619E-7B7D-4AB4-B71E-66C535FF56C0"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay6SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay20SP",
                            "type": "TAG",
                            "id": "AirDelay20SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C3C09DC0-B9F1-40CC-95BD-EF334EC766B8"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay20SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow9SP",
                            "type": "TAG",
                            "id": "AirFlow9SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C5E2FBC0-F33B-48DD-AF87-46B784C328C9"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow9SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterChannel11PV",
                            "type": "TAG",
                            "id": "WaterChannel11PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C80B1464-5737-49A6-9381-F78A249CDA14"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterChannel11PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay5SP",
                            "type": "TAG",
                            "id": "AirDelay5SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C82A4F43-1258-4CE1-B1F7-94180FA478ED"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay5SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow5PV",
                            "type": "TAG",
                            "id": "WaterFlow5PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C967C859-D305-421A-AFF5-7C93F1A66790"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow5PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow10SP",
                            "type": "TAG",
                            "id": "WaterFlow10SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C96C2752-CDC2-487D-A1A3-606B10A5539A"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow10SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel20PV",
                            "type": "TAG",
                            "id": "AirChannel20PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C98EB2DA-32B1-4B0F-B792-CE3BB39DBB9B"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel20PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration12SP",
                            "type": "TAG",
                            "id": "AirDuration12SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CA132DD6-2067-4829-8A7C-17842E9A1B51"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration12SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel17PV",
                            "type": "TAG",
                            "id": "AirChannel17PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CA6DEB17-9C5B-4E66-9B8F-63D96306B359"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel17PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration17SP",
                            "type": "TAG",
                            "id": "AirDuration17SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CAAA6CBA-27B6-430E-B77C-AE04F5258CC8"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration17SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow5PV",
                            "type": "TAG",
                            "id": "AirFlow5PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CAAD3E6B-3328-4FDE-99A4-9445A397598D"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow5PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay21SP",
                            "type": "TAG",
                            "id": "AirDelay21SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CEA6A376-6D3F-4F67-8B1B-C6DF73509BAF"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay21SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow2PV",
                            "type": "TAG",
                            "id": "WaterFlow2PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CF5CB0A3-0F27-4BB2-82F7-B5A5CE37AE69"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow2PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel9PV",
                            "type": "TAG",
                            "id": "AirChannel9PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D002C41C-5FA8-4F95-B5EF-14C675C12B27"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel9PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration5SP",
                            "type": "TAG",
                            "id": "AirDuration5SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D00F2440-EFDA-4162-8E7F-5479AB380D7F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration5SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterChannel16PV",
                            "type": "TAG",
                            "id": "WaterChannel16PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D114FFB2-FBB3-4533-8864-1EDA1AB6ED8C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterChannel16PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration3SP",
                            "type": "TAG",
                            "id": "AirDuration3SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D23E4621-00ED-4ECE-A557-471663543807"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration3SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step4PressureSP",
                            "type": "TAG",
                            "id": "Step4PressureSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D3AECF25-D405-4F3A-9DF1-D31D365C79B5"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step4PressureSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow10SP",
                            "type": "TAG",
                            "id": "AirFlow10SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D3BCD35A-3A92-4224-B80C-C2A5059D9DCC"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow10SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "MoldTempSP",
                            "type": "TAG",
                            "id": "MoldTempSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D538C95E-569D-4591-9C3C-6297B0F8B4DD"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.MoldTempSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel12PV",
                            "type": "TAG",
                            "id": "AirChannel12PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D78378B6-40CB-49F9-834E-182C45C353C8"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel12PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay6SP",
                            "type": "TAG",
                            "id": "WaterDelay6SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DAA82093-385B-45F4-83F1-E61795423426"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay6SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirPressurePV",
                            "type": "TAG",
                            "id": "AirPressurePV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DAB98F8D-8A1F-44AD-962C-6BDA4AD09AE0"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirPressurePV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step4TimeSP",
                            "type": "TAG",
                            "id": "Step4TimeSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DC7C05E1-5BA0-4FA3-8A6F-CD3987C85F6F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step4TimeSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration23SP",
                            "type": "TAG",
                            "id": "AirDuration23SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DCBF1103-2F1F-4FDB-809F-89F6B247E804"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration23SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay7SP",
                            "type": "TAG",
                            "id": "WaterDelay7SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DD2D8CD1-EE9C-4339-8901-3E620E8E3B44"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay7SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step8PressureSP",
                            "type": "TAG",
                            "id": "Step8PressureSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DF0DD4C5-EE23-4996-97AC-874A38DD6225"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step8PressureSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow7PV",
                            "type": "TAG",
                            "id": "WaterFlow7PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E04CE55E-2012-4F2F-B790-5C7C8051350E"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow7PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterChannel14PV",
                            "type": "TAG",
                            "id": "WaterChannel14PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E0787392-4F33-4FB6-9993-C95F0E5C840F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterChannel14PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step3PressureSP",
                            "type": "TAG",
                            "id": "Step3PressureSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E1572296-76A2-4051-9AA1-C40B7820698C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step3PressureSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterChannel13PV",
                            "type": "TAG",
                            "id": "WaterChannel13PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E31C9AF4-BF1E-4125-A8EF-4795F815DD29"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterChannel13PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step6TimeSP",
                            "type": "TAG",
                            "id": "Step6TimeSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E32CAC30-CF64-42B9-B06B-36241887BB67"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step6TimeSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration16SP",
                            "type": "TAG",
                            "id": "WaterDuration16SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E35E01B9-7AC6-418D-ABE6-8401951F2285"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration16SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay13SP",
                            "type": "TAG",
                            "id": "AirDelay13SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E6F0988E-BEA9-474B-9EAC-014696F62FBE"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay13SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration14SP",
                            "type": "TAG",
                            "id": "WaterDuration14SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E72F80AF-01CD-4F1A-A5B4-3D8F8D1CF738"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration14SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow13SP",
                            "type": "TAG",
                            "id": "AirFlow13SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E7DAAD1E-D54F-4EB7-9936-0A37C0560109"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow13SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow3PV",
                            "type": "TAG",
                            "id": "WaterFlow3PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E8034707-FBEE-4AEE-880F-838271FD83DF"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow3PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow21SP",
                            "type": "TAG",
                            "id": "AirFlow21SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E99351F2-13F6-47C6-87C8-6A1BB75DD58E"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow21SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel14PV",
                            "type": "TAG",
                            "id": "AirChannel14PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.EB35803F-E727-4608-ABF7-43BEC104DDFE"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel14PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "Step1TimeSP",
                            "type": "TAG",
                            "id": "Step1TimeSP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.EB773C85-095E-4BBB-AD60-54645275D32C"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.Step1TimeSP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel23PV",
                            "type": "TAG",
                            "id": "AirChannel23PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.EC2034AD-36DC-4EFA-B541-A237B0049A29"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel23PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "RamSpeedDown",
                            "type": "TAG",
                            "id": "RamSpeedDown",
                            "node_source": "import",
                            "data": {
                                "dataType": "bool",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.ECBEE0DF-FEC8-459D-AFE9-7F2AB5EEDF30"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.RamSpeedDown",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay11SP",
                            "type": "TAG",
                            "id": "AirDelay11SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.EFFDA90B-2702-4D61-897C-752AB8E06214"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay11SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay4SP",
                            "type": "TAG",
                            "id": "AirDelay4SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F1088E8E-857E-4BE6-B06C-1927A7C797ED"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay4SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow14PV",
                            "type": "TAG",
                            "id": "AirFlow14PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F2781CA8-1650-48E0-A30E-3DF888FEAB25"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow14PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay15SP",
                            "type": "TAG",
                            "id": "WaterDelay15SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F371E13D-B253-41D1-8AEB-562BC0C9AB00"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay15SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow16SP",
                            "type": "TAG",
                            "id": "WaterFlow16SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F416870F-AC5B-4037-95DF-055C9226CDEB"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow16SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow11SP",
                            "type": "TAG",
                            "id": "WaterFlow11SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F5F04E37-4E04-4D1E-866F-A08D448EAA31"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow11SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDelay10SP",
                            "type": "TAG",
                            "id": "WaterDelay10SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F81A3607-161C-4878-A837-E23A577A1892"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDelay10SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirChannel6PV",
                            "type": "TAG",
                            "id": "AirChannel6PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F81C8C33-F8F9-490F-812F-DAE1B19A9E10"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirChannel6PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration2SP",
                            "type": "TAG",
                            "id": "WaterDuration2SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F85E5877-A90E-4180-BB27-577493D5C401"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration2SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow15PV",
                            "type": "TAG",
                            "id": "WaterFlow15PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F862300A-63F4-43AF-B857-DC1A8F2B2391"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow15PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterDuration10SP",
                            "type": "TAG",
                            "id": "WaterDuration10SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F8F814E5-438A-4CC0-B678-2F49A2EE3A3F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterDuration10SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "WaterFlow12PV",
                            "type": "TAG",
                            "id": "WaterFlow12PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F94700D2-EEDE-478C-85B4-2FADD12F3384"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.WaterFlow12PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration22SP",
                            "type": "TAG",
                            "id": "AirDuration22SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FB31AAB2-54F5-41ED-836E-D32C03136A5F"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration22SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow6PV",
                            "type": "TAG",
                            "id": "AirFlow6PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FB9F1277-B0D2-4377-96D7-C6AE550938A0"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow6PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDuration2SP",
                            "type": "TAG",
                            "id": "AirDuration2SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FBBF571B-16A2-40D1-818D-74ABE0B9FDD1"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDuration2SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "HalfCycle2",
                            "type": "TAG",
                            "id": "HalfCycle2",
                            "node_source": "import",
                            "data": {
                                "dataType": "bool",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FBE1A6FD-9D94-4BEB-968A-73F8BF9F520B"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.HalfCycle2",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow8PV",
                            "type": "TAG",
                            "id": "AirFlow8PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FBEA9C28-6F8C-46BD-93E1-E76D2C7C0911"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow8PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirDelay18SP",
                            "type": "TAG",
                            "id": "AirDelay18SP",
                            "node_source": "import",
                            "data": {
                                "dataType": "string",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FCF20558-5E63-4AD2-8883-2F4BC05820AD"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirDelay18SP",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "AirFlow21PV",
                            "type": "TAG",
                            "id": "AirFlow21PV",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FD47CC85-6139-4FD3-AAF1-4ABAF29BBA61"
                            },
                            "worker_node_id": "EdgeDevice.Simulator2.AirFlow21PV",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        }
                    ]
                },
                {
                    "name": "ClassificationSimulator",
                    "type": "DEVICE",
                    "id": "ClassificationSimulator",
                    "node_source": "import",
                    "data": null,
                    "worker_node_id": "EdgeDevice.ClassificationSimulator",
                    "worker_node_id_mode": "hierarchical",
                    "children": [
                        {
                            "name": "motionTopic8",
                            "type": "TAG",
                            "id": "motionTopic8",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.ClassificationSimulator.motionTopic8"
                            },
                            "worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic8",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "motionTopic1",
                            "type": "TAG",
                            "id": "motionTopic1",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.ClassificationSimulator.motionTopic1"
                            },
                            "worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic1",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "motionTopic6",
                            "type": "TAG",
                            "id": "motionTopic6",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.ClassificationSimulator.motionTopic6"
                            },
                            "worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic6",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "motionTopic5",
                            "type": "TAG",
                            "id": "motionTopic5",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.ClassificationSimulator.motionTopic5"
                            },
                            "worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic5",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "motionTopic0",
                            "type": "TAG",
                            "id": "motionTopic0",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.ClassificationSimulator.motionTopic0"
                            },
                            "worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic0",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "motionTopic2",
                            "type": "TAG",
                            "id": "motionTopic2",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.ClassificationSimulator.motionTopic2"
                            },
                            "worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic2",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "motionTopic3",
                            "type": "TAG",
                            "id": "motionTopic3",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.ClassificationSimulator.motionTopic3"
                            },
                            "worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic3",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "motionTopic4",
                            "type": "TAG",
                            "id": "motionTopic4",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.ClassificationSimulator.motionTopic4"
                            },
                            "worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic4",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        }
                    ]
                },
                {
                    "name": "Boiler",
                    "type": "DEVICE",
                    "id": "Boiler",
                    "node_source": "import",
                    "data": null,
                    "worker_node_id": "EdgeDevice.Boiler",
                    "worker_node_id_mode": "hierarchical",
                    "children": null
                },
                {
                    "name": "sim1",
                    "type": "DEVICE",
                    "id": "sim1",
                    "node_source": "import",
                    "data": null,
                    "worker_node_id": "EdgeDevice.sim1",
                    "worker_node_id_mode": "hierarchical",
                    "children": [
                        {
                            "name": "sine1",
                            "type": "TAG",
                            "id": "sine1",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.sim1.sine1"
                            },
                            "worker_node_id": "EdgeDevice.sim1.sine1",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        },
                        {
                            "name": "sine2",
                            "type": "TAG",
                            "id": "sine2",
                            "node_source": "import",
                            "data": {
                                "dataType": "double",
                                "topic": "devicehub.alias.sim1.sine2"
                            },
                            "worker_node_id": "EdgeDevice.sim1.sine2",
                            "worker_node_id_mode": "hierarchical",
                            "children": []
                        }
                    ]
                },
                {
                    "name": "newest_device",
                    "type": "DEVICE",
                    "id": "newest_device",
                    "node_source": "import",
                    "data": null,
                    "worker_node_id": "EdgeDevice.newest device",
                    "worker_node_id_mode": "hierarchical",
                    "children": null
                }
            ]
        }
    }
}

Import Topics

POST {{edgeUrl}}/opcua/v2

Updated in 4.2.x. ImportTopicsResponse gained TruncatedDevices: [String!], naming the devices whose tag list was cut short by a server-side limit.

A non-empty TruncatedDevices means the import is incomplete for those devices even though the call succeeded. Select the field to detect it; queries that omit it behave as in 4.1.x.

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

Variables

{
  "input": {
    "DeviceHub": [
      {
        "ParentID": "{{devicehub_parent_uuid}}",
        "ChildIDs": [
          "{{devicehub_tag_uuid_1}}",
          "{{devicehub_tag_uuid_2}}"
        ]
      }
    ],
    "DigitalTwins": [],
    "Analytics": [],
    "SelectedNodeID": "{{opc_target_folder_node_id}}"
  }
}

Update Node by Ref

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Update a node addressed by NodeRef instead of by ID.

Set Update.ExpectedVersion to the Version you last read to get optimistic concurrency: the call is rejected with VERSION_CONFLICT if another client changed the node in the meantime. Omit it to force the write.

originId is an arbitrary caller-supplied string echoed back on the matching SubscribeTreeChanged event, so a client can recognise and skip its own changes.

Request Body

GraphQL Query

mutation UpdateNodeByRef($input: UpdateNodeByRefRequest!, $originId: String) {
    UpdateNodeByRef(input: $input, originId: $originId)
}

Variables

{
  "input": {
    "Ref": {
      "ID": "{{opc_node_id}}",
      "ParentID": "{{opc_parent_id}}"
    },
    "Update": {
      "ParentID": "{{opc_parent_id}}",
      "Name": "apiTag",
      "NodeType": "TAG",
      "Data": {
        "TopicName": "devicehub.topic",
        "DataType": "float"
      },
      "WorkerNodeIDMode": "hierarchical",
      "AccessControl": "ReadWrite",
      "ExpectedVersion": "{{opc_node_version}}"
    }
  },
  "originId": "{{opc_origin_id}}"
}

Delete Node by Ref

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Delete a node addressed by NodeRef.

expectedVersion guards against deleting a node someone else has since modified. Omit it to delete unconditionally.

Request Body

GraphQL Query

mutation DeleteNodeByRef($input: NodeRef!, $expectedVersion: ID, $originId: String) {
    DeleteNodeByRef(input: $input, expectedVersion: $expectedVersion, originId: $originId)
}

Variables

{
  "input": {
    "ID": "{{opc_node_id}}",
    "ParentID": "{{opc_parent_id}}"
  },
  "expectedVersion": "{{opc_node_version}}",
  "originId": "{{opc_origin_id}}"
}

Get Service Configuration

POST {{edgeUrl}}/opcua/v2

Get Service Configuration

Returns the OPC UA server's bind configuration: the host interface, the port, and the NodeUnderRoot flag controlling address-space layout.

Endpoint

Endpoint

POST {{edgeUrl}}/opcua/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 GetServiceConfig {
  GetServiceConfig {
    Host
    NodeUnderRoot
    Port
  }
}

No arguments.

Response

200 OK -- application/json

Field Type Description
data.GetServiceConfig.Host string Bind address. 0.0.0.0 listens on every interface; otherwise an interface IP.
data.GetServiceConfig.NodeUnderRoot boolean If true, nodes are exposed under the server's standard root; if false, in a custom namespace.
data.GetServiceConfig.Port integer OPC UA TCP port. Standard is 4840.
{
  "data": {
    "GetServiceConfig": {
      "Host": "0.0.0.0",
      "NodeUnderRoot": true,
      "Port": 4840
    }
  }
}

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 GetServiceConfig {
    GetServiceConfig {
        Host
        NodeUnderRoot
        Port
    }
}

Response

Status: 200 OK

{
    "data": {
        "GetServiceConfig": {
            "Host": "0.0.0.0",
            "NodeUnderRoot": true,
            "Port": 4840
        }
    }
}

Change Service Configuration

POST {{edgeUrl}}/opcua/v2

Change Service Configuration

Updates the OPC UA server's bind configuration. The new settings take effect after the next Stop OPC UA Service / Start OPC UA Service cycle -- the running listener is not reconfigured live.

Endpoint

POST {{edgeUrl}}/opcua/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 SetServiceConfig($input: ServiceConfigRequest!) {
  SetServiceConfig(input: $input)
}

Variables

Field Type Required Description
Host String! Yes New bind address. Use 0.0.0.0 to listen on every interface, or a specific IP.
Port Int! Yes TCP port (typical: 4840). Conflicts cause Start OPC UA Service to fail.
NodeUnderRoot Boolean! Yes Address-space layout flag (see Get Service Configuration).
{
  "input": {
    "Host": "10.30.50.1",
    "Port": 4840,
    "NodeUnderRoot": true
  }
}

Response

200 OK -- application/json. No data returned on success.

{ "data": { "SetServiceConfig": null } }

Remember to restart the service for the change to apply.

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

Variables

{
    "input": {
        "NodeUnderRoot": true,
        "Host": "10.30.50.1",
        "Port": 4840
    }
}

Response

Status: 200 OK

{
    "data": {
        "SetServiceConfig": null
    }
}

Start OPC UA Service

POST {{edgeUrl}}/opcua/v2

Start OPC UA Service

Starts the OPC UA server listener. The server binds to Host:Port from Get Service Configuration and begins accepting external OPC UA clients. Idempotent for already-running servers.

Endpoint

POST {{edgeUrl}}/opcua/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 ServiceStart {
  ServiceStart
}

No arguments.

Response

200 OK -- application/json. No data returned on success.

{ "data": { "ServiceStart": null } }

A successful return does not guarantee the server is reachable -- it means the start was accepted. Confirm by calling Connections > Get Server Metrics after a brief moment.

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

Response

Status: 200 OK

{
    "data": {
        "ServiceStart": null
    }
}

Stop OPC UA Service

POST {{edgeUrl}}/opcua/v2

Stop OPC UA Service

Stops the OPC UA server listener. External clients are disconnected gracefully; existing sessions terminate. The hierarchy is preserved in storage; restart with Start OPC UA Service.

Endpoint

POST {{edgeUrl}}/opcua/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 ServiceStop {
  ServiceStop
}

No arguments.

Response

200 OK -- application/json. No data returned on success.

{ "data": { "ServiceStop": 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 ServiceStop {
    ServiceStop
}

Response

Status: 200 OK

{
    "data": {
        "ServiceStop": null
    }
}

Get Security and Authentication Settings

POST {{edgeUrl}}/opcua/v2

Get Security and Authentication Settings

Returns the OPC UA server's enabled security modes, security policies, and authentication modes -- the surface external clients negotiate against when connecting.

Endpoint

POST {{edgeUrl}}/opcua/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 GetConnectionSettings {
  GetConnectionSettings {
    EnabledSecurityModes
    EnabledSecurityPolicies
    EnabledAuthModes
  }
}

No arguments.

Response

200 OK -- application/json

Field Type Description
data.GetConnectionSettings.EnabledSecurityModes string[] OPC UA security modes enabled: None, Sign, SignAndEncrypt.
data.GetConnectionSettings.EnabledSecurityPolicies string[] OPC UA security policies enabled: Basic128Rsa15, Basic256, Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss.
data.GetConnectionSettings.EnabledAuthModes string[] OPC UA user-auth modes: Anonymous, Password, Certificate.
{
  "data": {
    "GetConnectionSettings": {
      "EnabledSecurityModes": ["SignAndEncrypt", "Sign", "None"],
      "EnabledSecurityPolicies": [
        "Basic256Sha256",
        "Aes256_Sha256_RsaPss",
        "Basic128Rsa15",
        "Aes128_Sha256_RsaOaep",
        "Basic256"
      ],
      "EnabledAuthModes": ["Certificate", "Password", "Anonymous"]
    }
  }
}

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 GetConnectionSettings {
    GetConnectionSettings {
        EnabledSecurityModes
        EnabledSecurityPolicies
        EnabledAuthModes
    }
}

Response

Status: 200 OK

{
    "data": {
        "GetConnectionSettings": {
            "EnabledSecurityModes": [
                "SignAndEncrypt",
                "Sign",
                "None"
            ],
            "EnabledSecurityPolicies": [
                "Basic256Sha256",
                "Aes256_Sha256_RsaPss",
                "Basic128Rsa15",
                "Aes128_Sha256_RsaOaep",
                "Basic256"
            ],
            "EnabledAuthModes": [
                "Certificate",
                "Password",
                "Anonymous"
            ]
        }
    }
}

Change Security and Authentication Settings

POST {{edgeUrl}}/opcua/v2

Change Security and Authentication Settings

Updates the OPC UA server's enabled security modes, policies, and auth modes. Takes effect on the next start/restart.

Endpoint

POST {{edgeUrl}}/opcua/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 UpdateConnectionSettings($input: UpdateConnectionSettingsRequest!) {
  UpdateConnectionSettings(input: $input)
}

Variables

Field Type Required Description
EnabledSecurityModes [String!]! Yes Subset of None, Sign, SignAndEncrypt.
EnabledSecurityPolicies [String!]! Yes Subset of Basic128Rsa15, Basic256, Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss.
EnabledAuthModes [String!]! Yes Subset of Anonymous, Password, Certificate.
{
  "input": {
    "EnabledSecurityModes": ["None", "Sign", "SignAndEncrypt"],
    "EnabledSecurityPolicies": [
      "Basic256Sha256",
      "Basic256",
      "Basic128Rsa15",
      "Aes128_Sha256_RsaOaep",
      "Aes256_Sha256_RsaPss"
    ],
    "EnabledAuthModes": ["Anonymous", "Password", "Certificate"]
  }
}

Response

200 OK -- application/json. No data returned on success.

{ "data": { "UpdateConnectionSettings": 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.

Security recommendations

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

Variables

{
    "input": {
        "EnabledSecurityModes": [
            "None",
            "Sign",
            "SignAndEncrypt"
        ],
        "EnabledSecurityPolicies": [
            "Basic256Sha256",
            "Basic256",
            "Basic128Rsa15",
            "Aes128_Sha256_RsaOaep",
            "Aes256_Sha256_RsaPss"
        ],
        "EnabledAuthModes": [
            "Anonymous",
            "Certificate",
            "Password"
        ]
    }
}

Response

Status: 200 OK

{
    "data": {
        "UpdateConnectionSettings": null
    }
}

Download Server Logs

POST {{edgeUrl}}/opcua/v2

Download Server Logs

Returns the OPC UA server's log file as a base64-encoded blob in data.DownloadServerLog. Decode client-side to read the text. Use this for support tickets or local diagnostics.

Endpoint

POST {{edgeUrl}}/opcua/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 DownloadServerLog {
  DownloadServerLog
}

No arguments.

Response

200 OK -- application/json

Field Type Description
data.DownloadServerLog string Base64-encoded log file contents. Decode to recover the plaintext log.
{
  "data": {
    "DownloadServerLog": "WzIwMjQtMDctMzEgMTA6NDE6MTQuMTI5XSBbc2VydmljZV0gW2luZm9d..."
  }
}

To decode (example with Python):

import base64
plain = base64.b64decode(resp["data"]["DownloadServerLog"]).decode("utf-8")

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

Response

Status: 200 OK

{
    "data": {
        "DownloadServerLog": "WzIwMjQtMDctMzEgMTA6NDE6MTQuMTI5XSBbc2VydmljZV0gW2luZm9dIGxvYWRpbmcgY29uZmlndXJhdGlvbgpbMjAyNC0wNy0zMSAxMDo0MToxNC4xOTNdIFtzZXJ2aWNlXSBbaW5mb10gc3RhcnRpbmcgc2VydmVyIHdpdGggY29uZmlnIGZpbGUgL3RtcC9jb25maWdfZmlsZS5pbmkKWzIwMjQtMDctMzEgMTA6NDE6MTQuMjE1XSBbc2VydmljZV0gW2luZm9dIGluaXRpYWxpemUKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBTZXJ2ZXIgb3BlbmVkIGVuZHBvaW50cyBmb3IgZm9sbG93aW5nIFVSTHM6CiAgICAgb3BjLnRjcDovLzEwLjMwLjUwLjE6NDg0MAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKWzIwMjQtMDctMzEgMTA6NDE6MTUuMTg2XSBbc2VydmljZV0gW2luZm9dIHN0YXJ0aW5nIGhlYXJ0YmVhdCBwcm9jZXNzaW5nIGZvciAxMjcuMC4wLjE6OTA5MyBlbmRwb2ludApbMjAyNC0wNy0zMSAxMDo0MToxNi4wOTVdIFtzZXJ2aWNlXSBbaW5mb10gZmluaXNoZWQuClsyMDI0LTA3LTMxIDEwOjQyOjAzLjc3OF0gW3NlcnZpY2VdIFtpbmZvXSBsb2FkaW5nIGNvbmZpZ3VyYXRpb24KWzIwMjQtMDctMzEgMTA6NDI6MDMuODAwXSBbc2VydmljZV0gW2luZm9dIHN0YXJ0aW5nIHNlcnZlciB3aXRoIGNvbmZpZyBmaWxlIC90bXAvY29uZmlnX2ZpbGUuaW5pClsyMDI0LTA3LTMxIDEwOjQyOjAzLjgwMF0gW3NlcnZpY2VdIFtpbmZvXSBpbml0aWFsaXplCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogU2VydmVyIG9wZW5lZCBlbmRwb2ludHMgZm9yIGZvbGxvd2luZyBVUkxzOgogICAgIG9wYy50Y3A6Ly8xMC4zMC41MC4xOjQ4NDAKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqClsyMDI0LTA3LTMxIDEwOjQyOjA0Ljc5OV0gW3NlcnZpY2VdIFtpbmZvXSBzdGFydGluZyBoZWFydGJlYXQgcHJvY2Vzc2luZyBmb3IgMTI3LjAuMC4xOjkwOTMgZW5kcG9pbnQKWzIwMjQtMDctMzEgMTA6NDI6MzkuODQ2XSBbc2VydmljZV0gW2luZm9dIGZpbmlzaGVkLgo="
    }
}

List Users

POST {{edgeUrl}}/opcua/v2

List Users

Returns every OPC UA-level user provisioned on the server. These are the credentials external OPC UA clients use to authenticate when the server is configured with Password auth -- separate from the LE API token.

Endpoint

Endpoint

POST {{edgeUrl}}/opcua/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 ListUsers {
  ListUsers {
    Disabled
    Password
    Username
  }
}

No arguments.

Response

200 OK -- application/json

Field Type Description
data.ListUsers[].Username string User name.
data.ListUsers[].Password string null
data.ListUsers[].Disabled boolean true if the account is disabled.
{
  "data": {
    "ListUsers": [
      { "Disabled": false, "Password": null, "Username": "apiOPCusername" }
    ]
  }
}

Note: user creation is performed via the LE UI's OPC UA admin page rather than a dedicated mutation on this surface. Once created, use Update User to change the disabled flag.

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 ListUsers {
    ListUsers {
        Disabled
        Password
        Username
    }
}

Response

Status: 200 OK

{
    "data": {
        "ListUsers": [
            {
                "Disabled": false,
                "Password": null,
                "Username": "apiOPCusername"
            }
        ]
    }
}

Update User

POST {{edgeUrl}}/opcua/v2

Update User

Updates an OPC UA-level user's state. The exposed fields here are Username (the selector) and Disabled (the enable/disable toggle). Password rotation is handled via the LE UI's OPC UA admin page.

Endpoint

POST {{edgeUrl}}/opcua/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 UpdateUser($input: UserRequest!) {
  UpdateUser(input: $input)
}

Variables

Field Type Required Description
Username String! Yes User to update.
Disabled Boolean! Yes true to disable, false to enable.
{
  "input": {
    "Username": "{{opc_username}}",
    "Disabled": false
  }
}

Response

200 OK -- application/json. No data returned on success.

{ "data": { "UpdateUser": 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 UpdateUser($input: UserRequest!) {
    UpdateUser(input: $input)
}

Variables

{
    "input": {
        "Username": "{{opc_username}}",
        "Disabled": false
    }
}

Response

Status: 200 OK

{
    "data": {
        "UpdateUser": null
    }
}

Delete User

POST {{edgeUrl}}/opcua/v2

Delete User

Deletes an OPC UA-level user. External clients that connect with the deleted credentials will fail on the next session establishment.

Endpoint

POST {{edgeUrl}}/opcua/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 DeleteUser($username: String!) {
  DeleteUser(username: $username)
}

Variables

Field Type Required Description
username String! Yes User name to delete.
{ "username": "{{opc_username}}" }

Response

200 OK -- application/json. No data returned on success.

{ "data": { "DeleteUser": 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 DeleteUser($username: String!) {
    DeleteUser(username: $username)
}

Variables

{
    "username": "{{opc_username}}"
}

Response

Status: 200 OK

{
    "data": {
        "DeleteUser": null
    }
}

Bulk Update Tag Access Control

POST {{edgeUrl}}/opcua/v2

Bulk Update Tag Access Control

New in 4.1.x.

New in 4.1.x. Set the OPC UA AccessControl permission on every tag under a node in one call.

AccessControl: Read | Write | ReadWrite. Scope: DirectChildren | IncludeSubfolders.

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

GraphQL Query

mutation BulkUpdateTagAccessControl($input: BulkUpdateTagAccessControlRequest!) {
    BulkUpdateTagAccessControl(input: $input) {
        UpdatedCount SkippedCount
        Errors { NodeID Message }
    }
}

Variables

{
    "input": {
        "NodeID": "{{opc_node_id}}",
        "AccessControl": "ReadWrite",
        "Scope": "IncludeSubfolders"
    }
}

Get Server Settings

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. All OPC UA server configuration parameters as a flat list.

Section groups related parameters for display. ReadOnly parameters are reported for visibility but are rejected by UpdateServerSettings.

Request Body

GraphQL Query

query GetServerSettings {
    GetServerSettings {
        Parameter
        DisplayName
        Value
        Section
        ReadOnly
    }
}

Update Server Settings

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Set one or more server parameters in a single call. Send only the parameters you want to change; anything omitted is left alone.

Read the available parameter names from GetServerSettings first. Parameters marked ReadOnly cannot be set.

Request Body

GraphQL Query

mutation UpdateServerSettings($input: UpdateServerSettingsRequest!) {
    UpdateServerSettings(input: $input)
}

Variables

{
  "input": {
    "Settings": [
      {
        "Parameter": "{{opc_setting_parameter}}",
        "Value": "{{opc_setting_value}}"
      }
    ]
  }
}

Create User

POST {{edgeUrl}}/opcua/v2

Create User

Creates a user that OPC UA clients can sign in with (username and password authentication on the OPC UA server). These users are separate from LE platform users. The server generates the password and returns it once, in this response only: List Users reports Password as null afterwards. Store it before you discard the response.

Endpoint

POST {{edgeUrl}}/opcua/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 CreateUser($input: UserRequest!) {
  CreateUser(input: $input) {
    Username
    Disabled
    Password
  }
}

Variables (input: UserRequest!)

Field Type Required Description
Username String! Yes Name the OPC UA client signs in with. Must not be empty.
Disabled Boolean! Yes true creates the user disabled.
{
  "input": {
    "Username": "{{opc_username}}",
    "Disabled": false
  }
}

There is no password field: the password is always generated (12 characters).

Response

200 OK -- application/json. data.CreateUser is the new User, with the generated Password in clear text.

{
  "data": {
    "CreateUser": {
      "Username": "opcclient1",
      "Disabled": false,
      "Password": "<generated>"
    }
  }
}

Calling CreateUser again with an existing Username does not fail: it returns the user with a new generated password, and the old password stops working. Use Update User to enable or disable a user without changing its password.

An empty Username returns username is required.

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 CreateUser($input: UserRequest!) {
    CreateUser(input: $input) {
        Username
        Disabled
        Password
    }
}

Variables

{
    "input": {
        "Username": "{{opc_username}}",
        "Disabled": false
    }
}

Response

Status: 200 OK

{
    "data": {
        "CreateUser": {
            "Username": "apidocs-backfill-opc",
            "Disabled": false,
            "Password": "<generated>"
        }
    }
}

Subscribe Service State

POST {{edgeUrl}}/opcua/v2

Subscribe Service State

Streams the state of the OPC UA server. The first message is the current state, sent as soon as the subscription starts; a new message follows when the state changes, for example after Start OPC UA Service or Stop OPC UA Service. This is what the OPC UA page in the LE UI uses for its running / stopped indicator.

Endpoint

wss://{{edgeHost}}/opcua/v2

WebSocket subscription. Both the graphql-transport-ws and the legacy graphql-ws subprotocols are accepted. Send the API token as Authorization: Basic <base64(token:)> on the upgrade request or in the connection_init payload. A plain HTTP POST does not stream; convert this item to a Postman WebSocket request after import.

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

subscription SubscribeState {
  SubscribeState {
    ServiceState
    ProcessState
  }
}

No variables.

Messages

Each next message carries a State:

Field Type Values
ServiceState ServiceStateEnum OK (enabled) or STOPPED (disabled).
ProcessState ProcStateEnum OK when the server process is running, FAILED otherwise.

A stopped server reports ProcessState: FAILED as well, so read ServiceState first: STOPPED + FAILED is a server that was stopped on purpose, OK + FAILED is a server that should be running but is not.

{
  "id": "1",
  "type": "next",
  "payload": {
    "data": {
      "SubscribeState": {
        "ServiceState": "STOPPED",
        "ProcessState": "FAILED"
      }
    }
  }
}

Errors

A bad token fails the WebSocket upgrade (HTTP 401). Errors after the subscription starts arrive as an error message for the subscription id, with the same errors array GraphQL uses over HTTP.

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 SubscribeState {
    SubscribeState {
        ServiceState
        ProcessState
    }
}

Response

Status: 200 OK

{
    "data": {
        "SubscribeState": {
            "ServiceState": "STOPPED",
            "ProcessState": "FAILED"
        }
    }
}

Subscribe Server Log

POST {{edgeUrl}}/opcua/v2

Subscribe Server Log

Tails the OPC UA server log. The first message carries the log lines the server has already written; each later message carries the lines written since. It is the live counterpart of Download Server Logs, and what the log viewer on the OPC UA page in the LE UI uses.

Endpoint

wss://{{edgeHost}}/opcua/v2

WebSocket subscription. Both the graphql-transport-ws and the legacy graphql-ws subprotocols are accepted. Send the API token as Authorization: Basic <base64(token:)> on the upgrade request or in the connection_init payload. A plain HTTP POST does not stream; convert this item to a Postman WebSocket request after import.

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

subscription AttachServerLog {
  AttachServerLog {
    Lines
  }
}

No variables.

Messages

Each next message carries a LogEvent with Lines: [String!]!. Every entry is one raw log line including its trailing \n, in the form [<timestamp>] [service] [<level>] <message>. Banner lines from the OPC UA stack (for example the list of opened endpoints) have no prefix.

{
  "id": "1",
  "type": "next",
  "payload": {
    "data": {
      "AttachServerLog": {
        "Lines": [
          "[2026-10-09 01:41:05.242] [service] [info] loading configuration\n",
          "[2026-10-09 01:41:05.244] [service] [info] starting server with config file /tmp/config_file.ini\n",
          " Server opened endpoints for following URLs:\n",
          "     opc.tcp://0.0.0.0:4850\n"
        ]
      }
    }
  }
}

If the server has never run since the log was cleared, the subscription stays open without sending anything.

Errors

A bad token fails the WebSocket upgrade (HTTP 401). Errors after the subscription starts arrive as an error message for the subscription id, with the same errors array GraphQL uses over HTTP.

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 AttachServerLog {
    AttachServerLog {
        Lines
    }
}

Response

Status: 200 OK

{
    "data": {
        "AttachServerLog": {
            "Lines": [
                "[2026-10-09 01:41:05.242] [service] [info] loading configuration\n",
                "[2026-10-09 01:41:05.244] [service] [info] starting server with config file /tmp/config_file.ini\n",
                "[2026-10-09 01:41:05.249] [service] [info] initialize\n",
                "***************************************************\n",
                " Server opened endpoints for following URLs:\n",
                "     opc.tcp://0.0.0.0:4850\n",
                "***************************************************\n",
                "[2026-10-09 01:41:05.958] [service] [info] finished.\n"
            ]
        }
    }
}

Get Server Metrics

POST {{edgeUrl}}/opcua/v2

Get Server Metrics

Returns the server's live session counters: how many external OPC UA clients are currently connected, with their session IDs, session names, and client application names.

Use this to confirm an external client has established a session after configuration changes, or to render a "Connected clients" tile.

Endpoint

POST {{edgeUrl}}/opcua/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 GetServerMetrics {
  GetServerMetrics {
    ActiveSessionsCount
    ActiveSessions {
      ID
      Name
      ClientName
    }
  }
}

No arguments.

Response

200 OK -- application/json

Field Type Description
data.GetServerMetrics.ActiveSessionsCount integer Number of currently established sessions.
data.GetServerMetrics.ActiveSessions object[] One entry per active session.
data.GetServerMetrics.ActiveSessions[].ID string Session UUID.
data.GetServerMetrics.ActiveSessions[].Name string Session display name.
data.GetServerMetrics.ActiveSessions[].ClientName string Client-supplied application name (e.g. UaExpert, B&R Automation Studio).
{
  "data": {
    "GetServerMetrics": {
      "ActiveSessionsCount": 0,
      "ActiveSessions": []
    }
  }
}

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 GetServerMetrics {
    GetServerMetrics {
        ActiveSessionsCount
        ActiveSessions {
            ID
            Name
            ClientName
        }
    }
}

Response

Status: 200 OK

{
    "data": {
        "GetServerMetrics": {
            "ActiveSessionsCount": 0,
            "ActiveSessions": []
        }
    }
}

Download Server Certificates

POST {{edgeUrl}}/opcua/v2

Download Server Certificates

Returns the OPC UA server's self-signed server certificate as a base64-encoded DER blob in data.GetServerCertificate. Save this to disk and import it into your OPC UA client's trust store to enable Sign or SignAndEncrypt security modes.

For end-entity certificate trust, also import the issuing CA if required by your client.

Endpoint

POST {{edgeUrl}}/opcua/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 GetServerCertificate {
  GetServerCertificate
}

No arguments.

Response

200 OK -- application/json

Field Type Description
data.GetServerCertificate string Base64-encoded DER certificate. Decode and write to a .der (or convert to PEM) for client trust stores.
{
  "data": {
    "GetServerCertificate": "MIIFrDCCBJSgAwIBAgIE..."
  }
}

Saving the certificate

import base64
with open("server.der", "wb") as f:
    f.write(base64.b64decode(resp["data"]["GetServerCertificate"]))

Convert DER to PEM with openssl x509 -inform der -in server.der -out server.pem.

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

Response

Status: 200 OK

{
    "data": {
        "GetServerCertificate": "MIIFrDCCBJSgAwIBAgIEZqp3OjANBgkqhkiG9w0BAQsFADCBpDEoMCYGCgmSJomT8ixkARkWGGxpdG11cy1lZGdlLTAwNTA1NmI5YWZkMzELMAkGA1UEBhMCVVMxFTATBgNVBAcMDExvY2F0aW9uTmFtZTEVMBMGA1UECgwMT3JnYW5pemF0aW9uMQ0wCwYDVQQLDARVbml0MS4wLAYDVQQDDCVvcGN1YV93b3JrZXJAbGl0bXVzLWVkZ2UtMDA1MDU2YjlhZmQzMB4XDTI0MDczMTE3NDExNFoXDTI5MDczMDE3NDExNFowgaQxKDAmBgoJkiaJk/IsZAEZFhhsaXRtdXMtZWRnZS0wMDUwNTZiOWFmZDMxCzAJBgNVBAYTAlVTMRUwEwYDVQQHDAxMb2NhdGlvbk5hbWUxFTATBgNVBAoMDE9yZ2FuaXphdGlvbjENMAsGA1UECwwEVW5pdDEuMCwGA1UEAwwlb3BjdWFfd29ya2VyQGxpdG11cy1lZGdlLTAwNTA1NmI5YWZkMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALFSV5egpaXXakJHhtNnhPgG9OjiFYygtpVQwnpSnhDjUPl/gk4A0t7u1Jwa39YdMkflmZ6baip9TgSz5391jqzEHsA4d0f0BHF7qH70RoKJA4IugMbVRG20Sq/85/ZV5teL7KfoGpHnNVLMGrpQaPAbeyh3lytIaqsYSSd94+yKA63I16FotoYICH/0glG2Aqx4v3ujEgaSTDvZ+oYcs9qV/5yhurb59XoLCUnT9haMFvFkgADPR52IhLimuNUcT/+oOX51VMawk1aoDT49m2KN6TZBKM0rn9nU7RuGgSQ6Z47s0uCEJdSsdOLQboJRH9tThz5zRPruVPH2KHRLpM0CAwEAAaOCAeIwggHeMBIGA1UdEwEB/wQIMAYBAf8CAQAwUAYJYIZIAYb4QgENBEMWQSJHZW5lcmF0ZWQgd2l0aCBVbmlmaWVkIEF1dG9tYXRpb24gVUEgQmFzZSBMaWJyYXJ5IHVzaW5nIE9wZW5TU0wiMB0GA1UdDgQWBBRsjLQFZ7mfRHgUpigHRAQ3BGG0rDCB1AYDVR0jBIHMMIHJgBRsjLQFZ7mfRHgUpigHRAQ3BGG0rKGBqqSBpzCBpDEoMCYGCgmSJomT8ixkARkWGGxpdG11cy1lZGdlLTAwNTA1NmI5YWZkMzELMAkGA1UEBhMCVVMxFTATBgNVBAcMDExvY2F0aW9uTmFtZTEVMBMGA1UECgwMT3JnYW5pemF0aW9uMQ0wCwYDVQQLDARVbml0MS4wLAYDVQQDDCVvcGN1YV93b3JrZXJAbGl0bXVzLWVkZ2UtMDA1MDU2YjlhZmQzggRmqnc6MA4GA1UdDwEB/wQEAwIC9DAgBgNVHSUBAf8EFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwTgYDVR0RBEcwRYYpdXJuOmxpdG11cy1lZGdlLTAwNTA1NmI5YWZkMzpvcGN1YV93b3JrZXKCGGxpdG11cy1lZGdlLTAwNTA1NmI5YWZkMzANBgkqhkiG9w0BAQsFAAOCAQEAj0BAOyvaa6rMJhRFp1YUPoTa0/NsBJtaIwKJit2gE8ZRf9YW2gkk/FiGohltcDjCn91cBOoi9qQbzbzQsZ2siF3RZOhSSyUQRT3JfLxZ7RZv0ogNiYzL2gtlysBqZGJFoIYTWHqj9NHlmCCovywbcCsv/qXb4CHfTtrGnsig9+eS42xT28oe/ZToQITAQx97R+sUVqJ4RHyHRyENMHhW4GSz0eVnXXrtve1ITVki5CvzdVDCstfPRrMQUoDGNma7DAf6P0xF9A12ai0IfATyTgWaiCfInZEqCOLd0IRZ6dEfeEMbomoTRHf6n02Qqas/Gq50d4seUzVLnHbnJb6sug=="
    }
}

Subscribe Certificate List

POST {{edgeUrl}}/opcua/v2

Subscribe Certificate List

Streams the list of OPC UA client certificates the server knows about: the certificates clients presented when connecting with a signed or encrypted security policy, and whether each one is trusted. The first message is the current list, sent as soon as the subscription starts; a new message carries the whole list again when it changes. This backs the client certificates table on the OPC UA page in the LE UI.

Endpoint

wss://{{edgeHost}}/opcua/v2

WebSocket subscription. Both the graphql-transport-ws and the legacy graphql-ws subprotocols are accepted. Send the API token as Authorization: Basic <base64(token:)> on the upgrade request or in the connection_init payload. A plain HTTP POST does not stream; convert this item to a Postman WebSocket request after import.

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

subscription SubscribeCertificateList {
  SubscribeCertificateList {
    ID
    Trusted
    CAVerified
    Fields
  }
}

No variables.

Messages

Each next message carries [Certificate!], the full list (not a delta):

Field Type Description
ID CertID! Certificate identifier.
Trusted Boolean! true once the certificate has been trusted on the server.
CAVerified Boolean! Whether the certificate was verified against a CA.
Fields Any Certificate details as free-form JSON.

A server that no client has connected to with a certificate sends an empty list:

{
  "id": "1",
  "type": "next",
  "payload": {
    "data": {
      "SubscribeCertificateList": []
    }
  }
}

Errors

A bad token fails the WebSocket upgrade (HTTP 401). Errors after the subscription starts arrive as an error message for the subscription id, with the same errors array GraphQL uses over HTTP.

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 SubscribeCertificateList {
    SubscribeCertificateList {
        ID
        Trusted
        CAVerified
        Fields
    }
}

Response

Status: 200 OK

{
    "data": {
        "SubscribeCertificateList": []
    }
}

Subscribe Server Metrics

POST {{edgeUrl}}/opcua/v2

Subscribe Server Metrics

Present on 4.0.x and 4.1.x; previously undocumented. WebSocket subscription: run over graphql-transport-ws at wss://{{edgeHost}}/opcua/v2; a plain HTTP POST will not stream.

WebSocket subscription. Same shape as GetServerMetrics. Convert to a WS request after import (URL: wss://.../opcua/v2).

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

GraphQL Query

subscription SubscribeServerMetrics {
    SubscribeServerMetrics {
        ActiveSessionsCount
        ActiveSessions { ID Name ClientName }
    }
}

OPC UA Prometheus Metrics

GET {{edgeUrl}}/opcua/metrics

OPC UA Prometheus Metrics

Returns OPC UA server metrics in the Prometheus exposition format, for direct Prometheus scraping. The DeviceHub, DataHub, Analytics and Integration services expose the same kind of endpoint.

Endpoint

GET {{edgeUrl}}/opcua/metrics

Authentication

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

Parameters

None.

Response

200 OK -- text/plain. Standard Prometheus exposition. Every series carries the label name="server", and the # HELP lines are empty, so the table below describes each metric by its name.

Metric Type Description
edge_opcua_worker_up gauge Whether the OPC UA server worker is up (1) or not (0).
edge_opcua_sessions gauge Open client sessions.
edge_opcua_monitored_items gauge Monitored items across all client subscriptions.
edge_opcua_read_requests counter Read requests served.
edge_opcua_read_bytes counter Bytes handled by read requests.
edge_opcua_write_requests counter Write requests served.
edge_opcua_write_bytes counter Bytes handled by write requests.
# HELP edge_opcua_sessions
# TYPE edge_opcua_sessions gauge
edge_opcua_sessions{name="server"} 0
# HELP edge_opcua_worker_up
# TYPE edge_opcua_worker_up gauge
edge_opcua_worker_up{name="server"} 0

Errors

HTTP status When it happens
400 Bad Request Missing or malformed query/body parameter.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Token lacks permission for this operation.
404 Not Found Target entity does not exist.
5xx Service is unreachable, restarting, or internally errored. Inspect device logs under System > Support.

Response

Status: 200 OK

# HELP edge_opcua_monitored_items 
# TYPE edge_opcua_monitored_items gauge
edge_opcua_monitored_items{name="server"} 0
# HELP edge_opcua_read_bytes 
# TYPE edge_opcua_read_bytes counter
edge_opcua_read_bytes{name="server"} 0
# HELP edge_opcua_read_requests 
# TYPE edge_opcua_read_requests counter
edge_opcua_read_requests{name="server"} 0
# HELP edge_opcua_sessions 
# TYPE edge_opcua_sessions gauge
edge_opcua_sessions{name="server"} 0
# HELP edge_opcua_worker_up 
# TYPE edge_opcua_worker_up gauge
edge_opcua_worker_up{name="server"} 0
# HELP edge_opcua_write_bytes 
# TYPE edge_opcua_write_bytes counter
edge_opcua_write_bytes{name="server"} 0
# HELP edge_opcua_write_requests 
# TYPE edge_opcua_write_requests counter
edge_opcua_write_requests{name="server"} 0


Subscribe Tree Changed

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Streams hierarchy changes as they happen, so a UI can update incrementally instead of re-reading the tree.

Type is ADDED | REMOVED | UPDATED. AfterID gives the sibling the node now follows, which is what you need to place it correctly in an ordered list. OriginID echoes the originId passed to the mutation that caused the change, so a client can skip events it caused itself.

Bulk changes do not arrive as per-node events. A staged commit or hierarchy upload surfaces as a jump in the tree version rather than one event per affected node. Detect the gap against GetTreeStateVersion and re-read the affected subtree instead of rebuilding it from the event stream.

WebSocket subscription. Convert to a Postman WebSocket request after import (URL: wss://.../opcua/v2).

Request Body

GraphQL Query

subscription SubscribeTreeChanged {
    SubscribeTreeChanged {
        Type
        NodeID
        ParentID
        Version
        OriginID
        AfterID
        Node { NodeID Name NodeType SyncState Version }
    }
}

Subscribe Node State Changed

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Streams per-node sync state transitions.

State is synced | pending | failed | restart_required. ErrorReason is populated on failed. Use it to show which tags are actually live on the worker rather than merely configured.

WebSocket subscription. Convert to a Postman WebSocket request after import (URL: wss://.../opcua/v2).

Request Body

GraphQL Query

subscription SubscribeNodeStateChanged {
    SubscribeNodeStateChanged {
        NodeID
        WorkerNodeID
        State
        ErrorReason
    }
}

Subscribe Sync Status

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Streams progress of the running sync, the same SyncStatus shape GetSyncStatus returns. Preferable to polling for a long-running sync.

WebSocket subscription. Convert to a Postman WebSocket request after import (URL: wss://.../opcua/v2).

Request Body

GraphQL Query

subscription SubscribeSyncStatus {
    SubscribeSyncStatus {
        SyncID
        State
        TotalCount
        AppliedCount
        FailedCount
        Failures { NodeID ErrorReason }
        StartedAt
        FinishedAt
        AppliedAtNextWorkerStart
        OriginID
    }
}

Get Folder Items (paged)

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Cursor-paged listing of the tag children directly under a node. Folder and device children are not included; use GetChildFolders or GetChildFoldersPage for those.

Page by passing the previous response's NextCursor back as Cursor. HasMore is false on the last page. Limit defaults to 1000.

Prefer this over fetching the whole tree when a hierarchy is large.

Request Body

GraphQL Query

query GetFolderItems($input: GetFolderItemsRequest!) {
    GetFolderItems(input: $input) {
        Items { NodeID ParentID Name NodeType NodeSource
        Path WorkerNodeID WorkerNodeIDMode ArrayLength AccessControl
        Version SyncState SyncFailureReason HasChildren }
        NextCursor
        HasMore
    }
}

Variables

{
  "input": {
    "NodeID": "{{opc_node_id}}",
    "Limit": 1000,
    "Cursor": null
  }
}

Get Child Folders

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. The folder and device children of a node, tags excluded, unpaged. Use it to build a navigation tree without pulling tag nodes.

Still subject to the server child-window cap, so for large folders use GetChildFoldersPage.

For large folders use GetChildFoldersPage instead.

Request Body

GraphQL Query

query GetChildFolders($input: NodeID!) {
    GetChildFolders(input: $input) { NodeID ParentID Name NodeType NodeSource
        Path WorkerNodeID WorkerNodeIDMode ArrayLength AccessControl
        Version SyncState SyncFailureReason HasChildren }
}

Variables

{
  "input": "{{opc_node_id}}"
}

Get Child Folders (paged)

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Cursor-paged form of GetChildFolders. Same paging contract as GetFolderItems: feed NextCursor back as Cursor until HasMore is false.

Request Body

GraphQL Query

query GetChildFoldersPage($input: GetFolderItemsRequest!) {
    GetChildFoldersPage(input: $input) {
        Items { NodeID ParentID Name NodeType NodeSource
        Path WorkerNodeID WorkerNodeIDMode ArrayLength AccessControl
        Version SyncState SyncFailureReason HasChildren }
        NextCursor
        HasMore
    }
}

Variables

{
  "input": {
    "NodeID": "{{opc_node_id}}",
    "Limit": 1000,
    "Cursor": null
  }
}

Get Folder Skeleton

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. A flat, paged list of every folder and device node in the hierarchy, with no tag nodes. Intended for building the whole tree structure up front, then loading each folder's tags on demand with GetFolderItems.

Request Body

GraphQL Query

query GetFolderSkeleton($input: FolderSkeletonRequest) {
    GetFolderSkeleton(input: $input) {
        Items { NodeID ParentID Name NodeType NodeSource
        Path WorkerNodeID WorkerNodeIDMode ArrayLength AccessControl
        Version SyncState SyncFailureReason HasChildren }
        NextCursor
        HasMore
    }
}

Variables

{
  "input": {
    "Limit": 1000,
    "Cursor": null
  }
}

Get Nodes by Ref

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Fetch one node by NodeRef, which is the pair (ID, ParentID) rather than an ID alone.

A ref disambiguates nodes whose IDs collide across the tree. The same ref shape is what UpdateNodeByRef and DeleteNodeByRef take.

This replaces GetNodes, which is deprecated in 4.2.x for exactly that ambiguity. GetNodes still works.

Request Body

GraphQL Query

query GetNodesByRef($input: NodeRef!) {
    GetNodesByRef(input: $input) { NodeID ParentID Name NodeType NodeSource
        Path WorkerNodeID WorkerNodeIDMode ArrayLength AccessControl
        Version SyncState SyncFailureReason HasChildren }
}

Variables

{
  "input": {
    "ID": "{{opc_node_id}}",
    "ParentID": "{{opc_parent_id}}"
  }
}

Search Nodes

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Search the hierarchy by name substring.

Field Meaning
Query Required. Name substring to match.
ScopeNodeID Optional. Limit the search to one subtree.
NodeType Optional. FOLDER | DEVICE | TAG.
DataType Optional. Filter tags by data type, e.g. float.
Cursor / Limit Paging. Limit defaults to 1000.

Each match carries the node plus its full Path from the root.

Request Body

GraphQL Query

query SearchNodes($input: SearchNodesRequest!) {
    SearchNodes(input: $input) {
        Matches {
            Node { NodeID ParentID Name NodeType Version SyncState }
            Path
        }
        NextCursor
        HasMore
    }
}

Variables

{
  "input": {
    "Query": "temperature",
    "ScopeNodeID": "{{opc_node_id}}",
    "NodeType": "TAG",
    "DataType": "float",
    "Cursor": null,
    "Limit": 1000
  }
}

Get Tree State Version

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. The monotonic version stamp of the whole hierarchy, bumped on every committed mutation.

Poll it to detect that something changed without re-reading the tree, or capture it before a batch of edits to confirm nothing else moved in between. For live updates prefer SubscribeTreeChanged.

Request Body

GraphQL Query

query GetTreeStateVersion {
    GetTreeStateVersion { Version }
}

Stage Hierarchy

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Step 1 of the two-phase bulk hierarchy upload.

Validates the payload and returns a StagingID plus a preview of the effect: how many nodes would be Added, Removed and Modified. Nothing is applied yet.

Show the counts to the operator, then call CommitStagedHierarchy to apply or CancelStagedHierarchy to discard. The staging expires at ExpiresAt.

input is Any!, the same free-form hierarchy document UploadHierarchy accepts.

Request Body

GraphQL Query

mutation StageHierarchy($input: Any!) {
    StageHierarchy(input: $input) {
        StagingID
        Added
        Removed
        Modified
        ExpiresAt
    }
}

Variables

{
  "input": {
    "nodes": [
      {
        "ParentID": "edgedevice",
        "Name": "apiFolder",
        "NodeType": "FOLDER"
      },
      {
        "ParentID": "edgedevice.apiFolder",
        "Name": "apiTag",
        "NodeType": "TAG",
        "Data": {
          "TopicName": "devicehub.topic",
          "DataType": "float"
        }
      }
    ]
  }
}

Commit Staged Hierarchy

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Step 2: apply a hierarchy staged by StageHierarchy.

Returns the counts actually applied. RestartRequired is the number of nodes whose change cannot take effect until the OPC UA server restarts; when it is above zero, those nodes report SyncState: restart_required.

Fails if the staging has already expired.

Request Body

GraphQL Query

mutation CommitStagedHierarchy($stagingId: ID!, $originId: String) {
    CommitStagedHierarchy(stagingId: $stagingId, originId: $originId) {
        Added
        Removed
        Modified
        RestartRequired
    }
}

Variables

{
  "stagingId": "{{opc_staging_id}}",
  "originId": "{{opc_origin_id}}"
}

Cancel Staged Hierarchy

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Discard a staged hierarchy without applying it. Stagings also expire on their own at the ExpiresAt returned by StageHierarchy.

Request Body

GraphQL Query

mutation CancelStagedHierarchy($stagingId: ID!) {
    CancelStagedHierarchy(stagingId: $stagingId)
}

Variables

{
  "stagingId": "{{opc_staging_id}}"
}

Upload Hierarchy with Result

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. One-shot bulk upload that reports what it did.

Same input as UploadHierarchy, but returns UploadHierarchyResult instead of nothing, so a client can confirm the counts without re-reading the tree. UploadHierarchy is deprecated in 4.2.x in favour of this; it still works. Use StageHierarchy + CommitStagedHierarchy instead when you want the operator to approve the change first.

Request Body

GraphQL Query

mutation UploadHierarchyWithResult($input: Any!) {
    UploadHierarchyWithResult(input: $input) {
        Added
        Removed
        Modified
        RestartRequired
    }
}

Variables

{
  "input": {
    "nodes": [
      {
        "ParentID": "edgedevice",
        "Name": "apiFolder",
        "NodeType": "FOLDER"
      }
    ]
  }
}

Sync Nodes

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Push the configured hierarchy out to the OPC UA worker nodes and return the resulting SyncStatus.

State is InProgress | Synced | SyncedWithErrors | Failed. When AppliedAtNextWorkerStart is true, part of the change is queued until the worker restarts. Track progress with GetSyncStatus or SubscribeSyncStatus.

Request Body

GraphQL Query

mutation SyncNodes {
    SyncNodes {
        SyncID
        State
        TotalCount
        AppliedCount
        FailedCount
        Failures { NodeID ErrorReason }
        StartedAt
        FinishedAt
        AppliedAtNextWorkerStart
        OriginID
    }
}

Get Sync Status

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. Status of one sync run by its SyncID, as returned by SyncNodes. Failures lists the nodes that could not be applied and why.

Request Body

GraphQL Query

query GetSyncStatus($syncId: ID!) {
    GetSyncStatus(syncId: $syncId) {
        SyncID
        State
        TotalCount
        AppliedCount
        FailedCount
        Failures { NodeID ErrorReason }
        StartedAt
        FinishedAt
        AppliedAtNextWorkerStart
        OriginID
    }
}

Variables

{
  "syncId": "{{opc_sync_id}}"
}

Get Current Sync

POST {{edgeUrl}}/opcua/v2

New in 4.2.x. The sync currently in flight if there is one, otherwise the most recent terminal sync. Use it to avoid starting a second SyncNodes while one is still running.

Because it falls back to the last completed run, a returned SyncStatus does not on its own mean a sync is in progress. Check State (InProgress vs Synced | SyncedWithErrors | Failed) rather than treating a non-null result as busy.

Request Body

GraphQL Query

query GetCurrentSync {
    GetCurrentSync {
        SyncID
        State
        TotalCount
        AppliedCount
        FailedCount
        StartedAt
        FinishedAt
    }
}

View this page as Markdown