Overview
This OPC UA RESTful API exposes services in OPC UA Servers as http endpoints. The API is generic and shall work for all OPC UA Servers supporting the services which are exposed. This API consists in fact of two APIs. One API is purely http RESTful, and the other exposes an SignalR hub which enables real-time callbacks to clients. The two APIs are somewhat overlapping in functionality, but only the SignalR API has subcriptions for real-time data values and events.
The format of the data being transported back and forth between server and client is Json. This documentation lists the data types used in the API, and will show how these data types are represented in Json. The same data types are used in SignalR and the RESTful API.
Getting started
The API is a .Net 6 application, and it will run on all platforms supported by .Net 6. The application may be hosted in different enviroments (e.g. IIS for windows). The default host is Kestrel.
Make sure .Net 6 is installed on the computer. Download .Net 6
Hosting
This article describes how to host the application.
Kestrel
The default hosting environment is Kestrel. Simply run the Prediktor.OpcUa.Api.exe to host in Kestrel.
The endpoints used by Kestrel are by default http://localhost:5000 and https://localhost:5001.
This can be changed as shown here.
Licensing
This application is licensed. The licensing system stores the license on disk at an undisclosed location. This means that when running the application it should have write access to disk.
The API exposes endpoints for handling licenses.
GET
/license
Tests if a valid license is in place
POST
/license/activate_online
Activates a license online
GET
/license/generate_offline_request
Generates offline activation requests.
POST
/license/activate_offline
Activates license offline
The license is activated by retreiving a license key from Prediktor. This key should be distributed with the API. If that is not the case please contact Prediktor to get a license key.
When you have a valid license key, the key can be posted in the /license/activate_online endpoint. It is only necessary to do this once. However, if the application is deleted/updated the license has to be actived again.
In-memory license
If hosted in an environment which does not have write permissions to disk, the appsettings.json must be changed to include the license key.
Add or uncomment the following:
"License": {
"Key": "<enter key here>",
"Store": "memory"
},
Authentication
The authentication can be enabled by adding:
"EnableAuthentication": true
to the appsettings.json.
The authentication used is JWT bearer authentication.
OPC UA settings
The API application contains an OPC UA Client, this client has a few settings which can be tweaked. It is, however, not encouraged to change those settings without having a thorough understanding of how the settings affect the application.
The settings are stored in the uaclient.xml file.
OPC UA certificates
The UA communication can be done in a secure or unsecure way. The Connection datatype decides if the connection is secure or not. It is highly encouraged to use a secure connection in a production environment.
If a secure connection is used, the client needs to have a valid certificate. The uaclient.xml file decides where these certificate files are located. If a valid certificate is not present, the application will create one. This certificate will be a self-signed certificate, and thus may not be automatically accepted and trusted by the OPC UA Server.
The default content of the uaclient.xml is:
<ApplicationCertificate>
<StoreType>Directory</StoreType>
<StorePath>%ProgramData%/Prediktor/opcuaapi/Config/pki</StorePath>
<SubjectName>OPC UA API</SubjectName>
</ApplicationCertificate>
Some OPC UA servers have a way of trusting self-signed certificates, please take a look at the documentation for the OPC UA Server in question.
It is also possible to get a hold of a certificate from a trusted certificate issuer. This certificate must have a SubjectName equal to the subject name in the uaclient.xml file. (OPC UA API is the default subject name.)
OPC UA Namespaces
In OPC UA Servers there are one or more namespaces. Nodes belong to a namespace. The namespace is identified by a URL, however, due to the ubiquity of nodes, and the need to send node information back and forth between the server and clients, namespace indices are commonly used. The namespace index refer to the index of the namespace URL in a namespace array. The namespace array is exposed by the OPC UA Server. The namespace array may change during the life time of the OPC UA Server.
This means that a namespace index does not necessarily refer to the same namespace url, for instance after a restart of the OPC UA Server. To alleviate this problem somewhat it is possible for the client to send a namespace array in requests which will be mapped to the actual namespace array on the server.
Example:
A client uses nodes in namespaces called "ns1" and "ns2". In a call to the server the client can send over a namespace table like {"http://opcfoundation.org/UA/", "ns1", "ns2"}. Note that the first element in the namespace table must always be: "http://opcfoundation.org/UA/". All the node ids the client send over in the call will refer to this namespace table regardless of the status of the namespace table on the server. In this case the node id can for instance refer to namespace index 2 meaning "ns2".
OpenAPI
OpenAPI is used to describe the REST API.
Make sure the OPC UA API application is running.
Navigate to https://localhost:5001/index.html in a web browser to see the Swagger UI which can be used to test the REST API.
Read a value with Swagger UI
Open https://localhost:5001/index.html in a web browser, and find the /values/get endpoint.
Expand the node and click Try it out.
Change the entries to something that is available in a an OPC UA server.
Example:
[
{
"NodeIds":[
{
"IdType":1,
"Id":"V|Worker.Signal1",
"Namespace":1
}
],
"ClientNamespaces":[
"http://opcfoundation.org/UA/",
"urn:prediktor:UAA-W2019-01:Solar"
],
"Connection":{
"Url":"opc.tcp://10.100.59.218:4852",
"AuthenticationType":1
}
}
]
Click execute.
The respons will contain something like this if everything went OK.
[
{
"Values": [
{
"Value": {
"Type": 10,
"Body": 54
},
"SourceTimestamp": "2021-12-16T08:58:18.9825545Z",
"ServerTimestamp": "2021-12-16T08:58:18.9825545Z"
}
],
"ServerNamespaces": [
"http://opcfoundation.org/UA/",
"http://prediktor.no/apis/ua/",
"urn:prediktor:UAA-W2019-01:Solar",
"http://scatecsolar.com/Enterprise",
"http://scatecsolar.com/JO-GL",
"http://scatecsolar.com/JO-GM",
"http://prediktor.no/PVTypes/"
],
"Success": true
}
]
SignalR API
The SignalR API utilizes the Microsoft SignalR library. SignalR is a library for developers that simplifies the process of adding real-time web functionality to applications. Real-time web functionality is the ability to have server code push content to connected clients instantly as it becomes available, rather than having the server wait for a client to request new data.
In the OPC UA API the SignalR API is primarily used for subscribing to data and event values. This means that the API calls back to the client (e.g browser), when values have changed.
The SignalR API exposes a set of RPC-methods. The client must then implement corresponding callback methods to receive results fromt the API.
Hub
The address of the SignalR hub is /OpcUaHub.
The methods below can be reached through this hub.
Methods
ReadValues
This method is called to read values (i.e. the value of attribute with id = 13) of one or more nodes.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | array of ReadValuesRequest | Contains the nodes to read and the connection info |
OnReadValues
This is the callback method for ReadValues.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in ReadValues |
response | array of ReadValuesResponse | Contains the values of the nodes if successful. |
The second parameter is an array of ReadValuesResponse, and contains the values (i.e. the value of attribute with id = 13) of the nodes or an error code if unsuccessful. The order of the arrays are the same as the order of the arrays in ReadValues.
WriteValues
This method is called to write values (i.e. the value of attribute with id = 13) to one or more nodes.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | array of WriteValuesRequest | Contains the nodes and values to write and the connection info |
OnWriteValues
This is the callback method for WriteValues.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in WriteValues |
response | array of WriteValuesResponse | Contains the status of the write operation. |
ReadDataTypes
This method is called to read datatypes (i.e. the value of attribute with id = 14) of one or more nodes.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | ReadDataTypesRequest | Contains the nodes to read and the connection info |
OnReadDataTypes
This is the callback method for ReadDataTypes.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in ReadDataTypes |
response | array of ReadDataTypesResponse | Contains the datatypes of the nodes if successful. |
ReadAttributes
This method is called to read attributes of one or more nodes.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | array of ReadAttributesRequest | Contains the nodes and attribute ids to read and the connection info |
OnReadAttributes
This is the callback method for ReadAttributes.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in ReadAttributes |
response | array of ReadAttributesResponse | Contains the values of the attributes of the nodes if successful. |
The second parameter is an array of ReadAttributesResponse, and contains the values of the attributes or an error code if unsuccessful. The order of the arrays are the same as the order of the arrays in ReadAttributes.
WriteAttributes
This method is called to write attributes to one or more nodes.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | array of WriteAttributesRequest | Contains the nodes, attribute ids and values to write and the connection info |
OnWriteAttributes
This is the callback method for WriteAttributes.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in WriteAttributes |
response | array of WriteAttributesResponse | Contains the status of the write operation. |
HistoryReadRaw
This method reads raw history data from an OPC UA Server.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | ReadHistoryRawValuesRequest | Contains the nodes, attribute ids to read and the connection info |
OnOnHistoryReadRaw
This is the callback method for HistoryReadRaw.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in HistoryReadRaw |
response | ReadHistoryRawValuesResponse | Contains the result of the read operation. |
HistoryReadProcessed
This method reads processed data from an OPC UA Server.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | ReadHistoryProcessedValuesRequest | Contains the nodes, attribute ids and other arguments needed for reading processed data. |
OnHistoryReadProcessed
This is the callback method for HistoryReadProcessed.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in HistoryReadProcessed |
response | ReadHistoryProcessedValuesResponse | Contains the result of the read operation. |
GetHistoricalAggregates
This method gets the available historical aggregates from an OPC UA Server.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | HistoricalAggregateRequest |
OnGetHistoricalAggregates
This is the callback method for GetHistoricalAggregates.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in GetHistoricalAggregates |
response | HistoryAggregateResponse | Contains the historical aggregates for the OPC UA Server. |
HistoryWriteValues
This method writes historical data to an OPC UA Server.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | HistoryWriteRequest | Contains the values to write. |
OnHistoryWriteValues
This is the callback method for HistoryWriteValues.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in HistoryWriteValues |
response | HistoryWriteResponse | Contains the result of the write operation. |
ReadEventsHistory
This method reads the event history from an OPC UA Server.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | ReadEventHistoryRequest | Contains the information needed for reading event history |
OnReadEventsHistory
This is the callback method for ReadEventsHistory.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in ReadEventsHistory |
response | ReadEventHistoryResponse | Contains the historical events. |
ReadEventsHistoryExtended
This method reads the event history from an OPC UA Server. The difference between this method and ReadEventsHistory is that the fields to be queried for are not predefined.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | ReadEventHistoryExtendedRequest | Contains the information needed for reading event history |
OnReadEventsHistoryExtended
This is the callback method for ReadEventsHistoryExtended.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in ReadEventsHistoryExtended |
response | ReadEventHistoryExtendedResponse | Contains the historical events. |
WriteEventsHistory
This method writes event history to an OPC UA Server.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | WriteEventHistoryRequest | Contains the information needed for writing event history |
OnWriteEventsHistory
This is the callback method for WriteEventsHistory.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in WriteEventsHistory |
response | WriteEventHistoryResponse | Contains the result of the write operation. |
WriteEventsHistoryExtended
This method writes event history to an OPC UA Server.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | WriteEventHistoryExtendedRequest | Contains the information needed for writing event history |
OnWriteEventsHistoryExtended
This is the callback method for WriteEventsHistoryExtended.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in WriteEventsHistoryExtended |
response | WriteEventHistoryExtendedResponse | Contains the result of the write operation. |
GetEventFields
This method gets the predefined event fields. These event fields are usually the most queried, and are available for querying in an easy way. This can be seen in ReadEventHistoryRequest.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
OnEventFieldsFetched
This is the callback method for GetEventFields.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in GetEventFields |
response | array of EventFieldDefinition | Contains the predefined events which can be queried in ReadEventHistoryRequest. |
GetEventTypes
This method gets Event types.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | GetEventTypesRequest | Contains the information needed getting event-types |
OnGetEventTypes
This is the callback method for GetEventTypes.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in GetEventTypes |
response | GetEventTypesResponse | Contains the event types. |
AddEventComments
This method adds comment to an event.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | array of AddCommentRequest | Contains the event id and comment |
OnEventsCommented
This is the callback method for AddEventComments.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in AddEventComments |
response | array of AddCommentResponse | The response tells whether the AddComment was successful. |
ConfirmEvents
This method confirms events.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | array of ConfirmRequest | Contains the event id and comment |
OnEventsConfirmed
This is the callback method for ConfirmEvents.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in ConfirmEvents |
response | array of ConfirmResponse | The response tells whether the Confirm was successful. |
AcknowledgeEvents
This method acknowledges events.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | array of AcknowledgeRequest | Contains the event id and comment |
OnEventsAcknowledged
This is the callback method for AcknowledgeEvents.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in AcknowledgeEvents |
response | array of AcknowledgeResponse | The response tells whether the Acknowledge was successful. |
CreateEventSubscription
This method creates an event subscription. When subscribing to events two callback methods are involved. First the OnEventSubscriptionCreated is invoked telling whether the subscription was created correctly. Then as events happen the OnEvents method will be invoked, containing all the events which have occured since the last OnEvents call. The first OnEvents call after a successful event subscription has occured, will contain the current state of all the applicable event sources.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | CreateEventSubscriptionRequest | Contains the information needed to create event subscription |
OnEventSubscriptionCreated
This is the callback method invoked after the CreateEventSubscription has been called.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in CreateEventSubscription. |
response | CreateEventSubscriptionResponse | The response tells whether the subscription has been created successfully. |
OnEvents
This is the callback method invoked when the events have occured for the subscription.
Parameter | Type | Description |
---|---|---|
response | EventsChangedResponse | Contains the events which have occured since the previous OnEvents invocation. |
CloseEventSubscription
This method closes (stops) an event subscription. If this method is not called, it will be automatically called when the client disconnects.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | CloseEventSubscriptionRequest | Contains the id of the subscription to be closed. |
OnEventSubscriptionClosed
This is the callback method for CloseEventSubscription.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in CloseEventSubscription. |
response | CloseEventSubscriptionResponse | The response tells whether the subscription has been closed successfully. |
CreateDataValueSubscription
This method creates a data value subscription. When subscribing to data values two callback methods are involved. First the OnDataValueSubscriptionCreated is invoked telling whether the subscription was created correctly. Then as data values change the OnDataValuesUpdate method will be invoked, containing all the data values which have changed since the last OnDataValuesUpdate call.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | CreateDataValueSubscriptionRequest | Contains the information needed to create data value subscription |
startSubscription | Boolean | If true the subscription starts right away. If false the StartDataValueSubscription has to be called. |
OnDataValueSubscriptionCreated
This is the callback method invoked after the CreateDataValueSubscription has been called.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in CreateDataValueSubscription. |
response | CreateDataValueSubscriptionResponse | The response tells whether the subscription has been created successfully. |
OnDataValuesUpdate
This is the callback method invoked when the data values have changed for the subscription.
Parameter | Type | Description |
---|---|---|
response | DataValuesChangedResponse | Contains the data values which have changed since the previous OnDataValuesUpdate invocation. |
CloseDataValueSubscription
This method closes (stops) a data value subscription. If this method is not called, it will be automatically called when the client disconnects.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback |
request | CloseDataValueSubscriptionRequest | Contains the id of the subscription to be closed. |
OnDataValueSubscriptionClosed
This is the callback method for CloseDataValueSubscription.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in CloseDataValueSubscription. |
response | CloseDataValueSubscriptionResponse | The response tells whether the subscription has been closed successfully. |
StartDataValueSubscription
This method starts a subscription created by CreateDataValueSubscription.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback. |
subscriptionid | String | The id of the subscription to be started. |
OnDataValueSubscriptionStarted
This is the callback method for StartDataValueSubscription.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in StartDataValueSubscription. |
response | StartDataValueSubscriptionResponse | The response tells whether the subscription has been started successfully. |
GetNamespaces
This method gets the namespaces of a OPC UA Server.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback. |
request | NamespacesRequest |
OnNamespacesFetched
This is the callback method for GetNamespaces.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in GetNamespaces. |
response | NamespaceResponse | Contains the namespaces |
Browse
This method is used to browse the UA Address Space for nodes.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback. |
request | BrowseRequest | The information needed to start a browse operation. |
OnBrowse
This is the callback method for Browse.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in Browse. |
response | BrowseResponse | Contains the references to nodes. |
BrowseMulti
This method is used to browse with multiple source nodes the UA Address Space for nodes.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback. |
request | BrowseMultiRequest | Browse request |
OnBrowseMulti
This is the callback method for BrowseMulti.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in BrowseMulti. |
response | MultiBrowseResponse | Contains the references to nodes. |
BrowseChildren
This method is used to browse the UA Address Space for children nodes. The children nodes are defined as nodes of node class: Variable, Object, DataType, VariableType or ObjectType.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback. |
request | ChildrenRequest | The information needed to start a browse children operation. |
OnBrowseChildren
This is the callback method for BrowseChildren.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in BrowseChildren. |
response | BrowseResponse | Contains the references to nodes. |
BrowseProperties
This method is used to browse the UA Address Space for properties. The property nodes are defined as nodes of node class: Variable which has a HasProperty reference.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback. |
request | BrowsePropertiesRequest | The information needed to start a browse for properties operation. |
OnBrowseProperties
This is the callback method for BrowseProperties.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in BrowseProperties. |
response | BrowseResponse | Contains the references to nodes. |
BrowsePropertiesMulti
This method is used to browse the UA Address Space for properties. The property nodes are defined as nodes of node class: Variable which has a HasProperty reference.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback. |
request | BrowsePropertiesMultiRequest | The information needed to start a browse for properties operation. |
OnBrowsePropertiesMulti
This is the callback method for BrowsePropertiesMulti.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in BrowsePropertiesMulti. |
response | MultiBrowseResponse | Contains the references to nodes. |
TranslateBrowsePathsToNodeIds
Translates browse paths to node ids.
Parameter | Type | Description |
---|---|---|
requestId | String | A string which is returned in the callback. |
request | TranslateBrowsePathsRequest | Contains starting nodes and relative paths. |
OnTranslateBrowsePathsToNodeIds
This is the callback method for TranslateBrowsePathsToNodeIds.
Parameter | Type | Description |
---|---|---|
requestId | String | The string which is passed in TranslateBrowsePathsToNodeIds. |
response | TranslateBrowsePathsResponse | Contains the node ids for the relative paths. |
Data types
The OPC UA API utilizes different data types. Some of the data types are defined by the OPC UA Foundation and use the OPC UA Foundation JSON serializers. The documentation will list the data types used and show the corresponding JSON and default values. The default values are used when they are not set.
Note that the JSON is case-sensitive
SignalR and RESTFul API Data types
The following types are exposed directly in the API. They consist of smaller data types which are referenced further down in the document.
Connection
Used when creating a connection.
Members | Data type | Description | Default value |
---|---|---|---|
Url | String | The address of the ua server. E.g. opc.tcp://10.100.12.43:7653 | |
AuthenticationType | UInt32 | AnonymousUnsecure = 1, AnonymousSecure = 2 |
ReadValuesRequest
Used when reading values (i.e. value of attributes with id = 13).
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
NodeIds | Array of NodeId | Contains the node ids to read. |
ReadValuesResponse
This the response when reading values of nodes.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no values were read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
Values | Array of DataValue | An array containing the values of the node. The order is the same as in the Request |
WriteValuesRequest
Used when writing values (i.e. value of attributes with id = 13).
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
WriteValues | Array of WriteNodeValue | Contains the node ids and values to be written. |
WriteNodeValue
Contains a NodeId and a DataValue. Is used when writing values.
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | The id of the node to write to. | |
Value | DataValue | Contains the value to be written. |
WriteValuesResponse
This the response when writing values to a node.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no values were written. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
Values | Array of StatusCode | An array status of the write operation. The order is the same as in the Request |
ReadDataTypesRequest
Used when reading datatypes
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
NodeIds | Array of NodeId | Contains the node ids to read. |
ReadDataTypesResponse
This the response when reading data types of nodes.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no values were read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
Values | Array of DataTypeInfo | An array containing the values of the node. The order is the same as in the Request |
DataTypeInfo
Members | Data type | Description | Default value |
---|---|---|---|
StatusCode | StatusCode | Status code of the read. | |
DataTypeId | NodeId | Only present if StatusCode is good, and contains the node id of the data type. | |
BrowseName | QualifiedName | Only present if StatusCode is good, and contains the browse name of the data type. |
ReadAttributesRequest
Used when reading attributes. The ReadValueIds is an array of node ids and the attribute id it will read.
See Attributes.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
ReadValueIds | Array of ReadValueId | Contains the node ids and the attributes to read. |
ReadAttributesResponse
This the response when reading attributes.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no attributes were read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
Values | Array of DataValue | An array containing the values of the attributes. The order is the same as in the Request |
WriteAttributesRequest
Used when writing attributes.
See Attributes.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
WriteValues | Array of WriteValue | Contains the node id, the attributes and the values to be written. |
WriteAttributesResponse
This the response when writing attributes.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no values were written. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
Values | Array of StatusCode | An array status of the write operation. The order is the same as in the Request |
ReadHistoryRawValuesRequest
Used when reading raw history data.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
IsReadModified | Boolean | false | |
StartTime | DateTime | The start time of the query | |
EndTime | DateTime | The end time of the query | |
ReturnBounds | Boolean | Return bounds if true | false |
TimestampsToReturn | Int32 | See TimestampsToReturn | |
ReadValueIds | Array of HistoryReadValueId | The nodes to read history for | |
Limit | Limit | Limit the number of vales returned from the request |
ReadHistoryRawValuesResponse
Response when reading raw history.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no values were read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
HistoryReadResults | Array of HistoryDataValueResult | An array of historical values. The array is in the same order as the Request |
HistoryReadValueId
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | The node id of the node to read history from. | |
IndexRange | String | The index reange. | null |
DataEncoding | QualifiedName | The data encoding. | null |
HistoryDataValueResult
Represents a historical read result for one node id.
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | The id of the node which was read. | |
StatusCode | StatusCode | Contains the status code of the historical read operations. | |
DataValues | Array of DataValue | The historical values. |
ReadHistoryProcessedValuesRequest
Used when reading processed history data.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
StartTime | DateTime | The start time of the query | |
EndTime | DateTime | The end time of the query | |
ProcessingInterval | double | Interval between returned Aggregate values. The value 0 indicates that there is no ProcessingInterval defined. The value is given in milliseconds. | |
AggregateType | NodeId | The NodeId of the HistoryAggregate object that is to be used when retrieving the processed history. | |
AggregateName | String | The name of the aggregate. Only one of AggregateName and AggregateType should be set simultaneously. AttributeType has precedence | |
TimestampsToReturn | Int32 | See TimestampsToReturn | |
ReadValueIds | Array of HistoryAggregateReadValueId | The nodes to read history for |
HistoryAggregateReadValueId
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | The node id of the node to read history from. | |
IndexRange | String | The index reange. | null |
DataEncoding | QualifiedName | The data encoding. | null |
AggregateType | NodeId | The NodeId of the HistoryAggregate object that is to be used when retrieving the processed history. | |
AggregateName | String | The name of the aggregate. Only one of AggregateName and AggregateType should be set simultaneously. AttributeType has precedence |
ReadHistoryProcessedValuesResponse
Response when reading processed history.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no values were read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
HistoryReadResults | Array of HistoryDataValueResult | An array of historical values. The array is in the same order as the Request |
HistoryAggregateRequest
Used when getting aggregates from a server.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. |
HistoryAggregateResponse
Response when reading history aggregates.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if aggregates could not be read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
Aggregates | Array of HistoryAggregate | An array of aggregates available in the server. |
HistoryAggregate
Represents one aggregate option.
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | The id of the node representing the aggregate. | |
Name | String | The name of the aggregate. |
HistoryWriteRequest
Used when writing historical data to an OPC UA Server.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
UpdateDataDetails | Array of UpdateDataDetails | The connection info. |
UpdateDataDetails
Members | Data type | Description | Default value |
---|---|---|---|
PerformInsertReplace | PerformUpdateType | Decides whether the data shall be inserted, updated or replaced. | null |
UpdateValues | Array of DataValue | The values to be written. |
HistoryWriteResponse
Response when writing historical data.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if aggregates could not be read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
HistoryUpdateResults | Array of HistoryUpdateResult | The result of the write operation. |
HistoryUpdateResult
Members | Data type | Description | Default value |
---|---|---|---|
StatusCode | StatusCode | The result of the operation. | |
OperationResults | array of StatusCode | ||
DiagnosticInfos | Array of DiagnosticInfo |
ReadEventHistoryRequest
Used when reading event history.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
StartTime | DateTime | The start time of the query | |
EndTime | DateTime | The end time of the query | |
Fields | Array of String | The event fields to include in the response | |
WhereClause | SimpleWhereClause | The where clause used in the query | |
ReadValueIds | Array of HistoryReadValueId | The nodes to read events history for | |
Limit | Limit | Limit the number of events returned from the request |
SimpleWhereClause
Represents a where clause in an event history query.
Members | Data type | Description | Default value |
---|---|---|---|
EventTypeNodedId | NodeId | The node id of the event type of the events which shall be returned in the response. If null BaseEventType (i.e. all events) is used. | null |
AndWhere | Array of SimpleExpression | A list of expressions which must all be true for the event to be returned. |
SimpleExpression
Represents a logical expression used in an event history query.
Members | Data type | Description | Default value |
---|---|---|---|
Field | String | The node id of the event type of the events which shall be returned in the response. If null BaseEventType (i.e. all events) is used. | null |
Op | Int32 | The operator in the expression. See FilterOperator for options | |
Value | Variant | The value which the field is compared against. |
ReadEventHistoryResponse
Response when reading event history.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no values were read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
EventsResult | Array of HistoryEventResult | An array of events |
HistoryEventResult
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | The node id of the Request . | |
StatusCode | StatusCode | The status of the query for this node. | |
HistoryEvents | Array of EventMessage | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
EventMessage
Represents a single event. The fields may not be present if the Request does not include the field.
Members | Data type | Description | Default value |
---|---|---|---|
Time | DateTime | The time of the event. | null |
Message | String | The message of the event. | null |
SourceName | String | The name of the source where the event occurred. | null |
EventType | NodeId | The node id of the event type of the event. | null |
Severity | Int32 | The severity of the event. The higher the value the more severe the event. | null |
SourceNode | NodeId | The node id of the source where the event occurred. | null |
ReceiveTime | DateTime | null | |
ActiveTime | DateTime | null | |
BranchId | NodeId | null | |
ClientUserId | String | The id of the user attached with the event for instance through an acknowledge | null |
Active | Boolean | Indicates whether the event was active. | null |
Acknowledged | Boolean | Indicates whether the event was acknowleged. | null |
Enabled | Boolean | Indicates whether the event was enabled. | null |
Confirmed | Boolean | Indicates whether the event was confirmed. | null |
ConditionClassId | NodeId | null | |
ConditionClassName | String | null | |
ConditionName | String | The name of the condition if the event is of ConditionType | null |
ConditionSubClassId | NodeId | null | |
ConditionSubClassName | String | null | |
Comment | String | Comment attached to the event | null |
Quality | StatusCode | null | |
EventTypeName | String | The name of the event type this event belongs to | null |
QualityText | String | The quality represented as text | null |
WriteEventHistoryRequest
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
Updates | Array of EventHistoryUpdate | The connection info. |
EventHistoryUpdate
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | TODO | null |
PerformInsertReplace | PerformUpdateType | TODO | null |
Fields | Array of String | The fields to write | null |
WhereClause | SimpleWhereClause | The where clause | null |
Events | Array of EventMessage | The events to write | null |
WriteEventHistoryResponse
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no values were read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
HistoryUpdateResults | Array of HistoryUpdateResult | The results of the write operation. |
ReadEventHistoryExtendedRequest
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
StartTime | DateTime | The start time of the query | |
EndTime | DateTime | The end time of the query | |
Filter | EventFilter | The filter of the query. Decides which fields are returned, and the condition for returning an event. | |
ReadValueIds | Array of HistoryReadValueId | The nodes to read events history for | |
Limit | Limit | Limit the number of events returned from the request |
ReadEventHistoryExtendedResponse
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no values were read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
EventsResult | Array of HistoryEventExtendedResult | The result of the read operation |
HistoryEventExtendedResult
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | The node id of the Request . | |
StatusCode | StatusCode | The status of the query for this node. | |
HistoryEvents | Array of HistoryEventFieldList | An array of events |
HistoryEventFieldList
Members | Data type | Description | Default value |
---|---|---|---|
EventFields | Array of Variant | The values of the event. The index of the collection corresponds to the index of the select clause in the query. |
WriteEventHistoryExtendedRequest
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
UpdateEventDetails | Array of UpdateEventDetails | The events to write |
WriteEventHistoryExtendedResponse
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no values were read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
HistoryUpdateResults | Array of HistoryUpdateResult | The results of the write operation. |
EventFieldDefinition
Represents a predefined event field.
Members | Data type | Description | Default value |
---|---|---|---|
Name | String | The name of the event field. | |
EventTypeId | NodeId | The node id of the event type this field belongs to. | |
BrowsePath | String | The browse path of the field. | |
AttributeId | UInt32 | The attribute id of the event field. |
GetEventTypesRequest
Used when getting event types.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
BaseEventType | NodeId | The event type to get the inherited event types from. | null means the BaseEventType (Node Id: 2041). |
Recursive | Boolean | Gets all inherited event types recursively. | True. |
IncludeBaseEventTypeInResponse | Boolean | Gets event type information of BaseEventType. | True. |
GetEventTypesResponse
The response when getting event types.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if no values were read. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
EventTypes | Array of EventType | Contains the event types |
EventType
Members | Data type | Description | Default value |
---|---|---|---|
BrowseName | QualifiedName | The qualified name of the event type. | |
DisplayName | String | The display name of the event type. | |
NodeId | NodeId | The node id of the event type. |
AddCommentRequest
This is used when adding a comment to an event.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
ObjectId | NodeId | null | |
EventId | String | The id of the event. See EventMessage | null |
Message | LocalizedText | The comment | null |
AddCommentResponse
The response when adding a comment.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | True if operation was successful. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
StatusCode | StatusCode | Contains status code of the add comment operation. |
ConfirmRequest
This is used when confirming an event.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
ObjectId | NodeId | null | |
EventId | String | The id of the event. See EventMessage | null |
Message | LocalizedText | The comment | null |
ConfirmResponse
The response when confirming an event.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | True if operation was successful. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
StatusCode | StatusCode | Contains status code of the confirm operation. |
AcknowledgeRequest
This is used when acknowledging an event.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
ObjectId | NodeId | null | |
EventId | String | The id of the event. See EventMessage | null |
Message | LocalizedText | The comment | null |
AcknowledgeResponse
The response when acknowledging an event.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | True if operation was successful. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
StatusCode | StatusCode | Contains status code of the acknowledge operation. |
CreateEventSubscriptionRequest
This is used when creating a subscription for events.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
SourceNodeId | NodeId | The id of the node from where the events must occur. This includes nodes "below" this node in the hierarchy. | |
DisplayName | String | null | |
PublishingInterval | Int32 | This interval defines the cyclic rate that the Subscription is being requested to return Notifications to the Client. This interval is expressed in milliseconds. | 100 |
KeepAliveCount | UInt32 | Requested lifetime count. The lifetime count shall be a minimum of three times the keep keep-alive count. When the publishing timer has expired this number of times without a Publish request being available to send a NotificationMessage, then the Subscription shall be deleted by the Server. | 100 |
LifetimeCount | UInt32 | Requested maximum keep-alive count. When the publishing timer has expired this number of times without requiring any NotificationMessage to be sent, the Subscription sends a keep-alive Message to the Client. | 100 |
MaxNotificationsPerPublish | UInt32 | The maximum number of notifications that the Client wishes to receive in a single Publish response. A value of zero indicates that there is no limit. | 1000 |
Fields | Array of String | The fields to be returned when an event occurs | |
WhereClause | SimpleWhereClause | The condition that must be met for an event to be returned. |
CreateEventSubscriptionResponse
The response when creating an event.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | True if subscription was created. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
SubscriptionId | String | If success this string contains the subscription id. |
EventsChangedResponse
The response when an event occurs.
Members | Data type | Description | Default value |
---|---|---|---|
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
SubscriptionId | String | The id of the subscription. | |
Events | Array of EventMessage | The events. |
CloseEventSubscriptionRequest
This is used when closing a subscription for events.
Members | Data type | Description | Default value |
---|---|---|---|
Connection | Connection | The connection info. | |
SubscriptionId | String | The id of the subscription to close. |
CloseEventSubscriptionResponse
The response when closing an event subscription.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | True if subscription was closed successfully. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
SubscriptionId | String | The id of the subscription. |
CreateDataValueSubscriptionRequest
This is used when creating a data value subscription
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
DisplayName | String | ||
PublishingInterval | Int32 | This interval defines the cyclic rate that the Subscription is being requested to return Notifications to the Client. This interval is expressed in milliseconds. | |
KeepAliveCount | UInt32 | Requested lifetime count. The lifetime count shall be a minimum of three times the keep keep-alive count. When the publishing timer has expired this number of times without a Publish request being available to send a NotificationMessage, then the Subscription shall be deleted by the Server. | |
LifetimeCount | UInt32 | Requested maximum keep-alive count. When the publishing timer has expired this number of times without requiring any NotificationMessage to be sent, the Subscription sends a keep-alive Message to the Client. | |
MaxNotificationsPerPublish | UInt32 | The maximum number of notifications that the Client wishes to receive in a single Publish response. A value of zero indicates that there is no limit. | |
Nodes | Array of DataValueMonitoredItem | The nodes to subscribe to |
DataValueMonitoredItem
This data type contains information regarding subscription of an item. The ClientHandle must set to a unique string for each node.
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | The id of the node to subscribe to. | |
IndexRange | string | null | |
SamplingInterval | Int32 | null | |
QueueSize | UInt32 | null | |
DiscardOldest | Boolean | null | |
RelativePath | String | null | |
DataChangeFilter | DataChangeFilter | null | |
ClientHandle | string | Id representing this node. |
DataChangeFilter
This filter decides when a data value is deemed to have changed.
Members | Data type | Description | Default value |
---|---|---|---|
Trigger | Int32 | Decides when to trigger an data value changed event. See DataChangeTrigger | |
DeadbandType | UInt32 | Decides which kind of dead band check to use. See DeadbandType | |
DeadbandValue | Double | The dead band value. |
CreateDataValueSubscriptionResponse
The response when querying for namespaces.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | True if subscription was created successfully. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
SubscriptionId | String | If success: the subscription id. |
DataValuesChangedResponse
When data values have changed this is sent to the subscriber.
Members | Data type | Description | Default value |
---|---|---|---|
ServerNamespaces | Array of String | Contains the namespaces on the server. | |
SubscriptionId | String | The subscription id. | |
Values | Array of NodeIdDataValue | The subscribed values which have changed. |
NodeIdDataValue
Represents a change value. The ClientHandle corresponds to the ClientHandle in DataValueMonitoredItem.
Members | Data type | Description | Default value |
---|---|---|---|
ClientHandle | string | The handle given in DataValueMonitoredItem. | |
Value | Variant | The actual data value | |
StatusCode | StatusCode | The status code | |
SourceTimestamp | DateTime | ||
SourcePicoseconds | Numeric | 0 | |
ServerTimestamp | DateTime | ||
ServerPicoseconds | Numeric | 0 |
CloseDataValueSubscriptionRequest
This is used when a data value subscription shall be closed.
Members | Data type | Description | Default value |
---|---|---|---|
Connection | Connection | The connection info. | |
SubscriptionId | String | The subscription id. |
CloseDataValueSubscriptionResponse
Returend when data value subscription has been called.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | True if closed successfully. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | |
SubscriptionId | String | The subscription id. |
StartDataValueSubscriptionResponse
Returned when data value subscription has been started.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | True if closed successfully. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. |
NamespacesRequest
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. |
NamespaceResponse
The response when querying for namespaces.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | True if namespaces were read successfully. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
Namespaces | Array of String | The namespaces in the OPC UA server. |
BrowseRequest
This is used when browsing for nodes.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
View | ViewDescription | The view to browse. Is usually null. | null |
NodeToBrowse | NodeId | The id of the node to browse. | |
BrowseDirection | Int32 | The direction to browse. See BrowseDirection | |
ReferenceTypeId | NodeId | The reference types to follow. | |
IncludeSubtypes | Boolean | Include sub types of the specified ReferenceTypeId. | |
NodeClassMask | UInt32 | A mask indicating what kind of nodes to browse for. The node classes can be OR'ed' |
BrowseMultiRequest
This is used when browsing for nodes.
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
View | ViewDescription | The view to browse. Is usually null. | null |
Nodes | Array of BrowseNodes | The nodes to browse. |
BrowseNodes
Members | Data type | Description | Default value |
---|---|---|---|
NodeToBrowse | NodeId | The id of the node to browse. | |
BrowseDirection | Int32 | The direction to browse. See BrowseDirection | |
ReferenceTypeId | NodeId | The reference types to follow. | |
IncludeSubtypes | Boolean | Include sub types of the specified ReferenceTypeId. | |
NodeClassMask | UInt32 | A mask indicating what kind of nodes to browse for. The node classes can be OR'ed' |
BrowseResponse
The response after a Browse, BrowseNext or GetChildren call.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if browse was unsuccesful. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
BrowseResult | BrowseResult | The result of a browse call |
BrowseResult
Members | Data type | Description | Default value |
---|---|---|---|
References | Array of ReferenceDescription | The references found. | |
StatusCode | StatusCode | The status code of the browse. |
MultiBrowseResponse
The response after a BrowseMulti, BrowsePropertiesMulti call.
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if browse was unsuccesful. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
BrowseResults | Array of BrowseResult | The result of a browse call |
ChildrenRequest
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
Parent | NodeId | The parent for which we want to browse for children. |
BrowsePropertiesRequest
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
NodeId | NodeId | The node for which we want to browse for properties. |
BrowsePropertiesMultiRequest
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
NodeIds | Array of NodeId | The nodes for which we want to browse for properties. |
TranslateBrowsePathsRequest
Members | Data type | Description | Default value |
---|---|---|---|
ClientNamespaces | Array of String | Contains the namespaces the client uses. | null |
Connection | Connection | The connection info. | |
BrowsePaths | Array of QualifiedNamePath | The browse paths to find node ids for. |
QualifiedNamePath
Members | Data type | Description | Default value |
---|---|---|---|
StartingNode | NodeId | The node id of the starting node of the relative path. | null |
RelativePath | Array of QualifiedName | The relative path described by browse names. |
TranslateBrowsePathsResponse
Members | Data type | Description | Default value |
---|---|---|---|
Success | Boolean | False if browse was unsuccesful. | |
ErrorMessage | String | Only present if Success is false, and contains error message. | |
ErrorCode | Int32 | Only present if Success is false, and contains the error code. | |
ServerNamespaces | Array of String | Contains the namespaces on the server. | null if the corresponding request's' ClientNamespaces was null |
BrowsePathResults | Array of BrowsePathResult | Contains the node ids of the browse path request |
BrowsePathResult
Members | Data type | Description | Default value |
---|---|---|---|
StatusCode | StatusCode | Indicating whether the request was successful | |
Targets | Array of BrowsePathTarget | The targets of the browse paths. |
BrowsePathTarget
Members | Data type | Description | Default value |
---|---|---|---|
TargetId | ExpandedNodeId | The node id of the target | |
RemainingPathIndex | UInt32 | The index of the first unprocessed element in the RelativePath. This value shall be equal to the maximum value of Index data type if all elements were processed . |
EventFilter
Members | Data type | Description | Default value |
---|---|---|---|
SelectClauses | Array of SimpleAttributeOperand | Fields to be selected | |
WhereClause | ContentFilter | The condition an event must meet to be returned in a query. |
SimpleAttributeOperand
Members | Data type | Description | Default value |
---|---|---|---|
TypeDefinitionId | NodeId | The event type id. | |
BrowsePath | Array of QualifiedName | The browsepath for the field. | |
AttributeId | UInt32 | The attribute id of value of the field. | |
IndexRange | string | The index range of the value. | null |
ContentFilter
From the OPC Foundation's OPC UA specification:
The ContentFilter structure defines a collection of elements that define filtering criteria. Each element in the collection describes an operator and an array of operands to be used by the operator. The operators that can be used in a ContentFilter are described in FilterOperator. The filter is evaluated by evaluating the first entry in the element array starting with the first operand in the operand array. The operands of an element may contain References to sub-elements resulting in the evaluation continuing to the referenced elements in the element array. The evaluation shall not introduce loops. For example evaluation starting from element A shall never be able to return to element A. However there may be more than one path leading to another element B.If an element cannot be traced back to the starting element it is ignored. Extra operands for any operator will result in an error.
Members | Data type | Description | Default value |
---|---|---|---|
Elements | Array of ContentFilterElement | An array of content filter elements making up the where clause. |
ContentFilterElement
Members | Data type | Description | Default value |
---|---|---|---|
FilterOperator | FilterOperator | The filter operator. | |
FilterOperands | Array of ExtensionObject | The operands in the filter expression. |
OPC UA Data types
ByteString
ByteString is a sequence of bytes.
A ByteString is represented by a base64 encoded string in JavaScript.
XmlElement
Represents an XML element.
Not supported
NodeId
The NodeId data type represents an OPC UA Node.
Members | Data type | Description | Default value |
---|---|---|---|
Id | Numeric, String, Guid, Opaque | The id of the node | |
IdType | UInt16 | The id type of the node. Numeric = 0, String = 1, Guid = 2, Opaque = 3 | 0 |
Namespace | UInt16 | The namspace index of the namespace the node id belongs to | 0 |
JSON Examples
Below are listed some JSON examples and the corresponding values.
IdType | Id | Namespace | Json |
---|---|---|---|
0 | 45345 | 0 | {"Id":45345} |
1 | "idxyz" | 0 | {"IdType":1,"Id":"idxyz"} |
2 | "f114f6cf-31e0-43c8-9c22-399570312496" | 0 | {"IdType":2,"Id":"f114f6cf-31e0-43c8-9c22-399570312496"} |
3 | "IB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgE=" | 0 | {"IdType":3,"Id":"IB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgE="} |
1 | "ixyz" | 3 | {"IdType":1,"Id":"idxyz","Namespace":3} |
ExpandedNodeId
A node id that stores the namespace URI instead of the namespace index.
TODO: Add
StatusCode
A StatusCode in OPC UA is numerical value that is used to report the outcome of an operation performed by an OPC UA Server. The StatusCode is a 32-bit unsigned integer. The top 16 bits represent the numeric value of the code that shall be used for detecting specific errors or conditions. The bottom 16 bits are bit flags that contain additional information but do not affect the meaning of the StatusCode.
See Status codes for possible status codes.
Members | Data type | Description | Default value |
---|---|---|---|
Code | UInt32 | The status code | |
Symbol | String | The textual representation |
JSON Examples
Code | Json |
---|---|
0 | {} |
2147483648 | {"Code":2147483648,"Symbol":"Bad"} |
QualifiedName
A string qualified with a namespace.
Members | Data type | Description | Default value |
---|---|---|---|
Name | String | The text portion of the QualifiedName | |
Uri | UInt16 | Index that identifies the namespace that defines the name. | 0 |
JSON Examples
Name | Uri | Json |
---|---|---|
"Valve1" | 0 | {"Name":"Valve1"} |
"Valve2" | 4 | {"Name":"Valve2","Uri":4} |
LocalizedText
A localized text string with a locale identifier
Members | Data type | Description | Default value |
---|---|---|---|
Text | String | The text | |
Locale | String | The locale for the localized text. | "" |
JSON Examples
Text | Locale | Json |
---|---|---|
"mytext" | {"Text":"mytext"} | |
"Valve2" | "nb-NO" | {"Text":"mytext","Locale":"nb-NO"} |
ExtensionObject
An opaque object with a syntax that may be unknown to the receiver Not supported
DiagnosticInfo
A diagnostic information associated with a result code
Members | Data type | Description | Default value |
---|---|---|---|
SymbolicId | Int32 | The index of the symbolic id in the string table. | |
NamespaceUri | Int32 | The index of the namespace uri in the string table. | "" |
Locale | Int32 | The index of the locale associated with the localized text. | "" |
LocalizedText | Int32 | The index of the localized text in the string table. | "" |
AdditionalInfo | String | The additional debugging or trace information. | "" |
InnerStatusCode | StatusCode | The status code returned from an underlying system. | "" |
InnerDiagnosticInfo | DiagnosticInfo | The diagnostic info returned from a underlying system. | "" |
Limit
The Limit data type defines the structure to limit the request to a certain number of values.
Members | Data type | Description | Default value |
---|---|---|---|
StartIndex | Int32 | The index from where to return elements | |
NumRecords | UInt16 | THe number of elements to return |
ReadValueId
The ReadValueId data type is used when reading attributes.
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | The node id to read | |
AttributeId | UInt32 | The id of the attribute to read | |
IndexRange | String | null |
JSON Examples
{"NodeId":{"IdType":1,"Id":"idxyz","Namespace":3},"AttributeId":13}
Variant
The variant represents a value. The value can be of a number of data types. The variant will be serialized differently depending on the actual data type it represents.
The different data types which can be represented by a variant is listed below.
Id | Name | Description |
---|---|---|
0 | Null | An invalid or unspecified value. |
1 | Boolean | A boolean logic value (true or false) |
2 | SByte | An 8 bit signed integer value. |
3 | Byte | An 8 bit unsigned integer value. |
4 | Int16 | A 16 bit signed integer value |
5 | UInt16 | A 16 bit unsigned integer value |
6 | Int32 | A 32 bit signed integer value |
7 | UInt32 | A 32 bit unsigned integer value |
8 | Int64 | A 64 bit signed integer value |
9 | UInt64 | A 64 bit unsigned integer value |
10 | Float | An IEEE single precision (32 bit) floating point value |
11 | Double | An IEEE double precision (64 bit) floating point value |
12 | String | A sequence of Unicode characters |
13 | DateTime | An instance in time |
14 | Guid | A 128-bit globally unique identifier |
15 | ByteString | A sequence of bytes |
16 | XmlElement | An XML element |
17 | NodeId | An identifier for a node in the address space of a UA server |
18 | ExpandedNodeId | A node id that stores the namespace URI instead of the namespace index |
19 | StatusCode | A structured result code |
20 | QualifiedName | A string qualified with a namespace |
21 | LocalizedText | A localized text string with an locale identifier |
22 | ExtensionObject | An opaque object with a syntax that may be unknown to the receiver |
23 | DataValue | A data value with an associated quality and timestamp |
24 | Variant | Any of the other built-in types |
25 | DiagnosticInfo | A diagnostic information associated with a result code |
The JavaScript data structure will look like this:
Members | Data type | Description | Default value |
---|---|---|---|
Type | Byte | The Variant type (Id) | |
Body | Any | Depends on the Type |
JSON Examples
Type | Value | Json |
---|---|---|
Float (10) | 87.34 | {"Type":10,"Body":87.34} |
Guid (14) | f114f6cf-31e0-43c8-9c22-399570312496 | {"Type":14,"Body":"f114f6cf-31e0-43c8-9c22-399570312496"} |
DataValue
The data value is returned when reading an attribute.
Members | Data type | Description | Default value |
---|---|---|---|
Value | Variant | The actual data value | |
StatusCode | StatusCode | The status code | |
SourceTimestamp | DateTime | ||
SourcePicoseconds | Numeric | 0 | |
ServerTimestamp | DateTime | ||
ServerPicoseconds | Numeric | 0 |
WriteValue
The write value is used when writing an attribute.
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | The node id | |
AttributeId | Int32 | The attribute id | |
Value | DataValue | The value to be written |
JSON Examples
{"NodeId":{"IdType":1,"Id":"V|Worker.Write","Namespace":2},"AttributeId":13,"Value":{"Value":{"Type":8,"Body":"637709221331900544"}}}
ReferenceDescription
Members | Data type | Description | Default value |
---|---|---|---|
NodeId | NodeId | The node id of the reference | |
IsForward | Boolean | True if forward reference | |
Value | DataValue | The value to be written | |
ReferenceTypeId | NodeId | The node id of the reference type | |
BrowseName | QualifiedName | The browse name of the referenced node | |
DisplayName | LocalizedText | The display name of the referenced node | |
NodeClass | NodeClass | The node class of the referenced node | |
TypeDefinition | NodeId | The node id of the type definition of the reference node |
FilterOperator
The list below contains all the available filter operators used in SimpleExpression.
Note that not all of the operators make sense in a SimpleExpression.
Description | Value |
---|---|
Equals | 0 |
IsNull | 1 |
GreaterThan | 2 |
LessThan | 3 |
GreaterThanOrEqual | 4 |
LessThanOrEqual | 5 |
Like | 6 |
Not | 7 |
Between | 8 |
InList | 9 |
And | 10 |
Or | 11 |
Cast | 12 |
InView | 13 |
OfType | 14 |
RelatedTo | 15 |
BitwiseAnd | 16 |
BitwiseOr | 17 |
TimestampsToReturn
This int can be 4 values:
Description | Value |
---|---|
Return the source timestamp | 0 |
Return the Server timestamp | 1 |
Return both the source and Server timestamps | 2 |
Return neither timestamp | 3 |
BrowseDirection
This int can be 3 values:
Description | Value |
---|---|
Forward | 0 |
Inverse | 1 |
Both | 2 |
NodeClass
A node class is represented by an int:
Description | Value |
---|---|
Object | 1 |
Variable | 2 |
Method | 4 |
ObjectType | 8 |
VariableType | 16 |
ReferenceType | 32 |
DataType | 64 |
View | 128 |
DataChangeTrigger
Description | Value |
---|---|
Status | 0 |
StatusValue | 1 |
StatusValueTimestamp | 2 |
DeadbandType
Description | Value |
---|---|
None | 0 |
Absolute | 1 |
Percent | 2 |
PerformUpdateType
Description | Value |
---|---|
Insert | 1 |
Replace | 2 |
Update | 3 |
Remove | 4 |
Primitive Data types
The common data types are the building blocks of the more complex data types. The data types are mapped to their corresponding JavaScript data types.
String
A string is a sequence of characters.
String is native to JavaScript.
Boolean
A boolean logic value (true or false).
Boolean is native to JavaScript.
SByte
An 8 bit signed integer value.
SByte is represented as a Numeric in JavaScript.
Byte
An 8 bit unsigned integer value.
Byte is represented as a Numeric in JavaScript.
Int16
A 16 bit signed integer value.
Int16 is represented as a Numeric in JavaScript.
UInt16
A 16 bit unsigned integer value.
UInt16 is represented as a Numeric in JavaScript.
Int32
A 32 bit signed integer value.
Int32 is represented as a Numeric in JavaScript.
UInt32
A 32 bit unsigned integer value.
UInt32 is represented as a Numeric in JavaScript.
Int64
A 64 bit signed integer value.
Int64 is represented as a Numeric in JavaScript.
UInt64
A 64 bit unsigned integer value.
UInt64 is represented as a Numeric in JavaScript.
Float
An IEEE single precision (32 bit) floating point value.
Float is represented as a Numeric in JavaScript.
Double
An IEEE double precision (64 bit) floating point value.
Double is represented as a Numeric in JavaScript.
GUID
A GUID is a 128-bit globally unique identifier.
A GUID will be represented as a string in a JavaScript-object.
Example:
"f114f6cf-31e0-43c8-9c22-399570312496"
DateTime
A DateTime represents a point in time.
A DateTime will be represented as a string in a JavaScript-object.
Example:
2021-11-11T16:00:00Z
Attributes
These are the attrbiutes defined in OPC UA.
Attribute | Identifier |
---|---|
NodeId | 1 |
NodeClass | 2 |
BrowseName | 3 |
DisplayName | 4 |
Description | 5 |
WriteMask | 6 |
UserWriteMask | 7 |
IsAbstract | 8 |
Symmetric | 9 |
InverseName | 10 |
ContainsNoLoops | 11 |
EventNotifier | 12 |
Value | 13 |
DataType | 14 |
ValueRank | 15 |
ArrayDimensions | 16 |
AccessLevel | 17 |
UserAccessLevel | 18 |
MinimumSamplingInterval | 19 |
Historizing | 20 |
Executable | 21 |
UserExecutable | 22 |
Status codes
Name | Id | Description |
---|---|---|
Good | 0x00000000 | "The operation succeeded." |
Uncertain | 0x40000000 | "The operation was uncertain." |
Bad | 0x80000000 | "The operation failed." |
BadUnexpectedError | 0x80010000 | "An unexpected error occurred." |
BadInternalError | 0x80020000 | "An internal error occurred as a result of a programming or configuration error." |
BadOutOfMemory | 0x80030000 | "Not enough memory to complete the operation." |
BadResourceUnavailable | 0x80040000 | "An operating system resource is not available." |
BadCommunicationError | 0x80050000 | "A low level communication error occurred." |
BadEncodingError | 0x80060000 | "Encoding halted because of invalid data in the objects being serialized." |
BadDecodingError | 0x80070000 | "Decoding halted because of invalid data in the stream." |
BadEncodingLimitsExceeded | 0x80080000 | "The message encoding/decoding limits imposed by the stack have been exceeded." |
BadRequestTooLarge | 0x80B80000 | "The request message size exceeds limits set by the server." |
BadResponseTooLarge | 0x80B90000 | "The response message size exceeds limits set by the client." |
BadUnknownResponse | 0x80090000 | "An unrecognized response was received from the server." |
BadTimeout | 0x800A0000 | "The operation timed out." |
BadServiceUnsupported | 0x800B0000 | "The server does not support the requested service." |
BadShutdown | 0x800C0000 | "The operation was cancelled because the application is shutting down." |
BadServerNotConnected | 0x800D0000 | "The operation could not complete because the client is not connected to the server." |
BadServerHalted | 0x800E0000 | "The server has stopped and cannot process any requests." |
BadNothingToDo | 0x800F0000 | "There was nothing to do because the client passed a list of operations with no elements." |
BadTooManyOperations | 0x80100000 | "The request could not be processed because it specified too many operations." |
BadTooManyMonitoredItems | 0x80DB0000 | "The request could not be processed because there are too many monitored items in the subscription." |
BadDataTypeIdUnknown | 0x80110000 | "The extension object cannot be (de)serialized because the data type id is not recognized." |
BadCertificateInvalid | 0x80120000 | "The certificate provided as a parameter is not valid." |
BadSecurityChecksFailed | 0x80130000 | "An error occurred verifying security." |
BadCertificatePolicyCheckFailed | 0x81140000 | "The certificate does not meet the requirements of the security policy." |
BadCertificateTimeInvalid | 0x80140000 | "The certificate has expired or is not yet valid." |
BadCertificateIssuerTimeInvalid | 0x80150000 | "An issuer certificate has expired or is not yet valid." |
BadCertificateHostNameInvalid | 0x80160000 | "The HostName used to connect to a server does not match a HostName in the certificate." |
BadCertificateUriInvalid | 0x80170000 | "The URI specified in the ApplicationDescription does not match the URI in the certificate." |
BadCertificateUseNotAllowed | 0x80180000 | "The certificate may not be used for the requested operation." |
BadCertificateIssuerUseNotAllowed | 0x80190000 | "The issuer certificate may not be used for the requested operation." |
BadCertificateUntrusted | 0x801A0000 | "The certificate is not trusted." |
BadCertificateRevocationUnknown | 0x801B0000 | "It was not possible to determine if the certificate has been revoked." |
BadCertificateIssuerRevocationUnknown | 0x801C0000 | "It was not possible to determine if the issuer certificate has been revoked." |
BadCertificateRevoked | 0x801D0000 | "The certificate has been revoked." |
BadCertificateIssuerRevoked | 0x801E0000 | "The issuer certificate has been revoked." |
BadCertificateChainIncomplete | 0x810D0000 | "The certificate chain is incomplete." |
BadUserAccessDenied | 0x801F0000 | "User does not have permission to perform the requested operation." |
BadIdentityTokenInvalid | 0x80200000 | "The user identity token is not valid." |
BadIdentityTokenRejected | 0x80210000 | "The user identity token is valid but the server has rejected it." |
BadSecureChannelIdInvalid | 0x80220000 | "The specified secure channel is no longer valid." |
BadInvalidTimestamp | 0x80230000 | "The timestamp is outside the range allowed by the server." |
BadNonceInvalid | 0x80240000 | "The nonce does appear to be not a random value or it is not the correct length." |
BadSessionIdInvalid | 0x80250000 | "The session id is not valid." |
BadSessionClosed | 0x80260000 | "The session was closed by the client." |
BadSessionNotActivated | 0x80270000 | "The session cannot be used because ActivateSession has not been called." |
BadSubscriptionIdInvalid | 0x80280000 | "The subscription id is not valid." |
BadRequestHeaderInvalid | 0x802A0000 | "The header for the request is missing or invalid." |
BadTimestampsToReturnInvalid | 0x802B0000 | "The timestamps to return parameter is invalid." |
BadRequestCancelledByClient | 0x802C0000 | "The request was cancelled by the client." |
BadTooManyArguments | 0x80E50000 | "Too many arguments were provided." |
BadLicenseExpired | 0x810E0000 | "The server requires a license to operate in general or to perform a service or operation, but existing license is expired." |
BadLicenseLimitsExceeded | 0x810F0000 | "The server has limits on number of allowed operations / objects, based on installed licenses, and these limits where exceeded." |
BadLicenseNotAvailable | 0x81100000 | "The server does not have a license which is required to operate in general or to perform a service or operation." |
GoodSubscriptionTransferred | 0x002D0000 | "The subscription was transferred to another session." |
GoodCompletesAsynchronously | 0x002E0000 | "The processing will complete asynchronously." |
GoodOverload | 0x002F0000 | "Sampling has slowed down due to resource limitations." |
GoodClamped | 0x00300000 | "The value written was accepted but was clamped." |
BadNoCommunication | 0x80310000 | "Communication with the data source is defined, but not established, and there is no last known value available." |
BadWaitingForInitialData | 0x80320000 | "Waiting for the server to obtain values from the underlying data source." |
BadNodeIdInvalid | 0x80330000 | "The syntax of the node id is not valid." |
BadNodeIdUnknown | 0x80340000 | "The node id refers to a node that does not exist in the server address space." |
BadAttributeIdInvalid | 0x80350000 | "The attribute is not supported for the specified Node." |
BadIndexRangeInvalid | 0x80360000 | "The syntax of the index range parameter is invalid." |
BadIndexRangeNoData | 0x80370000 | "No data exists within the range of indexes specified." |
BadDataEncodingInvalid | 0x80380000 | "The data encoding is invalid." |
BadDataEncodingUnsupported | 0x80390000 | "The server does not support the requested data encoding for the node." |
BadNotReadable | 0x803A0000 | "The access level does not allow reading or subscribing to the Node." |
BadNotWritable | 0x803B0000 | "The access level does not allow writing to the Node." |
BadOutOfRange | 0x803C0000 | "The value was out of range." |
BadNotSupported | 0x803D0000 | "The requested operation is not supported." |
BadNotFound | 0x803E0000 | "A requested item was not found or a search operation ended without success." |
BadObjectDeleted | 0x803F0000 | "The object cannot be used because it has been deleted." |
BadNotImplemented | 0x80400000 | "Requested operation is not implemented." |
BadMonitoringModeInvalid | 0x80410000 | "The monitoring mode is invalid." |
BadMonitoredItemIdInvalid | 0x80420000 | "The monitoring item id does not refer to a valid monitored item." |
BadMonitoredItemFilterInvalid | 0x80430000 | "The monitored item filter parameter is not valid." |
BadMonitoredItemFilterUnsupported | 0x80440000 | "The server does not support the requested monitored item filter." |
BadFilterNotAllowed | 0x80450000 | "A monitoring filter cannot be used in combination with the attribute specified." |
BadStructureMissing | 0x80460000 | "A mandatory structured parameter was missing or null." |
BadEventFilterInvalid | 0x80470000 | "The event filter is not valid." |
BadContentFilterInvalid | 0x80480000 | "The content filter is not valid." |
BadFilterOperatorInvalid | 0x80C10000 | "An unrecognized operator was provided in a filter." |
BadFilterOperatorUnsupported | 0x80C20000 | "A valid operator was provided, but the server does not provide support for this filter operator." |
BadFilterOperandCountMismatch | 0x80C30000 | "The number of operands provided for the filter operator was less then expected for the operand provided." |
BadFilterOperandInvalid | 0x80490000 | "The operand used in a content filter is not valid." |
BadFilterElementInvalid | 0x80C40000 | "The referenced element is not a valid element in the content filter." |
BadFilterLiteralInvalid | 0x80C50000 | "The referenced literal is not a valid value." |
BadContinuationPointInvalid | 0x804A0000 | "The continuation point provide is longer valid." |
BadNoContinuationPoints | 0x804B0000 | "The operation could not be processed because all continuation points have been allocated." |
BadReferenceTypeIdInvalid | 0x804C0000 | "The reference type id does not refer to a valid reference type node." |
BadBrowseDirectionInvalid | 0x804D0000 | "The browse direction is not valid." |
BadNodeNotInView | 0x804E0000 | "The node is not part of the view." |
BadNumericOverflow | 0x81120000 | "The number was not accepted because of a numeric overflow." |
BadServerUriInvalid | 0x804F0000 | "The ServerUri is not a valid URI." |
BadServerNameMissing | 0x80500000 | "No ServerName was specified." |
BadDiscoveryUrlMissing | 0x80510000 | "No DiscoveryUrl was specified." |
BadSempahoreFileMissing | 0x80520000 | "The semaphore file specified by the client is not valid." |
BadRequestTypeInvalid | 0x80530000 | "The security token request type is not valid." |
BadSecurityModeRejected | 0x80540000 | "The security mode does not meet the requirements set by the server." |
BadSecurityPolicyRejected | 0x80550000 | "The security policy does not meet the requirements set by the server." |
BadTooManySessions | 0x80560000 | "The server has reached its maximum number of sessions." |
BadUserSignatureInvalid | 0x80570000 | "The user token signature is missing or invalid." |
BadApplicationSignatureInvalid | 0x80580000 | "The signature generated with the client certificate is missing or invalid." |
BadNoValidCertificates | 0x80590000 | "The client did not provide at least one software certificate that is valid and meets the profile requirements for the server." |
BadIdentityChangeNotSupported | 0x80C60000 | "The server does not support changing the user identity assigned to the session." |
BadRequestCancelledByRequest | 0x805A0000 | "The request was cancelled by the client with the Cancel service." |
BadParentNodeIdInvalid | 0x805B0000 | "The parent node id does not to refer to a valid node." |
BadReferenceNotAllowed | 0x805C0000 | "The reference could not be created because it violates constraints imposed by the data model." |
BadNodeIdRejected | 0x805D0000 | "The requested node id was reject because it was either invalid or server does not allow node ids to be specified by the client." |
BadNodeIdExists | 0x805E0000 | "The requested node id is already used by another node." |
BadNodeClassInvalid | 0x805F0000 | "The node class is not valid." |
BadBrowseNameInvalid | 0x80600000 | "The browse name is invalid." |
BadBrowseNameDuplicated | 0x80610000 | "The browse name is not unique among nodes that share the same relationship with the parent." |
BadNodeAttributesInvalid | 0x80620000 | "The node attributes are not valid for the node class." |
BadTypeDefinitionInvalid | 0x80630000 | "The type definition node id does not reference an appropriate type node." |
BadSourceNodeIdInvalid | 0x80640000 | "The source node id does not reference a valid node." |
BadTargetNodeIdInvalid | 0x80650000 | "The target node id does not reference a valid node." |
BadDuplicateReferenceNotAllowed | 0x80660000 | "The reference type between the nodes is already defined." |
BadInvalidSelfReference | 0x80670000 | "The server does not allow this type of self reference on this node." |
BadReferenceLocalOnly | 0x80680000 | "The reference type is not valid for a reference to a remote server." |
BadNoDeleteRights | 0x80690000 | "The server will not allow the node to be deleted." |
UncertainReferenceNotDeleted | 0x40BC0000 | "The server was not able to delete all target references." |
BadServerIndexInvalid | 0x806A0000 | "The server index is not valid." |
BadViewIdUnknown | 0x806B0000 | "The view id does not refer to a valid view node." |
BadViewTimestampInvalid | 0x80C90000 | "The view timestamp is not available or not supported." |
BadViewParameterMismatch | 0x80CA0000 | "The view parameters are not consistent with each other." |
BadViewVersionInvalid | 0x80CB0000 | "The view version is not available or not supported." |
UncertainNotAllNodesAvailable | 0x40C00000 | "The list of references may not be complete because the underlying system is not available." |
GoodResultsMayBeIncomplete | 0x00BA0000 | "The server should have followed a reference to a node in a remote server but did not. The result set may be incomplete." |
BadNotTypeDefinition | 0x80C80000 | "The provided Nodeid was not a type definition nodeid." |
UncertainReferenceOutOfServer | 0x406C0000 | "One of the references to follow in the relative path references to a node in the address space in another server." |
BadTooManyMatches | 0x806D0000 | "The requested operation has too many matches to return." |
BadQueryTooComplex | 0x806E0000 | "The requested operation requires too many resources in the server." |
BadNoMatch | 0x806F0000 | "The requested operation has no match to return." |
BadMaxAgeInvalid | 0x80700000 | "The max age parameter is invalid." |
BadSecurityModeInsufficient | 0x80E60000 | "The operation is not permitted over the current secure channel." |
BadHistoryOperationInvalid | 0x80710000 | "The history details parameter is not valid." |
BadHistoryOperationUnsupported | 0x80720000 | "The server does not support the requested operation." |
BadInvalidTimestampArgument | 0x80BD0000 | "The defined timestamp to return was invalid." |
BadWriteNotSupported | 0x80730000 | "The server does not support writing the combination of value |
BadTypeMismatch | 0x80740000 | "The value supplied for the attribute is not of the same type as the attribute's value." |
BadMethodInvalid | 0x80750000 | "The method id does not refer to a method for the specified object." |
BadArgumentsMissing | 0x80760000 | "The client did not specify all of the input arguments for the method." |
BadNotExecutable | 0x81110000 | "The executable attribute does not allow the execution of the method." |
BadTooManySubscriptions | 0x80770000 | "The server has reached its maximum number of subscriptions." |
BadTooManyPublishRequests | 0x80780000 | "The server has reached the maximum number of queued publish requests." |
BadNoSubscription | 0x80790000 | "There is no subscription available for this session." |
BadSequenceNumberUnknown | 0x807A0000 | "The sequence number is unknown to the server." |
GoodRetransmissionQueueNotSupported | 0x00DF0000 | "The Server does not support retransmission queue and acknowledgement of sequence numbers is not available." |
BadMessageNotAvailable | 0x807B0000 | "The requested notification message is no longer available." |
BadInsufficientClientProfile | 0x807C0000 | "The client of the current session does not support one or more Profiles that are necessary for the subscription." |
BadStateNotActive | 0x80BF0000 | "The sub-state machine is not currently active." |
BadAlreadyExists | 0x81150000 | "An equivalent rule already exists." |
BadTcpServerTooBusy | 0x807D0000 | "The server cannot process the request because it is too busy." |
BadTcpMessageTypeInvalid | 0x807E0000 | "The type of the message specified in the header invalid." |
BadTcpSecureChannelUnknown | 0x807F0000 | "The SecureChannelId and/or TokenId are not currently in use." |
BadTcpMessageTooLarge | 0x80800000 | "The size of the message chunk specified in the header is too large." |
BadTcpNotEnoughResources | 0x80810000 | "There are not enough resources to process the request." |
BadTcpInternalError | 0x80820000 | "An internal error occurred." |
BadTcpEndpointUrlInvalid | 0x80830000 | "The server does not recognize the QueryString specified." |
BadRequestInterrupted | 0x80840000 | "The request could not be sent because of a network interruption." |
BadRequestTimeout | 0x80850000 | "Timeout occurred while processing the request." |
BadSecureChannelClosed | 0x80860000 | "The secure channel has been closed." |
BadSecureChannelTokenUnknown | 0x80870000 | "The token has expired or is not recognized." |
BadSequenceNumberInvalid | 0x80880000 | "The sequence number is not valid." |
BadProtocolVersionUnsupported | 0x80BE0000 | "The applications do not have compatible protocol versions." |
BadConfigurationError | 0x80890000 | "There is a problem with the configuration that affects the usefulness of the value." |
BadNotConnected | 0x808A0000 | "The variable should receive its value from another variable, but has never been configured to do so." |
BadDeviceFailure | 0x808B0000 | "There has been a failure in the device/data source that generates the value that has affected the value." |
BadSensorFailure | 0x808C0000 | "There has been a failure in the sensor from which the value is derived by the device/data source." |
BadOutOfService | 0x808D0000 | "The source of the data is not operational." |
BadDeadbandFilterInvalid | 0x808E0000 | "The deadband filter is not valid." |
UncertainNoCommunicationLastUsableValue | 0x408F0000 | "Communication to the data source has failed. The variable value is the last value that had a good quality." |
UncertainLastUsableValue | 0x40900000 | "Whatever was updating this value has stopped doing so." |
UncertainSubstituteValue | 0x40910000 | "The value is an operational value that was manually overwritten." |
UncertainInitialValue | 0x40920000 | "The value is an initial value for a variable that normally receives its value from another variable." |
UncertainSensorNotAccurate | 0x40930000 | "The value is at one of the sensor limits." |
UncertainEngineeringUnitsExceeded | 0x40940000 | "The value is outside of the range of values defined for this parameter." |
UncertainSubNormal | 0x40950000 | "The value is derived from multiple sources and has less than the required number of Good sources." |
GoodLocalOverride | 0x00960000 | "The value has been overridden." |
BadRefreshInProgress | 0x80970000 | "This Condition refresh failed, a Condition refresh operation is already in progress." |
BadConditionAlreadyDisabled | 0x80980000 | "This condition has already been disabled." |
BadConditionAlreadyEnabled | 0x80CC0000 | "This condition has already been enabled." |
BadConditionDisabled | 0x80990000 | "Property not available, this condition is disabled." |
BadEventIdUnknown | 0x809A0000 | "The specified event id is not recognized." |
BadEventNotAcknowledgeable | 0x80BB0000 | "The event cannot be acknowledged." |
BadDialogNotActive | 0x80CD0000 | "The dialog condition is not active." |
BadDialogResponseInvalid | 0x80CE0000 | "The response is not valid for the dialog." |
BadConditionBranchAlreadyAcked | 0x80CF0000 | "The condition branch has already been acknowledged." |
BadConditionBranchAlreadyConfirmed | 0x80D00000 | "The condition branch has already been confirmed." |
BadConditionAlreadyShelved | 0x80D10000 | "The condition has already been shelved." |
BadConditionNotShelved | 0x80D20000 | "The condition is not currently shelved." |
BadShelvingTimeOutOfRange | 0x80D30000 | "The shelving time not within an acceptable range." |
BadNoData | 0x809B0000 | "No data exists for the requested time range or event filter." |
BadBoundNotFound | 0x80D70000 | "No data found to provide upper or lower bound value." |
BadBoundNotSupported | 0x80D80000 | "The server cannot retrieve a bound for the variable." |
BadDataLost | 0x809D0000 | "Data is missing due to collection started/stopped/lost." |
BadDataUnavailable | 0x809E0000 | "Expected data is unavailable for the requested time range due to an un-mounted volume, an off-line archive or tape |
BadEntryExists | 0x809F0000 | "The data or event was not successfully inserted because a matching entry exists." |
BadNoEntryExists | 0x80A00000 | "The data or event was not successfully updated because no matching entry exists." |
BadTimestampNotSupported | 0x80A10000 | "The client requested history using a timestamp format the server does not support (i.e requested ServerTimestamp when server only supports SourceTimestamp)." |
GoodEntryInserted | 0x00A20000 | "The data or event was successfully inserted into the historical database." |
GoodEntryReplaced | 0x00A30000 | "The data or event field was successfully replaced in the historical database." |
UncertainDataSubNormal | 0x40A40000 | "The value is derived from multiple values and has less than the required number of Good values." |
GoodNoData | 0x00A50000 | "No data exists for the requested time range or event filter." |
GoodMoreData | 0x00A60000 | "The data or event field was successfully replaced in the historical database." |
BadAggregateListMismatch | 0x80D40000 | "The requested number of Aggregates does not match the requested number of NodeIds." |
BadAggregateNotSupported | 0x80D50000 | "The requested Aggregate is not support by the server." |
BadAggregateInvalidInputs | 0x80D60000 | "The aggregate value could not be derived due to invalid data inputs." |
BadAggregateConfigurationRejected | 0x80DA0000 | "The aggregate configuration is not valid for specified node." |
GoodDataIgnored | 0x00D90000 | "The request specifies fields which are not valid for the EventType or cannot be saved by the historian." |
BadRequestNotAllowed | 0x80E40000 | "The request was rejected by the server because it did not meet the criteria set by the server." |
BadRequestNotComplete | 0x81130000 | "The request has not been processed by the server yet." |
BadTicketRequired | 0x811F0000 | "The device identity needs a ticket before it can be accepted." |
BadTicketInvalid | 0x81200000 | "The device identity needs a ticket before it can be accepted." |
GoodEdited | 0x00DC0000 | "The value does not come from the real source and has been edited by the server." |
GoodPostActionFailed | 0x00DD0000 | "There was an error in execution of these post-actions." |
UncertainDominantValueChanged | 0x40DE0000 | "The related EngineeringUnit has been changed but the Variable Value is still provided based on the previous unit." |
GoodDependentValueChanged | 0x00E00000 | "A dependent value has been changed but the change has not been applied to the device." |
BadDominantValueChanged | 0x80E10000 | "The related EngineeringUnit has been changed but this change has not been applied to the device. The Variable Value is still dependent on the previous unit but its status is currently Bad." |
UncertainDependentValueChanged | 0x40E20000 | "A dependent value has been changed but the change has not been applied to the device. The quality of the dominant variable is uncertain." |
BadDependentValueChanged | 0x80E30000 | "A dependent value has been changed but the change has not been applied to the device. The quality of the dominant variable is Bad." |
GoodEdited_DependentValueChanged | 0x01160000 | "It is delivered with a dominant Variable value when a dependent Variable has changed but the change has not been applied." |
GoodEdited_DominantValueChanged | 0x01170000 | "It is delivered with a dependent Variable value when a dominant Variable has changed but the change has not been applied." |
GoodEdited_DominantValueChanged_DependentValueChanged | 0x01180000 | "It is delivered with a dependent Variable value when a dominant or dependent Variable has changed but change has not been applied." |
BadEdited_OutOfRange | 0x81190000 | "It is delivered with a Variable value when Variable has changed but the value is not legal." |
BadInitialValue_OutOfRange | 0x811A0000 | "It is delivered with a Variable value when a source Variable has changed but the value is not legal." |
BadOutOfRange_DominantValueChanged | 0x811B0000 | "It is delivered with a dependent Variable value when a dominant Variable has changed and the value is not legal." |
BadEdited_OutOfRange_DominantValueChanged | 0x811C0000 | "It is delivered with a dependent Variable value when a dominant Variable has changed, the value is not legal and the change has not been applied." |
BadOutOfRange_DominantValueChanged_DependentValueChanged | 0x811D0000 | "It is delivered with a dependent Variable value when a dominant or dependent Variable has changed and the value is not legal." |
BadEdited_OutOfRange_DominantValueChanged_DependentValueChanged | 0x811E0000 | "It is delivered with a dependent Variable value when a dominant or dependent Variable has changed, the value is not legal and the change has not been applied." |
GoodCommunicationEvent | 0x00A70000 | "The communication layer has raised an event." |
GoodShutdownEvent | 0x00A80000 | "The system is shutting down." |
GoodCallAgain | 0x00A90000 | "The operation is not finished and needs to be called again." |
GoodNonCriticalTimeout | 0x00AA0000 | "A non-critical timeout occurred." |
BadInvalidArgument | 0x80AB0000 | "One or more arguments are invalid." |
BadConnectionRejected | 0x80AC0000 | "Could not establish a network connection to remote server." |
BadDisconnect | 0x80AD0000 | "The server has disconnected from the client." |
BadConnectionClosed | 0x80AE0000 | "The network connection has been closed." |
BadInvalidState | 0x80AF0000 | "The operation cannot be completed because the object is closed, uninitialized or in some other invalid state." |
BadEndOfStream | 0x80B00000 | "Cannot move beyond end of the stream." |
BadNoDataAvailable | 0x80B10000 | "No data is currently available for reading from a non-blocking stream." |
BadWaitingForResponse | 0x80B20000 | "The asynchronous operation is waiting for a response." |
BadOperationAbandoned | 0x80B30000 | "The asynchronous operation was abandoned by the caller." |
BadExpectedStreamToBlock | 0x80B40000 | "The stream did not return all data requested (possibly because it is a non-blocking stream)." |
BadWouldBlock | 0x80B50000 | "Non blocking behaviour is required and the operation would block." |
BadSyntaxError | 0x80B60000 | "A value had an invalid syntax." |
BadMaxConnectionsReached | 0x80B70000 | "The operation could not be finished because all available connections are in use." |
UncertainTransducerInManual | 0x42080000 | "The value may not be accurate because the transducer is in manual mode." |
UncertainSimulatedValue | 0x42090000 | "The value is simulated." |
UncertainSensorCalibration | 0x420A0000 | "The value may not be accurate due to a sensor calibration fault." |
UncertainConfigurationError | 0x420F0000 | "The value may not be accurate due to a configuration issue." |
GoodCascadeInitializationAcknowledged | 0x04010000 | "The value source supports cascade handshaking and the value has been Initialized based on an initialization request from a cascade secondary." |
GoodCascadeInitializationRequest | 0x04020000 | "The value source supports cascade handshaking and is requesting initialization of a cascade primary." |
GoodCascadeNotInvited | 0x04030000 | "The value source supports cascade handshaking, however, the source’s current state does not allow for cascade." |
GoodCascadeNotSelected | 0x04040000 | "The value source supports cascade handshaking, however, the source has not selected the corresponding cascade primary for use." |
GoodFaultStateActive | 0x04070000 | "There is a fault state condition active in the value source." |
GoodInitiateFaultState | 0x04080000 | "A fault state condition is being requested of the destination." |
GoodCascade | 0x04090000 | "The value is accurate, and the signal source supports cascade handshaking." |
OPC UA Values REST API release notes
Release 0.4.8
- Fix: Removed license check from Api.
Release 0.4.1
- Feature: Added Limit to ReadHistoryRawValuesRequest, ReadEventHistoryRequest, ReadEventHistoryExtendedRequest
Release 0.3.0
- Feature: Changed browse, historyrawread, historyprocessedread and eventhistoryread. These methods no longer expose continuation points to clients.