# LitmusEdge 4.0.x API Documentation/System/Info - LE, LEM, LUNS API Docs

## General Device Info

**GET** `{{edgeUrl}}/dm/deviceinfo`

# General Device Info

Returns the device's hardware identity and firmware version. Use this to populate "About this device" UIs or to verify which unit you are connected to before issuing destructive calls.

## Endpoint

```http
GET {{edgeUrl}}/dm/deviceinfo
```
## 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`

| Field             | Type   | Description                                  |
|-------------------|--------|----------------------------------------------|
| `firmwareVersion` | string | LE firmware version (e.g. `3.5.4`).          |
| `hardwareVersion` | string | OEM hardware model code.                     |
| `manufacturer`    | string | Hardware manufacturer.                       |
| `modelNumber`     | string | Hardware model number.                       |
| `serialNumber`    | string | Unit serial number.                          |

```json
{
  "firmwareVersion": "3.5.4",
  "hardwareVersion": "J31169-310",
  "manufacturer": "Intel Corporation",
  "modelNumber": "NUC7i5BNH",
  "serialNumber": "G6BN80900DC7"
}
```

## 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
{
    "firmwareVersion": "3.5.4",
    "hardwareVersion": "J31169-310",
    "manufacturer": "Intel Corporation",
    "modelNumber": "NUC7i5BNH",
    "serialNumber": "G6BN80900DC7"
}
```

---

## Network Info

**GET** `{{edgeUrl}}/dm/deviceinfo/net`

# Network Info

Returns the L2/L3 details of each network interface as the device sees them: name, MAC, MTU, and bound addresses (IPv4 + IPv6). For richer host-level network config (gateway, DNS, NTP, country), see `Network > Host Device Network Info`.

## Endpoint

```http
GET {{edgeUrl}}/dm/deviceinfo/net
```
## 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 interface name (`eth0`, `wlan0`, ...).                      |
| `hwaddr`                     | string   | MAC address.                                                       |
| `mtu`                        | integer  | Maximum Transmission Unit.                                        |
| `addrs`                      | object[] | Bound addresses (omitted for interfaces with no IP).               |
| `addrs[].address`            | string   | IP address with CIDR mask.                                         |
| `addrs[].family`             | string   | `inet` (IPv4) or `inet6` (IPv6).                                   |
| `addrs[].type`               | string   | `private`, `link-local`, `public`, etc.                            |

```json
[
  {
    "name": "eth0",
    "hwaddr": "aa:bb:cc:dd:ee:ff",
    "mtu": 1500,
    "addrs": [
      { "address": "10.17.10.18/22", "family": "inet",  "type": "private" },
      { "address": "aa11::bb22:cc33:dd44:ee55/64", "family": "inet6", "type": "link-local" }
    ]
  }
]
```

## 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
[
    {
        "addrs": [
            {
                "address": "10.17.10.18/22",
                "family": "inet",
                "type": "private"
            },
            {
                "address": "aa11::bb22:cc33:dd44:ee55/64",
                "family": "inet6",
                "type": "link-local"
            }
        ],
        "hwaddr": "aa:bb:cc:dd:ee:ff",
        "mtu": 1500,
        "name": "eth0"
    },
    {
        "hwaddr": "aa:bb:cc:dd:33:ff",
        "mtu": 1500,
        "name": "wlan0"
    }
]
```

---

## Mobile Broadband Info

**GET** `{{edgeUrl}}/dm/deviceinfo/modem`

# Mobile Broadband Info

Returns the configuration of every cellular modem attached to the device: APN, IMEI, ICCID, IPv4/IPv6 address, signal level, last connection time. Empty array on devices without a modem.

## Endpoint

```http
GET {{edgeUrl}}/dm/deviceinfo/modem
```
## 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 modem objects.

| Field                    | Type     | Description                                                  |
|--------------------------|----------|--------------------------------------------------------------|
| `name`                   | string   | Kernel interface name (e.g. `wwan0`).                        |
| `manufacturer` / `model` | string   | Modem vendor / model.                                        |
| `imei` / `iccid`         | string   | Modem hardware ID / SIM ID.                                  |
| `apnRequested` / `apnAssigned` | string | APN requested vs. assigned by the carrier.                |
| `addrIPv4.cidr` / `addrIPv6.cidr` | string | Assigned addresses.                                    |
| `dns`                    | string[] | DNS resolvers issued by the modem.                           |
| `lastConnAt`             | string   | ISO 8601 timestamp of the most recent successful connection. |

```json
[
  {
    "addrIPv4": { "cidr": "10.20.30.1/30" },
    "addrIPv6": { "cidr": "10.20.30.1/30" },
    "apnAssigned": "10569.mcs.mnc410.mcc310.gprs",
    "apnRequested": "broadband",
    "dns": ["8.8.8.8", "8.8.4.4"],
    "iccid": "89014103279631659340",
    "imei": "014666000090318",
    "lastConnAt": "2016-06-15T06:29:52Z",
    "manufacturer": "WNC",
    "model": "M14A2A",
    "name": "wwan0"
  }
]
```

