v1

latestSwagger 2.0MIT LICENSE2026-07-1799215370.0 KB
Writer

AddOrUpdateNode

Add a node to a dedicated data set writer in a writer group. A 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.

put/v2/writer/{dataSetWriterGroup}/{dataSetWriterId}

Path parameters

dataSetWriterGroupstring required

The writer group name of the entry

dataSetWriterIdstring required

The data set writer identifer of the entry

Query parameters

insertAfterFieldIdstring

Field after which to insert the nodes. If not specified, nodes are added at the end of the entry

Request body

Idstring

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.

OpcSamplingIntervalinteger

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.

OpcSamplingIntervalTimespanstring date-span

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.

DataSetFieldIdstring

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.

DataSetClassFieldIdstring uuid

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.

DisplayNamestring

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.

QueueSizeinteger

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.

DiscardNewboolean

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.

DataChangeTrigger'Status' | 'StatusValue' | 'StatusValueTimestamp'

Data change trigger

DeadbandType'Absolute' | 'Percent'

Deadband type

DeadbandValuenumber double

Deadband value of the data change filter to apply. Does not apply to events

BrowsePathstring[]

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.

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

IndexRangestring

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)

Topicstring

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).

QualityOfService'AtMostOnce' | 'AtLeastOnce' | 'ExactlyOnce'
HeartbeatBehavior'WatchdogLKV' | 'WatchdogLKG' | 'PeriodicLKV' | 'PeriodicLKG' | 'WatchdogLKVWithUpdatedTimestamps' | 'WatchdogLKVDiagnosticsOnly' | 'Reserved' | 'PeriodicLKVDropValue' | 'PeriodicLKGDropValue'

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.

HeartbeatIntervalinteger

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.

HeartbeatIntervalTimespanstring date-span

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.

SkipFirstboolean

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.

OpcPublishingIntervalinteger

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.

OpcPublishingIntervalTimespanstring date-span

OpcPublishingInterval as TimeSpan.

UseCyclicReadboolean

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.

RegisterNodeboolean

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.

FetchDisplayNameboolean

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.

CyclicReadMaxAgeinteger

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.

CyclicReadMaxAgeTimespanstring date-span

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.

TypeDefinitionIdstring

A type definition id that references a well known opc ua type definition node for the variable represented by this node entry.

ExpandedNodeIdstring

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 item was added