# LitmusEdge 4.0.x API Documentation/DeviceHub/Asset Discovery - LE, LEM, LUNS API Docs

## Network Interfaces

**GET** `{{edgeUrl}}/nd/ifaces`

# Network Interfaces

Returns the network interfaces the device exposes for asset discovery, with each interface's **discovery-enabled** and **operational** state. Use this to render an interface picker, or to verify that an interface is up before triggering a scan.

This is the discovery-service view, not the host-level network view -- for the latter, see `System > Network > Interfaces`.

## Endpoint

```http
GET {{edgeUrl}}/nd/ifaces
```

## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.

## Parameters

None.

## Response

`200 OK` -- `application/json`. Array of interface objects.

| Field      | Type     | Description                                                                                          |
|------------|----------|------------------------------------------------------------------------------------------------------|
| `name`     | string   | Kernel name of the interface (`eth0`, `wlan0`, `usb0`, `br0`, ...). Use this in `/nd/ifaces/{name}/enable`. |
| `enabled`  | boolean  | `true` if network discovery has been turned on for this interface (via the per-interface `enable` endpoints). |
| `active`   | boolean  | `true` if the kernel reports the interface as up and carrying a link. ND will only produce results on `active` interfaces. |

### Example response

```json
[
  {
    "name": "eth0",
    "enabled": false,
    "active": true
  }
]
```

A pair of `enabled: false, active: true` is the safe-default state right after install: the interface is healthy but the device has not been told to scan on it.

## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


### Response

**Status**: 200 OK

```json
[
    {
        "name": "eth0",
        "enabled": false,
        "active": true
    }
]
```

---

## Assets/Devices on Network

**GET** `{{edgeUrl}}/networkutil/discover/cip/devices`

# Assets/Devices on Network (cached CIP results)

Returns the most recently observed set of **CIP / EtherNet/IP** devices, across every interface the CIP scanner has been run on. CIP is the ODVA-defined application-layer protocol used by Rockwell / Allen-Bradley PLCs (and many other vendors).

This endpoint is a **read of the cache**. To force a fresh probe, call `Scan for Devices/Assets on eth0` (or the same path with another interface) first, then re-read here.

## Endpoint

```http
GET {{edgeUrl}}/networkutil/discover/cip/devices
```

## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.

## Parameters

None.

## Response

`200 OK` -- `application/json`. Array of CIP device objects.

| Field                       | Type     | Description                                                                                |
|-----------------------------|----------|--------------------------------------------------------------------------------------------|
| `encap_protocol_version`    | integer  | EtherNet/IP encapsulation protocol version reported by the device.                         |
| `ip_address`                | string   | IPv4 address of the device.                                                                |
| `vendor`                    | string   | Vendor name from ODVA's vendor registry (e.g. `Rockwell Automation/Allen-Bradley`).        |
| `product_type`              | string   | Functional category from ODVA (e.g. `Programmable Logic Controller`, `Communications Adapter`). |
| `product_code`              | integer  | Vendor-assigned product code.                                                              |
| `revision.major` / `.minor` | integer  | Firmware revision.                                                                         |
| `status`                    | integer  | Raw EtherNet/IP status bitfield. Implementation-defined; useful in support tickets.        |
| `serial`                    | string   | Vendor-assigned serial number (hex).                                                       |
| `product_name`              | string   | Device's model string (e.g. `2080-LC50-24QWB`).                                            |
| `state`                     | integer  | Device-reported lifecycle state.                                                           |
| `interface`                 | string   | LE interface the device was discovered on.                                                 |
| `port`                      | string   | EtherNet/IP port. Always `44818` for standard CIP.                                         |
| `last_seen`                 | integer  | Unix epoch seconds of the most recent successful probe.                                    |
| `protocol`                  | string   | Always `CIP` for this endpoint.                                                            |

### Example response

```json
[
  {
    "encap_protocol_version": 1,
    "ip_address": "10.17.0.159",
    "vendor": "Rockwell Automation/Allen-Bradley",
    "product_type": "Programmable Logic Controller",
    "product_code": 141,
    "revision": { "major": 9, "minor": 11 },
    "status": 52,
    "serial": "609a1f75",
    "product_name": "2080-LC50-24QWB",
    "state": 2,
    "interface": "eth0",
    "port": "44818",
    "last_seen": 1722375447,
    "protocol": "CIP"
  }
]
```

## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


### Response

**Status**: 200 OK

```json
[
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.159",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Programmable Logic Controller",
        "product_code": 141,
        "revision": {
            "major": 9,
            "minor": 11
        },
        "status": 52,
        "serial": "609a1f75",
        "product_name": "2080-LC50-24QWB",
        "state": 2,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.6",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Programmable Logic Controller",
        "product_code": 106,
        "revision": {
            "major": 30,
            "minor": 11
        },
        "status": 48,
        "serial": "609bcdd2",
        "product_name": "1769-L30ER/A LOGIX5330ER",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.95",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Programmable Logic Controller",
        "product_code": 90,
        "revision": {
            "major": 2,
            "minor": 15
        },
        "status": 4,
        "serial": "608effd8",
        "product_name": "1766-L32BWA B/15.00",
        "state": 0,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.190",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Programmable Logic Controller",
        "product_code": 216,
        "revision": {
            "major": 30,
            "minor": 14
        },
        "status": 12384,
        "serial": "60e9d1c5",
        "product_name": "5069-L310ER/A",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.44",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Communications Adapter",
        "product_code": 185,
        "revision": {
            "major": 2,
            "minor": 12
        },
        "status": 4,
        "serial": "9ca075a0",
        "product_name": "1763-L16BBB B/12.00",
        "state": 0,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.9",
        "vendor": "Omron Corporation",
        "product_type": "Communications Adapter",
        "product_code": 1643,
        "revision": {
            "major": 2,
            "minor": 1
        },
        "status": 52,
        "serial": "01090861",
        "product_name": "NJ301-1100",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.2.162",
        "vendor": "TURCK",
        "product_type": "Communications Adapter",
        "product_code": 14017,
        "revision": {
            "major": 2,
            "minor": 7
        },
        "status": 52,
        "serial": "00a86d8c",
        "product_name": "TBEN-L5-8IOL",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.42",
        "vendor": "Keyence Corporation",
        "product_type": "Communications Adapter",
        "product_code": 100,
        "revision": {
            "major": 1,
            "minor": 1
        },
        "status": 52,
        "serial": "001414f7",
        "product_name": "KV-5500",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.129",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Communications Adapter",
        "product_code": 92,
        "revision": {
            "major": 2,
            "minor": 3
        },
        "status": 128,
        "serial": "0043dd68",
        "product_name": "1788-ENBT/A",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.170",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Communications Adapter",
        "product_code": 99,
        "revision": {
            "major": 1,
            "minor": 8
        },
        "status": 112,
        "serial": "6038f7c6",
        "product_name": "1761-NET-ENI/D",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.130",
        "vendor": "Parker Hannifin/Compumotor Division",
        "product_type": "Generic Device (deprecated)",
        "product_code": 1,
        "revision": {
            "major": 1,
            "minor": 1
        },
        "status": 116,
        "serial": "87654321",
        "product_name": "ACR9000",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.169",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Communications Adapter",
        "product_code": 166,
        "revision": {
            "major": 11,
            "minor": 2
        },
        "status": 48,
        "serial": "013860c2",
        "product_name": "1756-EN2T/D",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.2",
        "vendor": "ProSoft Technology",
        "product_type": "Communications Adapter",
        "product_code": 8009,
        "revision": {
            "major": 1,
            "minor": 3
        },
        "status": 48,
        "serial": "8da2be26",
        "product_name": "PLX31-EIP-MBTCP",
        "state": 255,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722375447,
        "protocol": "CIP"
    }
]
```

---

## Scan for Devices/Assets on eth0

**GET** `{{edgeUrl}}/networkutil/discover/cip/scan?ifce=eth0`

# Scan for Devices/Assets on eth0 (CIP active scan)

Triggers an **active CIP / EtherNet/IP scan** on the given interface and returns the freshly observed devices. The scan is synchronous: the call blocks until the probe round-trip completes (typically a few seconds), and the response is the same shape as `Assets/Devices on Network`.

This call also updates the cache served by `Assets/Devices on Network`.

## Endpoint

```http
GET {{edgeUrl}}/networkutil/discover/cip/scan?ifce=eth0
```

## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.

## Query parameters

| Parameter | Type   | Required | Description                                                                                          |
|-----------|--------|----------|------------------------------------------------------------------------------------------------------|
| `ifce`    | string | Yes      | Interface to scan on (e.g. `eth0`, `eth1`, `wlan0`). Use `Network Interfaces` to enumerate valid names. |

## Response

`200 OK` -- `application/json`. Same shape as `Assets/Devices on Network`.

See that endpoint for the field-by-field reference and an example payload.

### Example response (excerpt)

```json
[
  {
    "encap_protocol_version": 1,
    "ip_address": "10.17.0.170",
    "vendor": "Rockwell Automation/Allen-Bradley",
    "product_type": "Communications Adapter",
    "product_code": 99,
    "revision": { "major": 1, "minor": 8 },
    "status": 112,
    "serial": "6038f7c6",
    "product_name": "1761-NET-ENI/D",
    "state": 3,
    "interface": "eth0",
    "port": "44818",
    "last_seen": 1722376200,
    "protocol": "CIP"
  }
]
```

## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

### Scan-specific notes

- A successful scan with an empty array typically means CIP traffic is blocked upstream (firewall, VLAN isolation) or the interface has no CIP-speaking devices on it.
- This endpoint sends EtherNet/IP `ListIdentity` broadcasts. Some networks classify these as suspicious traffic; coordinate with IT before scheduling repeated scans.

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


### Response

**Status**: 200 OK

```json
[
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.170",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Communications Adapter",
        "product_code": 99,
        "revision": {
            "major": 1,
            "minor": 8
        },
        "status": 112,
        "serial": "6038f7c6",
        "product_name": "1761-NET-ENI/D",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.190",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Programmable Logic Controller",
        "product_code": 216,
        "revision": {
            "major": 30,
            "minor": 14
        },
        "status": 12384,
        "serial": "60e9d1c5",
        "product_name": "5069-L310ER/A",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.159",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Programmable Logic Controller",
        "product_code": 141,
        "revision": {
            "major": 9,
            "minor": 11
        },
        "status": 52,
        "serial": "609a1f75",
        "product_name": "2080-LC50-24QWB",
        "state": 2,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.42",
        "vendor": "Keyence Corporation",
        "product_type": "Communications Adapter",
        "product_code": 100,
        "revision": {
            "major": 1,
            "minor": 1
        },
        "status": 52,
        "serial": "001414f7",
        "product_name": "KV-5500",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.95",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Programmable Logic Controller",
        "product_code": 90,
        "revision": {
            "major": 2,
            "minor": 15
        },
        "status": 4,
        "serial": "608effd8",
        "product_name": "1766-L32BWA B/15.00",
        "state": 0,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.2",
        "vendor": "ProSoft Technology",
        "product_type": "Communications Adapter",
        "product_code": 8009,
        "revision": {
            "major": 1,
            "minor": 3
        },
        "status": 48,
        "serial": "8da2be26",
        "product_name": "PLX31-EIP-MBTCP",
        "state": 255,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.130",
        "vendor": "Parker Hannifin/Compumotor Division",
        "product_type": "Generic Device (deprecated)",
        "product_code": 1,
        "revision": {
            "major": 1,
            "minor": 1
        },
        "status": 116,
        "serial": "87654321",
        "product_name": "ACR9000",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.129",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Communications Adapter",
        "product_code": 92,
        "revision": {
            "major": 2,
            "minor": 3
        },
        "status": 128,
        "serial": "0043dd68",
        "product_name": "1788-ENBT/A",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.44",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Communications Adapter",
        "product_code": 185,
        "revision": {
            "major": 2,
            "minor": 12
        },
        "status": 4,
        "serial": "9ca075a0",
        "product_name": "1763-L16BBB B/12.00",
        "state": 0,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.2.162",
        "vendor": "TURCK",
        "product_type": "Communications Adapter",
        "product_code": 14017,
        "revision": {
            "major": 2,
            "minor": 7
        },
        "status": 52,
        "serial": "00a86d8c",
        "product_name": "TBEN-L5-8IOL",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.6",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Programmable Logic Controller",
        "product_code": 106,
        "revision": {
            "major": 30,
            "minor": 11
        },
        "status": 48,
        "serial": "609bcdd2",
        "product_name": "1769-L30ER/A LOGIX5330ER",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.9",
        "vendor": "Omron Corporation",
        "product_type": "Communications Adapter",
        "product_code": 1643,
        "revision": {
            "major": 2,
            "minor": 1
        },
        "status": 52,
        "serial": "01090861",
        "product_name": "NJ301-1100",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    },
    {
        "encap_protocol_version": 1,
        "ip_address": "10.17.0.169",
        "vendor": "Rockwell Automation/Allen-Bradley",
        "product_type": "Communications Adapter",
        "product_code": 166,
        "revision": {
            "major": 11,
            "minor": 2
        },
        "status": 48,
        "serial": "013860c2",
        "product_name": "1756-EN2T/D",
        "state": 3,
        "interface": "eth0",
        "port": "44818",
        "last_seen": 1722376200,
        "protocol": "CIP"
    }
]
```

