Litmus Edge 4.4.x - DeviceHub: Asset Discovery

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

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

[
  {
    "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

[
    {
        "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

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

[
  {
    "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

[
    {
        "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

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)

[
  {
    "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

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

[
    {
        "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

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

[
  {
    "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

[
    {
        "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

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

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

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

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

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


List Discovery Interfaces

GET {{edgeUrl}}/networkutil/interfaces

List Discovery Interfaces

Lists the network interfaces the discovery service can scan. Pass one of the returned names as ifce to Scan for Assets (All Protocols).

This is the route the Asset Discovery page of the LE web UI uses. It covers every protocol the discovery service knows (ARP, CIP, EtherNet/IP, Modbus TCP, Profinet, DNP3, ICCP, mDNS and others), where the older /nd/... and /networkutil/discover/cip/... routes in this folder each cover one mechanism. Both sets are served on 4.0.x.

Endpoint

GET {{edgeUrl}}/networkutil/interfaces

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. An array with one object per interface.

Field Type Description
name string Interface name, e.g. eth0.
[
  { "name": "eth0" }
]

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.

Response

Status: 200 OK

[
    {
        "name": "eth0"
    }
]

List Discovered Assets (All Protocols)

GET {{edgeUrl}}/networkutil/discover/all/devices

List Discovered Assets (All Protocols)

Returns every asset the discovery service has found so far, across all interfaces and protocols. Reads the stored results only and does not start a scan; use Scan for Assets (All Protocols) to refresh them.

This is the route the Asset Discovery page of the LE web UI uses. It covers every protocol the discovery service knows (ARP, CIP, EtherNet/IP, Modbus TCP, Profinet, DNP3, ICCP, mDNS and others), where the older /nd/... and /networkutil/discover/cip/... routes in this folder each cover one mechanism. Both sets are served on 4.0.x.

Endpoint

GET {{edgeUrl}}/networkutil/discover/all/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. An array of assets; empty when nothing has been discovered yet. On a busy plant network expect hundreds of entries.

Each entry is one asset, merged across every protocol that found it:

Field Type Description
ip_address string IP address of the asset.
mac_address string MAC address. Empty when the asset was only seen through mDNS.
vendor string Vendor, from the protocol response or the MAC OUI.
product_name string Product name reported by the asset (CIP, Profinet) or its mDNS host name.
product_type string Product type reported by the asset, when the protocol carries one.
interface string Interface the asset was seen on.
last_seen integer Unix time (seconds) the asset was last seen.
protocols [string] Industrial protocols detected, e.g. CIP, EtherNet/IP, Modbus TCP, Profinet.
protocols_data object Raw per-mechanism records keyed arp, cip, profinet, ... May be null.

Example, trimmed to two entries (MAC addresses replaced):

[
  {
    "ip_address": "10.17.0.42",
    "mac_address": "00:00:5e:00:53:02",
    "vendor": "Keyence Corporation",
    "product_name": "KV-5500",
    "product_type": "Communications Adapter",
    "interface": "eth0",
    "last_seen": 1791912586,
    "protocols": ["EtherNet/IP", "CIP"],
    "protocols_data": {
      "arp": { "ip_address": "10.17.0.42", "plc_vendors": ["EtherNet/IP"], "tcp_ports": [44818], "protocol": "ARP" },
      "cip": { "vendor_id": "16f", "product_code": 100, "serial": "001414f7", "port": 44818, "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.

Response

Status: 200 OK

[
    {
        "ip_address": "10.17.1.191",
        "mac_address": "00:00:5e:00:53:01",
        "vendor": "Hewlett Packard",
        "product_name": "",
        "product_type": "",
        "interface": "eth0",
        "last_seen": 1791333273,
        "protocols": [],
        "protocols_data": {}
    },
    {
        "ip_address": "10.17.0.42",
        "mac_address": "00:00:5e:00:53:02",
        "vendor": "Keyence Corporation",
        "product_name": "KV-5500",
        "product_type": "Communications Adapter",
        "interface": "eth0",
        "last_seen": 1791912586,
        "protocols": [
            "EtherNet/IP",
            "CIP"
        ],
        "protocols_data": {
            "arp": {
                "ip_address": "10.17.0.42",
                "interface": "",
                "mac_address": "00:00:5e:00:53:02",
                "vendor": "Keyence Corporation",
                "plc_vendors": [
                    "EtherNet/IP"
                ],
                "host_name": "",
                "product_type": "",
                "tcp_ports": [
                    44818
                ],
                "udp_ports": null,
                "id": "",
                "updated_at": 1791912583,
                "protocol": "ARP"
            },
            "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,
                "vendor_id": "16f",
                "updated_at": 1791912583,
                "protocol": "CIP"
            }
        }
    }
]

Scan for Assets (All Protocols)

GET {{edgeUrl}}/networkutil/discover/all/scan?ifce=eth0

Scan for Assets (All Protocols)

Runs a discovery scan on one interface with every protocol, waits for it to finish, and returns the full asset list, the same shape as List Discovered Assets (All Protocols). A scan took about 6 seconds on a 4.0.x test device; allow a generous client timeout on larger networks.

This is the route the Asset Discovery page of the LE web UI uses. It covers every protocol the discovery service knows (ARP, CIP, EtherNet/IP, Modbus TCP, Profinet, DNP3, ICCP, mDNS and others), where the older /nd/... and /networkutil/discover/cip/... routes in this folder each cover one mechanism. Both sets are served on 4.0.x.

Endpoint

GET {{edgeUrl}}/networkutil/discover/all/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

Name Type Required Description
ifce string Yes Interface to scan, from List Discovery Interfaces.

The service does not check ifce against the real interfaces: an unknown name still answers 200, and assets found by host-wide mechanisms such as mDNS are tagged with that name. Always take the value from List Discovery Interfaces.

Response

200 OK -- application/json. The asset list after the scan, including assets found by earlier scans.

Each entry is one asset, merged across every protocol that found it:

Field Type Description
ip_address string IP address of the asset.
mac_address string MAC address. Empty when the asset was only seen through mDNS.
vendor string Vendor, from the protocol response or the MAC OUI.
product_name string Product name reported by the asset (CIP, Profinet) or its mDNS host name.
product_type string Product type reported by the asset, when the protocol carries one.
interface string Interface the asset was seen on.
last_seen integer Unix time (seconds) the asset was last seen.
protocols [string] Industrial protocols detected, e.g. CIP, EtherNet/IP, Modbus TCP, Profinet.
protocols_data object Raw per-mechanism records keyed arp, cip, profinet, ... May be null.

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.

Response

Status: 200 OK

[
    {
        "ip_address": "10.17.1.191",
        "mac_address": "00:00:5e:00:53:01",
        "vendor": "Hewlett Packard",
        "product_name": "",
        "product_type": "",
        "interface": "eth0",
        "last_seen": 1791333273,
        "protocols": [],
        "protocols_data": {}
    },
    {
        "ip_address": "10.17.0.42",
        "mac_address": "00:00:5e:00:53:02",
        "vendor": "Keyence Corporation",
        "product_name": "KV-5500",
        "product_type": "Communications Adapter",
        "interface": "eth0",
        "last_seen": 1791912586,
        "protocols": [
            "EtherNet/IP",
            "CIP"
        ],
        "protocols_data": {
            "arp": {
                "ip_address": "10.17.0.42",
                "interface": "",
                "mac_address": "00:00:5e:00:53:02",
                "vendor": "Keyence Corporation",
                "plc_vendors": [
                    "EtherNet/IP"
                ],
                "host_name": "",
                "product_type": "",
                "tcp_ports": [
                    44818
                ],
                "udp_ports": null,
                "id": "",
                "updated_at": 1791912583,
                "protocol": "ARP"
            },
            "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,
                "vendor_id": "16f",
                "updated_at": 1791912583,
                "protocol": "CIP"
            }
        }
    }
]

Ping a Host

GET {{edgeUrl}}/nd/utils/ping?address=127.0.0.1&count=2&timeout=3

Ping a Host

Sends ICMP echo requests from the edge device and streams each reply. Backs the "Test IP Address" network utility in the UI.

Endpoint

GET wss://{{edgeHost}}/nd/utils/ping?address=127.0.0.1&count=2&timeout=3

WebSocket. Open wss://{{edgeHost}}/nd/utils/ping?address=127.0.0.1&count=2&timeout=3 with a WebSocket client; a plain HTTP GET does not stream. After importing this item, convert it to a Postman WebSocket request.

Authentication

HTTP Basic Auth on the WebSocket upgrade request. Username is your API token, password is empty. A token in the query string is not accepted.

An Origin header is not required by this service.

Query parameters

Parameter Type Required Description
address string Yes IP address or host name to ping.
count integer No Number of echo requests. Default 4.
timeout integer No Overall timeout in seconds; the run ends with done when it expires.

Messages

The example response lists the captured text frames, one JSON document per line.

state When response fields
start Right after the upgrade. address, ip_address (resolved).
on-progress Once per reply. seq, rtt (nanoseconds), ttl, nbytes, addr, ip_addr.
done After count replies or the timeout. packets_sent, packets_recv, packets_recv_duplicates, packet_loss (percent), min_rtt / max_rtt / avg_rtt / std_dev_rtt (nanoseconds).

Every frame also carries logged_time. An unreachable host produces start and then done with packet_loss: 100. The server does not close the socket after done; close it yourself.

Errors

Response When it happens
401 Unauthorized on the upgrade Missing or invalid Authorization header.
500 on the upgrade, {"Name":"missing_field","Field":"address",...} address is missing.
A single frame {"Msg":"init pinger: lookup <host> ...: no such host"} The host name does not resolve.

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

{"state":"start","logged_time":"2026-10-14T11:30:50.688239701-07:00","response":{"address":"127.0.0.1","ip_address":"127.0.0.1"}}
{"state":"on-progress","logged_time":"2026-10-14T11:30:50.688538833-07:00","response":{"rtt":120919,"ip_addr":"127.0.0.1","addr":"127.0.0.1","nbytes":32,"seq":0,"ttl":64}}
{"state":"on-progress","logged_time":"2026-10-14T11:30:51.689708137-07:00","response":{"rtt":165655,"ip_addr":"127.0.0.1","addr":"127.0.0.1","nbytes":32,"seq":1,"ttl":64}}
{"state":"done","logged_time":"2026-10-14T11:30:51.764767954-07:00","response":{"packets_recv":2,"packets_sent":2,"packets_recv_duplicates":0,"packet_loss":0,"ip_addr":"127.0.0.1","addr":"127.0.0.1","min_rtt":120919,"max_rtt":165655,"avg_rtt":143287,"std_dev_rtt":22368}}


Scan Ports

GET {{edgeUrl}}/nd/utils/ports-scan?address=127.0.0.1&begin-port=20&end-port=23

Scan Ports

Checks a range of TCP (or UDP) ports on a host from the edge device and streams one result per port. Backs the "Test Port" network utility in the UI.

Endpoint

GET wss://{{edgeHost}}/nd/utils/ports-scan?address=127.0.0.1&begin-port=20&end-port=23

WebSocket. Open wss://{{edgeHost}}/nd/utils/ports-scan?address=127.0.0.1&begin-port=20&end-port=23 with a WebSocket client; a plain HTTP GET does not stream. After importing this item, convert it to a Postman WebSocket request.

Authentication

HTTP Basic Auth on the WebSocket upgrade request. Username is your API token, password is empty. A token in the query string is not accepted.

An Origin header is not required by this service.

Query parameters

Parameter Type Required Description
address string Yes IP address or host name.
begin-port integer Yes First port.
end-port integer Yes Last port, inclusive. The UI sends the same value as begin-port and so tests a single port.
is-udp boolean No true scans UDP instead of TCP.
timeout integer No Per-check timeout, passed through by the UI.

Messages

One frame per port, in order. The example response lists the captured text frames, one JSON document per line.

Field Type Description
port integer Port checked.
is_open boolean Whether the port accepted the connection.

The server does not close the socket after the last port; close it yourself. With begin-port greater than end-port the server did not answer the upgrade at all on a 4.0.x test device.

Errors

Response When it happens
401 Unauthorized on the upgrade Missing or invalid Authorization header.
500 on the upgrade, {"Name":"missing_field",...} address, begin-port or end-port is missing or not an integer.

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

{"port":20,"is_open":false}
{"port":21,"is_open":true}
{"port":22,"is_open":true}
{"port":23,"is_open":false}


View this page as Markdown