---
title: LDWS Diagnostics Endpoints
slug: develop/ldws-diagnostics-endpoints
docTags: 
createdAt: 2025-03-11T07:03:32.131Z
---

## DELETE /v1/storage/\:device/ 

Formats a storage device

:::hint{type="info"}
You must disable the autorun before reformatting the SD card on your device.
To disable the autorun, use the *PUT /v1/control/reboot* with body parameter *\{“autorun”:”disable”}*, as described in [this page](docId\:YLXb9c8Us70n09hoOkdp_).
:::

**Segment**

- `:device` <font color="#704ae0">string</font>: The specified storage device (see [this page](docId\:BczooenmOIfNRbeny6ZKI) for a list of available devices)

**Request Body**

- `fs` <font color="#704ae0">string</font>: The [file system](docId\:nSjXffR7OlFgDWgjFEbMe) to use when reformatting a storage device. The default value of fs is "exfat".

**Request Example**

```text
DELETE /api/v1/storage/sd/ HTTP/1.1
Host: {{playerIP}}
Authorization: {{DigestAuth}}
Accept: application/json, application/vnd.bsn.error+json
Content-Type: application/json
Content-Length: 49
```

This is the example request body:

```json
{
  "fs": "exfat"
}
```

**Response Example**

```json
{
  "data": {
    "result": {
      "success": true,
      "output": "Format completeted successfully.",
      "error": ""
    }
  }
}
```

## GET /v1/diagnostics/ 

Runs network diagnostics on the player and returns the result in JSON format.

**Request Example**

```text
GET /api/v1/diagnostics/ HTTP/1.1
Host: {{playerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
```

**Response Body**

For each of `ethernet`, `wifi`, `modem`, and `internet`:

- `diagnosis` <font color="#704ae0">string</font>: Indicates if this type of interface is present
- `log` <font color="#704ae0">object[ ]</font>: This contains the diagnostic results for the interface:
  - `name` <font color="#704ae0">string</font>:  The name of the diagnostic test
  - `pass` <font color="#704ae0">bool</font>: Indicates whether the test passed or not
  - `result` <font color="#704ae0">string</font>: The actual value for the diagnostic tests like checking type and ping.
- `ok` <font color="#704ae0">bool</font>: If diagnostics were run on the interface or not.

**Response Example**

```json
{
  "data": {
    "result": {
      "ethernet": {
        "diagnosis": "OK",
        "log": [
          {
            "name": "Checking model networking support",
            "pass": true,
            "result": ""
          },
          {
            "name": "Checking for Ethernet interface",
            "pass": true,
            "result": ""
          },
          {
            "name": "Checking interface type",
            "pass": true,
            "result": "Ethernet"
          },
          {
            "name": "Checking Ethernet link",
            "pass": true,
            "result": ""
          },
          {
            "name": "Checking Ethernet IP address",
            "pass": true,
            "result": ""
          },
          {
            "name": "Checking Ethernet netmask",
            "pass": true,
            "result": ""
          },
          {
            "name": "Checking Ethernet gateway",
            "pass": true,
            "result": "PING 10/10: 1375/1537/1623us"
          }
        ],
        "ok": true
      },
      "wifi": {
        "diagnosis": "WiFi interface not present",
        "log": [
          {
            "name": "Checking model networking support",
            "pass": true,
            "result": ""
          },
          {
            "name": "Checking for WiFi interface",
            "pass": false,
            "result": "WiFi interface not present"
          }
        ],
        "ok": false
      },
      "modem": {
        "diagnosis": "Modem interface not present",
        "log": [
          {
            "name": "Checking model networking support",
            "pass": true,
            "result": ""
          },
          {
            "name": "Checking for Modem interface",
            "pass": false,
            "result": "Modem interface not present"
          }
        ],
        "ok": false
      },
      "internet": {
        "diagnosis": "OK",
        "log": [
          {
            "info": [
              "DNS server 2600:1700:dac0:2060::1 is not a valid IPv4 address"
            ],
            "name": "Checking DNS servers",
            "pass": true,
            "result": "At least one DNS server is valid"
          },
          {
            "info": [
              "DNS pass/fail/timeout/mismatch UDP: 50/0/0/0 TCP 50/0/0/0"
            ],
            "name": "Checking DNS server (cached)",
            "pass": true,
            "result": "DNS servers responded to 100% of potentially cached requests"
          },
          {
            "info": [
              "DNS pass/fail/timeout/mismatch UDP: 5/0/0/0 TCP 5/0/0/0"
            ],
            "name": "Checking DNS server (hopefully not cached)",
            "pass": true,
            "result": "DNS servers responded to 100% of hopefully uncached requests"
          },
          {
            "name": "Checking Internet connectivity",
            "pass": true,
            "result": "PING 10/10: 87398/87760/88247us"
          },
          {
            "name": "Checking HTTP",
            "pass": true,
            "result": "External IP is 76.218.104.224"
          },
          {
            "name": "Checking time server",
            "pass": true,
            "result": ""
          }
        ],
        "ok": true
      }
    }
  }
}
```

