# OPC UA Client Endpoint Properties

## `nodeId` (string)

Specifies the address of the OPC UA node within the server. You must define either `nodeId` or `browsePath`. A `nodeId` value is encoded as an xs:string with the following syntax:\
\
`ns=<namespaceIndex>;<type>=<value>`\
\
The fields have the following meanings:\
\
`<namespaceIndex>` is an integer number such as 0 or 10, denoting the namespace.\
`<type>` is a flag that specifies the identifier type and can be: `i` for numeric (integer), `s` for string, `g` for guid, or `b` for opaque (byte string).\
`<value>` is the identifier itself, encoded as a string and in the format according to the identifierType.\
\
See also <https://reference.opcfoundation.org/v104/Core/docs/Part6/5.3.1>, section 5.3.1.10.

Examples: `"i=2258"`, `"ns=2;s=TemperatureSensor/Output"`, `"ns=10;i=-1012"`

## `browsePath` (string)

Specifies the relative path to the endpoint. You must provide either `nodeId` or `browsePath`.

Examples: `"0:CurrentTime"`, `"2:Devices/PLC1/Temperature"`

## `nodeType` (string, enum)

Specifies the OPC UA node type. This is **mandatory** when the node represents a method call.\
\
**Example**:\
\- **Variable**: Represents a value, such as temperature or pressure.\
\- **Object**: Represents a logical entity such as a device or subsystem.\
\- **Method**: Represents an executable action (e.g., start, reset).

This element must be one of the following enum values:

* `Object`
* `Variable`
* `Method`

## `fields` (array)

An array of browse names representing variables defined in an event type. Each array element must be a `string`.

The object is an array with all elements of the type `string`.

Additional restrictions:

* Unique items: `true`

## `eventTypes` (array)

Lists the node IDs of OPC UA-defined event types in the server namespace, each as a `nodeId` string.

The object is an array with all elements of the type `string`.

Examples: `"ns=0;i=2041"`, `"ns=0;i=2130"`, `"ns=2;s=CustomAlarmType"`

Additional restrictions:

* Unique items: `true`

## `browsePathPrefix` (string)

Optional prefix added to the beginning of a `browsePath`. If both `browsePathPrefix` and `browsePath` are provided, they are combined with a `/` in between. If only one is provided, that value is used as the full path.\
\
**Example**: If `browsePathPrefix` is `2:Devices/Device1` and `browsePath` is `Temperature`, the full path becomes `2:Devices/Device1/Temperature`.

## `publishInterval` (integer)

Specifies how often (in milliseconds) the server should publish values within a subscription. Typically, updates are sent only when values change.\
\
**Example**: A `publishInterval` of `500` means the server checks every 500 milliseconds for changes to send to the client. If no values change, no data is sent, reducing network traffic.

Default: `1000`

## `samplingInterval` (integer)

Sets the sampling interval (in milliseconds) in which values published by the server should be sampled for a particular node subscription. All nodes (i.e., monitored items) with the same `samplingInterval` will be combined into one monitored item group.\
\
**Example**: A `samplingInterval` of `500` means the server samples every 500 milliseconds.

Default: `1000`

## `maxNotificationsPerPublish` (integer)

Specifies the maximum number of monitored item notifications per publish message. Setting this to a lower value will lead to more network traffic.\
\
**Example**: A value of `50` means that if more than 50 monitored items change between publish intervals, multiple publish messages will be sent to the client to deliver all updates.

Default: `100`

## `priority` (integer)

Sets the priority of the subscription on the server. Higher values mean higher priority for publishing data changes.

Default: `10`

## `requestedLifetimeCount` (integer)

Specifies the number of publish intervals that the server should wait for a publish request before considering the subscription inactive and deleting it. A higher value allows for longer interruptions in communication without losing the subscription, but may consume more server resources.\
\
**Example**: A value of `30` means that if no publish requests are received within 30 times the `publishInterval`, the server will delete the subscription.

Default: `30`

## `requestedMaxKeepAliveCount` (integer)

Specifies the maximum number of publish intervals that can pass without the server sending a publish response. If this count is reached, the server sends a keep-alive message to the client, even if no monitored items have changed. This helps ensure the client knows the connection is still active.\
\
**Example**: A value of `10` means that if no monitored items change within 10 times the `publishInterval`, the server will send a keep-alive message.

Default: `10`

## `retryMonitorTimeout` (integer)

Specifies the time (in milliseconds) to wait before retrying to monitor a node if the initial monitoring attempt fails. This helps handle temporary issues when setting up monitoring for a node.\
\
**Example**: A value of `300000` means that if monitoring a node fails, the system will wait 300 seconds (5 minutes) before trying again.

Default: `300000`

Additional restrictions:

* Minimum: `10000`

## `trigger` (string, enum)

Specifies when a client should be notified about data changes on a monitored item. Determines the condition under which the server sends notifications to the client.\
\
Options:\
\- **Status**: Notify only if the status code of the value changes.\
\- **StatusValue** (default): Notify if either the status code or the value changes.\
\- **StatusValueTimestamp**: Notify if the status, value, or timestamp changes. A timestamp change means the value stayed the same, but the data source refreshed or reprocessed it, resulting in a new timestamp.

This element must be one of the following enum values:

* `Status`
* `StatusValue`
* `StatusValueTimestamp`

Default: `"StatusValue"`

## `deadbandType` (string, enum)

An optional filter that suppresses small changes in numeric values to reduce traffic. If set, only significant value changes (as defined by `deadbandValue`) will trigger notifications. Only applicable to variables with numeric data types.\
\
Options:\
\- **None** (default): Not using any deadband filter.\
\- **Absolute**: A notification is sent only if the absolute difference between the new and previous value is greater than or equal to `deadbandValue`.\
\- **Percent**: A notification is sent only if the relative difference between the new and previous value exceeds the defined percentage threshold in `deadbandValue`.

This element must be one of the following enum values:

* `None`
* `Absolute`
* `Percent`

Default: `"None"`

## `deadbandValue` (number)

Specifies the threshold value that is used by the selected `deadbandType`. It will be ignored when `deadbandType` is `None`.\
\
For **Absolute**, it defines the minimum difference (in engineering units) that must be exceeded. For **Percent**, it defines the percentage of the EURange that must be exceeded.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.cybus.io/2-1-2/connectors/shop-floor-connectors/opc-ua/opc-ua-client/opcuaendpoint.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
