---
title: "GetNodes"
method: GET
path: "/v2/writer/{dataSetWriterGroup}/{dataSetWriterId}/nodes"
tags: ["Writer"]
---

# GetNodes

`GET /v2/writer/{dataSetWriterGroup}/{dataSetWriterId}/nodes`

Get Nodes from a data set writer in a writer group. The nodes can optionally be offset from a previous last node identified by the dataSetFieldId and pageanated by the pageSize. If the dataSetFieldId is not found, an empty list is returned. If the dataSetFieldId is not specified, the first page is returned.

## Path parameters

- `dataSetWriterGroup` string, required
- `dataSetWriterId` string, required

## Query parameters

- `lastDataSetFieldId` string
- `pageSize` integer

## Response `200`

The items were found

- OpcNodeModel[]
  - `Id` string — Node Identifier
  - `OpcSamplingInterval` integer — Sampling interval in milliseconds
  - `OpcSamplingIntervalTimespan` string, date-span — OpcSamplingInterval as TimeSpan.
  - `DataSetFieldId` string — The identifier of the field in the dataset message. If not provided Azure.IIoT.OpcUa.Publisher.Models.OpcNodeModel.DisplayName is used.
  - `DataSetClassFieldId` string, uuid — The identifier of the field in the dataset class. Allows correlation to the data set class.
  - `DisplayName` string — Display name
  - `QueueSize` integer — Queue Size for the monitored item on the server. Specifies how many values are queued on the server before undelivered ones are discarded.
  - `DiscardNew` boolean — Discard new values in the server queue instead of old values when no more room in queue.
  - `DataChangeTrigger` 'Status' | 'StatusValue' | 'StatusValueTimestamp' — Data change trigger
  - `DeadbandType` 'Absolute' | 'Percent' — Deadband type
  - `DeadbandValue` number, double — Deadband value of the data change filter to apply. Does not apply to events
  - `EventFilter` EventFilterModel — Event filter
    - `selectClauses` SimpleAttributeOperandModel[], required — Select clauses
      - `typeDefinitionId` string — Type definition node id if operand is simple or full attribute operand.
      - `browsePath` string[] — Browse path of attribute operand
      - `attributeId` 'NodeId' | 'NodeClass' | 'BrowseName' | 'DisplayName' | 'Description' | 'WriteMask' | 'UserWriteMask' | 'IsAbstract' | 'Symmetric' | 'InverseName' | 'ContainsNoLoops' | 'EventNotifier' | 'Value' | 'DataType' | 'ValueRank' | 'ArrayDimensions' | 'AccessLevel' | 'UserAccessLevel' | 'MinimumSamplingInterval' | 'Historizing' | 'Executable' | 'UserExecutable' | 'DataTypeDefinition' | 'RolePermissions' | 'UserRolePermissions' | 'AccessRestrictions' — Node attribute identifiers
      - `indexRange` string — Index range of attribute operand
      - `displayName` string — Optional display name
      - `dataSetClassFieldId` string, uuid — Optional data set class field id (Publisher extension)
    - `whereClause` ContentFilterModel, required — Content filter
      - `elements` ContentFilterElementModel[] — The flat list of elements in the filter AST
        - `filterOperator` 'Equals' | 'IsNull' | 'GreaterThan' | 'LessThan' | 'GreaterThanOrEqual' | 'LessThanOrEqual' | 'Like' | 'Not' | 'Between' | 'InList' | 'And' | 'Or' | 'Cast' | 'InView' | 'OfType' | 'RelatedTo' | 'BitwiseAnd' | 'BitwiseOr' — Filter operator type
        - `filterOperands` FilterOperandModel[] — The operands in the element for the operator
          - `index` integer — Element reference in the outer list if operand is an element operand
          - `value` object — Variant value if operand is a literal
          - `nodeId` string — Type definition node id if operand is simple or full attribute operand.
          - `browsePath` string[] — Browse path of attribute operand
          - `attributeId` 'NodeId' | 'NodeClass' | 'BrowseName' | 'DisplayName' | 'Description' | 'WriteMask' | 'UserWriteMask' | 'IsAbstract' | 'Symmetric' | 'InverseName' | 'ContainsNoLoops' | 'EventNotifier' | 'Value' | 'DataType' | 'ValueRank' | 'ArrayDimensions' | 'AccessLevel' | 'UserAccessLevel' | 'MinimumSamplingInterval' | 'Historizing' | 'Executable' | 'UserExecutable' | 'DataTypeDefinition' | 'RolePermissions' | 'UserRolePermissions' | 'AccessRestrictions' — Node attribute identifiers
          - `indexRange` string — Index range of attribute operand
          - `alias` string — Optional alias to refer to it makeing it a full blown attribute operand
          - `dataType` string — Data type if operand is a literal
    - `typeDefinitionId` string — Simple event Type definition node id
  - `ConditionHandling` ConditionHandlingOptionsModel — Condition handling options model
    - `updateInterval` integer — Time interval for sending pending interval updates in seconds.
    - `snapshotInterval` integer — Time interval for sending pending interval snapshot in seconds.
  - `BrowsePath` string[] — Browse path from the node to reach the actual node to monitor.
  - `AttributeId` 'NodeId' | 'NodeClass' | 'BrowseName' | 'DisplayName' | 'Description' | 'WriteMask' | 'UserWriteMask' | 'IsAbstract' | 'Symmetric' | 'InverseName' | 'ContainsNoLoops' | 'EventNotifier' | 'Value' | 'DataType' | 'ValueRank' | 'ArrayDimensions' | 'AccessLevel' | 'UserAccessLevel' | 'MinimumSamplingInterval' | 'Historizing' | 'Executable' | 'UserExecutable' | 'DataTypeDefinition' | 'RolePermissions' | 'UserRolePermissions' | 'AccessRestrictions' — Node attribute identifiers
  - `IndexRange` string — Index range to read, default to null.
  - `Topic` string — Topic to publish to - splits network messages along the lines of topic name and overrides the queue name of the writer and writer group.
  - `QualityOfService` 'AtMostOnce' | 'AtLeastOnce' | 'ExactlyOnce'
  - `HeartbeatBehavior` 'WatchdogLKV' | 'WatchdogLKG' | 'PeriodicLKV' | 'PeriodicLKG' | 'WatchdogLKVWithUpdatedTimestamps' | 'WatchdogLKVDiagnosticsOnly' — Heartbeat behavior
  - `HeartbeatInterval` integer — Heartbeat interval in seconds
  - `HeartbeatIntervalTimespan` string, date-span — Heartbeat interval as TimeSpan.
  - `SkipFirst` boolean — Do not send the first value that is always provided by the server when the monitored item is created.
  - `OpcPublishingInterval` integer — Publishing interval in milliseconds
  - `OpcPublishingIntervalTimespan` string, date-span — OpcPublishingInterval as TimeSpan.
  - `UseCyclicRead` boolean — Use cyclic read to sample.
  - `RegisterNode` boolean — Register node for reading before sampling.
  - `FetchDisplayName` boolean — Fetch display name from the node
  - `ModelChangeHandling` ModelChangeHandlingOptionsModel — Describes how model changes are published
    - `rebrowseIntervalTimespan` string, date-span — Rebrowse period
  - `TriggeredNodes` OpcNodeModel[] — Nodes that are triggered by the parent node. Nodes cannot themselves trigger other nodes, any such setting is silently discarded. Triggered nodes can only be updated as an atomic unit using API.
  - `ExpandedNodeId` string — Expanded Node identifier (same as Azure.IIoT.OpcUa.Publisher.Models.OpcNodeModel.Id)

## Other responses

- `400` — The passed in information is invalid
- `403` — A unique item could not be found to get nodes from.
- `404` — The entry was not found

## Changes

- **2024-06-29** `bfba75adb807` — 3 info
  - added the non-success response with the status `400`
  - added the non-success response with the status `403`
  - added the non-success response with the status `404`
- **2024-06-24** `e7cc0f7cc60b` — 1 info
  - endpoint added
- **2023-05-02** `e285a38b6ca1` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/azure/apis/opcpublisher/changes/v2/writer/:dataSetWriterGroup/:dataSetWriterId/nodes/get.md)

---

[API](https://skmtc.dev/azure/apis/opcpublisher.md) · [All operations](https://skmtc.dev/azure/apis/opcpublisher/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/azure/opcpublisher/revisions/eeda0fd8cbae/schema)