---

## Scan for ND Nodes

**GET** `{{edgeUrl}}/nd/nodes/eth0`

# Scan for ND Nodes

Returns the current **Network Discovery (ND)** result set for one interface. ND is the passive MAC-level scanner -- it sees every host that appears in the device's ARP table or replies to broadcast probes, regardless of upper-layer protocol.

The interface must have ND enabled (`Enable Device Discovery in eth0`) for results to accumulate. A response of `[]` typically means ND is disabled, the interface is down, or no neighbors have been seen yet.

## Endpoint

```http
GET {{edgeUrl}}/nd/nodes/eth0
```

Substitute the interface name in the path to target a different interface. The pre-built `wlan0` variant is `Get Devices on wlan0`.

## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.

## Parameters

| Location | Name      | Required | Description                                  |
|----------|-----------|----------|----------------------------------------------|
| Path     | `eth0`    | Yes      | Interface name. See `Network Interfaces`.    |

No query parameters or request body.

## Response

`200 OK` -- `application/json`. Array of ND node objects.

| Field          | Type      | Description                                                                            |
|----------------|-----------|----------------------------------------------------------------------------------------|
| `iface`        | string    | Interface the node was seen on (echo of the path parameter).                           |
| `ipv4`         | string    | IPv4 address (empty if only L2 visible).                                               |
| `mac`          | string    | MAC address (canonical hex with colons).                                               |
| `macVendor`    | string    | OUI-derived vendor name (e.g. `Mitsubishi Electric Corporation`).                      |
| `plcVendor`    | string    | Optional vendor classification from higher-layer fingerprinting. Empty if unknown.     |
| `hostname`     | string    | Resolved hostname, empty if not known.                                                 |
| `tcpPorts`     | integer[] | Open TCP ports observed.                                                               |
| `udpPorts`     | integer[] | Open UDP ports observed.                                                               |
| `lastSeen`     | string    | ISO 8601 UTC timestamp of the most recent observation.                                 |
| `online`       | boolean   | Heuristic online/offline flag based on `lastSeen` recency.                             |

### Example response

```json
[
  {
    "iface": "eth0",
    "ipv4": "10.17.0.158",
    "mac": "38:e0:8e:e0:f4:41",
    "macVendor": "Mitsubishi Electric Corporation",
    "plcVendor": "",
    "hostname": "",
    "tcpPorts": [],
    "udpPorts": [],
    "lastSeen": "2024-07-30T21:37:28Z",
    "online": true
  }
]
```

## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


### Response

**Status**: 200 OK

```json
[
    {
        "iface": "eth0",
        "ipv4": "10.17.0.158",
        "mac": "38:e0:8e:e0:f4:41",
        "macVendor": "Mitsubishi Electric Corporation",
        "plcVendor": "",
        "hostname": "",
        "tcpPorts": [],
        "udpPorts": [],
        "lastSeen": "2024-07-30T21:37:28Z",
        "online": true
    },
    {
        "iface": "eth0",
        "ipv4": "10.17.0.219",
        "mac": "20:bb:c6:0e:f9:f5",
        "macVendor": "Jabil Circuit Hungary Ltd.",
        "plcVendor": "",
        "hostname": "",
        "tcpPorts": [],
        "udpPorts": [],
        "lastSeen": "2024-07-30T21:47:50Z",
        "online": true
    }
]
```

