--- title: "REST API SERVER | Calls | N3uron KB V1.21" slug: "rest-api-server-calls" description: "REST API SERVER is a N3uron module designed to be used for exposing resources. REST calls can be used to retrieve datainformation or send control…" updated: 2025-12-23T12:39:56Z published: 2025-12-23T12:39:56Z canonical: "docs.n3uron.com/rest-api-server-calls" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.n3uron.com/llms.txt > Use this file to discover all available pages before exploring further. # REST API calls ## How to use this API In order to execute the desired command, API calls should start with http://::, followed by the corresponding request path. must be replaced by the server's IP address and and 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 **Retrieves the list of alarms in the target node.** ```markup GET /alarm?cmd=get&path=&options.filter.path= ``` - **parameters:** - **path:** Path to browse for alarms. (Mandatory parameter). - **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). This paramater is an **alias** for **minPriority.**(Optional parameter). - **minPriority**: Minimum priority (1: Low, 2: Medium, 3: High, 4: Critical). (Optional parameter). - **maxPriority:** Maximum **priority (1: Low, 2: Medium, 3: High, 4: Critical). (Optional parameter).** Note:The **minPriority** and **maxPriority** optional filters are available starting from **N3uron version 1.21.13**. As of this version, the **priority** parameter serves as an **alias for minPriority**, maintained for backward compatibility. **Request example:** ```markup http://localhost:3003/alarm?cmd=get&path=/000_PLANT/040_ZONE/040_MTR/&options.filter.path=/000_PLANT/040_ZONE/040_MTR/COM.active ``` **Response example:** ```json [ { "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 count **Retrieves the number of alarms.** ```markup GET /alarm?cmd=count ``` - **parameters:** - **path:** Path to browse for alarms (Mandatory parameter). - **options:** - **recurrent:** Include subgroups. - **filter:** Filter includes parameters: - **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). This paramater is an **alias** for **minPriority.**(Optional parameter). - **minPriority**: Minimum priority (1: Low, 2: Medium, 3: High, 4: Critical). (Optional parameter). - **maxPriority:** Maximum **priority (1: Low, 2: Medium, 3: High, 4: Critical). (Optional parameter).** Note:The **minPriority** and **maxPriority** optional filters are available starting from **N3uron version 1.21.13**. As of this version, the **priority** parameter serves as an **alias for minPriority**, maintained for backward compatibility. **Request example:** ```markup http://localhost:3003/alarm?cmd=count&path=/000_PLANT/040_ZONE/040_MTR/ ``` **Response example:** ```none 1 ``` ### Get alarm history **Retrieves historical data of a specific alarm.** ```markup GET /alarm?cmd=history&path=&start=&end= ``` - **parameters:** - **path:** Alarm path (Mandatory parameter). - **start:** Start date. Must be an ISO string or a Unix epoch timestamp (mandatory parameter). - **end:** End date. Must be an ISO string or a Unix epoch timestamp (mandatory parameter). - **options:** - **remoteNode:** Remote node to query the history. Can be a single node, a forward slash separated list or a JSON array (Optional parameter). - **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). This paramater is an **alias** for **minPriority.**(Optional parameter). - **minPriority**: Minimum priority (1: Low, 2: Medium, 3: High, 4: Critical). (Optional parameter). - **maxPriority:** Maximum **priority (1: Low, 2: Medium, 3: High, 4: Critical). (Optional parameter).** Note:The **minPriority** and **maxPriority** optional filters are available starting from **N3uron version 1.21.13**. As of this version, the **priority** parameter serves as an **alias for minPriority**, maintained for backward compatibility. **Request example:** ```markup 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:*** ```json { "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": [] } ``` ### Acknowledge alarm **Acknowledges alarms.** ```markup POST /alarm?cmd=ack ``` - **parameters:** - **paths:** Alarm paths. It can be a single alarm, a comma-separated list, or a JSON array (Mandatory parameter) - **msg:** Message to append to this acknowledgement (Optional parameter) **Request example:** ```markup 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.** ```markup GET /backup?cmd=get ``` **Request example:** ```markup http://localhost:3003/backup?cmd=get ``` **Response example:** ```json { "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.** ```markup GET /backup?cmd=export&name= ``` - **parameter:** - **name:** Name of the backup file (Mandatory parameter). **Request example:** ```markup http://localhost:3003/backup?cmd=export&name=17_5_2023 ``` **Response example:** ```none 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 ``` ### ### Create a backup **Creates a configuration backup of the target node.** ```markup POST /backup?cmd=create ``` - **parameters:** - **name:** Name of the backup file (Mandatory parameter). - **metadata:** - **description:** Description of the backup file (Optional parameter). **Request example:** ```markup http://localhost:3003/backup?cmd=create ``` ```json { "name": "backup-2025-03-21", "metadata":{ "description":"Node_001 Backup" } } ``` ****Response example:**** The response is empty. An HTTP 200 status code indicates a successful request. ### Rename a backup **Renames a configuration backup.** ```markup POST /backup?cmd=rename ``` - **parameters:** - **name:** Name of the backup file (Mandatory parameter). - **rename:** New name of the backup file (Mandatory parameter). ****Request example:**** ```markup http://localhost: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 **Deletes a configuration backup.** ```markup POST /backup?cmd=delete ``` - **parameters:** - **name:** Name of the backup file (Mandatory parameter). ****Request example:**** ```markup http://localhost:3003/backup?cmd=delete ``` ```json { "name": "EDGE01-PV-PROD" } ``` ********Response example:******** The response is empty. An HTTP 200 status code indicates a successful request. ### Import a backup **Imports a previously exported configuration backup encoded in Base64.** ```markup POST /backup?cmd=import ``` - **parameters:** - **name:** Name of the backup file (Mandatory parameter). - **data:** Backup file data, encoded in Base64 (Mandatory parameter). ********Request example:******** ```markup http://localhost:3003/backup?cmd=import ``` ```json { "name": "TestImport", "data": "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LTIwMDcwNy4xNTAyIiwKICAgICJNYXJjaGVzaW5pQ2xpZW50IjogIjEuMS4xLTE4MDgwOC4xMzU3IiwKICAgICJNZXR0bGVyVG9sZWRvQ2xpZW50IjogIjEuMi4wLTIwMDQwMS4yMjAxIiwKICAgICJNb2RidXNDbGllbnQiOiAiMS4yMC4wLTIwMDkyNS4wNjUyIiwKICAgICJNb2RidXNHYXRld2F5IjogIjEuNi41LTIwMDUzMS4xMDA5IiwKICAgICJNb2RidXNTZXJ2ZXIiOiAiMS4xLjEtMjAwNzA3LjE1MDAiLAogICAgIk1xdHRDbGllbnQiOiAiMS41LjMtMjAwNzE3LjA5MTUiLAogICAgIk9wY1VhQ2xpZW50IjogIjEuMTIuMi0yMDA5MjIuMDg0OCIsCiAgICAiT3BjVWFTZXJ2ZXIiOiAiMS4xMC4wLTIwMDkwMi4xODM1IiwKICAgICJPcGNYbWxDbGllbnQiOiAiMS4wLjAtMjAwMzIzLjExNTYiLAogICAgIlJlc3RBcGlDbGllbnQiOiAiMS42LjAtMjAxMDIxLjA5NDYiLAogICAgIlJlc3RBcGlTZXJ2ZXIiOiAiMS4zLjAtMjEwNDMwLjEyMjEtYmV0YSIsCiAgICAiU2NyaXB0aW5nIjogIjEuMy4yLTIwMDcwNy4wODI2IiwKICAgICJTaWVtZW5zQ2xpZW50IjogIjEuMy4wLTE5MDkwNi4wODEzIiwKICAgICJTbWFDbGllbnQiOiAiMS4wLjEtMjAwNDAxLjIyMDYiLAogICAgIlNxbENsaWVudCI6ICIxLjIuMC0yMDEwMjEuMTAxMSIsCiAgICAiVWZsRXhwb3J0ZXIiOiAiMS41LjUtMjAwNzIzLjExMDIiLAogICAgIlZkbWFYbWxDbGllbnQiOiAiMS4yLjAtMjAxMDIwLjE2NTIiLAogICAgIldlYlVJIjogIjEuMTUuOC0yMDEwMjYuMTQ0NCIsCiAgICAiV2ViVmlzaW9uIjogIjEuMS4xLTIwMTAxNC4xMzU5IiwKICAgICJYYW50cmV4Q2xpZW50IjogIjEuMi4xLTIwMDQwMS4yMjA4IiwKICAgICJGbGVldE1hbmFnZXJDbGllbnQiOiAiMS4wLjAtMjEwNDE2LjExMDItYmV0YSIKICB9Cn0=" } ``` ********Response example:******** The response is empty. An HTTP 200 status code indicates a successful request. ### Load a backup **Applies a configuration backup to the current node.** ```markup POST /backup?cmd=load ``` - **parameters:** - **name:** Name of the backup file (Mandatory parameter). ********Request example:******** ```markup http://localhost:3003/backup?cmd=load ``` ```json { "name": "BackupName" } ``` ****************Response example:**************** ```json { "completed": true, "completedRollback": false, "rollbackSaved": "", "rollbackSaveFailed": false, "rollbackHasWarnings": false, "warnings": [], "updatedModules": [] } ``` ## Certificate The Certificate API provides operations and information about the certificates managed by N3uron. ### List certificates **Retrieves the list of certificates.** ```markup GET /certificate?cmd=get&options.moduleName=&options.type= ``` - **parameters:** - **options:** - **moduleName:** Name of the module. Defaults to **bootstrap**. - **type:** Type of certificate (links_inbound, links_outbound, inbound, outbound). ********Request example:******** ```markup http://localhost:3003/certificate?cmd=get&options.moduleName=bootstrap&options.type=links_outbound ``` ****************Request example:**************** ```json [ { "id": "own/EDGE01__N3uron__LinkOut", "sn": "EDGE01:N3uron:LinkOut", "c": "US", "o": "N3uron Connectivity Systems", "dn": "edge01", "from": 1686132404000, "to": 2316852404000, "type": "outbound", "status": "own" }, { "id": "trusted/AWS_CENTRAL__N3uron__LinkManager[493875AFD372CFFA520BDDA55C77FCE733A5F5E3]", "sn": "AWS_CENTRAL:N3uron:LinkManager", "c": "US", "o": "N3uron Connectivity Systems", "dn": "ip-172-31-41-148", "from": 1686066957000, "to": 2316786957000, "type": "outbound", "status": "trusted" } ] ``` ### Export certificate **Retrieves the content of a specific certificate.** ```markup GET /certificate?cmd=export&options.type=&options.id= ``` - **parameters:** - **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:******** ```markup http://localhost:3003/certificate?cmd=export&options.type=outbound&options.id=trusted/AWS_CENTRAL__N3uron__LinkManager[493875AFD372CFFA520BDDA55C77FCE733A5F5E3] ``` ********Request example:******** ```json "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZHRENDQkFDZ0F3SUJBZ0lzUVZkVFgwTkZUbFJTUVV3NlRqTjFjbTl1T2t4cGJtdE5ZVzVoWjJWeU9qRTIKT0RZd05qWTVOVGN6Tmprd0RRWUpLb1pJaHZjTkFRRUxCUUF3ZmpFbk1DVUdBMVVFQXhNZVFWZFRYME5GVGxSUwpRVXc2VGpOMWNtOXVPa3hwYm10TllXNWhaMlZ5TVFzd0NRWURWUVFHRXdKVlV6RWtNQ0lHQTFVRUNoTWJUak4xCmNtOXVJRU52Ym01bFkzUnBkbWwwZVNCVGVYTjBaVzF6TVNBd0hnWUtDWkltaVpQeUxHUUJHUk1RYVhBdE1UY3kKTFRNeExUUXhMVEUwT0RBZUZ3MHlNekEyTURZeE5UVTFOVGRhRncwME16QTJNREV4TlRVMU5UZGFNSDR4SnpBbApCZ05WQkFNVEhrRlhVMTlEUlU1VVVrRk1PazR6ZFhKdmJqcE1hVzVyVFdGdVlXZGxjakVMTUFrR0ExVUVCaE1DClZWTXhKREFpQmdOVkJBb1RHMDR6ZFhKdmJpQkRiMjV1WldOMGFYWnBkSGtnVTNsemRHVnRjekVnTUI0R0NnbVMKSm9tVDhpeGtBUmtURUdsd0xURTNNaTB6TVMwME1TMHhORGd3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQgpEd0F3Z2dFS0FvSUJBUUNrd2VTalJqNllxSjRMdzdQbFZZNTcwMTNHbDRMRkl0S2pDNUhiSmRHMUFmeVhSRWZ0Cmx4OGU1NXVURGpPbmYveUlxTXBXd3VDZ0M5ZzZwVUFiUU9rZ3lHMVNsS01lOEd4cXRteWdEdlFLZ1NydXFQUmkKb1JrcTF2amQwRnd6SWFKakNLUTJGVG9BaFF5SWsya0l1SGJFY043dXVYVkNvRkhNUnBXNlBuYTJDa3RZS2MwSQp2UkxUenBRcEFQcDRONTlTZVlZaEhtamVzUFdsYVQrQ0MybWdnZ0J5SXFPRy9WZEgwQ2w1L1FzdFZrTEs3M3Z5CjNEQU1MVVN1NklBbVFMNmZ3K0JLMmwySEFwZWdwZ2tWamoydld2ZzlVMDFuNnlLdGJWMGhBbnU2T3kveU9jb1kKbTNqUEIxYklCWWw3L1htNWFLS011YVlQbERxbWtHU20xOFhCQWdNQkFBR2pnZ0YwTUlJQmNEQUpCZ05WSFJNRQpBakFBTUFzR0ExVWREd1FFQXdJQzlEQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0RBUVlJS3dZQkJRVUhBd2d3CkVRWUpZSVpJQVliNFFnRUJCQVFEQWdaQU1DMEdBMVVkRVFRbU1DU0dJblZ5YmpwQlYxTmZRMFZPVkZKQlREcE8KTTNWeWIyNDZUR2x1YTAxaGJtRm5aWEl3SFFZRFZSME9CQllFRk5mMFBRWXJZVWZzekZHeHBJanREMFhqK000SgpNSUhWQmdOVkhTTUVnYzB3Z2NxQUZOZjBQUVlyWVVmc3pGR3hwSWp0RDBYaitNNEpvWUdEcElHQU1INHhKekFsCkJnTlZCQU1USGtGWFUxOURSVTVVVWtGTU9rNHpkWEp2YmpwTWFXNXJUV0Z1WVdkbGNqRUxNQWtHQTFVRUJoTUMKVlZNeEpEQWlCZ05WQkFvVEcwNHpkWEp2YmlCRGIyNXVaV04wYVhacGRIa2dVM2x6ZEdWdGN6RWdNQjRHQ2dtUwpKb21UOGl4a0FSa1RFR2x3TFRFM01pMHpNUzAwTVMweE5EaUNMRUZYVTE5RFJVNVVVa0ZNT2s0emRYSnZianBNCmFXNXJUV0Z1WVdkbGNqb3hOamcyTURZMk9UVTNNelk1TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCWmFoVjgKUTJ3NVhydEt4eFVGTndsUWRDNER5STNRQ3U2dlF2ZmlnOUZPN3ZOTXgzaEY2UUY1OHFxdlFxdzl2eUxET1lWdQpKd2YyZ1dBeWdNZWdZUml5VXNQQWtjWXdpa2h4VzRPS1IrTkdoV1dNUitpSldEc2ZuTU9xWjJXMWlGSjIzdFJLCnRmY1JFWVV4RElkb3k1RlRUWFNGT2E5WUUycDUvUWh4WTBteFI2V3hPSGE1Lzl4NEF5b0lSeWtDWHl6TTJLZnIKQy9GbDcxRkVyRG5HQlRKeVUxdjZnRXkxQmVXZjdzTTlOVWNLK01IL0FnUEE2SW4ycDN5NWFZR0I1ZlBhd29ybgpSQW1ScHdWbUp2eWFSMGRYVkNZcGpBdXhwVTVnS3pEQ002V1dycGkzVVNxTFBZeTVwT0RkRWlxWmxYZmVidjUzCjRBa3JRdWNJeGUwTm81d3MKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" ``` ### Set certificate **Modifies a certificate from N3uron.** ```markup POST /certificate?cmd=set ``` - **parameters:** - **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. - **action:** Action to apply to the certificate (trust, untrust). ********Request example:******** ```markup http://localhost:3003/certificate?cmd=set ``` ```json { "options": { "type": "outbound", "id": "pending/NODE_001__N3uron__LinkManager[3A585E14D732ACE06DFAB2F7E34ED385DC78741D]", "action": "trust" } } ``` ********Response example:******** The response is empty. An HTTP 200 status code indicates a successful request. ### Remove certificate **Removes a certificate from N3uron.** ```markup POST /certificate?cmd=remove ``` - **parameters:** - **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:******** ```markup http://localhost:3003/certificate?cmd=remove ``` ```json { "options": { "type": "outbound", "id": "pending/GATEWAY01__N3uron__LinkManager[0FC9F102C7B9E3688B5EEFD3209CEEBCFBD2A830]", "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 details **Retrieves full details of instanced modules.** ```markup GET /module?cmd=details ``` ********Request example:******** ```markup http://localhost:3003/module?cmd=details ``` ********Response example:******** ```json { "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-beta", "requisites": { "bootstrapVersion": { "min": "1.38.0" }, "exeVersion": { "min": "1.21.0" } }, "name": "WebUI" }, "stats": { "tx": { "ok": 678, "error": 0 }, "rx": { "ok": 643, "error": 0 } } } } } } ``` ### List installed modules **Retrieves the list of installed modules.** ```markup GET /module?cmd=getInstalled ``` ********Request example:******** ```markup http://localhost:3003/module?cmd=getInstalled ``` ********Response example:******** ```json [ "AbbVipClient", "AcquisuiteXmlCollector", "AuditTrail", "AuroraClient", "BacnetClient", "CaisoAdsClient", "CustomClient", "DataDiode", "DataExporter", "DataImporter", "DerivedTags", "DnpClient", "DnpServer", ... ] ``` ### List module instances **Retrieves a list of instanced modules in the target node.** ```markup GET /module?cmd=getInstances ``` - **parameters:** - **filter:** Module names. It can be a single filter, a comma-separated list, or a JSON array (Optional parameter) ********Request example:******** ```markup http://localhost:3003/module?cmd=getInstances ``` ********Response example:******** ```json [ "Historian", "OpcUaClient", "RestApiServer", "WebUI" ] ``` ### List module configurations **Retrieves a list of configuration files for every type of module.** ```markup GET /module?cmd=getConfigList&moduleType= ``` - **parameters:** - **moduleType:** Module type (Optional parameter). ********Request example:******** ```markup http://localhost:3003/module?cmd=getConfigList&moduleType=Historian ``` ********Response example:******** ```json { "default": { "text": "Config", "icon": "database fa-regular" }, "logger": { "text": "Logger", "icon": "book fa-regular" } } ``` #### ### Check configuration exists **Indicates whether or not the configuration files for a specific module instance exist.** ```markup GET /module?cmd=getConfigPresent&moduleName= ``` - **parameters:** - **moduleName:** Module instance name (Optional parameter). ********Request example:******** ```markup http://localhost:3003/module?cmd=getConfigPresent&moduleName=Historian ``` ********Response example:******** ```json { "default": true, "logger": true } ``` ### Get module configuration **Retrieves configuration file content for a specific module instance.** ```markup GET /module?cmd=getConfigData&moduleName=&configName= ``` - **parameters:** - **moduleName:** Module instance name (Optional parameter). - **configName****:** Configuration name (Mandatory parameter). ********Request example:******** ```markup http://localhost:3003/module?cmd=getConfigData&moduleName=OpcUaClient&configName=default ``` ********Response example:******** ```json "{\"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://89.117.59.81:4840\"],\"endpointMustExist\":[\"Boolean\",false],\"securityMode\":[\"String\",\"NONE\"],\"securityPolicy\":[\"String\",\"None\"],\"requestedSessionTimeout\":[\"Number\",3600000],\"reconnectionDelay\":[\"Number\",5000]}],\"auth\":[\"Object\",{\"enabled\":[\"Boolean\",true],\"user\":[\"String\",\"sunn3rgy\"],\"password\":[\"SecuredString\",\"Z4/rlgqL6bHsb/2J1VHkIkKLpejOXGnvWvadb8euXutzlaH6Rpi9zClDEXvW4qleLHVlW+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.** ```markup POST /module?cmd=start ``` - **parameters:** - **moduleName:** Module instance name (Mandatory parameter). ********Request example:******** ```markup http://localhost:3003/module?cmd=start ``` ```json { "moduleName": "Historian" } ``` ****************Response example:**************** The response is empty. An HTTP 200 status code indicates a successful request. ### Stop module **Stops a module.** ```markup POST /module?cmd=stop ``` - **parameters:** - **moduleName:** Module instance name (Mandatory parameter). ********Request example:******** ```markup 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 module **Restarts a module.** ```markup POST /module?cmd=restart ``` - **parameters:** - **moduleName:** Module instance name (Mandatory parameter). ********Request example:******** ```markup http://localhost:3003/module?cmd=restart ``` ```json { "moduleName": "Historian" } ``` ****************Response example:**************** The response is empty. An HTTP 200 status code indicates a successful request. ### Set module configuration **Sets a configuration file for a specific module instance.** ```markup POST /module?cmd=setConfigData ``` - ****parameters:**** - **moduleName:** Module instance name (Mandatory parameter). - **configName:** Configuration name (for example logger, API, users, tags, views, links, etc.) (Mandatory parameter). - **data:** Configuration file in JSON format (Mandatory parameter). - **options:** - **restart:** Restart the module after saving the new configuration (Optional parameter). - **deleteData:** Only applicable to the module configuration files. List of deleted module instances to clean their data. It can be a single instance, a comma-separated list, or a JSON array (Optional parameter). **Request example:** ```markup 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. ## Link The Link API provides operations and information about the status of the links in the target node. ### List links **Retrieves current links.** ```markup GET /link?cmd=get ``` - ****parameters:**** - **options:** - **remoteNode:** Remote node to browse. Can be a single node, a forward slash separated list or a JSON array. **Request example:** ```markup http://localhost:3003/link?cmd=get ``` **Response example:** ```json { "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" } } } } ``` ## License The License API provides operations and information about the status of licenses in the target node. ### Get node UID **Retrieves current node UID.** ```markup GET /license?cmd=getUid ``` **Request example:** ```markup http://localhost:3003/license?cmd=getUid ``` **Response example:** ```json { "host": "edge01", "uid": "3cbd33383ef80d7faff3bf0be1262c9f" } ``` ### ### List licenses **Retrieves a list of licenses of this node.** ```markup GET /license?cmd=get ``` **Request example:** ```markup http://localhost:3003/license?cmd=get ``` **Response example:** ```json [ { "path": "C:\\Program Files\\N3uron\\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 details **Retrieves details of a specific license.** ```markup GET /license?cmd=read&name= ``` - ****parameters:**** - **name:** Name of the license file (Mandatory parameter). **Request example:** ```markup http://localhost:3003/license?cmd=read&name=edge01-20230316.163525.n3l ``` **Response example:** ```json "{\"version\":\"1\",\"created\":\"2023-03-16T14:22:01.991Z\",\"signature\":\"20027e37c184cb21420bddb6e8ca5a893a982837f22351fe697bf521635c75f62d1e85b04527d9a21ede3cdbb8beb35f8341ee1e8b5e108d97601bfbdd4e8332dffd353e20f72ebca8605559387337ef17cc6c2b6abf95290d9d2b661bc82b43394cfdfca2de8fd4c9a866d8478bf74df8f1fdcf763ac3b0dea80636691d953f1a2ed448195a5b1128b98b92cca50db5e9ab70027eb534aabaa19d0a2ec2c900eccbe01455986e900706acb56645005c3c55f8b6be4028284d5a1e41a0410c5584a6669467c3045aac8950b0f6018efd72eaeeedb6febc631ea67a844989dc2472d712f4fba8e346afdbd3f635b20c3e839a5fdf90518973615dc58afd64e82d\",\"licenses\":[{\"version\":\"1.1\",\"host\":\"edge01\",\"uid\":\"3cbd33383ef80d7faff3bf0be1262c9f\",\"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\":\"AuroraClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"CustomClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"DataDiode\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"DataExporter\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"DataImporter\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"DerivedTags\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"DnpClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"DnpServer\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"DominoClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"Historian\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"Iec102Client\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"LinkedTags\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"MettlerToledoClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"ModbusClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"ModbusServer\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"MqttClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"OpcDaClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"OpcUaClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"OpcUaServer\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"OpcXmlClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"RestApiClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"RestApiServer\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"Scripting\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"SiemensClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"SmaClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"SqlClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"UflExporter\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"VdmaXmlClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"WebVision\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"XantrexClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"CaisoAdsClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"Notifier\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"AbbVipClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"FarellClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"RedundancyAgent\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"SparkplugClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"SolarmaxClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"AuditTrail\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"BacnetClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"SnmpClient\",\"tagAccess\":\"local\",\"count\":1}]}]}" ``` ### Add license **Adds a license to the target node.** ```markup POST /license?cmd=add ``` - **parameters:** - **data:** Data of the license file in JSON format (Mandatory parameter). **Request example:** ```markup http://localhost:3003/license?cmd=add ``` ```json { "data": "{\"version\":\"1\",\"created\":\"2021-01-05T14:43:16.652Z\",\"signature\":\"5ce1ff1b7a9f911b49f653aa291bd375d8b2c53a0d57b0958ffe5f2341d572e6d4afe9214a187fb84175ec51623c339d41257e8094dcdc74105a21478a8758432912537fc40b12a3f4c644a134844289c1c63ef7a4f6a9277d064f9d6f58863fa5116a3874d1092a17453b179ae8a448b548335368afd6da13c3715991e7cff487fccb5c364caf1792095c75cc4673523b423fe8029a7d9b5101bec65fa105467ffe59bcdbfb5f372749de86fc113f5e54f87507be93df7bbd00f6deec2e5974b8cc7448da0f5fd934267d49c77e604b7c9193fcf9bd5ee5da2eac26a4c45f2bf6373373027723211d9adeec27917d50ca8def6b6f247bf8f1d687bc59361207\",\"licenses\":[{\"host\":\"N3-Development\",\"uid\":\"*\",\"expires\":\"2022-01-01T00:00:00Z\",\"type\":\"production\",\"modules\":[{\"type\":\"AcquisuiteXmlCollector\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"AuroraClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"CustomClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"DataDiode\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"DataExporter\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"DataImporter\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"DbInjector\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"DerivedTags\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"DnpClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"DnpServer\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"DominoClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"FleetManagerClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"Historian\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"Iec102Client\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"LaetusWtClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"LinkedTags\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"MarchesiniClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"MettlerToledoClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"ModbusClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"ModbusGateway\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"ModbusServer\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"MqttClient\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"OpcDaClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"OpcUaClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"OpcUaServer\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"OpcXmlClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"RestApiClient\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"RestApiServer\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"Scripting\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"SiemensClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"SmaClient\",\"tagAccess\":\"local\",\"count\":1},{\"type\":\"SqlClient\",\"tagAccess\":\"remote\",\"count\":1},{\"type\":\"UflExporter\",\"tagAccess\":\"remote\",\"count\":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.** ```markup POST /license?cmd=remove ``` - **parameters:** - **name:** Name of the license file (Mandatory parameter). **Request example:** ```markup 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. ## Redundancy The Redundancy API provides information about the status of the redundancy mode. ### Get redundancy status **Retrieves information regarding** **the status of the redundancy mode.** ```markup GET /redundancy?cmd=status ``` **Request example:** ```markup http://localhost:3003/redundancy?cmd=status ``` **Response example:** ```json { "enabled": false, "standby": false, "mode": "primary" } ``` ## System The System API provides operations and information about the status and monitoring of the target node. ### Get system status **Retrieves information regarding** **the status of the host system, current hardware, hostname, uptime, etc****.** ```markup GET /system?cmd=status ``` **Request example:** ```markup http://localhost:3003/system?cmd=status ``` ****Response example:**** ```json { "n3": { "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 ], "usage": { "cpu": [ 253, 10000 ], "ram": [ 9040551936, 16882249728 ], "disk": [ 185310793728, 511218061312 ] } } } ``` ### Get error count **Retrieves** **the number of errors in the current node. If there are no errors, 0 is returned, otherwise, it returns the number of errors (these can be caused by invalid tag configuration, invalid link configuration, etc...).** ```markup GET /system?cmd=errorCount ``` **Request example:** ```markup http://localhost:3003/system?cmd=errorCount ``` **Response example:** ```none 0 ``` ### Restart service **Restarts the N3uron service.** ```markup POST /system?cmd=restartService ``` **Request example:** ```markup http://localhost:3003/system?cmd=restartService ``` **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.** ```markup GET /tag?cmd=browse&path= ``` - **parameters:** - **path:** Path to browse for tags (Mandatory parameter). - **options:** - **filter:** Regex filter to apply to the path of the tags (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:** ```markup http://localhost:3003/tag?cmd=browse&path=/SUNN3RGY/BLUELAKE/PVG001/&options.filter=POWER* ``` ****Response example:**** ```json { "groups": { "INV001": {}, "INV002": {}, "WST001": {}, "KPI": {} } } ``` ### Read tag **Retrieves values of tags present in the defined path.** ```markup GET /tag?cmd=read&path= ``` - **parameters:** - **path:** Path of the tag or group to read. If the path is a group then it must end with /* and it will return all the tags included in this group (Mandatory parameter). - **options:** - **filter:** Regex filter to apply to the path of the tags (Optional parameter). - **recurrent:** Include subgroups (Optional parameter). **Request example:** ```markup http://localhost:3003/tag?cmd=read&path=/SUNN3RGY/BLUELAKE/PVG001/PST001/INV001/* ``` ****Response example:**** ```json { "tags": { "PERFORMANCE_RATIO": { "status": { "value": 1, "ts": 1693558129319 }, "data": { "value": 1.3232478329655442, "quality": 192, "ts": 1694002805012 } }, "POA_IRRADIANCE_5MIN_AVG": { "status": { "value": 1, "ts": 1693558129319 }, "data": { "value": 655.7069053519514, "quality": 192, "ts": 1694002805011 } } } } ``` ### Get tag details **Retrieves full details of tags present in the defined path.** ```markup GET /tag?cmd=details&path= ``` - **parameters:** - **path:** Path to read tag (Mandatory parameter). - **options:** - **filter:** Regex filter to apply to the path of the tags (Optional parameter). - **recurrent:** Include subgroups (Optional parameter). **Request example:** ```markup http://localhost:3003/tag?cmd=details&path=/SUNN3RGY/BLUELAKE/PVG001/PST001/*&options.recurrent=true ``` **Response example:** ```json { "description": "", "_templates": ["Derived PVInverter"], "tags": { "ACTIVE_POWER": { "id": 44, "fullPath": "/SUNN3RGY/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], "interpolation": "linear", "defaultMethod": "avg", "rate": [0, 0] } }, "ae": { "alarms": {} } } } } } } ``` ### Get tag history **Retrieves historical data of a specific tag.** ```markup GET /tag?cmd=history&path=&start=&end= ``` - **parameters:** - **path:** Tag path. (Mandatory parameter). - **start:** Start date. Must be an ISO string or a Unix epoch timestamp (Mandatory parameter). - **end:** End date. Must be an ISO string or a Unix epoch timestamp (Mandatory parameter). - **options:** - **remoteNode:** Remote node to query the history. Can be a single node, a forward slash separated list or a JSON array (Optional parameter). - **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** (minimum), **max** (maximum), **avg** (average), **delta** (difference between last and first) and **stddev** (standard deviation). 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). Note:**Standard Deviation** and **Delta** aggregation modes are available from **N3uron** version **1.21.10**. **Request example:** ```markup http://localhost:3003/tag?cmd=history&path=/SUNN3RGY/BLUELAKE/PVG001/PST001/INV001/ACTIVE_POWER&start=1685365215&end=2023-05-29T15:10:51.174Z ``` ****Response example:**** ```json { "request": { "tag": "/SUNN3RGY/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 ] ] } ``` ### Get history for many tags **Retrieves historical data of tags.** ```markup GET /tag?cmd=historyMany&paths=&start=&end= ``` - ****parameters:**** - **paths:** Tag path list. It can be a single tag, a comma-separated list, or a JSON array (Mandatory parameter). - **start:** Start date. Must be an ISO string or a Unix epoch timestamp (Mandatory parameter). - **end:** End date. Must be an ISO string or a Unix epoch timestamp (Mandatory parameter). - **options:** - **remoteNode:** Remote node to query the history. Can be a single node, a forward slash separated list or a JSON array **(Optional parameter).** - **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** (minimum), **max** (maximum), **avg** (average), **delta** (difference between last and first) and **stddev** (standard deviation). Set to an empty value to get the 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). Note:**Standard Deviation** and **Delta aggregation methods** are available from **N3uron** version **1.21.10**. **Request example:** ```markup http://localhost:3003/tag?cmd=historyMany&paths=/SUNN3RGY/BLUELAKE/PVG001/PST001/INV001/ACTIVE_POWER,/SUNN3RGY/BLUELAKE/PVG001/PST001/INV001/VOLTAGE&start=1619707394591&end=2021-04-29T15:10:51.174Z ``` ****Response example:**** ```json { "/SUNN3RGY/BLUELAKE/PVG001/PST001/INV001/ACTIVE_POWER": { "request": { "tag": "/SUNN3RGY/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 filtered history **Retrieves historical data of tags (with regex filter).** ```markup GET /tag?cmd=historyFilter&path=&start=&end=&options.filter= ``` - **parameters:** - **paths:** Tag path list. It can be a single tag, a comma-separated list, or a JSON array (Mandatory parameter). - **start:** Start date. Must be an ISO string or a Unix epoch timestamp (Mandatory parameter). - **end:** End date. Must be an ISO string or a Unix epoch timestamp (Mandatory parameter). - **options:** - **remoteNode:** Remote node to query the history. Can be a single node, a forward slash separated list or a JSON array (Optional parameter). - **filter:** Full tag path Regex filter (Optional parameter). - **recurrent:** Include subgroups (Optional parameter). - **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** (minimum), **max** (maximum), **avg** (average), **delta** (difference between last and first) and **stddev** (standard deviation). Set to an empty value to get the 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). Note:**Standard Deviation** and **Delta** aggregation modes are available from **N3uron** version **1.21.10**. **Request example:** ```markup http://localhost:3003/tag?cmd=historyFilter&path=/SUNN3RGY/BLUELAKE/PVG001/PST001/INV001/&start=1619707394591&end=2021-04-29T15:10:51.174Z&options.filter=POWER ``` **Response example:** ```json { "/SUNN3RGY/BLUELAKE/PVG001/PST001/INV001/ACTIVE_POWER": { "request": { "tag": "/SUNN3RGY/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]] } } ``` #### ### Get tag views **Retrieves tag views.** ```markup GET /tag?cmd=getViews ``` **Request example:** ```markup http://localhost:3003/tag?cmd=getViews ``` **Response example:** ```json [ "ExampleView" ] ``` ### Write tag **Writes a specific tag value.** ```markup POST /tag?cmd=write ``` - ****parameters**** - **path:** Tag path (Mandatory parameter). - **value:** Value to write. The type must be the same as the configuration (number, Boolean or string) (Mandatory parameter). **Request example:** ```markup http://localhost:3003/tag?cmd=write ``` ```json { "path": "/ExampleTag", "value": 555 } ``` **Response example:** The response is empty. An HTTP 200 status code indicates a successful request. ### Write Many tags **Writes specified values to designated tags.** ```custom POST /tag?cmd=writeMany ``` - ****parameters**** - **paths:** A string containing a comma-separated list of full tag paths to write to. Each path in the list must refer to a valid and writable tag (Mandatory parameter). - **values:** An array of values to be written, in the same order as the tag paths. Each value must match the data type defined in the tag configuration (e.g., number, boolean, or string) (Mandatory parameter). **Request example:** ```custom http://localhost:3003/tag?cmd=writeMany ``` ```json { "paths": "/TRACKERS/TRK01/SETPOINT,/TRACKERS/TRK02/SETPOINT,/TRACKERS/TRK03/SETPOINT,/TRACKERS/TRK04/SETPOINT", "values": [45, 45, 45,45] } ``` **Response example:** The response is empty. An HTTP 200 status code indicates a successful request. [Embedded content](https://www.youtube.com/embed/Fstt0kV0Xb8?&t=37s&wmode=opaque&rel=0) [Embedded content](https://www.youtube.com/embed/1y7PhiP5omc?&wmode=opaque&rel=0) [Embedded content](https://www.youtube.com/embed/IIl5rvV91s4?&t=2s&wmode=opaque&rel=0) [Embedded content](https://www.youtube.com/embed/ElA34mLNRlI?&list=PLS63jGt25U8_0PeHswi6-TInnRkEgCLGY&index=1&wmode=opaque&rel=0) [Embedded content](https://www.youtube.com/embed/sSA3MCQx9GE?&t=8s&wmode=opaque&rel=0) [REST API Server Full Product Details](https://n3uron.com/iiot-platform-modules/rest-api-server/)