---
title: "REST API SERVER | Calls | N3uron KB V1.22"
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: 2026-01-20T11:27:41Z
published: 2026-01-20T11:27:41Z
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://<IP_address>:<HTTP_port](http://&lt;IP_address&gt;:&lt;HTTP_port) or [https://<IP_address>:<HTTPS_port>](https://&lt;IP_address&gt;:&lt;HTTPS_port&gt;), followed by the corresponding request 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

**Retrieves the list of alarms in the target node.**

```plaintext
GET /alarm?cmd=get&path=<path>&options.filter.path=<path_filter>
```

- **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:**

```plaintext
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.**

```plaintext
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:**

```plaintext
http://localhost:3003/alarm?cmd=count&path=/000_PLANT/040_ZONE/040_MTR/
```

**Response example:**

```plaintext
1
```

### Get alarm history

**Retrieves historical data of a specific alarm.**

```plaintext
GET /alarm?cmd=history&path=<path>&start=<start_date>&end=<end_date>
```

- **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:**

```plaintext
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.**

```plaintext
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:**

```plaintext
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.**

```plaintext
GET /backup?cmd=get
```

**Request example:**

```plaintext
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.**

```plaintext
GET /backup?cmd=export&name=<backup_name>
```

- **parameter:**
  - **name:**Name of the backup file (Mandatory parameter).

**Request example:**

```plaintext
http://localhost:3003/backup?cmd=export&name=17_5_2023
```

**Response example:**

```plaintext
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
```

### **Create a backup**

**Creates a configuration backup of the target node.**

```plaintext
POST /backup?cmd=create
```

- **parameters:**
  - **name:** Name of the backup file (Mandatory parameter).
  - **metadata:**
    - **description:** Description of the backup file (Optional parameter).

**Request example:**

```plaintext
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.**

```plaintext
POST /backup?cmd=rename
```

- **parameters:**
  - **name:** Name of the backup file (Mandatory parameter).
  - **rename:** New name of the backup file (Mandatory parameter).

**Request example:**

```plaintext
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.**

```plaintext
POST /backup?cmd=delete
```

- **parameters:**
  - **name:** Name of the backup file (Mandatory parameter).

**Request example:**

```plaintext
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.**

```plaintext
POST /backup?cmd=import
```

- **parameters:**
  - **name:** Name of the backup file (Mandatory parameter).
  - **data:** Backup file data, encoded in Base64 (Mandatory parameter).

**Request example:**

```plaintext
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.**

```plaintext
POST /backup?cmd=load
```

- **parameters:**
  - **name:** Name of the backup file (Mandatory parameter).

**Request example:**

```plaintext
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.**

```plaintext
GET /certificate?cmd=get&options.moduleName=<moduleName>&options.type=<type>
```

- **parameters:**
  - **options:**
    - **moduleName:**Name of the module. Defaults to **bootstrap**.
    - **type:** Type of certificate (links_inbound, links_outbound, inbound, outbound).

**Request example:**

```plaintext
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.**

```plaintext
GET /certificate?cmd=export&options.type=<type>&options.id=<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:**

```plaintext
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.**

```plaintext
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:**

```plaintext
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.**

```plaintext
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:**

```plaintext
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.**

```plaintext
GET /module?cmd=details
```

**Request example:**

```plaintext
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.**

```plaintext
GET /module?cmd=getInstalled
```

**Request example:**

```plaintext
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.**

```plaintext
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:**

```plaintext
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.**

```plaintext
GET /module?cmd=getConfigList&moduleType=<module_type>
```

- **parameters:**
  - **moduleType:** Module type (Optional parameter).

**Request example:**

```plaintext
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.**

```plaintext
GET /module?cmd=getConfigPresent&moduleName=<module_name>
```

- **parameters:**
  - **moduleName:** Module instance name (Optional parameter).

**Request example:**

```plaintext
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.**

```plaintext
GET /module?cmd=getConfigData&moduleName=<module_name>&configName=<config_name>
```

- **parameters:**
  - **moduleName:** Module instance name (Optional parameter).
  - **configName:** Configuration name (Mandatory parameter).

**Request example:**

```plaintext
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.**

```plaintext
POST /module?cmd=start
```

- **parameters:**
  - **moduleName:** Module instance name (Mandatory parameter).

**Request example:**

```plaintext
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.**

```plaintext
POST /module?cmd=stop
```

- **parameters:**
  - **moduleName:**Module instance name (Mandatory parameter).

**Request example:**

```plaintext
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.**

```plaintext
POST /module?cmd=restart
```

- **parameters:**
  - **moduleName:** Module instance name (Mandatory parameter).

**Request example:**

```plaintext
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.**

```plaintext
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:**

```plaintext
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.**

```plaintext
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:**

```plaintext
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.**

```plaintext
GET /license?cmd=getUid
```