---

## Enable Device Discovery on wlan0

**PUT** `{{edgeUrl}}/nd/ifaces/wlan0/enable`

# Enable Device Discovery on wlan0

Enables Network Discovery scanning on the `wlan0` interface. After this call, `Get Devices on wlan0` will begin accumulating neighbors as they are observed. The setting persists across device reboots.

## Endpoint

```http
PUT {{edgeUrl}}/nd/ifaces/wlan0/enable
```

## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.

## Parameters

| Location | Name        | Required | Description                                                       |
|----------|-------------|----------|-------------------------------------------------------------------|
| Path     | `wlan0`   | Yes      | Interface name. Use `Network Interfaces` to list valid names.     |

No query parameters or request body.

## Response

`200 OK` -- empty body (or a small JSON ack depending on build).

## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


### Response

**Status**: 204 No Content

---

## Disable Device Discovery on wlan0

**PUT** `{{edgeUrl}}/nd/ifaces/wlan0/disable`

# Disable Device Discovery on wlan0

Disables Network Discovery scanning on the `wlan0` interface. The ND cache for this interface is retained (re-enable to keep growing it), but no new observations are recorded.

## Endpoint

```http
PUT {{edgeUrl}}/nd/ifaces/wlan0/disable
```

## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.

## Parameters

| Location | Name        | Required | Description                                                       |
|----------|-------------|----------|-------------------------------------------------------------------|
| Path     | `wlan0`   | Yes      | Interface name. Use `Network Interfaces` to list valid names.     |

No query parameters or request body.

## Response

`200 OK` -- empty body (or a small JSON ack depending on build).

## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


### Response

**Status**: 204 No Content

---

## Get Devices on wlan0

**GET** `{{edgeUrl}}/nd/nodes/wlan0`

# Get Devices on wlan0

Wireless-interface variant of `Scan for ND Nodes`. Returns the current Network Discovery (ND) result set for `wlan0`. See `Scan for ND Nodes` for the full response field reference and notes about enabling ND on the interface.

## Endpoint

```http
GET {{edgeUrl}}/nd/nodes/wlan0
```

## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.

## Parameters

| Location | Name      | Required | Description                          |
|----------|-----------|----------|--------------------------------------|
| Path     | `wlan0`   | Yes      | Interface name (hardcoded in the URL). |

## Response

`200 OK` -- `application/json`. Array of ND node objects (see `Scan for ND Nodes` for the field reference).

## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


---

## Enable Device Discovery in eth0

**PUT** `{{edgeUrl}}/nd/ifaces/eth0/enable`

# Enable Device Discovery on eth0

Enables Network Discovery scanning on the wired Ethernet interface `eth0`. After this call, `Scan for ND Nodes` will begin accumulating neighbors as they are observed. The setting persists across device reboots.

## Endpoint

```http
PUT {{edgeUrl}}/nd/ifaces/eth0/enable
```

## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.

## Parameters

| Location | Name        | Required | Description                                                       |
|----------|-------------|----------|-------------------------------------------------------------------|
| Path     | `eth0`   | Yes      | Interface name. Use `Network Interfaces` to list valid names.     |

No query parameters or request body.

## Response

`200 OK` -- empty body (or a small JSON ack depending on build).

## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


### Response

**Status**: 204 No Content

---

## Disable Device Discovery in eth0

**PUT** `{{edgeUrl}}/nd/ifaces/eth0/disable`

# Disable Device Discovery on eth0

Disables Network Discovery scanning on the wired Ethernet interface `eth0`. The ND cache for this interface is retained (re-enable to keep growing it), but no new observations are recorded.

## Endpoint

```http
PUT {{edgeUrl}}/nd/ifaces/eth0/disable
```

## Authentication

HTTP Basic Auth. **Username** is your API token, **password** is empty. Tokens are managed under `System > Access Control > Tokens`.

## Parameters

| Location | Name        | Required | Description                                                       |
|----------|-------------|----------|-------------------------------------------------------------------|
| Path     | `eth0`   | Yes      | Interface name. Use `Network Interfaces` to list valid names.     |

No query parameters or request body.

## Response

`200 OK` -- empty body (or a small JSON ack depending on build).

## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


### Response

**Status**: 204 No Content

---