## GET /v1/diagnostics/dns-lookup/\:address/ 

Runs a DNS lookup for an address, which can be a hostname or IP address.

**Segment**

- `:address`: The hostname (for example, *http\://google.com*) or IP address

**Request Example**

```text
GET /api/v1/diagnostics/dns-lookup/google.com/ HTTP/1.1
Host: {{playerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
```

**Response Body**

The player queries each DNS field separately, then collects returned data into the *records* object, the tcp and udp connection information is in the *server\_test* object, and returned errors into the *errorList* object.

- `records` <font color="#704ae0">object</font>:
  - `ipv4` <font color="#704ae0">string[ ]</font>: IPv4 addresses
  - `ipv6` <font color="#704ae0">string[ ]</font>: IPv6 addresses
  - `text` <font color="#704ae0">string[ ]</font>: Text records
  - `mx` <font color="#704ae0">object[ ]</font>: Mail exchange records
    - `exchange` <font color="#704ae0">string</font>
    - `priority` <font color="#704ae0">int</font>
- `server_test` <font color="#704ae0">object</font>:
  - `tcp` <font color="#704ae0">object</font>:
    - `made` <font color="#704ae0">int</font>:  The total number of DNS requests made
    - `pass` <font color="#704ae0">int</font>: The total number of requests that passed
    - `fail` <font color="#704ae0">int</font>: The total number of requests that failed.
    - `timeout` <font color="#704ae0">int</font>: The total number of requests that timed out
    - `mismatch` <font color="#704ae0">int</font>: The total number of mismatched requests between the host and pointer records
  - `udp` <font color="#704ae0">object</font>:
    - `made` <font color="#704ae0">int</font>:  The total number of DNS requests made
    - `pass` <font color="#704ae0">int</font>: The total number of requests that passed
    - `fail` <font color="#704ae0">int</font>: The total number of requests that failed.
    - `timeout` <font color="#704ae0">int</font>: The total number of requests that timed out.
    - `mismatch` <font color="#704ae0">int</font>: The total number of mismatched requests between the host and pointer records
- `errorList` <font color="#704ae0">object[ ]</font>
  - `field` <font color="#704ae0">string</font>: The field ('ipv4', 'ipv6', 'cname', 'mx',  'service', or 'text') the error came from
  - `err` <font color="#704ae0">object</font>:
    - `errno` <font color="#704ae0">string</font>: Error number (usually the same value as code)
    - `code` <font color="#704ae0">string</font>: Error code number (see [https://nodejs.org/docs/latest-v14.x/api/dns.html#dns\_error\_codes](https://nodejs.org/docs/latest-v14.x/api/dns.html#dns_error_codes))
    - `syscall` <font color="#704ae0">string</font>: Information about the system call stack
    - `hostname` <font color="#704ae0">string</font>: The value passed in the URL

**Response Example**

```json
{
  "data": {
    "result": {
      "records": {
        "ipv4": [
          "142.250.105.113",
          "142.250.105.102",
          "142.250.105.139",
          "142.250.105.101",
          "142.250.105.138",
          "142.250.105.100"
        ],
        "ipv6": [
          "2607:f8b0:4002:c0c::8a",
          "2607:f8b0:4002:c0c::8b",
          "2607:f8b0:4002:c0c::71",
          "2607:f8b0:4002:c0c::64"
        ],
        "mx": [
          {
            "exchange": "smtp.google.com",
            "priority": 10
          }
        ]
      },
      "server_test": {
        "tcp": {
          "made": 100,
          "pass": 100,
          "fail": 0,
          "timeout": 0,
          "mismatch": 0
        },
        "udp": {
          "made": 100,
          "pass": 100,
          "fail": 0,
          "timeout": 0,
          "mismatch": 0
        }
      },
      "errorList": [
        {
          "field": "cname",
          "err": {
            "code": "ENODATA",
            "syscall": "queryCname",
            "hostname": "google.com"
          }
        },
        {
          "field": "service",
          "err": {
            "code": "ENODATA",
            "syscall": "querySrv",
            "hostname": "google.com"
          }
        },
        {
          "field": "text",
          "err": {
            "code": "ETIMEOUT",
            "syscall": "queryTxt",
            "hostname": "google.com"
          }
        }
      ]
    }
  }
}
```

## GET /v1/diagnostics/ping/\:ipAddress/ 

Pings the address passed in the request. This does not work for hostnames, only for IP addresses.

**Segment**

- `:ipAddress`: The specified IP address

**Request Example**

```text
GET /api/v1/diagnostics/ping/0.0.0.0/ HTTP/1.1
Host: {{playerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
```

**Response Body**

- `success` <font color="#704ae0">bool</font>: A flag that indicates if the operation succeeded or not
- `response` <font color="#704ae0">object</font>:
  - `hostname` <font color="#704ae0">string</font>: The value that you passed in the URL
  - `results` <font color="#704ae0">string</font>:
    - `ipv4` <font color="#704ae0">object[ ]</font>
      - `address` <font color="#704ae0">string</font>: The IPv4 address that is pinged
      - `results` <font color="#704ae0">object</font>:&#x20;
        - `received` <font color="#704ae0">int</font>: The number of packets received
        - `stats` <font color="#704ae0">object</font>:&#x20;
          - `average` <font color="#704ae0">int</font>: The average time for the packet to return
          - `quickest` <font color="#704ae0">int</font>: The quickest time for the packet to return
          - `slowest` <font color="#704ae0">int</font>: The slowest time for the packet to return
          - `units` <font color="#704ae0">int</font>: The time units (usually microseconds)
        - `transmitted` <font color="#704ae0">int</font>: The number of packets transmitted
    - `ipv6` <font color="#704ae0">object[ ]</font>: This will only be returned if IPv6 is present.
      - `interface` <font color="#704ae0">string</font>:&#x20;
      - `source` <font color="#704ae0">string</font>
      - `address` <font color="#704ae0">string</font>: The IPv6 address that is pinged
      - `results` <font color="#704ae0">object</font>:
        - `received` <font color="#704ae0">int</font>: The number of packets received
        - `transmitted` <font color="#704ae0">int</font>: The number of packets transmitted

**Response Example**

```json
{
  "data": {
    "result": {
      "success": true,
      "response": {
        "hostname": "0.0.0.0",
        "results": {
          "ipv4": [
            {
              "address": "0.0.0.0",
              "results": {
                "received": 10,
                "stats": {
                  "average": 318,
                  "quickest": 223,
                  "slowest": 336,
                  "units": "us"
                },
                "transmitted": 10
              },
              "up": true
            }
          ]
        },
        "up": true
      }
    }
  }
}
```

## GET /v1/diagnostics/trace-route/\:address/ 

Runs trace-route on the player. You can optionally pass the boolean query parameter `?resolveAddress` to resolve IP addresses in the result.

**Segment**

- `:address`: The specified IP or hostname address

**Query String Parameter**

- `resolveAddress` bool optional: Specifies whether the IP or hostname address should be resolved or not in the result

**Request Example**

```text
GET /api/v1/diagnostics/trace-route/google.com/?resolveAddress%3Dtrue HTTP/1.1
Host: {{playerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
```

**Response Body**

- `address` <font color="#704ae0">string</font>: The IP address on which you are running the trace route
- `results` <font color="#704ae0">object</font>:
  - `output` <font color="#704ae0">string[ ]</font>: Returns the trace route output information in text format
  - `protocol` <font color="#704ae0">string</font>: The IP protocol (for example, `"ipv4"`)
  - `route` <font color="#704ae0">object[ ]</font>:
    - `hop` <font color="#704ae0">int</font>: How many times the data moves from one router to the next 
    - `servers` <font color="#704ae0">object</font>:
      - `address` <font color="#704ae0">string</font>: The address to which the trace route request is made
      - `hostname` <font color="#704ae0">string</font>: The server hostname
      - `stats` <font color="#704ae0">object[ ]</font>:&#x20;
        - `reachable` <font color="#704ae0">string</font>:
        - `time` <font color="#704ae0">string</font>: The time required for the trace route request to return
        - `units` <font color="#704ae0">string</font>: The time units (usually in milliseconds)

**Response Example**

```json
{
    "data": {
        "result": {
            "address": "123.456.7.890",
            "resolveAddress": "true",
            "results": {
                "152.101.32.76": {
                    "output": [
                        "traceroute to 152.101.32.76 (152.101.32.76), 30 hops max, 46 byte packets",
                        " 1  10.0.4.1  0.744 ms  0.458 ms  1.740 ms",
                        " 2  192.168.0.1  1.738 ms  1.387 ms  1.387 ms",
                        " 3  96.120.89.217  10.553 ms  11.250 ms  11.961 ms",
                        " 4  96.110.176.145  11.958 ms  11.250 ms  9.845 ms",
                        " 5  162.151.78.253  11.957 ms  13.366 ms  10.549 ms",
                        " 6  96.108.99.249  13.366 ms  14.072 ms  20.414 ms",
                        " 7  68.86.143.93  13.368 ms  11.960 ms  10.549 ms",
                        " 8  96.97.98.246  32.397 ms  96.112.146.22  11.954 ms  69.241.75.42  9.841 ms",
                        " 9  *  *  *",
                        "10  152.101.32.76  10.452 ms  152.101.32.76  13.302 ms  152.101.32.76  12.649 ms",
                        "11  192.178.105.102  11.948 ms  142.251.224.181  11.073 ms  192.178.46.198  17.759 ms",
                        "12  142.251.32.46  11.955 ms  12.649 ms  10.543 ms"
                    ],
                    "protocol": "ipv4",
                    "result": 0,
                    "route": [
                        {
                            "error": "timeout",
                            "hop": 9
                        }
                    ]
                }
            }
        }
    }
}
```

## GET /v1/diagnostics/network-neighborhood/ 

Retrieves information about the player’s current network neighborhood (the other players on the same network).

**Request Example**

```text
GET /api/v1/diagnostics/network-neighborhood/ HTTP/1.1
Host: {{playerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
```

**Response Body**

- `success` <font color="#704ae0">bool</font>: A flag that indicates if the operation succeeded
- `response` <font color="#704ae0">object[ ]</font>: An array of information about players in your network neighborhood
  - `chassis-descr` <font color="#704ae0">string</font>: The model version, OS version, serial number, etc.
  - `chassis-id` <font color="#704ae0">string</font>: A unique identifier for the player
  - `chassis-name` <font color="#704ae0">string</font>: The name of the player
  - `mgmt-ip` <font color="#704ae0">string</font>:
  - `port-descr` <font color="#704ae0">string</font>: Which interface the player is using
  - `port-id` <font color="#704ae0">string</font>:
  - `vlan-pvid` <font color="#704ae0">string</font>:

If the diagnostic could not be performed, the response body may instead be an error message.

**Response Example**

```json
{
  "data": {
    "result": {
      "success": true,
      "response": [
        {
          "chassis-descr": "BrightSign XT1144 REVE 8.5.47 UHE015005214",
          "chassis-id": "90:ac:3f:28:fb:a4",
          "chassis-name": "BrightSign-UHE015005214",
          "mgmt-ip": "2601:647:4500:1e5e:92ac:3fff:fe28:fba4",
          "port-descr": "eth0",
          "port-id": "90:ac:3f:28:fb:a4",
          "vlan-pvid": "0"
        }
      ]
    }
  }
}
```

## GET /v1/diagnostics/network-configuration/\:interfaceName/ 

Gets the network configuration on the player. See [Local DWS APIs](docId:2Zmel07w011h1267dt-59) for more information about digest authentication.

**Segment**

- `:interfaceName`: The network interface. Possible names include `eth0`, `wlan0`, and `modem`.

**Request Example**

```text
GET /api/v1/diagnostics/network-configuration/eth0/ HTTP/1.1
Host: {{playerIP}}
Authorization: {{DigestAuth}}
```

**Response Body**

:::hint{type="info"}
Some entries (e.g. `caCertificates`, `clientIdentifier`) are identical for all interfaces.
:::

- `text` <font color="#704ae0">string</font>: The network configuration information in plain-text form
- `output` <font color="#704ae0">Output</font>: The network configuration information as a JSON object:
  - `interfaces` <font color="#704ae0">Interface[ ]</font>: An array of Interface objects representing network interfaces:
    - `name` <font color="#704ae0">string</font>: The interface name (for example, `"eth0"`)
    - `errors`  <font color="#704ae0">Error[ ]</font>: An array of error messages associated with the interface
    - `params` <font color="#704ae0">Param[ ]</font>: An array of Param objects representing parameters associated with the network interface. Each Param interface has the following entries:
      - `name` <font color="#704ae0">string</font>: The property name (e.g. `"MAC"`)
      - `value` <font color="#704ae0">string</font>: The property value (e.g. `"90:ac:3f:0b:d2:88"`)
  - `host` <font color="#704ae0">Info[ ]</font>: An array of Info objects providing network host information. Each object can have the following entries:
    - `errors` <font color="#704ae0">Error[ ]</font>: An array of error messages associated with the network host
    - `params` <font color="#704ae0">Param[ ]</font>: An array of Param objects representing parameters associated with the network host 
  - `bsn` <font color="#704ae0">Info[ ]</font>: An array of Info objects providing information about BSN communication. 
  - `other` <font color="#704ae0">Info[ ]</font>: An array of Info objects providing information miscellaneous network information.
- `caCertificate` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: The contents of a CA certificate file in text form (i.e. a "pem" file).
- `clientCertificate` <font color="#704ae0">bool</font> <font color="#01a0af">optional</font>: A flag indicating whether the player is using a client certificate
- `clientIdentifier` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: The DHCP client identifier for the network interface
- `dnsServerList` <font color="#704ae0">string[ ]</font> <font color="#01a0af">optional</font>:  An IP address list of the DNS servers
- `domain` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: The domain name for the network interface
- `eapTlsOptions` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: A string containing EAP-specific options
- `enabledProtocolList` <font color="#704ae0">string[ ]</font> <font color="#01a0af">optional</font>: An array of enabled IP protocols. Currently supported values are `"IPv4"` and "`IPv6"`.
- `identity` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: The RADIUS identity
- `ipAddressList` <font color="#704ae0">string[ ]</font> <font color="#01a0af">optional</font>: The IP addresses assigned to the player
- `inboundShaperRate` <font color="#704ae0">int</font> <font color="#01a0af">optional</font>: The bandwidth limit for inbound traffic in bits per second. A value of -1 specifies the default bandwidth limit, and a value of 0 specifies no bandwidth limit (these two settings are functionally the same).
- `metric` <font color="#704ae0">int</font> <font color="#01a0af">optional</font>:  The routing metric for the default gateway on the interface. Routes with lower metrics are preferred over routes with higher metrics.
- `mtu` <font color="#704ae0">int</font> <font color="#01a0af">optional</font>: The maximum transmission unit (MTU) for the network interface in bytes
- `privateKey` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: The private key for authentication
- `vlanIdList` <font color="#704ae0">int[ ]</font> <font color="#01a0af">optional</font>: An array of VLAN IDs that are supported on the parent network interface
- `securityMode` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: Security mode for authentication

**Response Example**

```text
{
  "data": {
    "result": {
      "success": true,
      "response": [
        {
          "text": "\r\nInterface: eth0\r\nType: Wired\r\nLink: Yes\r\nConfiguration: DHCP\r\nClient ID: BrightSign:RE433D006644\r\nMAC: 90:ac:3f:2a:01:79\r\nCurrent IP: 192.168.1.174\r\nNetmask: 255.255.255.0\r\nBroadcast: 192.168.1.255\r\nGateway: 192.168.1.254\r\nIP6 Address: 2600:1700:dac0:2060::43/128\r\nIP6 Address: 2600:1700:dac0:2060:92ac:3fff:fe2a:179/64\r\nIP6 Address: fe80::92ac:3fff:fe2a:179/64\r\nMetric: 0\r\nDomains: attlocal.net\r\nDNS: 192.168.1.254\r\n 2600:1700:dac0:2060::1\r\nShape inbound: No\r\n\r\nHost \r\nHost Name: BrightSign-RE433D006644\r\nmDNS Host Name: BrightSign-RE433D006644.local\r\nTime server: http://time.brightsignnetwork.com\r\nProxy Bypass: <none>\r\n\r\nBSN \r\nCrash URL: https://crashes.brightsignnetwork.com/bs/crashdump\r\nError URL: https://handlers.bsn.cloud//bs/error.ashx\r\nRecovery URL: https://handlers.bsn.cloud//recovery/recovery.ashx\r\n\r\nOther \r\nHttp Port: \r\n\r\n\r\n",
          "output": {
            "interfaces": [
              {
                "name": "eth0",
                "errors": [],
                "params": [
                  {
                    "name": "Type",
                    "value": [
                      "Wired"
                    ]
                  },
                  {
                    "name": "Link",
                    "value": [
                      "Yes"
                    ]
                  },
                  {
                    "name": "Configuration",
                    "value": [
                      "DHCP"
                    ]
                  },
                  {
                    "name": "Client ID",
                    "value": [
                      "BrightSign:RE433D006644"
                    ]
                  },
                  {
                    "name": "MAC",
                    "value": [
                      "90:ac:3f:2a:01:79"
                    ]
                  },
                  {
                    "name": "Current IP",
                    "value": [
                      "192.168.1.174"
                    ]
                  },
                  {
                    "name": "Netmask",
                    "value": [
                      "255.255.255.0"
                    ]
                  },
                  {
                    "name": "Broadcast",
                    "value": [
                      "192.168.1.255"
                    ]
                  },
                  {
                    "name": "Gateway",
                    "value": [
                      "192.168.1.254"
                    ]
                  },
                  {
                    "name": "IP6 Address",
                    "value": [
                      "2600:1700:dac0:2060::43/128"
                    ]
                  },
                  {
                    "name": "IP6 Address",
                    "value": [
                      "2600:1700:dac0:2060:92ac:3fff:fe2a:179/64"
                    ]
                  },
                  {
                    "name": "IP6 Address",
                    "value": [
                      "fe80::92ac:3fff:fe2a:179/64"
                    ]
                  },
                  {
                    "name": "Metric",
                    "value": [
                      "0"
                    ]
                  },
                  {
                    "name": "Domains",
                    "value": [
                      "attlocal.net"
                    ]
                  },
                  {
                    "name": "DNS",
                    "value": [
                      "192.168.1.254",
                      "2600:1700:dac0:2060::1"
                    ]
                  },
                  {
                    "name": "Shape inbound",
                    "value": [
                      "No"
                    ]
                  }
                ]
              }
            ],
            "Host": [
              {
                "errors": [],
                "params": [
                  {
                    "name": "Host Name",
                    "value": [
                      "BrightSign-RE433D006644"
                    ]
                  },
                  {
                    "name": "mDNS Host Name",
                    "value": [
                      "BrightSign-RE433D006644.local"
                    ]
                  },
                  {
                    "name": "Time server",
                    "value": [
                      "http://time.brightsignnetwork.com"
                    ]
                  },
                  {
                    "name": "Proxy Bypass",
                    "value": [
                      "<none>"
                    ]
                  }
                ]
              }
            ],
            "BSN": [
              {
                "errors": [],
                "params": [
                  {
                    "name": "Crash URL",
                    "value": [
                      "https://crashes.brightsignnetwork.com/bs/crashdump"
                    ]
                  },
                  {
                    "name": "Error URL",
                    "value": [
                      "https://handlers.bsn.cloud//bs/error.ashx"
                    ]
                  },
                  {
                    "name": "Recovery URL",
                    "value": [
                      "https://handlers.bsn.cloud//recovery/recovery.ashx"
                    ]
                  }
                ]
              }
            ],
            "Other": [
              {
                "errors": [],
                "params": [
                  {
                    "name": "Http Port",
                    "value": [
                      ""
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "caCertificates": "",
          "clientCertificate": false,
          "clientIdentifier": "BrightSign:RE433D006644",
          "dnsServerList": [],
          "domain": "",
          "eapTlsOptions": "",
          "enabledProtocolList": [
            "IPv4",
            "IPv6"
          ],
          "identity": "",
          "ipAddressList": [],
          "metric": 0,
          "privateKey": false,
          "securityMode": "",
          "vlanIdList": []
        }
      ]
    }
  }
}
```

## PUT /v1/diagnostics/network-configuration/\:interfaceName/ 

Applies a test network configuration on the player. You should use GET to get the configuration parameters before setting it using this API. The `text` and `output` parameters are NOT needed in PUT.

**Segment**

- `:interfaceName`: The network interface. Possible names include `eth0`, `wlan0`, and `modem`.

**Request Body**

- `caCertificate` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: The contents of a CA certificate file in text form (i.e. a "pem" file).
- `clientCertificate` <font color="#704ae0">bool</font> <font color="#01a0af">optional</font>: A flag indicating whether the player is using a client certificate
- `clientIdentifier` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: The DHCP client identifier for the network interface
- `dnsServerList` <font color="#704ae0">string</font><font color="#704ae0">[ ]</font> <font color="#01a0af">optional</font>:  An IP address list of the DNS servers
- `domain` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: The domain name for the network interface
- `eapTlsOptions` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: A string containing EAP-specific options
- `enabledProtocolList` <font color="#704ae0">string[ ]</font> <font color="#01a0af">optional</font>: An array of enabled IP protocols. Currently supported values are "IPv4" and "IPv6".
- `identity` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: The RADIUS identity
- `ipAddressList` <font color="#704ae0">string[ ]</font> <font color="#01a0af">optional</font>: The IP addresses assigned to the player
- `inboundShaperRate` <font color="#704ae0">int</font> <font color="#01a0af">optional</font>: The bandwidth limit for inbound traffic in bits per second. A value of -1 specifies the default bandwidth limit, and a value of 0 specifies no bandwidth limit (these two settings are functionally the same).
- `metric` <font color="#704ae0">int</font> <font color="#01a0af">optional</font>:  The routing metric for the default gateway on the interface. Routes with lower metrics are preferred over routes with higher metrics.
- `mtu` <font color="#704ae0">int</font> <font color="#01a0af">optional</font>: The maximum transmission unit (MTU) for the network interface in bytes
- `privateKey` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: The private key for authentication
- `vlanIdList` <font color="#704ae0">int[ ] </font><font color="#01a0af">optional</font>: An array of VLAN IDs that are supported on the parent network interface
- `securityMode` <font color="#704ae0">string</font> <font color="#01a0af">optional</font>: Security mode for authentication

**Request Example**

The example request parameters and headers are set as follows:

```text
PUT /api/v1/diagnostics/network-configuration/eth0 HTTP/1.1
Host: {{PlayerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
Content-Type: application/json
Content-Length: 75
```

This is the example request body:

```json
{
  "caCertificates": "",
  "clientCertificate": false,
  "clientIdentifier": "BrightSign:D7E8CV332141",
  "dnsServerList": ["192.168.86.1"],
  "domain": "lan",
  "eapTlsOptions": "",
  "enabledProtocolList": [
    "IPv4",
    "IPv6"
  ],
  "identity": "",
  "ipAddressList": [],
  "inboundShaperRate": 0, 
  "metric": 1002,
  "privateKey": false,
  "securityMode": "",
  "vlanIdList": []
}
```

**Response Example**

```json
{
    "success": true, 
    "reboot": true // Indicates whether the player will reboot 
}
```

## GET /v1/diagnostics/interfaces/ 

Returns list of applied network interfaces on the player.

**Request Body**

```text
GET /api/v1/diagnostics/interfaces/ HTTP/1.1
Host: {{PlayerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
```

**Response Body**

```json
{
    "data": {
        "result": [
            "eth0",
            "ppp0"
        ]
    }
}
```

## GET /v1/diagnostics/packet-capture/ 

Returns the current status of packet capture operation. 

**Request Example**

```text
GET /api/v1/diagnostics/packet-capture/ HTTP/1.1
Host: {{PlayerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
```

**Response Body**

- `statusCode` <font color="#704ae0">int</font>: The success or error code (200 is success)
- `is_running` <font color="#704ae0">bool</font>: Flag indicating if the packet capture operation is running

**Response Example**

```json
{
  "data": {
    "result": {
      "statusCode": 200,
      "is_running": false
    }
  }
}
```

## POST /v1/diagnostics/packet-capture/ 

Starts a packet capture operation

**Request Body**

- `filename` <font color="#704ae0">string</font>: The name of the packet capture file. If you don't pass this string, 'capture.pcap' is the default.
- `net_interface` <font color="#704ae0">string</font>: The name of the network interface for which we are performing packet capture. 'eth0' is the default.
- `duration` <font color="#704ae0">int</font>: The duration for which the packet capture runs in seconds. The default is 300 seconds (5 minutes).
- `maxpackets` <font color="#704ae0">int</font>: The maximum number of packets to capture before concluding the process. 0 is the default value.
- `snaplen` <font color="#704ae0">int</font>: The maximum size of each packet. Specifying 0 will instruct the function to capture the entire packet no matter the size.
- `filter` <font color="#704ae0">string</font>: A field for conditional filtering of packets. This operation uses standard pcap syntax. This string is empty by default

**Request Example**

```text
POST /api/v1/diagnostics/packet-capture/ HTTP/1.1
Host: {{PlayerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
Content-Type: application/json
Content-Length: 190
```

This is the example request body:

```json
{
  "filename": "capture.pcap",
  "interface": "eth0",
  "duration": 300,
  "maxpackets": 0,
  "snaplen": 0,
  "filter": ""
}
```

**Response Example**

```json
{
  "data": {
    "result": {
      "statusCode": 200,
      "is_running": true
    }
  }
}
```

## DELETE /v1/diagnostics/packet-capture/ 

Stops a packet capture operation

**Request Example**

```text
DELETE /api/v1/diagnostics/packet-capture/ HTTP/1.1
Host: {{PlayerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
```

**Response Example**

```json
{
  "data": {
    "result": {
      "statusCode": 200,
      "is_running": false
    }
  }
}
```

## GET /v1/diagnostics/telnet/

Returns information about whether or not Telnet is enabled on the player, and the port number on which it is enabled if it is. This is only available in BOS 9.0.110 or 8.5.46 and above.

**Request Example**

```text
GET /api/v1/diagnostics/telnet/ HTTP/1.1
Host: {{PlayerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
```

**Response Example**

A successful response is a 200 and this response body:

```json
{
    "enabled": true,
    "portNumber": 23
}
```

## PUT /v1/diagnostics/telnet/

This is only available in BOS 9.0.110 or 8.5.46 and above.

**Request Body**

- `enabled` <font color="#704ae0">bool</font>: Enable or disable Telnet on the player
- `portNumber` <font color="#704ae0">int</font>: The port number on which to enable Telnet
- `reboot` <font color="#704ae0">bool</font>: This optional parameter reboots the player immediately after executing this operation. It is `true` by default.

**Request Example**

The example request parameters and headers are set as follows:

```text
PUT /api/v1/diagnostics/telnet/ HTTP/1.1
Host: {{PlayerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
Content-Type: application/json
Content-Length: 75
```

This is the example request body:

```json
{
   "enabled": true
   "portNumber": "23"
}
```

**Response Example**

```json
{
    "success": true, 
    "reboot": true 
}
```

## GET /v1/diagnostics/ssh/

Returns information about whether or not SSH is enabled on the player, and the port number on which it is enabled if it is. This is only available in BOS 9.0.110 or 8.5.46 and above.

**Request Example**

The example request parameters and headers are set as follows:

```text
GET /api/v1/diagnostics/ssh/ HTTP/1.1
Host: {{PlayerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
```

**Response Example**

A successful response is a 200 and this response body:

```json
{
    "enabled": true,
    "portNumber": 22,
    "password": true // Indicates that a value is set
}
```

## PUT /v1/diagnostics/ssh/

This is only available in BOS 9.0.110 or 8.5.46 and above.

**Request Body**

- `enabled` <font color="#704ae0">bool</font>: Enable or disable SSH on the player
- `portNumber` <font color="#704ae0">int</font>: The port number on which to enable SSH
- `password` <font color="#704ae0">string</font>: Sets the plain-text login password for the SSH connection
- `reboot` <font color="#704ae0">bool </font><font color="#01a0af">optional</font>: Reboots the player immediately after executing this operation. It is `true` by default.
- `obfuscatedPassword` <font color="#704ae0">string </font><font color="#01a0af">optional</font>: Sets the login password for the SSH connection. The password should previously have been obfuscated using a shared secret. Contact [support@brightsign.biz](mailto\:support@brightsign.biz) to learn more about generating a key for obfuscation and storing it on the player.

**Request Example**

The example request parameters and headers are set as follows:

```text
PUT /api/v1/diagnostics/ssh/ HTTP/1.1
Host: {{PlayerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
Content-Type: application/json
Content-Length: 65
```

This is the example request body:

```json
{
    "enabled": true,
    "portNumber": 22,
    "password": {{password}}
}
```

**Response Example**

```json
{
    "success": true, 
    "reboot": true
}
```



## GET /v1/diagnostics/chromium-debug/

Returns whether the Chromium Web Inspector has been set. This API is only available as of BOS 8.5.31 and later (see [this page](docId:4qlK1krr1cnx7xypWXRY5) for more information).

**Request Example**

```text
GET /api/v1/diagnostics/chromium-debug/ HTTP/1.1
Host: {{PlayerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
```

**Response Body**

- `enableWebInspector` <font color="#704ae0">bool</font>: Whether the Chromium Web Inspector is enabled for debugging HTML widgets

**Response Example**

A successful response is a 200 and this response body:

```json
{
  "data": {
    "result": {
      "enableWebInspector": false
    }
  }
}
```

## PUT /v1/diagnostics/chromium-debug/

Updates the Chromium Web Inspector setting. This API is only available as of BOS 8.5.31 and later (see [this page](docId:4qlK1krr1cnx7xypWXRY5) for more information).

**Request Body**

- `enableWebInspector` <font color="#704ae0">bool</font>: Enable or disable the Chromium Web Inspector for debugging HTML widgets. Requires a reboot to take effect.

**Request Example**

The example request parameters and headers are set as follows:

```text
PUT /api/v1/diagnostics/chromium-debug/ HTTP/1.1
Host: {{PlayerIP}}
Authorization: {{DigestAuth}}
Accept: application/json
Content-Type: application/json
Content-Length: 45
```

This is the example request body:

```json
{
   "enableWebInspector": true
}
```

**Response Body**

The server will return a success or error message. A successful response will almost always cause a reboot which will be indicated in the response.

- `result` <font color="#704ae0">object</font>: The response object
  - `success` <font color="#704ae0">bool</font>: Whether or not the operation was successful
  - `reboot` <font color="#704ae0">bool</font>: Whether or not the player is rebooting

**Response Example**

```json
{
    "data": {
        "result": {
            "success": true,
            "reboot": true
        }
    }
}
```

##