**Request example:**

```plaintext
http://localhost:3003/license?cmd=getUid
```

**Response example:**

```json
{
  "host": "edge01",
  "uid": "3cbd33383ef80d7faff3bf0be1262c9f"
}
```

### **List licenses**

**Retrieves a list of licenses of this node.**

```plaintext
GET /license?cmd=get
```

**Request example:**

```plaintext
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.**

```plaintext
GET /license?cmd=read&name=<license_name>
```

- **parameters:**
  - **name:** Name of the license file (Mandatory parameter).

**Request example:**

```plaintext
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.**

```plaintext
POST /license?cmd=add
```

- **parameters:**
  - **data:** Data of the license file in JSON format (Mandatory parameter).

**Request example:**

```plaintext
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.**

```plaintext
POST /license?cmd=remove
```

- **parameters:**
  - **name:** Name of the license file (Mandatory parameter).

**Request example:**

```plaintext
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.

## Log

The Log API provides access to the module logs.

### **Browse logs**

**Retrieves an object listing all available log files, grouped by module.**

```plaintext
GET /log/?cmd=browse
```

**Response example:**

```json
{
    "bootstrap": [
        [
            "2026-01-16",
            33116
        ],
        [
            "2026-01-17",
            237
        ],
        [
            "2026-01-19",
            6911
        ]
    ],
    "RestApiServer": [
        [
            "2026-01-16",
            1798
        ],
        [
            "2026-01-19",
            1685
        ]
    ],
    "WebUI": [
        [
            "2026-01-16",
            10889
        ],
        [
            "2026-01-17",
            237
        ],
        [
            "2026-01-19",
            3757
        ]
    ]
}
```

### **Export log files**

```plaintext
GET /log/?cmd=export
```

- **parameters:**
  - **selection:** Comma-separated list or JSON array of strings in the format ModuleName.YYYY-MM-DD. (Mandatory parameter).

**Request example:**

```plaintext
GET /log/?cmd=export&selection=["MqttClient.2025-05-13","bootstrap.2025-05-12","bootstrap.2025-05-13"]
```

**Response example:**

Returns a ZIP file encoded in base64 containing the selected logs.

```plaintext
UEsDBAoAAAAAAJiEM1wAAAAAAAAAAAAAAAAKAAAAYm9vdHN0cmFwL1BL.....
```

## 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.**

```plaintext
GET /redundancy?cmd=status
```

**Request example:**

```plaintext
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****.**

```plaintext
GET /system?cmd=status
```

**Request example:**

```plaintext
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...).******

```plaintext
GET /system?cmd=errorCount
```

**Request example:**

```plaintext
http://localhost:3003/system?cmd=errorCount
```

**Response example:**

```plaintext
0
```

### Restart service

**Restarts the N3uron service.**

```plaintext
POST /system?cmd=restartService
```

**Request example:**

```plaintext
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.**

```plaintext
GET /tag?cmd=browse&path=<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:**

```plaintext
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.**

```plaintext
GET /tag?cmd=read&path=<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:**

```plaintext
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.**

```plaintext
GET /tag?cmd=details&path=<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:**

```plaintext
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.**

```plaintext
GET /tag?cmd=history&path=<path>&start=<start_date>&end=<end_date>
```

- **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:**

```plaintext
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.**

```plaintext
GET /tag?cmd=historyMany&paths=<path>&start=<start_date>&end=<end_date>
```

- **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:**

```plaintext
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).**

```plaintext
GET /tag?cmd=historyFilter&path=<path>&start=<start_date>&end=<end_date>&options.filter=<tag_path>
```

- **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:**

```plaintext
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.**

```undefined
GET /tag?cmd=getViews
```

**Request example:**

```plaintext
http://localhost:3003/tag?cmd=getViews
```

**Response example:**

```json
[
  "ExampleView"
]
```

### Write tag

**Writes a specific tag value.**

```undefined
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:**

```plaintext
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.**

```Markup
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:**

```Markup
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.

### Create tag subscription

**Creates a new subscription to the data model**

```Markup
POST /tag?cmd=subscribe
```

Body (optional):

```json
{
  "data": "OPTIONAL_CUSTOM_DATA"
}
```

Custom metadata can be included in the data field. It is assigned to this subscription and will be returned along with the subscription status when querying for all the subscriptions. An empty body is also valid.

**Request example:**

```Markup
http://localhost:3003/tag?cmd=subscribe
```

```json
{
  "data": { "my": "custom data" }
}
```

**Response example:**