## 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
[
    {
        "addrIPv4": {
            "cidr": "10.20.30.1/30"
        },
        "addrIPv6": {
            "cidr": "10.20.30.1/30"
        },
        "apnAssigned": "10569.mcs.mnc410.mcc310.gprs",
        "apnRequested": "broadband",
        "dns": [
            "8.8.8.8",
            "8.8.4.4",
            "2001:4860:4860::8888",
            "2001:4860:4860::8844"
        ],
        "iccid": "89014103279631659340",
        "imei": "014666000090318",
        "lastConnAt": "2016-06-15T06:29:52Z",
        "manufacturer": "WNC",
        "model": "M14A2A",
        "name": "wwan0",
        "network": "AT&T",
        "revision": "MPSS: M14A2A_v11.50.171541 APSS: M14A2A_v11.54.171541",
        "rsrpDbm": -56,
        "rssiDbm": -56,
        "signalBars": 3,
        "status": "home"
    }
]
```

---

## Memory Info

**GET** `{{edgeUrl}}/dm/deviceinfo/mem`

# Memory Info

Returns instantaneous RAM and swap utilization, in **kilobytes (KB)**.

## Endpoint

```http
GET {{edgeUrl}}/dm/deviceinfo/mem
```
## Authentication

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

## Response

`200 OK` -- `application/json`. All values in KB.

| Field           | Type    | Description                          |
|-----------------|---------|--------------------------------------|
| `memTotal`      | integer | Total physical RAM.                  |
| `memUsed`       | integer | Used RAM.                            |
| `memAvailable`  | integer | Available RAM (after page cache).    |
| `swapTotal`     | integer | Total swap.                          |
| `swapUsed`      | integer | Used swap.                           |

```json
{
  "memAvailable": 2768548,
  "memTotal": 8035440,
  "memUsed": 5266892,
  "swapTotal": 1048572,
  "swapUsed": 418816
}
```

## 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
{
    "memAvailable": 2768548,
    "memTotal": 8035440,
    "memUsed": 5266892,
    "swapTotal": 1048572,
    "swapUsed": 418816
}
```

---

## Storage Info

**GET** `{{edgeUrl}}/dm/deviceinfo/stor`

# Storage Info

Returns the device's data-partition usage, in **kilobytes (KB)**. Same payload as `Dashboard > Device Storage Utilization`.

## Endpoint

```http
GET {{edgeUrl}}/dm/deviceinfo/stor
```
## Authentication

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

## Response

`200 OK` -- `application/json`

| Field        | Type    | Description                                                   |
|--------------|---------|---------------------------------------------------------------|
| `totalSize`  | integer | Total size of the data partition (KB).                        |
| `dataSize`   | integer | Used space (KB).                                               |
| `dataFree`   | integer | Free space (KB). Approximately `totalSize - dataSize`.        |

```json
{
  "dataFree": 209611296,
  "dataSize": 18486624,
  "totalSize": 229162880
}
```

## 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
{
    "dataFree": 209611296,
    "dataSize": 18486624,
    "totalSize": 229162880
}
```

---

## Serial Interfaces Info

**GET** `{{edgeUrl}}/dm/deviceinfo/ser`

# Serial Interfaces Info

Returns every serial port present on the device (`/dev/tty*`) along with its USB / vendor metadata and any configured **alias**. Aliases let driver configurations reference a stable path (`/run/dev/serial/by-alias/<alias>`) that survives reboots and re-enumeration.

## Endpoint

```http
GET {{edgeUrl}}/dm/deviceinfo/ser
```
## Authentication

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

## Response

`200 OK` -- `application/json`. Array of serial port objects.

| Field           | Type   | Description                                                              |
|-----------------|--------|--------------------------------------------------------------------------|
| `name`          | string | Kernel name (e.g. `ttyACM0`).                                            |
| `symlink`       | string | Stable kernel symlink (e.g. `/dev/ttyACM0` or `/dev/serial/by-sn/...`).  |
| `aliasPrefix`   | string | Base directory where aliases live (`/run/dev/serial/by-alias`).          |
| `alias`         | string | Configured alias (empty if none). Set via `Set Serial Interface Alias`.  |
| `aliasPath`     | string | Full alias path (`<aliasPrefix>/<alias>`).                               |
| `manufacturer`  | string | Vendor name from USB descriptor.                                         |
| `model`         | string | Vendor-supplied model string.                                            |
| `serialNumber`  | string | USB serial number, when reported.                                        |
| `subsystem`     | string | Kernel subsystem (`usb`, `pci`, ...).                                    |
| `speed`         | string | Last-configured baud rate.                                               |

```json
[
  {
    "alias": "",
    "aliasPath": "",
    "aliasPrefix": "/run/dev/serial/by-alias",
    "manufacturer": "Parker Hannifin",
    "model": "900MHz PRN",
    "name": "ttyACM0",
    "serialNumber": "F6480B5114002300",
    "speed": "0",
    "subsystem": "usb",
    "symlink": "/dev/ttyACM0"
  }
]
```

## 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
[
    {
        "alias": "",
        "aliasPath": "",
        "aliasPrefix": "/run/dev/serial/by-alias",
        "manufacturer": "Parker Hannifin",
        "model": "900MHz PRN",
        "name": "ttyACM0",
        "serialNumber": "F6480B5114002300",
        "speed": "0",
        "subsystem": "usb",
        "symlink": "/dev/ttyACM0"
    }
]
```

