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

MethodCallback
ReadValues(string requestId, ReadValuesRequest[] request)OnReadValues(string requestId, ReadValuesResponse[] response)
WriteValues(string requestId, WriteValuesRequest[] request)OnWriteValues(string requestId, WriteValuesResponse[] response)
ReadDataTypes(string requestId, ReadDataTypesRequest request)OnReadDataTypes(string requestId, ReadDataTypesResponse response)
ReadAttributes(string requestId, ReadAttributesRequest[] request)OnReadAttributes(string requestId, ReadAttributesResponse[] response
WriteAttributes(string requestId, WriteAttributesRequest[] request)OnWriteAttributes(string requestId, WriteAttributesResponse[] response)
HistoryReadRaw(string requestId, ReadHistoryRawValuesRequest request)OnHistoryReadRaw(string requestId, ReadHistoryRawValuesResponse response)
HistoryReadProcessed(string requestId, ReadHistoryProcessedValuesRequest request)OnHistoryReadProcessed(string requestId, ReadHistoryProcessedValuesResponse response)
GetHistoricalAggregates(string requestId, HistoryAggregateRequest request)OnGetHistoricalAggregates(string requestId, HistoryAggregateResponse response)
HistoryWriteValues(string requestId, HistoryWriteRequest request)OnHistoryWriteValues(string requestId, HistoryWriteResponse response)
ReadEventsHistory(string requestId, ReadEventHistoryRequest request)OnReadEventsHistory(string requestId, ReadEventHistoryResponse response)
ReadEventsHistoryExtended(string requestId, ReadEventHistoryExtendedRequest request)OnReadEventsHistoryExtended(string requestId, ReadEventHistoryExtendedResponse response)
WriteEventsHistory(string requestId, WriteEventHistoryRequest request)OnWriteEventsHistory(string requestId, WriteEventHistoryResponse response)
WriteEventsHistoryExtended(string requestId, WriteEventHistoryExtendedRequest request)OnWriteEventsHistoryExtended(string requestId, WriteEventHistoryExtendedResponse response)
GetEventFields(string requestId)OnEventFieldsFetched(string requestId, EventFieldDefinition[] fields)
GetEventTypes(string requestId, GetEventTypesRequest request)OnGetEventTypes(string requestId, GetEventTypesResponse fields)
AddEventComments(string requestId, AddCommentRequest[] request )OnEventsCommented(string requestId, AddCommentResponse[] response)
ConfirmEvents(string requestId, ConfirmRequest[] request)On#stringEventsConfirmed(string requestId, ConfirmResponse[] response)
AcknowledgeEvents(string requestId, AcknowledgeRequest[] request)OnEventsAcknowledged(string requestId, AcknowledgeResponse[] response)
CreateEventSubscription(string requestId, CreateEventSubscriptionRequest request)OnEventSubscriptionCreated(string requestId, CreateEventSubscriptionResponse response)
OnEvents(EventsChangedResponse response)
CloseEventSubscription(string requestId, CloseEventSubscriptionRequest request)OnEventSubscriptionClosed(string requestId, CloseEventSubscriptionResponse response)
CreateDataValueSubscription(string requestId, CreateDataValueSubscriptionRequest request, bool startSubscription)OnDataValueSubscriptionCreated(string requestId, CreateDataValueSubscriptionResponse response)
OnDataValuesUpdate(DataValuesChangedResponse response)
CloseDataValueSubscription(string requestId, CloseDataValueSubscriptionRequest request)OnDataValueSubscriptionClosed(string requestId, CloseDataValueSubscriptionResponse response)
StartDataValueSubscription(string requestId, string subscriptionid)[OnDataValueSubscriptionStarted](string requestId, #ondatavaluesubscriptionstarted)(StartDataValueSubscriptionResponse response)
GetNamespaces(string requestId, NamespacesRequest request)OnNamespacesFetched(string requestId, NamespaceResponse response)
Browse(string requestId, BrowseRequest request)OnBrowse(string requestId, BrowseResponse resonse)
BrowseMulti(string requestId, BrowseMultiRequest request)OnBrowseMulti(string requestId, MultiBrowseResponse resonse)
BrowseChildren(string requestId, ChildrenRequest request)OnBrowseChildren(string requestId, BrowseResponse resonse)
BrowseProperties(string requestId, BrowsePropertiesRequest request)OnBrowseProperties(string requestId, BrowseResponse resonse)
BrowsePropertiesMulti(string requestId, BrowsePropertiesMultiRequest request)OnBrowsePropertiesMulti(string requestId, MultiBrowseResponse resonse)
TranslateBrowsePathsToNodeIds(string requestId, TranslateBrowsePathsRequest request)OnTranslateBrowsePathsToNodeIds(string requestId, TranslateBrowsePathsResponse resonse)

ReadValues

This method is called to read values (i.e. the value of attribute with id = 13) of one or more nodes.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestarray of ReadValuesRequestContains the nodes to read and the connection info

OnReadValues

This is the callback method for ReadValues.

ParameterTypeDescription
requestIdStringThe string which is passed in ReadValues
responsearray of ReadValuesResponseContains 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestarray of WriteValuesRequestContains the nodes and values to write and the connection info

OnWriteValues

This is the callback method for WriteValues.

ParameterTypeDescription
requestIdStringThe string which is passed in WriteValues
responsearray of WriteValuesResponseContains 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestReadDataTypesRequestContains the nodes to read and the connection info

OnReadDataTypes

This is the callback method for ReadDataTypes.

ParameterTypeDescription
requestIdStringThe string which is passed in ReadDataTypes
responsearray of ReadDataTypesResponseContains the datatypes of the nodes if successful.

ReadAttributes

This method is called to read attributes of one or more nodes.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestarray of ReadAttributesRequestContains the nodes and attribute ids to read and the connection info

OnReadAttributes

This is the callback method for ReadAttributes.

ParameterTypeDescription
requestIdStringThe string which is passed in ReadAttributes
responsearray of ReadAttributesResponseContains 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestarray of WriteAttributesRequestContains the nodes, attribute ids and values to write and the connection info

OnWriteAttributes

This is the callback method for WriteAttributes.

ParameterTypeDescription
requestIdStringThe string which is passed in WriteAttributes
responsearray of WriteAttributesResponseContains the status of the write operation.

HistoryReadRaw

This method reads raw history data from an OPC UA Server.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestReadHistoryRawValuesRequestContains the nodes, attribute ids to read and the connection info

OnOnHistoryReadRaw

This is the callback method for HistoryReadRaw.

ParameterTypeDescription
requestIdStringThe string which is passed in HistoryReadRaw
responseReadHistoryRawValuesResponseContains the result of the read operation.

HistoryReadProcessed

This method reads processed data from an OPC UA Server.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestReadHistoryProcessedValuesRequestContains the nodes, attribute ids and other arguments needed for reading processed data.

OnHistoryReadProcessed

This is the callback method for HistoryReadProcessed.

ParameterTypeDescription
requestIdStringThe string which is passed in HistoryReadProcessed
responseReadHistoryProcessedValuesResponseContains the result of the read operation.

GetHistoricalAggregates

This method gets the available historical aggregates from an OPC UA Server.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestHistoricalAggregateRequest

OnGetHistoricalAggregates

This is the callback method for GetHistoricalAggregates.

ParameterTypeDescription
requestIdStringThe string which is passed in GetHistoricalAggregates
responseHistoryAggregateResponseContains the historical aggregates for the OPC UA Server.

HistoryWriteValues

This method writes historical data to an OPC UA Server.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestHistoryWriteRequestContains the values to write.

OnHistoryWriteValues

This is the callback method for HistoryWriteValues.

ParameterTypeDescription
requestIdStringThe string which is passed in HistoryWriteValues
responseHistoryWriteResponseContains the result of the write operation.

ReadEventsHistory

This method reads the event history from an OPC UA Server.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestReadEventHistoryRequestContains the information needed for reading event history

OnReadEventsHistory

This is the callback method for ReadEventsHistory.

ParameterTypeDescription
requestIdStringThe string which is passed in ReadEventsHistory
responseReadEventHistoryResponseContains 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestReadEventHistoryExtendedRequestContains the information needed for reading event history

OnReadEventsHistoryExtended

This is the callback method for ReadEventsHistoryExtended.

ParameterTypeDescription
requestIdStringThe string which is passed in ReadEventsHistoryExtended
responseReadEventHistoryExtendedResponseContains the historical events.

WriteEventsHistory

This method writes event history to an OPC UA Server.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestWriteEventHistoryRequestContains the information needed for writing event history

OnWriteEventsHistory

This is the callback method for WriteEventsHistory.

ParameterTypeDescription
requestIdStringThe string which is passed in WriteEventsHistory
responseWriteEventHistoryResponseContains the result of the write operation.

WriteEventsHistoryExtended

This method writes event history to an OPC UA Server.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestWriteEventHistoryExtendedRequestContains the information needed for writing event history

OnWriteEventsHistoryExtended

This is the callback method for WriteEventsHistoryExtended.

ParameterTypeDescription
requestIdStringThe string which is passed in WriteEventsHistoryExtended
responseWriteEventHistoryExtendedResponseContains 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback

OnEventFieldsFetched

This is the callback method for GetEventFields.

ParameterTypeDescription
requestIdStringThe string which is passed in GetEventFields
responsearray of EventFieldDefinitionContains the predefined events which can be queried in ReadEventHistoryRequest.

GetEventTypes

This method gets Event types.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestGetEventTypesRequestContains the information needed getting event-types

OnGetEventTypes

This is the callback method for GetEventTypes.

ParameterTypeDescription
requestIdStringThe string which is passed in GetEventTypes
responseGetEventTypesResponseContains the event types.

AddEventComments

This method adds comment to an event.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestarray of AddCommentRequestContains the event id and comment

OnEventsCommented

This is the callback method for AddEventComments.

ParameterTypeDescription
requestIdStringThe string which is passed in AddEventComments
responsearray of AddCommentResponseThe response tells whether the AddComment was successful.

ConfirmEvents

This method confirms events.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestarray of ConfirmRequestContains the event id and comment

OnEventsConfirmed

This is the callback method for ConfirmEvents.

ParameterTypeDescription
requestIdStringThe string which is passed in ConfirmEvents
responsearray of ConfirmResponseThe response tells whether the Confirm was successful.

AcknowledgeEvents

This method acknowledges events.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestarray of AcknowledgeRequestContains the event id and comment

OnEventsAcknowledged

This is the callback method for AcknowledgeEvents.

ParameterTypeDescription
requestIdStringThe string which is passed in AcknowledgeEvents
responsearray of AcknowledgeResponseThe 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestCreateEventSubscriptionRequestContains the information needed to create event subscription

OnEventSubscriptionCreated

This is the callback method invoked after the CreateEventSubscription has been called.

ParameterTypeDescription
requestIdStringThe string which is passed in CreateEventSubscription.
responseCreateEventSubscriptionResponseThe response tells whether the subscription has been created successfully.

OnEvents

This is the callback method invoked when the events have occured for the subscription.

ParameterTypeDescription
responseEventsChangedResponseContains 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestCloseEventSubscriptionRequestContains the id of the subscription to be closed.

OnEventSubscriptionClosed

This is the callback method for CloseEventSubscription.

ParameterTypeDescription
requestIdStringThe string which is passed in CloseEventSubscription.
responseCloseEventSubscriptionResponseThe 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestCreateDataValueSubscriptionRequestContains the information needed to create data value subscription
startSubscriptionBooleanIf 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.

ParameterTypeDescription
requestIdStringThe string which is passed in CreateDataValueSubscription.
responseCreateDataValueSubscriptionResponseThe 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.

ParameterTypeDescription
responseDataValuesChangedResponseContains 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback
requestCloseDataValueSubscriptionRequestContains the id of the subscription to be closed.

OnDataValueSubscriptionClosed

This is the callback method for CloseDataValueSubscription.

ParameterTypeDescription
requestIdStringThe string which is passed in CloseDataValueSubscription.
responseCloseDataValueSubscriptionResponseThe response tells whether the subscription has been closed successfully.

StartDataValueSubscription

This method starts a subscription created by CreateDataValueSubscription.

ParameterTypeDescription
requestIdStringA string which is returned in the callback.
subscriptionidStringThe id of the subscription to be started.

OnDataValueSubscriptionStarted

This is the callback method for StartDataValueSubscription.

ParameterTypeDescription
requestIdStringThe string which is passed in StartDataValueSubscription.
responseStartDataValueSubscriptionResponseThe response tells whether the subscription has been started successfully.

GetNamespaces

This method gets the namespaces of a OPC UA Server.

ParameterTypeDescription
requestIdStringA string which is returned in the callback.
requestNamespacesRequest

OnNamespacesFetched

This is the callback method for GetNamespaces.

ParameterTypeDescription
requestIdStringThe string which is passed in GetNamespaces.
responseNamespaceResponseContains the namespaces

Browse

This method is used to browse the UA Address Space for nodes.

ParameterTypeDescription
requestIdStringA string which is returned in the callback.
requestBrowseRequestThe information needed to start a browse operation.

OnBrowse

This is the callback method for Browse.

ParameterTypeDescription
requestIdStringThe string which is passed in Browse.
responseBrowseResponseContains the references to nodes.

BrowseMulti

This method is used to browse with multiple source nodes the UA Address Space for nodes.

ParameterTypeDescription
requestIdStringA string which is returned in the callback.
requestBrowseMultiRequestBrowse request

OnBrowseMulti

This is the callback method for BrowseMulti.

ParameterTypeDescription
requestIdStringThe string which is passed in BrowseMulti.
responseMultiBrowseResponseContains 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback.
requestChildrenRequestThe information needed to start a browse children operation.

OnBrowseChildren

This is the callback method for BrowseChildren.

ParameterTypeDescription
requestIdStringThe string which is passed in BrowseChildren.
responseBrowseResponseContains 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback.
requestBrowsePropertiesRequestThe information needed to start a browse for properties operation.

OnBrowseProperties

This is the callback method for BrowseProperties.

ParameterTypeDescription
requestIdStringThe string which is passed in BrowseProperties.
responseBrowseResponseContains 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.

ParameterTypeDescription
requestIdStringA string which is returned in the callback.
requestBrowsePropertiesMultiRequestThe information needed to start a browse for properties operation.

OnBrowsePropertiesMulti

This is the callback method for BrowsePropertiesMulti.

ParameterTypeDescription
requestIdStringThe string which is passed in BrowsePropertiesMulti.
responseMultiBrowseResponseContains the references to nodes.

TranslateBrowsePathsToNodeIds

Translates browse paths to node ids.

ParameterTypeDescription
requestIdStringA string which is returned in the callback.
requestTranslateBrowsePathsRequestContains starting nodes and relative paths.

OnTranslateBrowsePathsToNodeIds

This is the callback method for TranslateBrowsePathsToNodeIds.

ParameterTypeDescription
requestIdStringThe string which is passed in TranslateBrowsePathsToNodeIds.
responseTranslateBrowsePathsResponseContains 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.

MembersData typeDescriptionDefault value
UrlStringThe address of the ua server. E.g. opc.tcp://10.100.12.43:7653
AuthenticationTypeUInt32AnonymousUnsecure = 1, AnonymousSecure = 2

ReadValuesRequest

Used when reading values (i.e. value of attributes with id = 13).

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
NodeIdsArray of NodeIdContains the node ids to read.

ReadValuesResponse

This the response when reading values of nodes.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no values were read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
ValuesArray of DataValueAn 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).

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
WriteValuesArray of WriteNodeValueContains the node ids and values to be written.

WriteNodeValue

Contains a NodeId and a DataValue. Is used when writing values.

MembersData typeDescriptionDefault value
NodeIdNodeIdThe id of the node to write to.
ValueDataValueContains the value to be written.

WriteValuesResponse

This the response when writing values to a node.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no values were written.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
ValuesArray of StatusCodeAn array status of the write operation. The order is the same as in the Request

ReadDataTypesRequest

Used when reading datatypes

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
NodeIdsArray of NodeIdContains the node ids to read.

ReadDataTypesResponse

This the response when reading data types of nodes.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no values were read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
ValuesArray of DataTypeInfoAn array containing the values of the node. The order is the same as in the Request

DataTypeInfo

MembersData typeDescriptionDefault value
StatusCodeStatusCodeStatus code of the read.
DataTypeIdNodeIdOnly present if StatusCode is good, and contains the node id of the data type.
BrowseNameQualifiedNameOnly 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.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
ReadValueIdsArray of ReadValueIdContains the node ids and the attributes to read.

ReadAttributesResponse

This the response when reading attributes.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no attributes were read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
ValuesArray of DataValueAn array containing the values of the attributes. The order is the same as in the Request

WriteAttributesRequest

Used when writing attributes.

See Attributes.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
WriteValuesArray of WriteValueContains the node id, the attributes and the values to be written.

WriteAttributesResponse

This the response when writing attributes.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no values were written.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
ValuesArray of StatusCodeAn array status of the write operation. The order is the same as in the Request

ReadHistoryRawValuesRequest

Used when reading raw history data.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
IsReadModifiedBooleanfalse
StartTimeDateTimeThe start time of the query
EndTimeDateTimeThe end time of the query
ReturnBoundsBooleanReturn bounds if truefalse
TimestampsToReturnInt32See TimestampsToReturn
ReadValueIdsArray of HistoryReadValueIdThe nodes to read history for
LimitLimitLimit the number of vales returned from the request

ReadHistoryRawValuesResponse

Response when reading raw history.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no values were read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
HistoryReadResultsArray of HistoryDataValueResultAn array of historical values. The array is in the same order as the Request

HistoryReadValueId

MembersData typeDescriptionDefault value
NodeIdNodeIdThe node id of the node to read history from.
IndexRangeStringThe index reange.null
DataEncodingQualifiedNameThe data encoding.null

HistoryDataValueResult

Represents a historical read result for one node id.

MembersData typeDescriptionDefault value
NodeIdNodeIdThe id of the node which was read.
StatusCodeStatusCodeContains the status code of the historical read operations.
DataValuesArray of DataValueThe historical values.

ReadHistoryProcessedValuesRequest

Used when reading processed history data.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
StartTimeDateTimeThe start time of the query
EndTimeDateTimeThe end time of the query
ProcessingIntervaldoubleInterval between returned Aggregate values. The value 0 indicates that there is no ProcessingInterval defined. The value is given in milliseconds.
AggregateTypeNodeIdThe NodeId of the HistoryAggregate object that is to be used when retrieving the processed history.
AggregateNameStringThe name of the aggregate. Only one of AggregateName and AggregateType should be set simultaneously. AttributeType has precedence
TimestampsToReturnInt32See TimestampsToReturn
ReadValueIdsArray of HistoryAggregateReadValueIdThe nodes to read history for

HistoryAggregateReadValueId

MembersData typeDescriptionDefault value
NodeIdNodeIdThe node id of the node to read history from.
IndexRangeStringThe index reange.null
DataEncodingQualifiedNameThe data encoding.null
AggregateTypeNodeIdThe NodeId of the HistoryAggregate object that is to be used when retrieving the processed history.
AggregateNameStringThe name of the aggregate. Only one of AggregateName and AggregateType should be set simultaneously. AttributeType has precedence

ReadHistoryProcessedValuesResponse

Response when reading processed history.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no values were read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
HistoryReadResultsArray of HistoryDataValueResultAn array of historical values. The array is in the same order as the Request

HistoryAggregateRequest

Used when getting aggregates from a server.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.

HistoryAggregateResponse

Response when reading history aggregates.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if aggregates could not be read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
AggregatesArray of HistoryAggregateAn array of aggregates available in the server.

HistoryAggregate

Represents one aggregate option.

MembersData typeDescriptionDefault value
NodeIdNodeIdThe id of the node representing the aggregate.
NameStringThe name of the aggregate.

HistoryWriteRequest

Used when writing historical data to an OPC UA Server.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
UpdateDataDetailsArray of UpdateDataDetailsThe connection info.

UpdateDataDetails

MembersData typeDescriptionDefault value
PerformInsertReplacePerformUpdateTypeDecides whether the data shall be inserted, updated or replaced.null
UpdateValuesArray of DataValueThe values to be written.

HistoryWriteResponse

Response when writing historical data.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if aggregates could not be read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
HistoryUpdateResultsArray of HistoryUpdateResultThe result of the write operation.

HistoryUpdateResult

MembersData typeDescriptionDefault value
StatusCodeStatusCodeThe result of the operation.
OperationResultsarray of StatusCode
DiagnosticInfosArray of DiagnosticInfo

ReadEventHistoryRequest

Used when reading event history.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
StartTimeDateTimeThe start time of the query
EndTimeDateTimeThe end time of the query
FieldsArray of StringThe event fields to include in the response
WhereClauseSimpleWhereClauseThe where clause used in the query
ReadValueIdsArray of HistoryReadValueIdThe nodes to read events history for
LimitLimitLimit the number of events returned from the request

SimpleWhereClause

Represents a where clause in an event history query.

MembersData typeDescriptionDefault value
EventTypeNodedIdNodeIdThe 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
AndWhereArray of SimpleExpressionA 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.

MembersData typeDescriptionDefault value
FieldStringThe 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
OpInt32The operator in the expression. See FilterOperator for options
ValueVariantThe value which the field is compared against.

ReadEventHistoryResponse

Response when reading event history.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no values were read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
EventsResultArray of HistoryEventResultAn array of events

HistoryEventResult

MembersData typeDescriptionDefault value
NodeIdNodeIdThe node id of the Request .
StatusCodeStatusCodeThe status of the query for this node.
HistoryEventsArray of EventMessageContains 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.

MembersData typeDescriptionDefault value
TimeDateTimeThe time of the event.null
MessageStringThe message of the event.null
SourceNameStringThe name of the source where the event occurred.null
EventTypeNodeIdThe node id of the event type of the event.null
SeverityInt32The severity of the event. The higher the value the more severe the event.null
SourceNodeNodeIdThe node id of the source where the event occurred.null
ReceiveTimeDateTimenull
ActiveTimeDateTimenull
BranchIdNodeIdnull
ClientUserIdStringThe id of the user attached with the event for instance through an acknowledgenull
ActiveBooleanIndicates whether the event was active.null
AcknowledgedBooleanIndicates whether the event was acknowleged.null
EnabledBooleanIndicates whether the event was enabled.null
ConfirmedBooleanIndicates whether the event was confirmed.null
ConditionClassIdNodeIdnull
ConditionClassNameStringnull
ConditionNameStringThe name of the condition if the event is of ConditionTypenull
ConditionSubClassIdNodeIdnull
ConditionSubClassNameStringnull
CommentStringComment attached to the eventnull
QualityStatusCodenull
EventTypeNameStringThe name of the event type this event belongs tonull
QualityTextStringThe quality represented as textnull

WriteEventHistoryRequest

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
UpdatesArray of EventHistoryUpdateThe connection info.

EventHistoryUpdate

MembersData typeDescriptionDefault value
NodeIdNodeIdTODOnull
PerformInsertReplacePerformUpdateTypeTODOnull
FieldsArray of StringThe fields to writenull
WhereClauseSimpleWhereClauseThe where clausenull
EventsArray of EventMessageThe events to writenull

WriteEventHistoryResponse

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no values were read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
HistoryUpdateResultsArray of HistoryUpdateResultThe results of the write operation.

ReadEventHistoryExtendedRequest

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
StartTimeDateTimeThe start time of the query
EndTimeDateTimeThe end time of the query
FilterEventFilterThe filter of the query. Decides which fields are returned, and the condition for returning an event.
ReadValueIdsArray of HistoryReadValueIdThe nodes to read events history for
LimitLimitLimit the number of events returned from the request

ReadEventHistoryExtendedResponse

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no values were read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
EventsResultArray of HistoryEventExtendedResultThe result of the read operation

HistoryEventExtendedResult

MembersData typeDescriptionDefault value
NodeIdNodeIdThe node id of the Request .
StatusCodeStatusCodeThe status of the query for this node.
HistoryEventsArray of HistoryEventFieldListAn array of events

HistoryEventFieldList

MembersData typeDescriptionDefault value
EventFieldsArray of VariantThe values of the event. The index of the collection corresponds to the index of the select clause in the query.

WriteEventHistoryExtendedRequest

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
UpdateEventDetailsArray of UpdateEventDetailsThe events to write

WriteEventHistoryExtendedResponse

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no values were read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
HistoryUpdateResultsArray of HistoryUpdateResultThe results of the write operation.

EventFieldDefinition

Represents a predefined event field.

MembersData typeDescriptionDefault value
NameStringThe name of the event field.
EventTypeIdNodeIdThe node id of the event type this field belongs to.
BrowsePathStringThe browse path of the field.
AttributeIdUInt32The attribute id of the event field.

GetEventTypesRequest

Used when getting event types.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
BaseEventTypeNodeIdThe event type to get the inherited event types from.null means the BaseEventType (Node Id: 2041).
RecursiveBooleanGets all inherited event types recursively.True.
IncludeBaseEventTypeInResponseBooleanGets event type information of BaseEventType.True.

GetEventTypesResponse

The response when getting event types.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if no values were read.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
EventTypesArray of EventTypeContains the event types

EventType

MembersData typeDescriptionDefault value
BrowseNameQualifiedNameThe qualified name of the event type.
DisplayNameStringThe display name of the event type.
NodeIdNodeIdThe node id of the event type.

AddCommentRequest

This is used when adding a comment to an event.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
ObjectIdNodeIdnull
EventIdStringThe id of the event. See EventMessagenull
MessageLocalizedTextThe commentnull

AddCommentResponse

The response when adding a comment.

MembersData typeDescriptionDefault value
SuccessBooleanTrue if operation was successful.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
StatusCodeStatusCodeContains status code of the add comment operation.

ConfirmRequest

This is used when confirming an event.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
ObjectIdNodeIdnull
EventIdStringThe id of the event. See EventMessagenull
MessageLocalizedTextThe commentnull

ConfirmResponse

The response when confirming an event.

MembersData typeDescriptionDefault value
SuccessBooleanTrue if operation was successful.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
StatusCodeStatusCodeContains status code of the confirm operation.

AcknowledgeRequest

This is used when acknowledging an event.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
ObjectIdNodeIdnull
EventIdStringThe id of the event. See EventMessagenull
MessageLocalizedTextThe commentnull

AcknowledgeResponse

The response when acknowledging an event.

MembersData typeDescriptionDefault value
SuccessBooleanTrue if operation was successful.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
StatusCodeStatusCodeContains status code of the acknowledge operation.

CreateEventSubscriptionRequest

This is used when creating a subscription for events.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
SourceNodeIdNodeIdThe id of the node from where the events must occur. This includes nodes "below" this node in the hierarchy.
DisplayNameStringnull
PublishingIntervalInt32This interval defines the cyclic rate that the Subscription is being requested to return Notifications to the Client. This interval is expressed in milliseconds.100
KeepAliveCountUInt32Requested 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
LifetimeCountUInt32Requested 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
MaxNotificationsPerPublishUInt32The 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
FieldsArray of StringThe fields to be returned when an event occurs
WhereClauseSimpleWhereClauseThe condition that must be met for an event to be returned.

CreateEventSubscriptionResponse

The response when creating an event.

MembersData typeDescriptionDefault value
SuccessBooleanTrue if subscription was created.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
SubscriptionIdStringIf success this string contains the subscription id.

EventsChangedResponse

The response when an event occurs.

MembersData typeDescriptionDefault value
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
SubscriptionIdStringThe id of the subscription.
EventsArray of EventMessageThe events.

CloseEventSubscriptionRequest

This is used when closing a subscription for events.

MembersData typeDescriptionDefault value
ConnectionConnectionThe connection info.
SubscriptionIdStringThe id of the subscription to close.

CloseEventSubscriptionResponse

The response when closing an event subscription.

MembersData typeDescriptionDefault value
SuccessBooleanTrue if subscription was closed successfully.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
SubscriptionIdStringThe id of the subscription.

CreateDataValueSubscriptionRequest

This is used when creating a data value subscription

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
DisplayNameString
PublishingIntervalInt32This interval defines the cyclic rate that the Subscription is being requested to return Notifications to the Client. This interval is expressed in milliseconds.
KeepAliveCountUInt32Requested 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.
LifetimeCountUInt32Requested 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.
MaxNotificationsPerPublishUInt32The 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.
NodesArray of DataValueMonitoredItemThe 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.

MembersData typeDescriptionDefault value
NodeIdNodeIdThe id of the node to subscribe to.
IndexRangestringnull
SamplingIntervalInt32null
QueueSizeUInt32null
DiscardOldestBooleannull
RelativePathStringnull
DataChangeFilterDataChangeFilternull
ClientHandlestringId representing this node.

DataChangeFilter

This filter decides when a data value is deemed to have changed.

MembersData typeDescriptionDefault value
TriggerInt32Decides when to trigger an data value changed event. See DataChangeTrigger
DeadbandTypeUInt32Decides which kind of dead band check to use. See DeadbandType
DeadbandValueDoubleThe dead band value.

CreateDataValueSubscriptionResponse

The response when querying for namespaces.

MembersData typeDescriptionDefault value
SuccessBooleanTrue if subscription was created successfully.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
SubscriptionIdStringIf success: the subscription id.

DataValuesChangedResponse

When data values have changed this is sent to the subscriber.

MembersData typeDescriptionDefault value
ServerNamespacesArray of StringContains the namespaces on the server.
SubscriptionIdStringThe subscription id.
ValuesArray of NodeIdDataValueThe subscribed values which have changed.

NodeIdDataValue

Represents a change value. The ClientHandle corresponds to the ClientHandle in DataValueMonitoredItem.

MembersData typeDescriptionDefault value
ClientHandlestringThe handle given in DataValueMonitoredItem.
ValueVariantThe actual data value
StatusCodeStatusCodeThe status code
SourceTimestampDateTime
SourcePicosecondsNumeric0
ServerTimestampDateTime
ServerPicosecondsNumeric0

CloseDataValueSubscriptionRequest

This is used when a data value subscription shall be closed.

MembersData typeDescriptionDefault value
ConnectionConnectionThe connection info.
SubscriptionIdStringThe subscription id.

CloseDataValueSubscriptionResponse

Returend when data value subscription has been called.

MembersData typeDescriptionDefault value
SuccessBooleanTrue if closed successfully.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.
SubscriptionIdStringThe subscription id.

StartDataValueSubscriptionResponse

Returned when data value subscription has been started.

MembersData typeDescriptionDefault value
SuccessBooleanTrue if closed successfully.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.

NamespacesRequest

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.

NamespaceResponse

The response when querying for namespaces.

MembersData typeDescriptionDefault value
SuccessBooleanTrue if namespaces were read successfully.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
NamespacesArray of StringThe namespaces in the OPC UA server.

BrowseRequest

This is used when browsing for nodes.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
ViewViewDescriptionThe view to browse. Is usually null.null
NodeToBrowseNodeIdThe id of the node to browse.
BrowseDirectionInt32The direction to browse. See BrowseDirection
ReferenceTypeIdNodeIdThe reference types to follow.
IncludeSubtypesBooleanInclude sub types of the specified ReferenceTypeId.
NodeClassMaskUInt32A mask indicating what kind of nodes to browse for. The node classes can be OR'ed'

BrowseMultiRequest

This is used when browsing for nodes.

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
ViewViewDescriptionThe view to browse. Is usually null.null
NodesArray of BrowseNodesThe nodes to browse.

BrowseNodes

MembersData typeDescriptionDefault value
NodeToBrowseNodeIdThe id of the node to browse.
BrowseDirectionInt32The direction to browse. See BrowseDirection
ReferenceTypeIdNodeIdThe reference types to follow.
IncludeSubtypesBooleanInclude sub types of the specified ReferenceTypeId.
NodeClassMaskUInt32A 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.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if browse was unsuccesful.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
BrowseResultBrowseResultThe result of a browse call

BrowseResult

MembersData typeDescriptionDefault value
ReferencesArray of ReferenceDescriptionThe references found.
StatusCodeStatusCodeThe status code of the browse.

MultiBrowseResponse

The response after a BrowseMulti, BrowsePropertiesMulti call.

MembersData typeDescriptionDefault value
SuccessBooleanFalse if browse was unsuccesful.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
BrowseResultsArray of BrowseResultThe result of a browse call

ChildrenRequest

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
ParentNodeIdThe parent for which we want to browse for children.

BrowsePropertiesRequest

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
NodeIdNodeIdThe node for which we want to browse for properties.

BrowsePropertiesMultiRequest

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
NodeIdsArray of NodeIdThe nodes for which we want to browse for properties.

TranslateBrowsePathsRequest

MembersData typeDescriptionDefault value
ClientNamespacesArray of StringContains the namespaces the client uses.null
ConnectionConnectionThe connection info.
BrowsePathsArray of QualifiedNamePathThe browse paths to find node ids for.

QualifiedNamePath

MembersData typeDescriptionDefault value
StartingNodeNodeIdThe node id of the starting node of the relative path.null
RelativePathArray of QualifiedNameThe relative path described by browse names.

TranslateBrowsePathsResponse

MembersData typeDescriptionDefault value
SuccessBooleanFalse if browse was unsuccesful.
ErrorMessageStringOnly present if Success is false, and contains error message.
ErrorCodeInt32Only present if Success is false, and contains the error code.
ServerNamespacesArray of StringContains the namespaces on the server.null if the corresponding request's' ClientNamespaces was null
BrowsePathResultsArray of BrowsePathResultContains the node ids of the browse path request

BrowsePathResult

MembersData typeDescriptionDefault value
StatusCodeStatusCodeIndicating whether the request was successful
TargetsArray of BrowsePathTargetThe targets of the browse paths.

BrowsePathTarget

MembersData typeDescriptionDefault value
TargetIdExpandedNodeIdThe node id of the target
RemainingPathIndexUInt32The 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

MembersData typeDescriptionDefault value
SelectClausesArray of SimpleAttributeOperandFields to be selected
WhereClauseContentFilterThe condition an event must meet to be returned in a query.

SimpleAttributeOperand

MembersData typeDescriptionDefault value
TypeDefinitionIdNodeIdThe event type id.
BrowsePathArray of QualifiedNameThe browsepath for the field.
AttributeIdUInt32The attribute id of value of the field.
IndexRangestringThe 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.

MembersData typeDescriptionDefault value
ElementsArray of ContentFilterElementAn array of content filter elements making up the where clause.

ContentFilterElement

MembersData typeDescriptionDefault value
FilterOperatorFilterOperatorThe filter operator.
FilterOperandsArray of ExtensionObjectThe 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.

MembersData typeDescriptionDefault value
IdNumeric, String, Guid, OpaqueThe id of the node
IdTypeUInt16The id type of the node. Numeric = 0, String = 1, Guid = 2, Opaque = 30
NamespaceUInt16The namspace index of the namespace the node id belongs to0

JSON Examples

Below are listed some JSON examples and the corresponding values.

IdTypeIdNamespaceJson
0453450{"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.

MembersData typeDescriptionDefault value
CodeUInt32The status code
SymbolStringThe textual representation

JSON Examples

CodeJson
0{}
2147483648{"Code":2147483648,"Symbol":"Bad"}

QualifiedName

A string qualified with a namespace.

MembersData typeDescriptionDefault value
NameStringThe text portion of the QualifiedName
UriUInt16Index that identifies the namespace that defines the name.0

JSON Examples

NameUriJson
"Valve1"0{"Name":"Valve1"}
"Valve2"4{"Name":"Valve2","Uri":4}

LocalizedText

A localized text string with a locale identifier

MembersData typeDescriptionDefault value
TextStringThe text
LocaleStringThe locale for the localized text.""

JSON Examples

TextLocaleJson
"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

MembersData typeDescriptionDefault value
SymbolicIdInt32The index of the symbolic id in the string table.
NamespaceUriInt32The index of the namespace uri in the string table.""
LocaleInt32The index of the locale associated with the localized text.""
LocalizedTextInt32The index of the localized text in the string table.""
AdditionalInfoStringThe additional debugging or trace information.""
InnerStatusCodeStatusCodeThe status code returned from an underlying system.""
InnerDiagnosticInfoDiagnosticInfoThe 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.

MembersData typeDescriptionDefault value
StartIndexInt32The index from where to return elements
NumRecordsUInt16THe number of elements to return

ReadValueId

The ReadValueId data type is used when reading attributes.

MembersData typeDescriptionDefault value
NodeIdNodeIdThe node id to read
AttributeIdUInt32The id of the attribute to read
IndexRangeStringnull

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.

IdNameDescription
0NullAn invalid or unspecified value.
1BooleanA boolean logic value (true or false)
2SByteAn 8 bit signed integer value.
3ByteAn 8 bit unsigned integer value.
4Int16A 16 bit signed integer value
5UInt16A 16 bit unsigned integer value
6Int32A 32 bit signed integer value
7UInt32A 32 bit unsigned integer value
8Int64A 64 bit signed integer value
9UInt64A 64 bit unsigned integer value
10FloatAn IEEE single precision (32 bit) floating point value
11DoubleAn IEEE double precision (64 bit) floating point value
12StringA sequence of Unicode characters
13DateTimeAn instance in time
14GuidA 128-bit globally unique identifier
15ByteStringA sequence of bytes
16XmlElementAn XML element
17NodeIdAn identifier for a node in the address space of a UA server
18ExpandedNodeIdA node id that stores the namespace URI instead of the namespace index
19StatusCodeA structured result code
20QualifiedNameA string qualified with a namespace
21LocalizedTextA localized text string with an locale identifier
22ExtensionObjectAn opaque object with a syntax that may be unknown to the receiver
23DataValueA data value with an associated quality and timestamp
24VariantAny of the other built-in types
25DiagnosticInfoA diagnostic information associated with a result code

The JavaScript data structure will look like this:

MembersData typeDescriptionDefault value
TypeByteThe Variant type (Id)
BodyAnyDepends on the Type

JSON Examples

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

MembersData typeDescriptionDefault value
ValueVariantThe actual data value
StatusCodeStatusCodeThe status code
SourceTimestampDateTime
SourcePicosecondsNumeric0
ServerTimestampDateTime
ServerPicosecondsNumeric0

WriteValue

The write value is used when writing an attribute.

MembersData typeDescriptionDefault value
NodeIdNodeIdThe node id
AttributeIdInt32The attribute id
ValueDataValueThe value to be written

JSON Examples

{"NodeId":{"IdType":1,"Id":"V|Worker.Write","Namespace":2},"AttributeId":13,"Value":{"Value":{"Type":8,"Body":"637709221331900544"}}}

ReferenceDescription

MembersData typeDescriptionDefault value
NodeIdNodeIdThe node id of the reference
IsForwardBooleanTrue if forward reference
ValueDataValueThe value to be written
ReferenceTypeIdNodeIdThe node id of the reference type
BrowseNameQualifiedNameThe browse name of the referenced node
DisplayNameLocalizedTextThe display name of the referenced node
NodeClassNodeClassThe node class of the referenced node
TypeDefinitionNodeIdThe 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.

DescriptionValue
Equals0
IsNull1
GreaterThan2
LessThan3
GreaterThanOrEqual4
LessThanOrEqual5
Like6
Not7
Between8
InList9
And10
Or11
Cast12
InView13
OfType14
RelatedTo15
BitwiseAnd16
BitwiseOr17

TimestampsToReturn

This int can be 4 values:

DescriptionValue
Return the source timestamp0
Return the Server timestamp1
Return both the source and Server timestamps2
Return neither timestamp3

BrowseDirection

This int can be 3 values:

DescriptionValue
Forward0
Inverse1
Both2

NodeClass

A node class is represented by an int:

DescriptionValue
Object1
Variable2
Method4
ObjectType8
VariableType16
ReferenceType32
DataType64
View128

DataChangeTrigger

DescriptionValue
Status0
StatusValue1
StatusValueTimestamp2

DeadbandType

DescriptionValue
None0
Absolute1
Percent2

PerformUpdateType

DescriptionValue
Insert1
Replace2
Update3
Remove4

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.

AttributeIdentifier
NodeId1
NodeClass2
BrowseName3
DisplayName4
Description5
WriteMask6
UserWriteMask7
IsAbstract8
Symmetric9
InverseName10
ContainsNoLoops11
EventNotifier12
Value13
DataType14
ValueRank15
ArrayDimensions16
AccessLevel17
UserAccessLevel18
MinimumSamplingInterval19
Historizing20
Executable21
UserExecutable22

Status codes

NameIdDescription
Good0x00000000"The operation succeeded."
Uncertain0x40000000"The operation was uncertain."
Bad0x80000000"The operation failed."
BadUnexpectedError0x80010000"An unexpected error occurred."
BadInternalError0x80020000"An internal error occurred as a result of a programming or configuration error."
BadOutOfMemory0x80030000"Not enough memory to complete the operation."
BadResourceUnavailable0x80040000"An operating system resource is not available."
BadCommunicationError0x80050000"A low level communication error occurred."
BadEncodingError0x80060000"Encoding halted because of invalid data in the objects being serialized."
BadDecodingError0x80070000"Decoding halted because of invalid data in the stream."
BadEncodingLimitsExceeded0x80080000"The message encoding/decoding limits imposed by the stack have been exceeded."
BadRequestTooLarge0x80B80000"The request message size exceeds limits set by the server."
BadResponseTooLarge0x80B90000"The response message size exceeds limits set by the client."
BadUnknownResponse0x80090000"An unrecognized response was received from the server."
BadTimeout0x800A0000"The operation timed out."
BadServiceUnsupported0x800B0000"The server does not support the requested service."
BadShutdown0x800C0000"The operation was cancelled because the application is shutting down."
BadServerNotConnected0x800D0000"The operation could not complete because the client is not connected to the server."
BadServerHalted0x800E0000"The server has stopped and cannot process any requests."
BadNothingToDo0x800F0000"There was nothing to do because the client passed a list of operations with no elements."
BadTooManyOperations0x80100000"The request could not be processed because it specified too many operations."
BadTooManyMonitoredItems0x80DB0000"The request could not be processed because there are too many monitored items in the subscription."
BadDataTypeIdUnknown0x80110000"The extension object cannot be (de)serialized because the data type id is not recognized."
BadCertificateInvalid0x80120000"The certificate provided as a parameter is not valid."
BadSecurityChecksFailed0x80130000"An error occurred verifying security."
BadCertificatePolicyCheckFailed0x81140000"The certificate does not meet the requirements of the security policy."
BadCertificateTimeInvalid0x80140000"The certificate has expired or is not yet valid."
BadCertificateIssuerTimeInvalid0x80150000"An issuer certificate has expired or is not yet valid."
BadCertificateHostNameInvalid0x80160000"The HostName used to connect to a server does not match a HostName in the certificate."
BadCertificateUriInvalid0x80170000"The URI specified in the ApplicationDescription does not match the URI in the certificate."
BadCertificateUseNotAllowed0x80180000"The certificate may not be used for the requested operation."
BadCertificateIssuerUseNotAllowed0x80190000"The issuer certificate may not be used for the requested operation."
BadCertificateUntrusted0x801A0000"The certificate is not trusted."
BadCertificateRevocationUnknown0x801B0000"It was not possible to determine if the certificate has been revoked."
BadCertificateIssuerRevocationUnknown0x801C0000"It was not possible to determine if the issuer certificate has been revoked."
BadCertificateRevoked0x801D0000"The certificate has been revoked."
BadCertificateIssuerRevoked0x801E0000"The issuer certificate has been revoked."
BadCertificateChainIncomplete0x810D0000"The certificate chain is incomplete."
BadUserAccessDenied0x801F0000"User does not have permission to perform the requested operation."
BadIdentityTokenInvalid0x80200000"The user identity token is not valid."
BadIdentityTokenRejected0x80210000"The user identity token is valid but the server has rejected it."
BadSecureChannelIdInvalid0x80220000"The specified secure channel is no longer valid."
BadInvalidTimestamp0x80230000"The timestamp is outside the range allowed by the server."
BadNonceInvalid0x80240000"The nonce does appear to be not a random value or it is not the correct length."
BadSessionIdInvalid0x80250000"The session id is not valid."
BadSessionClosed0x80260000"The session was closed by the client."
BadSessionNotActivated0x80270000"The session cannot be used because ActivateSession has not been called."
BadSubscriptionIdInvalid0x80280000"The subscription id is not valid."
BadRequestHeaderInvalid0x802A0000"The header for the request is missing or invalid."
BadTimestampsToReturnInvalid0x802B0000"The timestamps to return parameter is invalid."
BadRequestCancelledByClient0x802C0000"The request was cancelled by the client."
BadTooManyArguments0x80E50000"Too many arguments were provided."
BadLicenseExpired0x810E0000"The server requires a license to operate in general or to perform a service or operation, but existing license is expired."
BadLicenseLimitsExceeded0x810F0000"The server has limits on number of allowed operations / objects, based on installed licenses, and these limits where exceeded."
BadLicenseNotAvailable0x81100000"The server does not have a license which is required to operate in general or to perform a service or operation."
GoodSubscriptionTransferred0x002D0000"The subscription was transferred to another session."
GoodCompletesAsynchronously0x002E0000"The processing will complete asynchronously."
GoodOverload0x002F0000"Sampling has slowed down due to resource limitations."
GoodClamped0x00300000"The value written was accepted but was clamped."
BadNoCommunication0x80310000"Communication with the data source is defined, but not established, and there is no last known value available."
BadWaitingForInitialData0x80320000"Waiting for the server to obtain values from the underlying data source."
BadNodeIdInvalid0x80330000"The syntax of the node id is not valid."
BadNodeIdUnknown0x80340000"The node id refers to a node that does not exist in the server address space."
BadAttributeIdInvalid0x80350000"The attribute is not supported for the specified Node."
BadIndexRangeInvalid0x80360000"The syntax of the index range parameter is invalid."
BadIndexRangeNoData0x80370000"No data exists within the range of indexes specified."
BadDataEncodingInvalid0x80380000"The data encoding is invalid."
BadDataEncodingUnsupported0x80390000"The server does not support the requested data encoding for the node."
BadNotReadable0x803A0000"The access level does not allow reading or subscribing to the Node."
BadNotWritable0x803B0000"The access level does not allow writing to the Node."
BadOutOfRange0x803C0000"The value was out of range."
BadNotSupported0x803D0000"The requested operation is not supported."
BadNotFound0x803E0000"A requested item was not found or a search operation ended without success."
BadObjectDeleted0x803F0000"The object cannot be used because it has been deleted."
BadNotImplemented0x80400000"Requested operation is not implemented."
BadMonitoringModeInvalid0x80410000"The monitoring mode is invalid."
BadMonitoredItemIdInvalid0x80420000"The monitoring item id does not refer to a valid monitored item."
BadMonitoredItemFilterInvalid0x80430000"The monitored item filter parameter is not valid."
BadMonitoredItemFilterUnsupported0x80440000"The server does not support the requested monitored item filter."
BadFilterNotAllowed0x80450000"A monitoring filter cannot be used in combination with the attribute specified."
BadStructureMissing0x80460000"A mandatory structured parameter was missing or null."
BadEventFilterInvalid0x80470000"The event filter is not valid."
BadContentFilterInvalid0x80480000"The content filter is not valid."
BadFilterOperatorInvalid0x80C10000"An unrecognized operator was provided in a filter."
BadFilterOperatorUnsupported0x80C20000"A valid operator was provided, but the server does not provide support for this filter operator."
BadFilterOperandCountMismatch0x80C30000"The number of operands provided for the filter operator was less then expected for the operand provided."
BadFilterOperandInvalid0x80490000"The operand used in a content filter is not valid."
BadFilterElementInvalid0x80C40000"The referenced element is not a valid element in the content filter."
BadFilterLiteralInvalid0x80C50000"The referenced literal is not a valid value."
BadContinuationPointInvalid0x804A0000"The continuation point provide is longer valid."
BadNoContinuationPoints0x804B0000"The operation could not be processed because all continuation points have been allocated."
BadReferenceTypeIdInvalid0x804C0000"The reference type id does not refer to a valid reference type node."
BadBrowseDirectionInvalid0x804D0000"The browse direction is not valid."
BadNodeNotInView0x804E0000"The node is not part of the view."
BadNumericOverflow0x81120000"The number was not accepted because of a numeric overflow."
BadServerUriInvalid0x804F0000"The ServerUri is not a valid URI."
BadServerNameMissing0x80500000"No ServerName was specified."
BadDiscoveryUrlMissing0x80510000"No DiscoveryUrl was specified."
BadSempahoreFileMissing0x80520000"The semaphore file specified by the client is not valid."
BadRequestTypeInvalid0x80530000"The security token request type is not valid."
BadSecurityModeRejected0x80540000"The security mode does not meet the requirements set by the server."
BadSecurityPolicyRejected0x80550000"The security policy does not meet the requirements set by the server."
BadTooManySessions0x80560000"The server has reached its maximum number of sessions."
BadUserSignatureInvalid0x80570000"The user token signature is missing or invalid."
BadApplicationSignatureInvalid0x80580000"The signature generated with the client certificate is missing or invalid."
BadNoValidCertificates0x80590000"The client did not provide at least one software certificate that is valid and meets the profile requirements for the server."
BadIdentityChangeNotSupported0x80C60000"The server does not support changing the user identity assigned to the session."
BadRequestCancelledByRequest0x805A0000"The request was cancelled by the client with the Cancel service."
BadParentNodeIdInvalid0x805B0000"The parent node id does not to refer to a valid node."
BadReferenceNotAllowed0x805C0000"The reference could not be created because it violates constraints imposed by the data model."
BadNodeIdRejected0x805D0000"The requested node id was reject because it was either invalid or server does not allow node ids to be specified by the client."
BadNodeIdExists0x805E0000"The requested node id is already used by another node."
BadNodeClassInvalid0x805F0000"The node class is not valid."
BadBrowseNameInvalid0x80600000"The browse name is invalid."
BadBrowseNameDuplicated0x80610000"The browse name is not unique among nodes that share the same relationship with the parent."
BadNodeAttributesInvalid0x80620000"The node attributes are not valid for the node class."
BadTypeDefinitionInvalid0x80630000"The type definition node id does not reference an appropriate type node."
BadSourceNodeIdInvalid0x80640000"The source node id does not reference a valid node."
BadTargetNodeIdInvalid0x80650000"The target node id does not reference a valid node."
BadDuplicateReferenceNotAllowed0x80660000"The reference type between the nodes is already defined."
BadInvalidSelfReference0x80670000"The server does not allow this type of self reference on this node."
BadReferenceLocalOnly0x80680000"The reference type is not valid for a reference to a remote server."
BadNoDeleteRights0x80690000"The server will not allow the node to be deleted."
UncertainReferenceNotDeleted0x40BC0000"The server was not able to delete all target references."
BadServerIndexInvalid0x806A0000"The server index is not valid."
BadViewIdUnknown0x806B0000"The view id does not refer to a valid view node."
BadViewTimestampInvalid0x80C90000"The view timestamp is not available or not supported."
BadViewParameterMismatch0x80CA0000"The view parameters are not consistent with each other."
BadViewVersionInvalid0x80CB0000"The view version is not available or not supported."
UncertainNotAllNodesAvailable0x40C00000"The list of references may not be complete because the underlying system is not available."
GoodResultsMayBeIncomplete0x00BA0000"The server should have followed a reference to a node in a remote server but did not. The result set may be incomplete."
BadNotTypeDefinition0x80C80000"The provided Nodeid was not a type definition nodeid."
UncertainReferenceOutOfServer0x406C0000"One of the references to follow in the relative path references to a node in the address space in another server."
BadTooManyMatches0x806D0000"The requested operation has too many matches to return."
BadQueryTooComplex0x806E0000"The requested operation requires too many resources in the server."
BadNoMatch0x806F0000"The requested operation has no match to return."
BadMaxAgeInvalid0x80700000"The max age parameter is invalid."
BadSecurityModeInsufficient0x80E60000"The operation is not permitted over the current secure channel."
BadHistoryOperationInvalid0x80710000"The history details parameter is not valid."
BadHistoryOperationUnsupported0x80720000"The server does not support the requested operation."
BadInvalidTimestampArgument0x80BD0000"The defined timestamp to return was invalid."
BadWriteNotSupported0x80730000"The server does not support writing the combination of value
BadTypeMismatch0x80740000"The value supplied for the attribute is not of the same type as the attribute's value."
BadMethodInvalid0x80750000"The method id does not refer to a method for the specified object."
BadArgumentsMissing0x80760000"The client did not specify all of the input arguments for the method."
BadNotExecutable0x81110000"The executable attribute does not allow the execution of the method."
BadTooManySubscriptions0x80770000"The server has reached its maximum number of subscriptions."
BadTooManyPublishRequests0x80780000"The server has reached the maximum number of queued publish requests."
BadNoSubscription0x80790000"There is no subscription available for this session."
BadSequenceNumberUnknown0x807A0000"The sequence number is unknown to the server."
GoodRetransmissionQueueNotSupported0x00DF0000"The Server does not support retransmission queue and acknowledgement of sequence numbers is not available."
BadMessageNotAvailable0x807B0000"The requested notification message is no longer available."
BadInsufficientClientProfile0x807C0000"The client of the current session does not support one or more Profiles that are necessary for the subscription."
BadStateNotActive0x80BF0000"The sub-state machine is not currently active."
BadAlreadyExists0x81150000"An equivalent rule already exists."
BadTcpServerTooBusy0x807D0000"The server cannot process the request because it is too busy."
BadTcpMessageTypeInvalid0x807E0000"The type of the message specified in the header invalid."
BadTcpSecureChannelUnknown0x807F0000"The SecureChannelId and/or TokenId are not currently in use."
BadTcpMessageTooLarge0x80800000"The size of the message chunk specified in the header is too large."
BadTcpNotEnoughResources0x80810000"There are not enough resources to process the request."
BadTcpInternalError0x80820000"An internal error occurred."
BadTcpEndpointUrlInvalid0x80830000"The server does not recognize the QueryString specified."
BadRequestInterrupted0x80840000"The request could not be sent because of a network interruption."
BadRequestTimeout0x80850000"Timeout occurred while processing the request."
BadSecureChannelClosed0x80860000"The secure channel has been closed."
BadSecureChannelTokenUnknown0x80870000"The token has expired or is not recognized."
BadSequenceNumberInvalid0x80880000"The sequence number is not valid."
BadProtocolVersionUnsupported0x80BE0000"The applications do not have compatible protocol versions."
BadConfigurationError0x80890000"There is a problem with the configuration that affects the usefulness of the value."
BadNotConnected0x808A0000"The variable should receive its value from another variable, but has never been configured to do so."
BadDeviceFailure0x808B0000"There has been a failure in the device/data source that generates the value that has affected the value."
BadSensorFailure0x808C0000"There has been a failure in the sensor from which the value is derived by the device/data source."
BadOutOfService0x808D0000"The source of the data is not operational."
BadDeadbandFilterInvalid0x808E0000"The deadband filter is not valid."
UncertainNoCommunicationLastUsableValue0x408F0000"Communication to the data source has failed. The variable value is the last value that had a good quality."
UncertainLastUsableValue0x40900000"Whatever was updating this value has stopped doing so."
UncertainSubstituteValue0x40910000"The value is an operational value that was manually overwritten."
UncertainInitialValue0x40920000"The value is an initial value for a variable that normally receives its value from another variable."
UncertainSensorNotAccurate0x40930000"The value is at one of the sensor limits."
UncertainEngineeringUnitsExceeded0x40940000"The value is outside of the range of values defined for this parameter."
UncertainSubNormal0x40950000"The value is derived from multiple sources and has less than the required number of Good sources."
GoodLocalOverride0x00960000"The value has been overridden."
BadRefreshInProgress0x80970000"This Condition refresh failed, a Condition refresh operation is already in progress."
BadConditionAlreadyDisabled0x80980000"This condition has already been disabled."
BadConditionAlreadyEnabled0x80CC0000"This condition has already been enabled."
BadConditionDisabled0x80990000"Property not available, this condition is disabled."
BadEventIdUnknown0x809A0000"The specified event id is not recognized."
BadEventNotAcknowledgeable0x80BB0000"The event cannot be acknowledged."
BadDialogNotActive0x80CD0000"The dialog condition is not active."
BadDialogResponseInvalid0x80CE0000"The response is not valid for the dialog."
BadConditionBranchAlreadyAcked0x80CF0000"The condition branch has already been acknowledged."
BadConditionBranchAlreadyConfirmed0x80D00000"The condition branch has already been confirmed."
BadConditionAlreadyShelved0x80D10000"The condition has already been shelved."
BadConditionNotShelved0x80D20000"The condition is not currently shelved."
BadShelvingTimeOutOfRange0x80D30000"The shelving time not within an acceptable range."
BadNoData0x809B0000"No data exists for the requested time range or event filter."
BadBoundNotFound0x80D70000"No data found to provide upper or lower bound value."
BadBoundNotSupported0x80D80000"The server cannot retrieve a bound for the variable."
BadDataLost0x809D0000"Data is missing due to collection started/stopped/lost."
BadDataUnavailable0x809E0000"Expected data is unavailable for the requested time range due to an un-mounted volume, an off-line archive or tape
BadEntryExists0x809F0000"The data or event was not successfully inserted because a matching entry exists."
BadNoEntryExists0x80A00000"The data or event was not successfully updated because no matching entry exists."
BadTimestampNotSupported0x80A10000"The client requested history using a timestamp format the server does not support (i.e requested ServerTimestamp when server only supports SourceTimestamp)."
GoodEntryInserted0x00A20000"The data or event was successfully inserted into the historical database."
GoodEntryReplaced0x00A30000"The data or event field was successfully replaced in the historical database."
UncertainDataSubNormal0x40A40000"The value is derived from multiple values and has less than the required number of Good values."
GoodNoData0x00A50000"No data exists for the requested time range or event filter."
GoodMoreData0x00A60000"The data or event field was successfully replaced in the historical database."
BadAggregateListMismatch0x80D40000"The requested number of Aggregates does not match the requested number of NodeIds."
BadAggregateNotSupported0x80D50000"The requested Aggregate is not support by the server."
BadAggregateInvalidInputs0x80D60000"The aggregate value could not be derived due to invalid data inputs."
BadAggregateConfigurationRejected0x80DA0000"The aggregate configuration is not valid for specified node."
GoodDataIgnored0x00D90000"The request specifies fields which are not valid for the EventType or cannot be saved by the historian."
BadRequestNotAllowed0x80E40000"The request was rejected by the server because it did not meet the criteria set by the server."
BadRequestNotComplete0x81130000"The request has not been processed by the server yet."
BadTicketRequired0x811F0000"The device identity needs a ticket before it can be accepted."
BadTicketInvalid0x81200000"The device identity needs a ticket before it can be accepted."
GoodEdited0x00DC0000"The value does not come from the real source and has been edited by the server."
GoodPostActionFailed0x00DD0000"There was an error in execution of these post-actions."
UncertainDominantValueChanged0x40DE0000"The related EngineeringUnit has been changed but the Variable Value is still provided based on the previous unit."
GoodDependentValueChanged0x00E00000"A dependent value has been changed but the change has not been applied to the device."
BadDominantValueChanged0x80E10000"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."
UncertainDependentValueChanged0x40E20000"A dependent value has been changed but the change has not been applied to the device. The quality of the dominant variable is uncertain."
BadDependentValueChanged0x80E30000"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_DependentValueChanged0x01160000"It is delivered with a dominant Variable value when a dependent Variable has changed but the change has not been applied."
GoodEdited_DominantValueChanged0x01170000"It is delivered with a dependent Variable value when a dominant Variable has changed but the change has not been applied."
GoodEdited_DominantValueChanged_DependentValueChanged0x01180000"It is delivered with a dependent Variable value when a dominant or dependent Variable has changed but change has not been applied."
BadEdited_OutOfRange0x81190000"It is delivered with a Variable value when Variable has changed but the value is not legal."
BadInitialValue_OutOfRange0x811A0000"It is delivered with a Variable value when a source Variable has changed but the value is not legal."
BadOutOfRange_DominantValueChanged0x811B0000"It is delivered with a dependent Variable value when a dominant Variable has changed and the value is not legal."
BadEdited_OutOfRange_DominantValueChanged0x811C0000"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_DependentValueChanged0x811D0000"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_DependentValueChanged0x811E0000"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."
GoodCommunicationEvent0x00A70000"The communication layer has raised an event."
GoodShutdownEvent0x00A80000"The system is shutting down."
GoodCallAgain0x00A90000"The operation is not finished and needs to be called again."
GoodNonCriticalTimeout0x00AA0000"A non-critical timeout occurred."
BadInvalidArgument0x80AB0000"One or more arguments are invalid."
BadConnectionRejected0x80AC0000"Could not establish a network connection to remote server."
BadDisconnect0x80AD0000"The server has disconnected from the client."
BadConnectionClosed0x80AE0000"The network connection has been closed."
BadInvalidState0x80AF0000"The operation cannot be completed because the object is closed, uninitialized or in some other invalid state."
BadEndOfStream0x80B00000"Cannot move beyond end of the stream."
BadNoDataAvailable0x80B10000"No data is currently available for reading from a non-blocking stream."
BadWaitingForResponse0x80B20000"The asynchronous operation is waiting for a response."
BadOperationAbandoned0x80B30000"The asynchronous operation was abandoned by the caller."
BadExpectedStreamToBlock0x80B40000"The stream did not return all data requested (possibly because it is a non-blocking stream)."
BadWouldBlock0x80B50000"Non blocking behaviour is required and the operation would block."
BadSyntaxError0x80B60000"A value had an invalid syntax."
BadMaxConnectionsReached0x80B70000"The operation could not be finished because all available connections are in use."
UncertainTransducerInManual0x42080000"The value may not be accurate because the transducer is in manual mode."
UncertainSimulatedValue0x42090000"The value is simulated."
UncertainSensorCalibration0x420A0000"The value may not be accurate due to a sensor calibration fault."
UncertainConfigurationError0x420F0000"The value may not be accurate due to a configuration issue."
GoodCascadeInitializationAcknowledged0x04010000"The value source supports cascade handshaking and the value has been Initialized based on an initialization request from a cascade secondary."
GoodCascadeInitializationRequest0x04020000"The value source supports cascade handshaking and is requesting initialization of a cascade primary."
GoodCascadeNotInvited0x04030000"The value source supports cascade handshaking, however, the source’s current state does not allow for cascade."
GoodCascadeNotSelected0x04040000"The value source supports cascade handshaking, however, the source has not selected the corresponding cascade primary for use."
GoodFaultStateActive0x04070000"There is a fault state condition active in the value source."
GoodInitiateFaultState0x04080000"A fault state condition is being requested of the destination."
GoodCascade0x04090000"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.