```json
{
    "id": 3,
    "model": {
        "description": "Root folder",
        "tags": {
            "Example tag": {
                "fullPath": "/Example tag",
                "remote": null,
                "status": {
                    "value": 1,
                    "ts": 1768905354249
                },
                "data": {
                    "value": null,
                    "quality": 192,
                    "ts": 1768905354249
                },
                "config": {
                    "_uid": 6.894503658248792e-257,
                    "description": "",
                    "type": "number",
                    "numberType": "float64",
                    "format": null,
                    "deadband": "0.0u",
                    "clientAccess": "R",
                    "engUnits": "",
                    "default": null,
                    "simulation": {
                        "enabled": false
                    },
                    "persistency": 0,
                    "views": [],
                    "extensions": {
                        "scaling": {
                            "enabled": false,
                            "raw": [
                                0,
                                1000
                            ],
                            "eu": [
                                0,
                                1000
                            ],
                            "clamp": [
                                false,
                                false
                            ]
                        },
                        "source": {
                            "enabled": false,
                            "type": "",
                            "module": ""
                        },
                        "history": {
                            "enabled": false,
                            "module": "",
                            "config": {
                                "deadband": "0.0u",
                                "rangeY": [
                                    0,
                                    100
                                ],
                                "interpolation": "linear",
                                "defaultMethod": "avg",
                                "rate": [
                                    0,
                                    0
                                ]
                            }
                        },
                        "ae": {
                            "alarms": {},
                            "quality_alarms": {}
                        }
                    }
                }
            }
        }
    }
}
```

### List tag subscriptions

**Retreive the list of active subscriptions**

```Markup
GET /tag?cmd=subscriptions
```

The response contains the list of active subscriptions, including:

- Subscription ID
- Associated custom data
- Number of discarded events
- Number of pending events

**Request example:**

```Markup
http://localhost:3003/tag?cmd=subscriptions
```

**Response example:**

```json
[
    {
        "id": 0,
        "data": null,
        "discardedEvents": 0,
        "events": 92
    },
    {
        "id": 2,
        "data": null,
        "discardedEvents": 0,
        "events": 85
    }
]
```

### Get subscription events

**Retreive the events for a subscription**

```Markup
GET /tag/?cmd=subscriptionEvents
```

- **parameters**
  - **id:**The ID of the subscription (Mandatory parameter).
  - **limit:** Maximum amount of events to receive in the response (Optional parameter).

The response returns a list of events, the number of remaining events (in case that a limit was applied) and the number of discarded events since the last query.

Two event types are supported:

- Tag update:

```json
{
  "type": "tag",
  "tag": "TAG_PATH",
  "data": {
    "value": "TAG_VALUE",
    "quality": "TAG_QUALITY",
    "ts": "TAG_TS_EPOCH"
  },
  "status": {
    "ts": "STATUS_CHANGE_EPOCH",
    "value": 0 | 1 // offline, online
  }
}
```

> [!NOTE]
> Note
> 
> **status** is included only for remote tags when the link status changes.

- Model update: Returns a full, nested tag model including the tags configuration.

```json
{
  "type": "model",
  "model": "NEW_FULL_MODEL"
}
```

**Request example:**

```Markup
http://localhost:3003/tag?cmd=subscriptionEvents&id=2&limit=100
```

**Response example:**

```json
{
  "discardedEvents": 0,
  "remainingEvents": 0,
  "events": [
    {
      "type": "tag",
      "tag": "/Wind Farm/Turbine_001/Speed",
      "data": {
        "value": 41616,
        "quality": 192,
        "ts": 1768905216024
      },
      "status": null
    },
    {
      "type": "tag",
      "tag": "/Wind Farm/Turbine_001/Voltage",
      "data": {
        "value": 41616,
        "quality": 192,
        "ts": 1768905216024
      },
      .....
      ........
      "status": null
    }
  ]
}
```

### Cancel tag subscription

**Cancels a specific tag subscription**

```Markup
POST /tag/?cmd=cancelSubscription
```

```json
{
  "id": <SUBSCRIPTION_ID>
}
```

**Request example:**

```Markup
http://localhost:3003/tag?cmd=cancelSubscription
```

Body:

```json
{
  "id": 1
}
```

[Embedded content](https://www.youtube.com/embed/Fstt0kV0Xb8?&amp;t=37s&amp;wmode=opaque&amp;rel=0) [Embedded content](https://www.youtube.com/embed/1y7PhiP5omc?&amp;wmode=opaque&amp;rel=0) [Embedded content](https://www.youtube.com/embed/IIl5rvV91s4?&amp;t=2s&amp;wmode=opaque&amp;rel=0) [Embedded content](https://www.youtube.com/embed/ElA34mLNRlI?&amp;list=PLS63jGt25U8_0PeHswi6-TInnRkEgCLGY&amp;index=1&amp;wmode=opaque&amp;rel=0)

[Embedded content](https://www.youtube.com/embed/sSA3MCQx9GE?&amp;t=8s&amp;wmode=opaque&amp;rel=0)

[REST API Server Full Product Details](https://n3uron.com/iiot-platform-modules/rest-api-server/)