---

## SLCAN Info

**GET** `{{edgeUrl}}/dm/slcan`

# SLCAN Info

Returns the state of each SLCAN (serial-line CAN) interface configured on the device. SLCAN bridges a USB-CAN dongle (typically via `ttyACM*`) into a CAN-bus interface usable by SocketCAN clients.

## Endpoint

```http
GET {{edgeUrl}}/dm/slcan
```
## Authentication

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

## Response

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

| Field            | Type    | Description                                                       |
|------------------|---------|-------------------------------------------------------------------|
| `interface`      | string  | SLCAN interface name (e.g. `slcan-ttyACM0`).                       |
| `canSpeedKbps`   | integer | CAN-bus baud (kbps).                                              |
| `uartSpeedBaud`  | integer | UART baud rate to the USB-CAN device.                              |
| `open`           | boolean | Currently open.                                                    |
| `close`          | boolean | Currently closed.                                                  |
| `resetStatus`    | boolean | Reset-in-progress flag.                                            |

```json
[
  {
    "canSpeedKbps": 1000,
    "close": false,
    "interface": "slcan-ttyACM0",
    "open": true,
    "resetStatus": false,
    "uartSpeedBaud": 115200
  }
]
```

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

    "canSpeedKbps": 1000,
    "close": false,
    "interface": "slcan-ttyACM0",
    "open": true,
    "resetStatus": false,
    "uartSpeedBaud": 115200
    },
    {
    "canSpeedKbps": 1000,
    "close": false,
    "interface": "slcan-ttyACM0",
    "open": true,
    "resetStatus": false,
    "uartSpeedBaud": 115200
    },
    {
    "canSpeedKbps": 1000,
    "close": false,
    "interface": "slcan-ttyACM0",
    "open": true,
    "resetStatus": false,
    "uartSpeedBaud": 115200
    }
]
```

---

## CPU Info

**GET** `{{edgeUrl}}/dm/deviceinfo/cpu`

# CPU Info

Returns one entry per CPU core with model, capability flags, and cache size. Sourced from `/proc/cpuinfo` and so closely mirrors the Linux view.

## Endpoint

```http
GET {{edgeUrl}}/dm/deviceinfo/cpu
```
## Authentication

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

## Response

`200 OK` -- `application/json`. Array of per-core objects.

| Field           | Type     | Description                                                       |
|-----------------|----------|-------------------------------------------------------------------|
| `cacheSize`     | string   | L2/L3 cache size in KB (as reported by `/proc/cpuinfo`).          |
| `capabilities`  | string[] | CPU feature flags (`fpu`, `sse`, `avx`, ...).                     |
| (additional fields) | mixed | Vendor / model name / frequency / family identifiers may also appear depending on the platform. |

## 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
[
    {
        "cacheSize": "4096",
        "capabilities": [
            "fpu",
            "vme",
            "de",
            "pse",
            "tsc",
            "msr",
            "pae",
            "mce",
            "cx8",
            "apic",
            "sep",
            "mtrr",
            "pge",
            "mca",
            "cmov",
            "pat",
            "pse36",
            "clflush",
            "dts",
            "acpi",
            "mmx",
            "fxsr",
            "sse",
            "sse2",
            "ss",
            "ht",
            "tm",
            "pbe",
            "syscall",
            "nx",
            "pdpe1gb",
            "rdtscp",
            "lm",
            "constant_tsc",
            "art",
            "arch_perfmon",
            "pebs",
            "bts",
            "rep_good",
            "nopl",
            "xtopology",
            "nonstop_tsc",
            "cpuid",
            "aperfmperf",
            "pni",
            "pclmulqdq",
            "dtes64",
            "monitor",
            "ds_cpl",
            "vmx",
            "est",
            "tm2",
            "ssse3",
            "sdbg",
            "fma",
            "cx16",
            "xtpr",
            "pdcm",
            "pcid",
            "sse4_1",
            "sse4_2",
            "x2apic",
            "movbe",
            "popcnt",
            "tsc_deadline_timer",
            "aes",
            "xsave",
            "avx",
            "f16c",
            "rdrand",
            "lahf_lm",
            "abm",
            "3dnowprefetch",
            "cpuid_fault",
            "epb",
            "invpcid_single",
            "pti",
            "tpr_shadow",
            "vnmi",
            "flexpriority",
            "ept",
            "vpid",
            "ept_ad",
            "fsgsbase",
            "tsc_adjust",
            "bmi1",
            "avx2",
            "smep",
            "bmi2",
            "erms",
            "invpcid",
            "mpx",
            "rdseed",
            "adx",
            "smap",
            "clflushopt",
            "intel_pt",
            "xsaveopt",
            "xsavec",
            "xgetbv1",
            "xsaves",
            "dtherm",
            "ida",
            "arat",
            "pln",
            "pts",
            "hwp",
            "hwp_notify",
            "hwp_act_window",
            "hwp_epp"
        ],
        "clockMHz": "3400.000000",
        "cpuCores": 2,
        "cpuThreads": 4,
        "hyperThreading": true,
        "modelName": "Intel(R) Core(TM) i5-7260U CPU @ 2.20GHz",
        "vendorID": "GenuineIntel"
    }
]
```

