VNode REST API Server v1.4
VNode REST API Server v1.4
Reference Manual
vNode REST API Server
v 1.4
www.vnodeautomation.com
I
2
Index
Introduction .................................................................................................................................................... 3
Creating Module Instances .....................................................................................................................4
Configuration.................................................................................................................................................. 6
vNode REST API calls................................................................................................................................ 15
Alarm ...................................................................................................................................................... 15
Backup .................................................................................................................................................. 18
Certificate ........................................................................................................................................... 24
Module ................................................................................................................................................. 27
Link......................................................................................................................................................... 35
License ................................................................................................................................................. 36
Redundancy ......................................................................................................................................40
System ................................................................................................................................................... 41
Tag .......................................................................................................................................................... 43
Appendix: Postman Collection .......................................................................................................... 54
www.vnodeautomation.com
I
3
Introduction
vNode REST API Server module is a component of the IIoT platform that enables seamless
access to the node, facilitating data retrieval and command transmission via REST calls.
With this interface, users effortlessly can navigate Data Models programmatically.
The API Server acts as an API gateway for industrial data residing in OT systems by offering
a streamlined abstraction layer over diverse protocols —OPC UA, MQTT, Sparkplug,
Modbus, DNP3, DLMS, IEC 102, IEC 104, etc.— eliminating the need for domain expertise in
underlying systems. Any application or service with an HTTP client can securely request
OT data in raw or modeled form directly from vNode
The REST server uses by default port 3003 for HTTP requests and port 3443 for HTTPS
requests, both ports are configurable.
To create a REST request, a URL is built containing the IP address, service HTTP or HTTPS port,
and all other information the server needs in order to complete the desired task. Data is
returned in JSON format.
www.vnodeautomation.com
I
4
The first step when using REST API Server after vNode installation is to create a REST API
Server module:
• Open vNode and navigate to the “Config” menu.
• Click on “Modules”, then create a new module. This instance can be given any name
(except names with special characters like ‘.’, ‘/’, etc.), although users are recommended
to name instances in a similar way to the name of the module being created for easy
identification. In this example, it has been named RestApiServer.
By setting the module type to RestApiServer, the created instance will automatically become
a RestApiServer instance. Once saved, RestApiServer should appear in bold in the module list
because there are still some unsaved changes.
www.vnodeautomation.com
I
5
Warning: Active this feature only when S&F is enabled in the remote
nodes. It does not make sense to activate this option if the Module can't
handle time-stamped data, e. g. Modbus Server.
● Auto-start: This section controls how the module behaves when the vNode service is
started (which also includes service restarts).
o Enabled: If true, the module will automatically start when the vNode service
starts. Otherwise, the module must be started manually.
o Start delay: When auto-start is enabled, this setting is used to control how much
delay there should be between starting the vNode service and starting the
module. This value is displayed in milliseconds.
● Auto-restart: This section is used to monitor the status of each module, as well as to
enable automatic restart if the module goes offline.
o Enable: If True, the module will automatically restart whenever the module goes
offline (except when manually stopped by the user).
o Restart delay: Determines the delay before restarting the module after it has
gone offline.
Note: Each module has a Logger section that will need to be configured
separately. The default settings will be sufficient for this, but users will
need to actively open the Logger configuration settings and save the
default values to fully apply the settings. Click here for more information
about Logger Configuration.
www.vnodeautomation.com
I
6
Configuration
Module Configuration
By selecting REST API Server in the explorer tree menu, users can configure how the module
will accept connections. The following screenshot shows the different available options for REST
API Server Configuration:
Parameters:
Mode: Specifies what protocols will be accepted by the REST API Server. Available options
are “HTTP”, “HTTPS” and “Both (HTTP & HTTPS)”.
HTTP:
● TCP port: Specifies the HTTP port number for connecting to REST API Server. The
default port number is 3003. The valid range is 1 to 65535. This port may not be used by
any other application in the same machine.
● Network interface: Specifies the interface through which the REST API Server will be
accessible via HTTP. You can either select the network interface by clicking the browse
button or enter the IP address manually.
www.vnodeautomation.com
I
7
www.vnodeautomation.com
I
8
HTTPS:
• TCP port: Specifies the HTTPS port number for connecting to the REST API Server. The
default port number is 3443. Valid range is 1 to 65535. This port may not be used by any
other application in the same machine.
• Network interface: Specifies the interface for accessing the REST API Server via HTTPS.
You can either select the network interface by clicking the browse button or enter the
IP address manually.
• Certificate type: Specifies the server HTTPS certificate. The following options are
available:
o Self-signed: The server will create and sign a certificate automatically using an
internal certification authority that can be downloaded in the Self-signed certificate
menu (as shown in the image below). This certification authority is valid for all the
REST API Server instances and must be imported into each system/web client that
will access the REST API Server via HTTPS. When selecting the “Self-signed” option,
the following section will appear:
▪ Self-signed certificate parameters:
– Certified hosts: Comma-separated host list (domains/host names
and/or IPs) that will be included in the auto-generated SSL
certificate. It is important to include all the hosts where the REST
API Server will be accessed so the web client doesn't show any
errors. Hosts 127.0.0.1, localhost and system hostname will be
automatically added to the certificate.
www.vnodeautomation.com
I
9
www.vnodeautomation.com
I
10
Access Configuration
The REST API Server uses authorization to ensure secure data access. This includes
authenticating the sender and verifying their permission to access or manipulate data.
Currently, two types of authorization are supported: Role authentication, which involves
sending a verified username and password, and Token authentication, which uses an API
key.
Role Authentication
Selecting this option, permissions will be assigned to the Roles previously created in the
Roles section.
www.vnodeautomation.com
I
11
Parameters:
• Enabled: Specifies whether or not any authentication attempt will be blocked.
• API Access: vNode REST API calls use the GET and POST methods and can be
categorized into the following groups:
o Alarm: Access to tag alarms namespace.
o Backup: Access to the node backup system.
o Certificate: Access to the node certificate system.
o License: Access to the node licensing system.
o Link: Access node link system.
o Module: Access modules system.
o System: Access node system namespace.
o Tag: Access tag namespace.
• Tag access:
o Tag Filter: Define and configure the filter for tags to be included in the
message.
Note: Include filters are applied first and exclude filters are applied
to the include filters' results.
www.vnodeautomation.com
I
12
▪ Regex Pattern: This is a regular expression for filtering which tags will
be included. By default, it is set to .*, meaning no filter is applied.
Readers can find further information about regular expressions
at RegExr.
Token Authentication
This option enables requests to authenticate using an access key. The token is a text string,
included either in the request header or passed as a parameter.
www.vnodeautomation.com
I
13
Parameters:
• API Access: vNode REST API calls use the GET and POST methods and can be
categorized into the following groups:
o Alarm: Access to tag alarms namespace.
o Backup: Access to the node backup system.
o Certificate: Access to the node certificate system.
o License: Access to the node licensing system.
o Link: Access node link system.
o Module: Access modules system.
o System: Access node system namespace.
o Tag: Access tag namespace.
• Tag access:
o Tag Filter: Define and configure the filter for tags to be included in the message.
www.vnodeautomation.com
I
14
Note: Include filters are applied first and exclude filters are applied
to the include filters' results.
www.vnodeautomation.com
I
15
In order to execute the desired command, API calls should start with
http://<IP_address>:<HTTP_port> followed by tge corresponding path.
<IP_address> must be replaced by the server's IP address and <HTTP_port> and
<HTTPS_port> must be replaced by the port assigned to the REST API Server (3003 by
default for HTTP requests and 3443 by default for HTTPS requests).
The character '&' should be used to separate each parameter in a GET request.
In a POST request, the parameters are set as a JSON object in the request body.
Alarm
The Alarm API provides information about the status and monitoring of alarms, and
operations that can be made on alarms.
List alarms
GET /alarm?cmd=get&path=<path>&options.filter.path=<path_filter>
• parameters:
o path: Path to browse for alarms. (Optional parameter)
o options:
▪ recurrent: Include subgroups. (Optional parameter)
▪ filter: Filter parameters include:
– path: Full alarm path regex filter (Optional parameter)
– status: Status to filter, from 0 to 3 (0: Cleared and acked, 1: Active and acked 2:
Cleared and unacked 3: Active and unacked). (Optional parameter)
– priority: Minimum priority (1: Low, 2: Medium, 3: High, 4: Critical). (Optional
parameter)
Request example:
http://localhost:3003/alarm?cmd=get&path=/000_PLANT/040_ZONE/040_MTR/&options.fi
lter.path=/000_PLANT/040_ZONE/040_MTR/COM.active
www.vnodeautomation.com
I
16
Response example:
[
{
"path": "/000_PLANT/040_ZONE/040_MTR/COM.active",
"description": "Zone 04 - Main Meter: Communications Failure",
"priority": 3,
"remote": null,
"online": 1,
"status": 2,
"ts": 1686639660000,
"value": false,
"format": "%s",
"type": "boolean",
"ackInfo": null
}
]
GET /alarm?cmd=count
• parameters:
Request example:
http://127.0.0.1: 3003/alarm?cmd=count&path=/000_PLANT/040_ZONE/040_MTR/
Response example:
www.vnodeautomation.com
I
17
GET /alarm?cmd=history&path=<path>&start=<start_date>&end=<end_date>
• parameters:
o path: Alarm path (mandatory parameter)
o start: Start date. Must be an ISO string or a Unix epoch timestamp (mandatory
parameter)
o end: End date. Must be an ISO string or a Unix epoch timestamp (mandatory
parameter)
o options:
▪ recurrent: Include subgroups.
▪ filter: Filter parameters include:
– path: Full alarm path regex filter (Optional parameter)
– status: Status to filter, from 0 to 3 (0: Cleared and acked, 1: Active
and acked 2: Cleared and unacked 3: Active and unacked) (Optional
parameter)
– priority: Minimum priority (1: Low, 2: Medium, 3: High, 4: Critical).
(Optional parameter)
Request example:
http://localhost:3003/alarm?
cmd=history&path=/000_PLANT/040_ZONE/040_MTR/COM.active&start=2023-05-
07T00:00Z&end=2023-06-07T00:00
Response example:
{
"request": {
"path": "/000_PLANT/040_ZONE/040_MTR/COM.active",
"start": 1683417600000,
"end": 1686088800000,
"options": {
"recurrent": false,
"filter": {
"path": "(((?=(^.*?(?:))).*))",
"status": null,
"minPriority": null,
"maxPriority": null
}
}
},
"data": []
}
www.vnodeautomation.com
I
18
Acknowledges alarm
Acknowledges alarms
POST /alarm?cmd=ack
• parameters:
o paths: Alarm paths. Can be a single alarm, a comma-separated list or a JSON
array (Mandatory parameter)
o msg: Message to append to this acknowledgement (Optional parameter)
• Request example:
http://localhost:3003/alarm?cmd=ack
JSON:
{
"paths": "/000_PLANT/040_ZONE/040_MTR/COM.active"
}
• Response example
The response is empty. An HTTP 200 status code indicates a successful request.
Backup
The Backup API provides information about the status of configuration backups, and
operations that can be made on backups.
List backups
Retrieves the list of configuration backups in the target node.
GET /backup?cmd=get
www.vnodeautomation.com
I
19
• Request example:
http://localhost:3003/backup?cmd=get
• Response example:
{
"17_5_2023": {
"description": "",
"user": "admin",
"node": "EDGE01@edge01",
"ts": "2023-05-17T09:17:55.317Z",
"versions": {
"exe": "1.21.4-230221.0833",
"bootstrap": "1.38.5-230512.0645-beta",
...
}
},
"29_03_2023": {
"description": "",
"user": "admin",
"node": "EDGE01@edge01",
"ts": "2023-03-29T09:26:28.719Z",
"versions": {
"exe": "1.21.4-230221.0833",
"bootstrap": "1.38.4-230221.0859",
...
}
}
}
Export a backup
Retrieves configuration backup in ZIP format encoded in Base64.
GET /backup?cmd=export&name=<backup_name>
• parameter:
o name: name of the backup file (Mandatory parameter)
• Request example:
http://127.0.0.1:3003/backup?cmd=export&name=20240304_RestApiServer_01
• Response example:
The answer is a ZIP file Base64 encoded
www.vnodeautomation.com
I
20
Create a backup
Creates a configuration backup of the target node.
POST /backup?cmd=create
• parameters:
o path: Name of the backup file (Mandatory parameter)
o metadata:
▪ description: description of the backup file (Optional parameter)
• Request example:
http://127.0.0.1:3003/backup?cmd=create
JSON
{
"name": "TestImport"
}
• Response example:
The response is empty. An HTTP 200 status code indicates a successful request.
Rename a backup
GET /backup?cmd=rename
• parameters:
o name: Name of the backup file (Mandatory parameter)
o rename: New name of the backup file (Mandatory parameter)
www.vnodeautomation.com
I
21
• Request example:
http://127.0.0.1:3003/backup?cmd=rename
• JSON
{
"name": "TestImport",
"rename": "EDGE01-PV-PROD"
}
• Response example:
The response is empty. An HTTP 200 status code indicates a successful request.
Delete a backup
POST /backup?cmd=delete
• parameters:
o name: Name of the backup file (Mandatory parameter)
• Request example:
http://127.0.0.1:3003/backup?cmd=delete
JSON
{
"name": "EDGE01-PV-PROD"
}
• Response example:
The response is empty. An HTTP 200 status code indicates a successful request.
www.vnodeautomation.com
I
22
Import a backup
POST /backup?cmd=import
• parameters:
o name: Name of the backup file (Mandatory parameter)
o data: Backup file data, encoded in Base64 (Mandatory parameter)
• Request example:
http://127.0.0.1:3003/backup?cmd=import
JSON:
{
"name": "Test Import",
"data":
"UEsDBAoAAAAAAJhipFIAAAAAAAAAAAAAAAAKAAAASGlzdG9yaWFuL1BLAwQKAAgACACYYqRSAAAAA
AAAAAAAAAAAEQAAAEhpc3Rvcmlhbi9hcGkubjNjTU5LCsIwEL3LrLNIKsbSnRdQcStdtOYJo2kjaVK
Ekrs7KgVX83nfhWbEicNIzUJDxzKNIjhOIcpaFEVM2SdqLnTbQc5L+yuQ1pM8vw3Xp3qOhlMz/X9CT
qk1EXEhVxld3Yh6+g/I4juPwqlO493Ovvysx6+6Gsn9uiSKVu22pK0wexfJT3msR6MIck4L/uxwZe+
OOSTWNtgqDyGufIxRdFkLN6T7ct4NNDAa+WPHcYJWr6NLuiNJ56QVzQZtPonqsZYADENaxyiqHDmyZ
svjm+41eknLACxIUlCjkA4AuJtRlPsvBq2MI1zxPwYkTX6v8PhBX5uNcwmYRYqS9AlJw57b0L8Ikgo
4FoQ7UdJSmd0lqZRxA/i7QWoB7Sbh05lXyydzIWbbJA0FaQW0n4BmP8/J2z2kOL6oSlQLwjrGKB6
…
ipFIAAAAAAAAAAAAAAAAUAAAAYm9vdHN0cmFwL2xvZ2dlci5uM2N1T8sKwjAQ/Jc5B6FqW9ujH6AHj
6WHtNlKJE0gTYsS8u9uQBAPsod9zs5MxEZ+0c6ijZil5lwIkNLBeS6TgKdlNQFth+vwoDFARIzOLs7
Q75CsHAwptMGvJGBoI4MWwcuRkHqBSf+FdDg7figtREbz8Qfe4Ra8tncIaDs58EbJ15KZL+s8kIeo+
8TxFR1Bz0BW8RFbcmrNrNiBvXCnJ501FmVzaqqm3FfH+pDSG1BLBwgaUmq1rQAAAAcBAABQSwMECgA
IAAgAmGKkUgAAAAAAAAAAAAAAABUAAABib290c3RyYXAvbW9kdWxlcy5uM2PVU8FKQzEQ/Jc9B8nTW
qE39aKXCj7Eg/SQZ7aogIjEuMi4xLTIwMDQwMS4yMjA4IiwKICAgICJGbGVldE1hbmFnZXJDbGllbn
QiOiAiMS4wLjAtMjEwNDE2LjExMDItYmV0YSIKICB9Cn0="
}
• Response example:
The response is empty. An HTTP 200 status code indicates a successful request.
www.vnodeautomation.com
I
23
Load a backup
POST /backup?cmd=load
• parameters:
• name: Name of the backup file (Mandatory parameter)
• Request example:
http://127.0.0.1:3003/backup?cmd=load
JSON:
{
"name": "BackupName"
}
• Response example:
{
"completed": true,
"completedRollback": false,
"rollbackSaved": "",
"rollbackSaveFailed": false,
"rollbackHasWarnings": false,
"warnings": [],
"updatedModules": []
}
www.vnodeautomation.com
I
24
Certificate
The Certificate API provides operations and information about the certificates managed by
vNode.
List certificates
Retrieves the list of certificates
GET /certificate?cmd=get&options.moduleName=<moduleName>&options.type=<type>
• parameters:
o options:
▪ moduleName: Name of the module. Defaults to bootstrap
▪ type: Type of certificate (links_inbound, links_outbound, inbound,
outbound).
• Request example:
http://127.0.0.1:3003/certificate?
cmd=get&options.moduleName=bootstrap&options.type=links_outbound
JSON:
[
{
"id": "own/EDGE01 vNode LinkOut",
"sn": "EDGE01:vNode:LinkOut",
"c": "US",
"o": "vNode Automation",
"dn": "edge01",
"from": 1686132404000,
"to": 2316852404000,
"type": "outbound",
"status": "own"
},
{
"id":
"trusted/AWS_CENTRAL_LinkManager[493875AFD372CFFA520BDDA55C77FCE733A5F5E3]",
"sn": "AWS_CENTRAL:LinkManager",
"c": "US",
"o": "vNode Automation",
"dn": "ip-192.168.0.1",
"from": 1686066957000,
"to": 2316786957000,
"type": "outbound",
"status": "trusted"
}
]
www.vnodeautomation.com
I
25
Export certificate
Retrieves the content of a specific certificate
GET /certificate?cmd=export&options.type=<type>&options.id=<id>
• parameters:
o options:
▪ moduleName: Name of the module. Defaults to bootstrap
▪ type: Type of certificate (links_inbound, links_outbound, inbound,
outbound).
▪ id: The certificate unique ID
• Request example:
http://localhost:3003/certificate?
cmd=export&options.type=outbound&options.id=
trusted/AWS_CENTRAL_LinkManager[493875AFD372CFFA520BDDA55C77FCE733A5F5E3]
• Response example
The answer is a Base64 formatted file.
Set certificate
Modifies a certificate from vNode
POST /certificate?cmd=set
• parameters:
o options:
▪ moduleName: Name of the module. Defaults to bootstrap
▪ type: Type of certificate (links_inbound, links_outbound, inbound,
outbound).
▪ id: The certificate unique ID
▪ action: Action to apply to the certificate (trust, untrust)
www.vnodeautomation.com
I
26
• Request example:
http://localhost:3003/certificate?cmd=set
JSON:
{
"options": {
"type": "outbound",
"id":
"pending/NODE_001_vNodeLinkManager[3A585E14D732ACE06DFAB2F7E34ED385DC78741D]",
"action": "trust"
}
}
• Response example
The response is empty. An HTTP 200 status code indicates a successful request.
Remove certificate
Removes a certificate in vNode
POST /certificate?cmd=remove
• parameters:
o options:
▪ moduleName: Name of the module. Defaults to bootstrap
▪ type: Type of certificate (links_inbound, links_outbound, inbound,
outbound).
▪ id: The certificate’s unique ID
• Request example:
http://localhost:3003/certificate?cmd=remove
www.vnodeautomation.com
I
27
JSON:
{
"options": {
"type": "outbound",
"id":
"pending/NODE_001_vNodeLinkManager[3A585E14D732ACE06DFAB2F7E34ED385DC78741D]",
"action": "trust"
}
}
• Response example
The response is empty. An HTTP 200 status code indicates a successful request.
Module
The Module API provides information about the status and monitoring of each module
and operations that can be made on modules.
GET /module?cmd=details
• Request example:
http://localhost:3003/ module?cmd=details
www.vnodeautomation.com
I
28
• Response example:
{
"ts": "2023-06-07T09:38:25.210Z",
"running": true,
"uptime": "307052.11s",
"pid": 5904,
"memoryUsage": {
"rss": "43.16Mb",
"heapTotal": "26.48Mb",
"heapUsed": "19.71Mb",
"external": "8.51Mb",
"arrayBuffers": "7.03Mb"
},
"modules": {
"WebUI": {
"config":{
"type": "WebUI",
"required": false,
"start": {
"enabled": true,
"delay": 0
},
"monitor": {
"enabled": true,
"delay": 5000
}
},
"license": {
"acquired": true,
"period": 0,
"mode": "production",
"tagAccess": "remote"
},
"running":true,
"mode": null,
"lastStart": "2023-06-06T11:25:59.894Z",
"lastStop": "2023-06-06T11:25:57.501Z",
"pid": 20340,
"api": {
"online": true,
"info": {
"type": "WebUI",
"category": [],
"version": "1.16.5",
"releaseType": "beta",
"fileversion": "1.16.5-230531.0734",
"requisites": {
"bootstrapVersion": {
"min": "1.38.0"
},
"exeVersion": {
"min": "1.21.0"
}
},
"name": "WebUI"
},
www.vnodeautomation.com
I
29
"stats": {
"tx": {
"ok": 678,
"error": 0
},
"rx": {
"ok": 643,
"error": 0
}
}
}
}
}
}
GET /module?cmd=getInstalled
• Request example:
http://localhost:3003/module?cmd=getInstalled
• Response example:
[
"AbbVipClient",
"AuditTrail",
"BacnetClient",
"CustomClient",
"DataDiode",
"DataExporter",
"DataImporter",
"DerivedTags",
"DnpClient",
"DnpServer",
]
GET /module?cmd=getInstances
www.vnodeautomation.com
I
30
• parameters:
o filter: Module names. Can be a single filter, a comma-separated list or a JSON
array (Optional parameter)
• Request example:
http://localhost:3003/module?cmd=getInstances
• Response example:
[
"Historian",
"OpcUaClient",
"RestApiServer",
"WebUI"
]
GET /module?cmd=getConfigList&moduleType=<module_type>
• Parameters:
o moduleType: Module type (Optional parameter)
• Request example:
http://localhost:3003/module?cmd=getConfigList&moduleType=Historian
• Response example:
{
"default": {
"text": "Config",
"icon": "database fa-regular"
},
"logger": {
"text": "Logger",
"icon": "book fa-regular"
}
}
www.vnodeautomation.com
I
31
GET /module?cmd=getConfigPresent&moduleName=<module_name>
• parameters:
o moduleName: Module instance name (Optional parameter)
• Request example:
http://127.0.0.1:3003/module?cmd=getConfigPresent&moduleName=Siemens
• Response example:
{
"default": true
"logger": true
}
GET
/module?cmd=getConfigData&moduleName=<module_name>&configName=<config_name>
• parameters:
o moduleName: Module instance name (Optional parameter)
o configName: Configuration name (Mandatory parameter)
• Request example:
http://127.0.0.1:3003/module?cmd=getConfigData&moduleName=
OpcUaClient&configName=default
www.vnodeautomation.com
I
32
• Response example:
"{\"version\":{\"main\":1,\"editor\":2},\"result\":[\"Object\",{\"DataSim\":
[\"Object\",{\"enabled\":[\"Boolean\",true],\"addItemRate\":
[\"Number\",5000],\"addItemRateDelay\":[\"Number\",0],\"overrideTs\":
[\"Boolean\",false],\"connection\":[\"Object\",{\"endpointUrl\":
[\"String\",\"opc.tcp://192.168.1.0:4840\"],\"endpointMustExist\":
[\"Boolean\",false],\"securityMode\":[\"String\",\"NONE\"],\"securityPolicy\":
[\"String\",\"None\"],\"requestedSessionTimeout\":
[\"Number\",3600000],\"reconnectionDelay\":[\"Number\",5000]}],\"auth\":[\"Obj
ect\",
{\"enabled\":[\"Boolean\",true],\"user\":[\"String\",\"Plant01\"],\"password\"
:[\"SecuredString\",\"Z4/rlgqL6bHsb/2J1VHkIkKLpejOXGnvWvadb8euXutzlaH6Rpi9zClD
EXvW4qleL
HVlW+1ldXru/4rrq+5FU0iqGRqPd0f+iknwli4k\"]}],\"subscription\":[\"Object\",
{\"requestedPublishingInterval\":[\"Number\",1000],\"requestedLifetimeCount\":
[\"Number\",60],\"requestedMaxKeepAliveCount\":
[\"Number\",10],\"maxNotificationsPerPublish\":
[\"Number\",10000],\"priority\":0}]}]}],\"editor\":{\"extends\":
{\"module\":null},\"modified\":1684388224829,\"library\":{}}}"
Start module
Starts a specific module.
POST /module?cmd=start
• parameters:
o moduleName: module instance name (Mandatory parameter)
• Request example:
http://localhost:3003/module?cmd=start
JSON:
{
"moduleName": "Historian"
}
• Response example
The response is empty. An HTTP 200 status code indicates a successful request.
www.vnodeautomation.com
I
33
Stop module
Stops a module.
POST /module?cmd=stop
• parameters:
o moduleName: module instance name (Mandatory parameter)
• Request example:
http://localhost:3003/module?cmd=stop
JSON:
{
"moduleName": "Historian"
}
• Response example
The response is empty. An HTTP 200 status code indicates a successful request.
Restart command
Restarts a module.
POST /module?cmd=restart
• parameters:
o moduleName: module instance name (Mandatory parameter)
• Request example:
http://localhost:3003/module?cmd= restart
www.vnodeautomation.com
I
34
JSON:
{
"moduleName": "Historian"
}
• Response example
The response is empty. An HTTP 200 status code indicates a successful request.
POST /module?cmd=setConfigData
• parameters:
o moduleName: Module instance name (Mandatory parameter)
o configName: Configuration name (for example: logger, API, users, tags, views,
links, etc.) (Mandatory parameter)
o data: Configuration file in JSON format (Mandatory parameter)
o options:
▪ restart: Restart module after saving new configuration (Optional
parameter)
▪ deleteData: Only applicable to module configuration file. List of deleted
module instances to clean their data. Can be a single instance, a comma-
separated list or a JSON array (Optional parameter).
• Request example
http://localhost:3003/module?cmd=setConfigData
JSON
{
"moduleName": "Historian",
"configName": "logger",
"data": "{\"version\":{\"main\":1,\"editor\":1},\"result\":[\"Object\",
{\"console\":[\"Object\",{\"enabled\":true,\"level\":\"debug\"}],
\"file\":[\"Object\",{\"enabled\":[\"Boolean\",true],\"level\":[\"String\",
\"info\"],\"days\":
[\"Number\",7]}]}],\"editor\":{\"extends\":
{\"module\":null},\"modified\":1582974868907}}"
}
• Response example
The response is empty. An HTTP 200 status code indicates a successful request.
www.vnodeautomation.com
I
35
Link
The Link API provides operations and information about the status of the links in the target
node.
List Links
Retrieves current links.
GET /link?cmd=get
• Request example
http://localhost:3003/ link?cmd=get
• Response example
{
"nodeInfo": {
"name": "PROD-PV-01"
},
"links": {
"CENTRAL": {
"name": "CENTRAL",
"type": "out",
"online": true,
"local": {
"subscription": "",
"gzip": true,
"view": {
"name": "",
"ro": false,
"ae": true,
"ack": true
},
"sf": {
"enabled": true,
"paused": false
},
"tagCount": 1
},
"remote": {
"subscription": "/",
"view": {
"name": "",
"ro": false,
"ae": true,
"ack": true
},
"sf": {
"enabled": true,
"paused": false
},
"tagCount": 0,
"endpoint": "3.3.3.3:3001"
}
}
}
}
www.vnodeautomation.com
I
36
License
The License API provides operations and information about the status of licenses in the
target node.
GET /license?cmd=getUid
• Request example
http://localhost:3003/license?cmd=getUid
• Response example
{
"host": "edge01",
"uid": "3cbd33383ef80d7faff3bf0be1262c9f
}
List licenses
Retrieves a list of licenses of this node.
GET /license?cmd=get
• Request example
http://localhost:3003/license?cmd=get
www.vnodeautomation.com
I
37
• Response example
[
{
"path": "C:\\Program Files\\vNode\\licenses\\edge01-20230316.163525.n3l",
"name": "edge01-20230316.163525.n3l",
"error": "",
"id": "cfedfefa70c4cf0067ac64192592f8d539d9b24bea3eb45d8db5020b33884fa6",
"host": "edge01",
"uid": "3cbd33383ef80d7faff3bf0be1262c9f",
"unlicensed": false,
"nonce": 1678976521343,
"licenses": [
{
"version": "1.1",
"host": "edge01",
"uid": "3cbd33383ef80d7faff3bf0be1262c9f",
"expires": "2023-04-16T23:59:59.000Z",
"type": "production",
"supportExpires": 1681689599000,
"nonce": 1678976521343,
"id":
"cfedfefa70c4cf0067ac64192592f8d539d9b24bea3eb45d8db5020b33884fa6",
"modules": [
{
"type": "Historian",
"tagAccess": "local",
"count": 1,
"used": 0
},
{
"type": "SnmpClient",
"tagAccess": "local",
"count": 1,
"used": 0
}
],
"error": "Invalid license: Expired"
}
]
}
]
GET /license?cmd=read&name=<license_name>
• parameters:
o name: Name of the license file (Mandatory parameter)
www.vnodeautomation.com
I
38
• Request example:
http://127.0.0.1:3003/license?cmd=read&name=DataServer01-20210216.143244.n3l
• Response example
"{\"version\":\"1\",
\"created\":\"2023-03-16T14:22:01.991Z\",
\"signature\":\"20027e37c184cb21420bddb6e8ca5a893a982837f22351fe697
bf521635c75f62d1e85b04527d9a21ede3cdbb8beb35f8341ee1e8b5e108d97601bfbdd4e8332d
ffd353e20f72ebca8605559387337ef17cc6c2b6abf95290d9d2b661bc82b43394cfdfca2de8fd
4c9a866d8478bf74df8f1fdcf763ac3b0dea80636691d953f1a2ed448195a5b1128b98b92cca50
db5e9ab70027eb534aabaa19d0a2ec2c900eccbe01455986e900706acb56645005c3c55f8b6be4
028284d5a1e41a0410c5584a6669467c3045aac8950b0f6018efd72eaeeedb6febc631ea67a844
989dc2472d712f4fba8e346afdbd3f635b20c3e839a5fdf90518973615dc58afd64e82d\",
\"licenses\":[{\"version\":\"1.1\",\"host\":\"edge01\",\"uid\":\"3cbd33383ef80
d7faff3bf0be1262c9f\",
\"expires\":\"2023-04-16T23:59:59.000Z\",
\"type\":\"production\",
\"supportExpires\":\"2023-04- 16T23:59:59.000Z\",
\"nonce\":1678976521343,
\"id\":\"cfedfefa70c4cf0067ac64192592f8d539d9b24bea3eb45d8db5020b33884fa6\",\"
modules\":
[{\"type\":\"AcquisuiteXmlCollector\",\"tagAccess\":\"local\",\"count\":1},
{\"type\":\"CustomClient\",\"tagAccess\":\"local\",\"count\":1},
{\"type\":\"DataDiode\",\"tagAccess\":\"local\",\"count\":1},
{\"type\":\"DataExporter\",\"tagAccess\":\"local\",\"count\":1},
{\"type\":\"DerivedTags\",\"tagAccess\":\"local\",\"count\":1},
{\"type\":\"DnpClient\",\"tagAccess\":\"local\",\"count\":1},
{\"type\":\"Historian\",\"tagAccess\":\"local\",\"count\":1},
{\"type\":\"Iec102Client\",\"tagAccess\":\"local\",\"count\":1}
]}]}"
Add license
Adds a license to the target node.
POST /license?cmd=add
• parameters:
o data: Data of the license file in JSON format (Mandatory parameter)
• Request example:
http://localhost:3003/license?cmd=add
www.vnodeautomation.com
I
39
JSON
"data": "{\"version\":\"1\",\"created\":\"2021-01-
05T14:43:16.652Z\",\"signature\":\"5ce1ff1b7a9f911b49f653aa291bd375d8b
2c53a0d57b0958ffe5f2341d",\"count\":1},{\"type\":\"SiemensClient\",\"t
agAccess\":\"local\",\"count\":1},{\"type\":\"SmaClient\",\"tagAccess\
":\"local\",\"count\:1},{\"type\":\"SqlClient\",\"tagAccess\":\"remote
\",\"count\":1},{\"type\":\"UflExporter\",\"tagAccess\":\"remote\",\"c
ount\":1},{\"type\":\"WebVision\",\"tagAccess\":\"remote\",\"count\":1
},{\"type\":\"XantrexClient\",\"tagAccess\":\"local\",\"count\":1}]}]}
" }
• Response example
The response is empty. An HTTP 200 status code indicates a successful request.
Delete license
Deletes a license in the target node.
POST /license?cmd=remove
• parameters:
o name: Name of the license file (Mandatory parameter)
• Request example:
http://localhost:3003/license?cmd=remove
JSON:
{
"name": "edge01-20230607.095435.n3l"
}
• Response example
The response is empty. An HTTP 200 status code indicates a successful request.
www.vnodeautomation.com
I
40
Redundancy
The Redundancy API provides information about the status of the redundancy mode.
GET /redundancy?cmd=status
• Request example:
http://localhost:3003/redundancy?cmd=status
• Response example
"enabled": false,
"standby": false,
"mode": "primary"
www.vnodeautomation.com
I
41
System
The System API provides operations and information about the status and monitoring of
the target node.
GET /system?cmd=status
• Request example:
http://localhost:3003/system?cmd=status
• Response example
{
"node01": {
"pid": 5904,
"up": 314775983,
"versions": [
"1.21.5-230529.1438",
"1.39.0-230529.1135-beta"
],
"node": "EDGE01",
"tags": {
"total": 1,
"local": 1,
"remote": 0
},
"errors": []
},
"sys": {
"standby": false,
"hostname": "edge01",
"ts": 1686138429061,
"up": 314788000,
"cpu": [
"12th Gen Intel(R) Core(TM) i7-1260P",
2496,
16
],
www.vnodeautomation.com
I
42
"usage": {
"cpu": [
253,
10000
],
"ram": [
9040551936,
16882249728
],
"disk": [
185310793728,
511218061312
]
}
}
}
GET /system?cmd=errorCount
• Request example:
http://localhost:3003/system?cmd=errorCount
• Response example
Restart Service
Restarts vNode service.
POST /system?cmd=restartService
www.vnodeautomation.com
I
43
http://localhost:3003/system?cmd=restartService
• Request example:
• Response example
The response is empty. An HTTP 200 status code indicates a successful request.
Tag
The Tag API provides read and write operations and information about the status and
monitoring of tags in the target node.
List tags
Retrieves a list of tags present in the defined path.
GET /tag?cmd=browse&path=<path>
• parameters:
o path: Path to browse for tags (Optional parameter)
o options:
▪ filter: Full tag path regex (Optional parameter)
▪ flat: Receive an array instead of an object (Optional parameter)
▪ recurrent: Include subgroups (Optional parameter)
▪ hideTags: Do not receive tags (Optional parameter)
▪ hideGroups: Do not receive groups (Optional parameter)
• Request example:
http://localhost:3003/tag?cmd=browse&path=/PLANT01/BLUELAKE/PVG001/&options.filt
er=POWER*
www.vnodeautomation.com
I
44
• Response example
{
"groups": {
"INV001": {},
"INV002": {},
"WST001": {},
"KPI": {}
}
}
Read tag
Retrieves values of tags present in the defined path.
GET /tag?cmd=read&path=<path>
• Request example:
http://localhost:3003/tag?cmd=read&path=/PLANT01/BLUELAKE/PVG001/PST001/INV001
/*
• parameters:
o path: Path to read tag (Optional parameter)
o options:
▪ filter: Path to read tags. Entire groups can read using a wildcard * (Optional
parameter)
▪ recurrent: Include subgroups (Optional parameter)
• Response example
{
"tags": {
"PERFORMANCE_RATIO": {
"status": {
"value": 1,
"ts": 1693558129319
},
"data": {
"value": 1.3232478329655442,
"quality": 192,
"ts": 1694002805012
}
},
www.vnodeautomation.com
I
45
"POA_IRRADIANCE_5MIN_AVG": {
"status": {
"value": 1,
"ts": 1693558129319
},
"data": {
"value": 655.7069053519514,
"quality": 192,
"ts": 1694002805011
}
}
}
}
GET /tag?cmd=details&path=<path>
• parameters:
o path: Path to read tag (Mandatory parameter)
o options:
▪ filter: Path to read tags. Entire groups can read using a wildcard * (Optional
parameter)
▪ recurrent: Include subgroups (Optional parameter)
• Request example:
http://localhost:3003/tag?cmd=details&path=/PLANT01/BLUELAKE/PVG001/PST001/INV00
1/*&options.recurrent=true
www.vnodeautomation.com
I
46
• Response example
{
"description": "",
"_templates": ["Derived PVInverter"],
"tags": {
"ACTIVE_POWER": {
"id": 44,
"fullPath": "/PLANT01/BLUELAKE/PVG001/PST001/INV001/ACTIVE_POWER",
"remote": null,
"status": {
"value": 1,
"ts": 1687688676853
},
"data": {
"value": 280.6139831542969,
"quality": 192,
"ts": 1687763588626
},
"config": {
"description": "Active Power",
"type": "number",
"format": "%.1f",
"deadband": "0.0u",
"clientAccess": "R",
"engUnits": "kW",
"default": null,
"simulation": {
"enabled": false
},
"persistency": 0,
"views": [],
"security": {},
"extensions": {
"scaling": {
"enabled": false,
"raw": [0, 1000],
"eu": [0, 1000],
"clamp": [false, false]
},
"source": {
"enabled": true,
"type": "DerivedTags",
"module": "DerivedTags",
"config": {
"mode": "alias",
"options": {
"source": "/Plant/A0_IC0H/Meter INV01/Power AC"
}
}
},
"history": {
"enabled": true,
"module": "Historian, CENTRAL/Historian",
"config": {
"mode": "change",
"deadband": "0.0u",
"rangeY": [0, 600],
www.vnodeautomation.com
"interpolation": "linear",
"defaultMethod": "avg",
"rate": [0, 0]
}
I
47
"history": {
"enabled": true,
"module": "Historian, CENTRAL/Historian",
"config": {
"mode": "change",
"deadband": "0.0u",
"rangeY": [0, 600],
"interpolation": "linear",
"defaultMethod": "avg",
"rate": [0, 0]
}
},
"ae": {
"alarms": {}
}
}
}
}
}
}
GET /tag?cmd=history&path=<path>&start=<start_date>&end=<end_date>
• parameters:
o path: Tag path. (Mandatory parameter)
o start: Start date. Must be an ISO string or a Unix epoch timestamp (Mandatory
parameter)
o end: End date. Must be an ISO string or a Unix epoch timestamp (Mandatory
parameter)
o options:
▪ mode: Historical data modes. Can be raw, filter, delta or aggregated.
default setting: delta (Optional parameter)
▪ method: Aggregation method when using aggregated mode. Can be first,
last, min, max. and avg. Set to an empty value to get default method in the
tag configuration (Optional parameter)
▪ interval: Aggregation interval when using aggregated mode, in milliseconds
(Optional parameter)
www.vnodeautomation.com
I
48
• Request example:
http://localhost:3003/tag?cmd=history&path=/PLANT01/BLUELAKE/PVG001/PST001/INV00
1/ACTIVE_POWER&start=1685365215&end=2023-05-29T15:10:51.174Z
• Response example
{
"request": {
"tag": "/PLANT01/BLUELAKE/PVG001/PST001/INV001/ACTIVE_POWER",
"start": 1685365215,
"end": 1685373051174,
"options": {
"mode": "delta",
"method": null,
"interval": null,
"deadband": null,
"invalidAsNull": true,
"limit": null
},
"data": null
},
"data": [
[
1685365215,
null,
0,
3
]
]
}
www.vnodeautomation.com
I
49
GET /tag?cmd=historyMany&path=<path>&start=<start_date>&end=<end_date>
• parameters:
o paths: Tag path list. Can be a single tag, a comma-separated list or a JSON array
(Mandatory parameter)
o start: Start date. Must be an ISO string or a Unix epoch timestamp (Mandatory
parameter)
o end: End date. Must be an ISO string or a Unix epoch timestamp (Mandatory
parameter)
o options:
▪ mode: Historical data modes. Can be raw, filter, delta or aggregated.
default setting: delta (Optional parameter)
▪ method: Aggregation method when using aggregated mode. Can be
first, last, min, max and avg. Set to an empty value to get default method
in the tag configuration (Optional parameter)
▪ interval: Aggregation interval when using aggregated mode, in
milliseconds (Optional parameter)
▪ deadband: Deadband when using filter or delta mode (Optional
parameter)
▪ invalidAsNull: Convert non-good quality values to null when using raw
mode. (Optional parameter, by default it’s enabled).
▪ limit: Maximum number of samples to return when using raw mode.
(Optional parameter).
• Request example:
http://localhost:3003/tag?cmd=historyMany&paths=/PLANT01/BLUELAKE/PVG001/PST001/
INV001/ACTIVE_POWER,/PLANT01/BLUELAKE/PVG001/PST001/INV001/VOLTAGE&start=1619707
394591&end=2021-04-29T15:10:51.174Z
www.vnodeautomation.com
I
50
• Response example
{
"/PLANT01/BLUELAKE/PVG001/PST001/INV001/ACTIVE_POWER": {
"request": {
"tag": "/PLANT01/BLUELAKE/PVG001/PST001/INV001/ACTIVE_POWER",
"start": 1619707394591,
"end": 1619709051174,
"options": {
"mode": "delta",
"method": null,
"interval": null,
"deadband": null,
"invalidAsNull": true,
"limit": null
},
"data": null
},
"data": [
[
1619707394591,
null,
0,
3
]
]
}
}
GET
/tag?cmd=historyFilter&path=<path>&start=<start_date>&end=<end_date>&options.fil
ter=<tag_path>
• parameters:
o paths: Tag path list. Can be a single tag, a comma-separated list or a JSON array
(Mandatory parameter)
o start: Start date. Must be an ISO string or a Unix epoch timestamp (Mandatory
parameter)
o end: End date. Must be an ISO string or a Unix epoch timestamp (Mandatory
parameter)
o options:
▪ filter: Full tag path Regex filter (Optional parameter)
www.vnodeautomation.com
I
51
• Request example:
http://localhost:3003/tag?cmd=historyFilter&path=/PLANT01/BLUELAKE/PVG001/PST001
/INV001/&start=1619707394591&end=2021-04-
29T15:10:51.174Z&options.filter=POWER&end=2021-04-29T15:10:51.174Z
• Response example
{
"/PLANT01/BLUELAKE/PVG001/PST001/INV001/ACTIVE_POWER": {
"request": {
"tag": "/PLANT01/BLUELAKE/PVG001/PST001/INV001/ACTIVE_POWER",
"start": 1619707394591,
"end": 1619709051174,
"options": {
"recurrent": false,
"mode": "delta",
"method": null,
"interval": null,
"deadband": null,
"invalidAsNull": true,
"limit": null
},
"data": null
},
"data": [[1619707394591, null, 0, 3]]
}
}
www.vnodeautomation.com
I
52
GET /tag?cmd=getViews
• Request example:
http://localhost:3003/tag?cmd=getViews
• Response example
[
"ExampleView"
]
Write tag
Writes a specific tag value.
POST /tag?cmd=write
• parameters:
o path: Tag path (Mandatory parameter)
o value: Value to write. The type must be the same as the configuration (number,
Boolean or string) (Mandatory parameter)
• Request example:
http://localhost:3003/tag?cmd=write
JSON
{
"path": "/ExampleTag",
"value": 555
}
www.vnodeautomation.com
I
53
• Response example
The response is empty. An HTTP 200 status code indicates a successful request.
www.vnodeautomation.com
I
54
• Step 3: Use the IP_address variable to enter the name or IP address of the server as
well as the port.
www.vnodeautomation.com
I
55
www.vnodeautomation.com