Diagnostic Web Server APIs
Remote DWS APIs

rDWS Diagnostics Endpoints

34min
base url for these endpoints https //ws bsn cloud/rest/v1/ get /diagnostics/ runs network diagnostics on the player request example get /rest/v1/diagnostics/?destinationtype=player\&destinationname={{deviceserial}} http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json, application/vnd bsn error+json response body for each of ethernet , wifi , modem , and internet diagnosis string string indicates if this type of interface is present log object\[ ] object\[ ] this contains the diagnostic results for the interface name string string the name of the diagnostic test pass bool bool indicates whether the test passed or not result string string the actual value for the diagnostic tests like checking type and ping ok bool bool if diagnostics were run on the interface or not response example { "route" "/v1/diagnostics", "method" "get", "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 /diagnostics/dns lookup/{\ domain name}/ tests name resolution on the specified dns address segment domain name the dns address (for example, google com) request example get /rest/v1/diagnostics/dns lookup/google com/?destinationtype=player\&destinationname={{deviceserial}} http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json, application/vnd bsn error+json response body the player queries each dns field separately, then collects returned data into the records object and returned errors into the errorlist object the following dns fields are queried "ipv4", "ipv6", "cname", "mx", "service", "text" records object object ipv4 string\[ ] string\[ ] ipv4 addresses ipv6 string\[ ] string\[ ] ipv6 addresses text string\[ ] string\[ ] text records mx object\[ ] object\[ ] mail exchange records exchange string string priority int int server test object object tcp object object made int int the total number of dns requests made pass int int the total number of requests that passed fail int int the total number of requests that failed timeout int int the total number of requests that timed out mismatch int int the total number of mismatched requests between the host and pointer records udp object object made int int the total number of dns requests made pass int int the total number of requests that passed fail int int the total number of requests that failed timeout int int the total number of requests that timed out mismatch int int the total number of mismatched requests between the host and pointer records errorlist object\[ ] object\[ ] field string string the field ('ipv4', 'ipv6', 'cname', 'mx', 'service', or 'text') where the error came from err object object errno string string error number (usually the same value as code) code string string error code number (see dns | node js v14 21 3 documentation https //nodejs org/docs/latest v14 x/api/dns html#dns error codes ) syscall string string information about the system call stack hostname string string the value passed in the url response example { "route" "/v1/diagnostics/dns lookup/google com", "method" "get", "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 /diagnostics/ping/{\ domain name}/ requests the player to ping the specified ip or dns address on its local network this call can take over 10 seconds to return segment domain name the specified ip or dns address request example get /rest/v1/diagnostics/ping/0 0 0 0/?destinationtype=player\&destinationname={{deviceserial}} http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json, application/vnd bsn error+json response body success bool bool a flag that indicates if the operation succeeded or not response object object hostname string string the value that you passed in the url results object object ipv4 object\[ ] object\[ ] address string string the ipv4 address that is pinged results object object received int int the number of packets received stats object object average int int the average time for the packet to return quickest int int the quickest time for the packet to return slowest int int the slowest time for the packet to return units int int the time units (usually microseconds) transmitted int int the number of packets transmitted ipv6 object\[ ] object\[ ] this will only be returned if ipv6 is present interface string string source string string address string string the ipv6 address that is pinged results object object received int int the number of packets received transmitted int int the number of packets transmitted the ipv6 entry will only be returned if ipv6 is present response example { "route" "/v1/diagnostics/ping/0 0 0 0", "method" "get", "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 /diagnostics/trace route/{\ domain name}/ requests the player to perform a standard trace route diagnostic on the specified ip or dns address this call can take several minutes to return segment domain name the specified ip or dns address query string parameter resolveaddress bool bool specifies whether the ip or dns address should be resolved or not request example get /rest/v1/diagnostics/trace route/google com/?resolveaddress=true\&destinationtype=player\&destinationname={{deviceserial}} http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json, application/vnd bsn error+json response body address string string the ip address on which you are running the trace route results object object output string\[ ] string\[ ] returns the trace route output information in text format protocol string string the ip protocol, for example, "ipv4" route object\[ ] object\[ ] hop int int how many times the data moves from one router to the next servers object object address string string the address to which the trace route request is made hostname string string the server hostname stats object object reachable string string time string string the time required for the trace route request to return units string string the time units (usually in milliseconds) response example { "route" "/v1/diagnostics/trace route/152 101 32 76", "method" "get", "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 /diagnostics/network configuration/{\ interface}/ retrieves information about network interface settings on the player segment interface the network interface possible names include eth0 , wlan0 , and modem request example get /rest/v1/diagnostics/network configuration/eth0/?destinationtype=player\&destinationname={{deviceserial}} http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json, application/vnd bsn error+json response body some entries (e g cacertificates , clientidentifier ) are identical for all interfaces text string string the network configuration information in plain text form output output output the network configuration information as a json object interfaces interface\[ ] interface\[ ] an array of interface objects representing network interfaces name string string the interface name (for example, "eth0" ) errors error\[ ] error\[ ] an array of error messages associated with the interface params param\[ ] param\[ ] an array of param objects representing parameters associated with the network interface each param interface has the following entries name string string the property name (e g "mac" ) value string string the property value (e g "90\ ac 3f 0b\ d2 88" ) host info\[ ] info\[ ] an array of info objects providing network host information each object can have the following entries errors error\[ ] error\[ ] an array of error messages associated with the network host params param\[ ] param\[ ] an array of param objects representing parameters associated with the network host bsn info\[ ] info\[ ] an array of info objects providing information about bsn communication other info\[ ] info\[ ] an array of info objects providing information miscellaneous network information cacertificate string string the contents of a ca certificate file in text form (i e a "pem" file) clientcertificate bool bool a flag indicating whether the player is using a client certificate clientidentifier string string the dhcp client identifier for the network interface dnsserverlist string\[ ] string\[ ] an ip address list of the dns servers domain string string the domain name for the network interface eaptlsoptions string string a string containing eap specific options enabledprotocollist string\[ ] string\[ ] an array of enabled ip protocols currently supported values are "ipv4" and " ipv6" identity string string the radius identity ipaddresslist string\[ ] string\[ ] the ip addresses assigned to the player inboundshaperrate int int 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 int int the routing metric for the default gateway on the interface routes with lower metrics are preferred over routes with higher metrics mtu int int the maximum transmission unit (mtu) for the network interface in bytes privatekey string string the private key for authentication vlanidlist int\[ ] int\[ ] an array of vlan ids that are supported on the parent network interface securitymode string string security mode for authentication response example { "route" "/v1/diagnostics/network configuration/eth0", "method" "get", "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 /diagnostics/network configuration/{\ interface}/ 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 interface the network interface possible names include eth0 , wlan0 , and modem request body cacertificate string string optional optional the contents of a ca certificate file in text form (i e a "pem" file) clientcertificate bool bool optional optional a flag indicating whether the player is using a client certificate clientidentifier string string optional optional the dhcp client identifier for the network interface dnsserverlist string\[ ] string\[ ] optional optional an ip address list of the dns servers domain string string optional optional the domain name for the network interface eaptlsoptions string string optional optional a string containing eap specific options enabledprotocollist string\[ ] string\[ ] optional optional an array of enabled ip protocols currently supported values are "ipv4" and "ipv6" identity string string optional optional the radius identity ipaddresslist string\[ ] string\[ ] optional optional the ip addresses assigned to the player inboundshaperrate int int optional optional 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 int int optional optional the routing metric for the default gateway on the interface routes with lower metrics are preferred over routes with higher metrics mtu int int optional optional the maximum transmission unit (mtu) for the network interface in bytes privatekey string string optional optional the private key for authentication vlanidlist int\[ ] int\[ ] optional optional an array of vlan ids that are supported on the parent network interface securitymode string string optional optional security mode for authentication request example the example request parameters and headers are set as follows put /rest/v1/diagnostics/network configuration/eth0 http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json content type application/json content length 75 this is the example request body { "data" { "cacertificates" "", "clientcertificate" false, "clientidentifier" "brightsign\ d7e8cv332141", "dnsserverlist" \[], "domain" "", "eaptlsoptions" "", "enabledprotocollist" \[ "ipv4", "ipv6" ], "identity" "", "ipaddresslist" \[], "privatekey" false, "securitymode" "", "vlanidlist" \[] } } get /diagnostics/network neighborhood/ retrieves information about the player’s current network neighborhood (the other players on the same network) request example get /rest/v1/diagnostics/network neighborhood/?destinationtype=player\&destinationname={{deviceserial}} http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json, application/vnd bsn error+json response body success bool bool a flag that indicates if the operation succeeded response object\[ ] object\[ ] an array of information about players in your network neighborhood chassis descr string string the model version, os version, serial number, etc chassis id string string a unique identifier for the player chassis name string string the name of the player mgmt ip string string port descr string string which interface the player is using port id string string vlan pvid string string if the diagnostic could not be performed, the response body may instead be an error message response example { "route" "/v1/diagnostics/network neighborhood", "method" "get", "data" { "result" { "success" true, "response" \[ { "chassis descr" "brightsign xt1144 reve 8 5 47 uhe115005214", "chassis id" "90\ ac 3f 28\ fb\ a4", "chassis name" "brightsign uhe115005214", "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 /diagnostics/packet capture/ gets the current status of packet capture operation packet capture operation requires the legacy dws to be working request example get /rest/v1/diagnostics/packet capture/?destinationtype=player\&destinationname={{deviceserial}} http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json, application/vnd bsn error+json response body statuscode int int the success or error code (200 is success) is running bool bool flag indicating if the packet capture operation is running response example { "route" "/v1/diagnostics/packet capture", "method" "get", "data" { "result" { "statuscode" 200, "is running" false } } } post /diagnostics/packet capture/ starts a packet capture operation request body filename string string the name of the packet capture file if you don't pass this string, 'capture pcap' is the default interface string string the name of the interface for which we are performing packet capture 'eth0' is the default duration int int the duration for which the packet capture runs in seconds the default is 300 seconds (5 minutes) maxpackets int int the maximum number of packets to capture before concluding the process 0 is the default value snaplen int int the maximum size of each packet specifying 0 will instruct the function to capture the entire packet no matter the size filter string string a field for conditional filtering of packets this operation uses standard pcap syntax this string is empty by default request example post /rest/v1/diagnostics/packet capture/?destinationtype=player\&destinationname={{deviceserial}} http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json, application/vnd bsn error+json content type application/json content length 190 this is the example request body { "data" { "filename" "capture pcap", "interface" "eth0", "duration" 300, "maxpackets" 0, "snaplen" 0, "filter" "" } } response example { "data" { "result" { "statuscode" 200, "is running" true } }, "route" "/v1/diagnostics/packet capture", "method" "post" } delete /diagnostics/packet capture/ stops a packet capture operation request example delete /rest/v1/diagnostics/packet capture/?destinationtype=player\&destinationname={{deviceserial}} http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json, application/vnd bsn error+json response example { "route" "/v1/diagnostics/packet capture", "method" "delete", "data" { "result" { "statuscode" 200, "is running" false } } } get /diagnostics/telnet/ get information about telnet from the player, including its enabled status and port number this is only available in bos 9 0 110 and above request example get /rest/v1/diagnostics/telnet?destinationtype=player\&destinationname={{deviceserial}} http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} response example { "route" "/v1/diagnostics/telnet", "method" "get", "data" { "result" { "enabled" true, "portnumber" 23 } } } put /diagnostics/telnet/ this is only available in bos 9 0 110 and above request body enabled bool bool enable or disable telnet on the player portnumber int int the port number on which to enable telnet reboot bool bool 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 put /rest/v1/diagnostics/telnet/ http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json content type application/json content length 75 this is the example request body { "data" { "enabled" true "portnumber" "23", "password" {{password}} } } response example { "data" { "result" { "success" true, "reboot" true } }, "route" "/v1/diagnostics/telnet", "method" "put" } get /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 and above request example the example request parameters and headers are set as follows get /rest/v1/diagnostics/ssh/ http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json response example a successful response is a 200 200 and this response body { "enabled" true, "portnumber" 22, "password" true // indicates that a value is set } put /diagnostics/ssh/ this is only available in bos 9 0 110 and above request body enabled bool bool enable or disable ssh on the player portnumber int int the port number on which to enable ssh password string string sets the plain text login password for the ssh connection reboot bool bool this optional parameter reboots the player immediately after executing this operation it is true by default obfuscatedpassword string string this optional parameter 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 put /rest/v1/diagnostics/ssh/ http/1 1 host ws bsn cloud authorization bearer {{useraccesstoken}} accept application/json content type application/json content length 65 this is the example request body { "data" { "enabled" true, "portnumber" 22, "password" {{password}} } } response example { "data" { "result" { "success" true, "reboot" true } }, "route" "/v1/diagnostics/ssh", "method" "put" }