---

## InfluxDB Info

**GET** `{{edgeUrl}}/dm/deviceinfo/influxdb`

# InfluxDB Info

Returns the on-device InfluxDB databases with their **on-disk sizes in bytes**. Useful for forecasting retention pressure before changing device-data-storage policies.

## Endpoint

```http
GET {{edgeUrl}}/dm/deviceinfo/influxdb
```
## Authentication

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

## Response

`200 OK` -- `application/json`

| Field    | Type    | Description                                                                |
|----------|---------|----------------------------------------------------------------------------|
| `name`   | string  | Database name. `tsdata` is the main DeviceHub-persisted store; `_internal` and `le_stats` are Influx and LE bookkeeping. |
| `size`   | integer | On-disk size in **bytes**.                                                 |

```json
[
  { "name": "_internal",   "size": 66999252 },
  { "name": "le_stats",    "size": 33554432 },
  { "name": "system_data", "size": 33554432 },
  { "name": "tsdata",      "size": 1476286633 }
]
```

## 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": "_internal",
        "size": 66999252
    },
    {
        "name": "le_stats",
        "size": 33554432
    },
    {
        "name": "system_data",
        "size": 33554432
    },
    {
        "name": "tsdata",
        "size": 1476286633
    }
]
```

---

## Set Serial Interface Alias

**PUT** `{{edgeUrl}}/dm/deviceinfo/ser/alias`

# Set Serial Interface Alias

Creates or updates an alias for one serial port, so that drivers can reference a stable path (`/run/dev/serial/by-alias/<alias>`) regardless of which kernel name (`ttyACM0`, `ttyUSB1`) the port enumerates as after a reboot.

## Endpoint

```http
PUT {{edgeUrl}}/dm/deviceinfo/ser/alias
```
## Authentication

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

## Request body

```json
{
  "alias": "mydevice0",
  "symlink": "/dev/serial/by-sn/FTDI-AO000GU3-00.0"
}
```

| Field      | Type   | Required | Description                                                       |
|------------|--------|----------|-------------------------------------------------------------------|
| `alias`    | string | Yes      | New alias name. Filesystem-safe characters only.                  |
| `symlink`  | string | Yes      | Stable kernel symlink for the underlying device (from `Serial Interfaces Info > symlink`). |

## Response

`200 OK` on success. The new alias is visible in the next call to `Serial Interfaces Info`.

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


### Request Body

```json
{
"alias": "mydevice0",
"symlink": "/dev/serial/by-sn/FTDI-AO000GU3-00.0"
}
```

### Response

**Status**: 204 No Content

---

## Delete Serial Interface Alias

**DELETE** `{{edgeUrl}}/dm/deviceinfo/ser/alias`

# Delete Serial Interface Alias

Removes an alias previously created by `Set Serial Interface Alias`. The underlying serial port remains; only the alias path is removed.

## Endpoint

```http
DELETE {{edgeUrl}}/dm/deviceinfo/ser/alias
```
## Authentication

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

## Request body

```json
{
  "symlink": "/dev/serial/by-sn/FTDI-AO000GU3-00.0"
}
```

| Field      | Type   | Required | Description                                                       |
|------------|--------|----------|-------------------------------------------------------------------|
| `symlink`  | string | Yes      | Stable kernel symlink of the device whose alias to remove.        |

## Response

`200 OK` on success.

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


### Request Body

```json
{
    "symlink": "/dev/serial/by-sn/FTDI-AO000GU3-00.0"
}
```

---

