AddOrUpdateNodes
Add Nodes to a dedicated data set writer in a writer group. Each node must have a unique DataSetFieldId. If the field already exists, the node is updated. If a node does not have a dataset field id an error is returned. Publishing intervals at node level are also not supported and generate an error. Publishing intervals must be configured at the data set writer level.
Path parameters
The writer group name of the entry
The data set writer identifer of the entry
Query parameters
Field after which to insert the nodes. If not specified, nodes are added at the end of the entry
Request body
The OPC UA node identifier string in standard notation. Format: ns={namespace};{type}={value} Required field that uniquely identifies the node to monitor. Examples: "ns=2;s=MyTag", "ns=0;i=2258" See OPC UA Part 3 for node ID format specifications.
Server-side sampling rate in milliseconds. Determines how often the server checks for value changes. Default from DataSetSamplingInterval if not specified. Should be less than or equal to OpcPublishingInterval for effective sampling. Ignored when OpcSamplingIntervalTimespan is defined.
Server-side sampling rate as a TimeSpan. Takes precedence over OpcSamplingInterval if both are defined. Provides more precise control over timing than milliseconds. Example: "00:00:00.100" for 100ms sampling. Should be less than or equal to OpcPublishingIntervalTimespan for effective sampling.
Custom identifier for this node in dataset messages. Used as field name in message payloads if specified. Falls back to DisplayName if not provided. Helps correlate data with specific measurements or tags. Must be unique within a dataset writer.
Unique identifier for correlating fields with dataset class metadata. Links monitored item data with dataset class field definitions. Used to provide context and type information for the field. Must match corresponding field ID in dataset class metadata. Important for proper message decoding by subscribers.
Human-readable name for the monitored item. Used as field identifier if DataSetFieldId not specified. Can be overridden by actual node DisplayName if FetchDisplayName=true. Helps identify data sources in messages and logs. Should be unique within a dataset for clear identification.
Size of the server-side queue for this monitored item. Controls how many values can be buffered during slow connections. Values are discarded according to DiscardNew when queue is full. Default is 1 unless otherwise configured. Larger queues help prevent data loss but use more server memory.
Controls queue overflow behavior for monitored items. True: Discard newest values when queue is full (LIFO). False: Discard oldest values when queue is full (FIFO, default). Use True to preserve historical data during connection issues. Use False to maintain current value accuracy.
Data change trigger
Deadband type
Deadband value of the data change filter to apply. Does not apply to events
Relative path through the address space to reach target node. Sequence of browse names from starting node to target. Example: ["Objects", "Server", "Data", "Dynamic", "Scalar"]. Allows referencing nodes through hierarchical structure. Alternative to direct node ID addressing.
Node attribute identifiers
Range specification for array or string values. Format: "start:end" or "index". Examples: "0:3" (first 4 elements), "7" (8th element) Allows monitoring specific array elements. Default: null (entire value monitored)
Custom routing topic/queue for this node's messages. Overrides writer and writer group queue settings. Enables node-specific message routing patterns. Messages are split into separate network messages when nodes have different topics. Format depends on transport (e.g., MQTT topic syntax).
Controls how heartbeat messages are handled for monitored items. Heartbeats help maintain awareness of node state and connection health even when values don't change. Can be configured globally via the --hbb command line option. Works with heartbeat interval settings.
Node-specific heartbeat interval in milliseconds. Overrides DefaultHeartbeatInterval from parent configuration. Controls how often heartbeat messages are generated. Set to 0 to disable heartbeats for this node. Ignored when HeartbeatIntervalTimespan is defined.
Node-specific heartbeat interval as TimeSpan. Takes precedence over HeartbeatInterval if both defined. Overrides DefaultHeartbeatIntervalTimespan setting. Provides more precise control over timing. Example: "00:00:10" for 10-second interval.
Controls handling of initial value notification. True: Suppress first value from monitored item. False: Publish initial value (default). Useful when only changes are relevant. Server always sends initial value on creation.
Client-side publishing rate in milliseconds. Controls how often the server sends notifications. Must be >= OpcSamplingInterval for proper operation. Overrides DataSetPublishingInterval when specified. Ignored if OpcPublishingIntervalTimespan is defined.
OpcPublishingInterval as TimeSpan.
Use periodic reads instead of monitored items. True: Sample using CyclicRead service calls False: Use standard subscription monitoring (default) Useful for nodes that don't support monitoring or when consistent sampling timing is required. Consider CyclicReadMaxAge when enabled.
Optimize node access using RegisterNodes service. True: Register node for faster subsequent reads False: Use direct node access (default) Can improve performance for frequently accessed nodes. Server must support RegisterNodes service.
Retrieve node's DisplayName attribute on startup. True: Query and use actual display name False: Use configured DisplayName (default) Overrides DataSetFetchDisplayNames setting. Used for human-readable field identification.
Maximum age for cached values in cyclic reads. Specified in milliseconds. Default: 0 (no caching) Only applies when UseCyclicRead is true. Server may return cached value if within max age. Helps reduce server load in high-frequency reads. Ignored when CyclicReadMaxAgeTimespan is defined.
Maximum age for cached values in cyclic reads as TimeSpan. Takes precedence over CyclicReadMaxAge if both defined. Only applies when UseCyclicRead is true. Default: "00:00:00" (no caching) Example: "00:00:00.500" for 500ms max cache age. Helps optimize read performance vs data freshness.
A type definition id that references a well known opc ua type definition node for the variable represented by this node entry.
Alternative node identifier with full namespace URI. Same as Id but uses complete namespace URI instead of index. Format: "nsu={uri};{type}={value}" Example: "nsu=http://opcfoundation.org/UA/;i=2258" Provides more portable node identification across servers.
Response
The items were added