Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 123 Next »

This endpoint allows for management and monitoring of devices on the network. 

Base URL for these endpoints:  https://api.bsn.cloud/2022/06/REST/Devices

_________________________________________________________________________

GET /

Retrieves a list of devices on the network.

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Query String Parameters

filter string optional

An expression for filtering search results. The default value is null.

sort string optional

An expression for sorting the search results. The sort expression specifies the entry used for sorting and the ascending/descending (ASC/DESC) sorting order (e.g. "[Device].[Serial] ASC"). 

marker string optional

A value specifying which page to retrieve. This value is useful if the isTruncated entry in the response body of the previous GET call indicates that the number of device instances exceeds the pageSize.

This parameter is only required if you need more elements in the paged list than the pageSize (100).

pageSize int optional

The maximum number of device instances that can be contained in the response body. This defaults to the maximum allowed page size (100).

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • marker value is set to the [PagedList].[NextMarker] property value from the previous BSN.cloud API response.

  • pageSize is set to 1

  • filter is set to [Model] IS 'HD1024'

  • sort is set to [LastModifiedDate] ASC

GET /2022/06/REST/Devices/?marker=Mj0kwMTU2&pageSize=1&filter=%5BModel%5D%20IS%20%27HD1024%27&sort=%5BLastModifiedDate%5D%20ASC HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Response

Success Response Body

200: Returns a paged list of Player Entity instances on a network. This will return not more than 100 entities along with the information necessary to return any other remaining pages.

Example

 Expand to see response information:
{
  "items": [
    {
      "id": 12345,
      "serial": "46C89C101829",
      "model": "HD1024",
      "family": "Pagani",
      "registrationDate": "2020-07-09T19:15:22.773Z",
      "lastModifiedDate": "2021-05-04T18:04:17.97Z",
      "settings": {
        "name": "HDPlayer",
        "description": "Primary Display",
        "concatNameAndSerial": false,
        "setupType": "BSN",
        "lastModifiedDate": "2022-01-05T18:12:22.643Z",
        "group": {
          "id": 123,
          "name": "TestGroup",
          "link": null
        },
        "brightWall": null,
        "timezone": "PST",
        "screen": {
          "idleColor": "FF702896",
          "splashUrl": null
        },
        "synchronization": {
          "status": {
            "period": "00:05:00"
          },
          "settings": {
            "period": "00:00:00"
          },
          "schedule": {
            "period": "06:00:00"
          },
          "content": {
            "start": null,
            "end": null
          }
        },
        "network": {
          "hostname": "BrightSign-46C89C101829",
          "proxyServer": null,
          "proxyBypass": [],
          "timeServers": [
            "http://time.brightsignnetwork.com/"
          ],
          "interfaces": [
            {
              "name": "eth0",
              "type": "Ethernet",
              "enabled": true,
              "proto": "Static",
              "ip": [
                "192.168.0.2/24",
                "EF88:7::2FAB:7657/64"
              ],
              "gateway": "192.168.0.1",
              "dns": [
                "192.168.0.125",
                "74.38.99.135"
              ],
              "rateLimitDuringInitialDownloads": null,
              "rateLimitInsideContentDownloadWindow": null,
              "rateLimitOutsideContentDownloadWindow": null,
              "contentDownloadEnabled": true,
              "textFeedsDownloadEnabled": true,
              "mediaFeedsDownloadEnabled": true,
              "healthReportingEnabled": true,
              "logsUploadEnabled": true
            },
            {
              "name": "eth0.25",
              "type": "Virtual",
              "enabled": false,
              "parent": "eth0",
              "vlanId": 25,
              "proto": "DHCPv4",
              "ip": null,
              "gateway": null,
              "dns": null,
              "rateLimitDuringInitialDownloads": null,
              "rateLimitInsideContentDownloadWindow": null,
              "rateLimitOutsideContentDownloadWindow": null,
              "contentDownloadEnabled": false,
              "textFeedsDownloadEnabled": false,
              "mediaFeedsDownloadEnabled": false,
              "healthReportingEnabled": true,
              "logsUploadEnabled": true
            },
            {
              "name": "wlan0",
              "type": "WiFi",
              "enabled": true,
              "ssid": "hall_devices",
              "security": {
                "authentication": {
                  "mode": "Shared",
                  "passphrase": "A8200E996438DE85103486A44CA96A999B0A6D"
                },
                "encryption": {
                  "mode": "TKIP"
                }
              },
              "proto": "NDP, DHCPv6",
              "ip": null,
              "gateway": null,
              "dns": null,
              "rateLimitDuringInitialDownloads": 10240000,
              "rateLimitInsideContentDownloadWindow": 10240000,
              "rateLimitOutsideContentDownloadWindow": 256000,
              "contentDownloadEnabled": true,
              "textFeedsDownloadEnabled": true,
              "mediaFeedsDownloadEnabled": false,
              "healthReportingEnabled": true,
              "logsUploadEnabled": false
            },
            {
              "name": "ppp0",
              "type": "Cellular",
              "enabled": true,
              "modems": [
                {
                  "model": "BrightSign IK41",
                  "usbDeviceIds": [
                    "1bbb:00b6"
                  ]
                }
              ],
              "sims": [
                {
                  "mcc": "901",
                  "mnc": "28",
                  "connection": {
                    "type": "Default"
                  }
                },
                {
                  "mcc": "204",
                  "mnc": "04",
                  "connection": {
                    "type": "Default"
                  }
                }
              ],
              "rateLimitDuringInitialDownloads": null,
              "rateLimitInsideContentDownloadWindow": null,
              "rateLimitOutsideContentDownloadWindow": null,
              "contentDownloadEnabled": true,
              "textFeedsDownloadEnabled": true,
              "mediaFeedsDownloadEnabled": true,
              "healthReportingEnabled": true,
              "logsUploadEnabled": true
            },
            {
              "name": "usb0",
              "type": "Ethernet",
              "enabled": true,
              "proto": "Static",
              "ip": [
                "132.80.245.191/24"
              ],
              "gateway": null,
              "dns": [
                "132.80.245.142"
              ],
              "rateLimitDuringInitialDownloads": null,
              "rateLimitInsideContentDownloadWindow": null,
              "rateLimitOutsideContentDownloadWindow": null,
              "contentDownloadEnabled": false,
              "textFeedsDownloadEnabled": false,
              "mediaFeedsDownloadEnabled": false,
              "healthReportingEnabled": false,
              "logsUploadEnabled": false
            },
            {
              "name": "eth0.110",
              "type": "Virtual",
              "enabled": true,
              "parent": "eth0",
              "vlanId": 110,
              "proto": "Static",
              "ip": [
                "16.194.230.251/28"
              ],
              "gateway": "16.194.230.241",
              "dns": [
                "192.168.0.125",
                "74.38.99.135"
              ],
              "rateLimitDuringInitialDownloads": null,
              "rateLimitInsideContentDownloadWindow": null,
              "rateLimitOutsideContentDownloadWindow": null,
              "contentDownloadEnabled": true,
              "textFeedsDownloadEnabled": true,
              "mediaFeedsDownloadEnabled": true,
              "healthReportingEnabled": true,
              "logsUploadEnabled": true
            }
          ]
        },
        "beacons": [],
        "location": {
         "placeId": null,
         "gpsLatitude": 37.4152,
         "gpsLongitude": -122.1224,
         "country": "US",
         "countryLongName": "United States",
         "adminAreaLevel1": "CA",
         "adminAreaLevel1LongName": "California",
         "adminAreaLevel2": "Santa Clara County",
         "adminAreaLevel2LongName": "Santa Clara County",
         "locality": "Palo Alto",
         "localityLongName": "Palo Alto",
         "path": "/US/CA/Santa Clara County/Palo Alto/",
         "pathLongName": "/United States/California/Santa Clara County/Palo Alto/"
        },
        "screenshots": null,
        "logging": {
          "enableDiagnosticLog": false,
          "enableEventLog": false,
          "enablePlaybackLog": false,
          "enableStateLog": false,
          "enableVariableLog": false,
          "uploadAtBoot": false,
          "uploadTime": null
        },
        "lws": {
          "username": "",
          "password": "",
          "enableUpdateNotifications": true
        },
        "ldws": {
          "password": "RLSJZ35Sm9b1lB0npVFW4kPYegscBlMF3NFG6wtOaSTXIoC+iR5NGrhJa77ZaWTgpiCzPdDdnwMlQSb4QLqe6nEFx6q/927scO6LlVTtRBVch+RlgzlJ2SXYqAH6TUx66JRFuvCxyHzL0iUNKR/R4E1hdTQpxH3yXIPJ5OBOTlaw8OW6DZNixDGMuvhgmWAW9/TgksUYTlwb1SKqGzQOrDYmmg+A71YMGV6NcKbuN3P0DjQsMrVxlFe9+awQ73LSxqKF5Q52FjUhgSKsYcTtnoJvY/n9HWcREyxOPKF7vsEIfKOeG/qoFBvgZZKOoqaTyD82iBKbOQu9WllBGX+qaaTTQHR1SrZoyS2PDmBlddLhngE4BHiDxmOPhm69bsmiakUcUqgjvgi8sRL/9kUxLXuayeQ6VYzUnHdX7K3nYqbhgJCxVbSURe5wIS/vQ97zi4wt0NpF55FmoAQlZA1JcSk/85w8S4hfpCYlDnqQMI8jXqvNZ5apc7nKsg6NSibGhh4h1cpA7DG6d6MzjBldVKhutni3Bj991cP45RIaGlmWipbC9eKwODrsDPYMK2CDN/JEygmfiUdJJW4Cvgi4s6Z3oyqddiEV+plZtGD69NAau4OMCoHcR1STJdsVOrq++tF+R0/IkC5wDhAUBszXvlSdcKja7Gv7v4kOAZC0CmtA="
        }
      },
      "status": {
        "group": {
          "id": 123,
          "name": "TestGroup",
          "link": null
        },
        "brightWall": null,
        "presentation": {
          "id": 12345,
          "name": "Test2",
          "type": "Presentation",
          "link": null
        },
        "timezone": "PST",
        "synchronization": {
          "settings": {
            "enabled": false
          },
          "schedule": {
            "enabled": false
          },
          "content": {
            "enabled": false
          }
        },
        "script": {
          "type": "Autorun",
          "version": "10.0.100",
          "plugins": null
        },
        "firmware": {
          "version": "8.5.35"
        },
        "storage": [
          {
            "interface": "SD1",
            "system": "ExFAT",
            "access": "Read, Write",
            "stats": {
              "sizeTotal": 31905546240,
              "sizeFree": 31898959872,
              "blockSize": 32768
            }
          }
        ],
        "network": {
          "externalIp": "98.134.53.219",
          "interfaces": [
            {
              "name": "eth0",
              "type": "Ethernet",
              "proto": "Static",
              "mac": "D0:6A:85:DA:FE:71",
              "ip": [
                "192.168.0.1/24",
                "EF88:7::2FAB:7657/64",
                "FE80::C60C:27BF:74E0:2E0F/128"
              ],
              "gateway": "192.168.0.1",
              "metric": 100
            },
            {
              "name": "eth0.25",
              "type": "Virtual",
              "proto": "DHCPv4",
              "mac": "D0:6A:85:DA:FE:71",
              "ip": [
                "176.216.148.166/16",
                "FE80::1623:693:8588:65BB/128"
              ],
              "gateway": "176.216.0.1",
              "metric": 2
            },
            {
              "name": "wlan0",
              "type": "WiFi",
              "proto": "NDP, DHCPv6",
              "mac": "33:5B:FE:4A:E1:BB",
              "ip": [
                "10.10.0.2/16"
              ],
              "gateway": "10.10.0.1",
              "metric": 110
            },
            {
              "name": "ppp0",
              "type": "Cellular",
              "proto": "Static",
              "mac": "FE:98:1A:AA:B4:72",
              "ip": [
                "192.168.255.255/31"
              ],
              "gateway": "192.168.255.254",
              "metric": 120,
              "modem": {
                "imei": "35778404001349",
                "manufacturer": "Vodafone",
                "model": "IK41US_USBC4G_V2_NA",
                "revision": "IK41_00_02.00_09"
              },
              "sims": [
                {
                  "status": "OK",
                  "iccid": "8910412345678907",
                  "connection": {
                    "network": "Vodafone Libertel",
                    "signal": -53
                  }
                }
              ]
            },
            {
              "name": "usb0",
              "type": "Ethernet",
              "proto": "Static",
              "mac": "5A:64:A1:72:EE:12",
              "ip": [
                "132.80.245.191/24"
              ],
              "gateway": null,
              "metric": null
            },
            {
              "name": "eth0.110",
              "type": "Virtual",
              "proto": "Static",
              "mac": "D0:6A:85:DA:FE:71",
              "ip": [
                "16.194.230.251/28",
                "FE80::8C6F:34A9:C88:31D5/128"
              ],
              "gateway": "16.194.230.241",
              "metric": 3
            }
          ]
        },
        "uptime": "08:20:46",
        "currentSettingsTimestamp": "2021-05-04T10:45:06Z",
        "currentScheduleTimestamp": "2021-05-04T10:45:06Z",
        "health": "Error",
        "lastModifiedDate": "2022-02-15T23:53:50.16Z"
      },
      "subscription": {
        "id": 123456,
        "device": {
          "id": 12345,
          "serial": "46C89C101829"
        },
        "type": "Commercial",
        "activityPeriod": "365.00:00:00",
        "status": "Active",
        "creationDate": "2020-08-17T20:49:49.09Z",
        "lastModifiedDate": "2020-08-17T20:49:49.09Z",
        "activationDate": "2020-08-17T20:49:49.09Z",
        "suspensionDate": null,
        "expirationDate": null
      },
      "taggedGroups": [],
      "tags": {
        "string::[Content].<Anon>": "image",
        "number::[Content].<BillingRate>": "30"
      },
      "permissions": []
    }
  ],
  "totalItemCount": 3,
  "matchingItemCount": 2,
  "pageSize": 1,
  "nextMarker": "LDM3MjA2",
  "isTruncated": false,
  "sortExpression": "[LastModifiedDate] ASC",
  "filterExpression": "[Model] IS 'HD1024'"
}

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

Endpoints:


DELETE /

Removes devices, specified by a filter, from a network. This allows multiple devices to be deleted at once.

Required Scope Token

bsn.api.main.devices.delete

______________________________________________________________

Query String Parameter

filter string  required

An expression for filtering search results.

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • filter is set to [Model] IS 'HD1024'

DELETE /2022/06/REST/Devices/?filter=%5BModel%5D%20IS%20%27HD1024%27 HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Response

Success Response Body

200: Returns the number of affected devices as an integer value.

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /Regions/{*locationPath}/ 

Returns a region which contains all the players located in the specified path.

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

locationPath string 

The parts of the returned player location path (country, province, city, etc.) that are common to all players. 

______________________________________________________________

Query String Parameter

filter string optional

An expression for filtering search results

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • filter is set to [Model] IS 'HD1024'

  • locationPath is set to /US/

GET /2022/06/REST/Devices/Regions/US/?filter=%5BModel%5D%20IS%20%27HD1024%27 HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Response

Success Response Body

200: Returns the Players Region Entity.

Example

[
  {
    "country": "US",
    "countryLongName": "United States",
    "adminAreaLevel1": "MO",
    "adminAreaLevel1LongName": "Missouri",
    "adminAreaLevel2": "Callaway County",
    "adminAreaLevel2LongName": "Callaway County",
    "locality": "Fulton",
    "localityLongName": "Fulton",
    "minGPSLatitude": 38.8513,
    "maxGPSLatitude": 38.8513,
    "minGPSLongitude": -91.9604,
    "maxGPSLongitude": -91.9604,
    "devicesCount": 1,
    "devicesHealthStatus": [
      "Normal"
    ],
    "locationPath": "/US/MO/Callaway County/Fulton/"
  }
]

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /Count/ 

Retrieves the number of devices on the network matching the specified filter criteria. If no filter is included, this call returns the total number of devices on the network. 

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Query String Parameter

filter string optional

An expression for filtering search results.

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • filter is set to [Model] IS 'HD1024'

GET /2022/06/REST/Devices/Count/?filter=%5BModel%5D%20IS%20%27HD1024%27 HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Response

Success

200: The device count is returned as an integer value.

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{id:int}/ 

Return the information for a specified device

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

id int 

A unique identifier for the device

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is set to 12345

  • The optional If-Modified-Since header value equals the Last-Modified header value retrieved from the previous GET /id or GET /serial response

GET /2022/06/REST/Devices/12345/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
If-Modified-Since: Wed, 13 Mar 2024 15:51:01 GMT
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Response

Success Response with Body

200: Returns the Player Entity

Example

 Expand to see a response example:
{
  "id": 12345,
  "serial": "46C89C101839",
  "model": "HD1024",
  "family": "Pagani",
  "registrationDate": "2020-07-09T19:15:22.773Z",
  "lastModifiedDate": "2024-03-13T16:29:11.983Z",
  "settings": {
    "name": "HDPlayer",
    "description": "Primary Display",
    "concatNameAndSerial": false,
    "setupType": "BSN",
    "lastModifiedDate": "2022-01-05T18:12:22.643Z",
    "group": {
      "id": 123,
      "name": "TestGroup",
      "link": null
    },
    "brightWall": null,
    "timezone": "PST",
    "screen": {
      "idleColor": "FF702896",
      "splashUrl": null
    },
    "synchronization": {
      "status": {
        "period": "00:05:00"
      },
      "settings": {
        "period": "00:00:00"
      },
      "schedule": {
        "period": "06:00:00"
      },
      "content": {
        "start": null,
        "end": null
      }
    },
    "network": {
      "hostname": "BrightSign-46C89C101829",
      "proxyServer": null,
      "proxyBypass": [],
      "timeServers": [
        "http://time.brightsignnetwork.com/"
      ],
      "interfaces": [
        {
          "name": "eth0",
          "type": "Ethernet",
          "enabled": true,
          "proto": "Static",
          "ip": [
            "192.168.0.2/24",
            "EF88:7::2FAB:7657/64"
          ],
          "gateway": "192.168.0.1",
          "dns": [
            "192.168.0.125",
            "74.38.99.135"
          ],
          "rateLimitDuringInitialDownloads": null,
          "rateLimitInsideContentDownloadWindow": null,
          "rateLimitOutsideContentDownloadWindow": null,
          "contentDownloadEnabled": true,
          "textFeedsDownloadEnabled": true,
          "mediaFeedsDownloadEnabled": true,
          "healthReportingEnabled": true,
          "logsUploadEnabled": true
        },
        {
          "name": "eth0.25",
          "type": "Virtual",
          "enabled": false,
          "parent": "eth0",
          "vlanId": 25,
          "proto": "DHCPv4",
          "ip": null,
          "gateway": null,
          "dns": null,
          "rateLimitDuringInitialDownloads": null,
          "rateLimitInsideContentDownloadWindow": null,
          "rateLimitOutsideContentDownloadWindow": null,
          "contentDownloadEnabled": false,
          "textFeedsDownloadEnabled": false,
          "mediaFeedsDownloadEnabled": false,
          "healthReportingEnabled": true,
          "logsUploadEnabled": true
        },
        {
          "name": "wlan0",
          "type": "WiFi",
          "enabled": true,
          "ssid": "hall_devices",
          "security": {
            "authentication": {
              "mode": "Shared",
              "passphrase": "A8201E996438DE85103486A44CA96A999B0A6D"
            },
            "encryption": {
              "mode": "TKIP"
            }
          },
          "proto": "NDP, DHCPv6",
          "ip": null,
          "gateway": null,
          "dns": null,
          "rateLimitDuringInitialDownloads": 10240000,
          "rateLimitInsideContentDownloadWindow": 10240000,
          "rateLimitOutsideContentDownloadWindow": 256000,
          "contentDownloadEnabled": true,
          "textFeedsDownloadEnabled": true,
          "mediaFeedsDownloadEnabled": false,
          "healthReportingEnabled": true,
          "logsUploadEnabled": false
        },
        {
          "name": "ppp0",
          "type": "Cellular",
          "enabled": true,
          "modems": [
            {
              "model": "BrightSign IK41",
              "usbDeviceIds": [
                "1bbb:00b6"
              ]
            }
          ],
          "sims": [
            {
              "mcc": "901",
              "mnc": "28",
              "connection": {
                "type": "Default"
              }
            },
            {
              "mcc": "204",
              "mnc": "04",
              "connection": {
                "type": "Default"
              }
            }
          ],
          "rateLimitDuringInitialDownloads": null,
          "rateLimitInsideContentDownloadWindow": null,
          "rateLimitOutsideContentDownloadWindow": null,
          "contentDownloadEnabled": true,
          "textFeedsDownloadEnabled": true,
          "mediaFeedsDownloadEnabled": true,
          "healthReportingEnabled": true,
          "logsUploadEnabled": true
        },
        {
          "name": "usb0",
          "type": "Ethernet",
          "enabled": true,
          "proto": "Static",
          "ip": [
            "132.80.245.191/24"
          ],
          "gateway": null,
          "dns": [
            "132.80.245.142"
          ],
          "rateLimitDuringInitialDownloads": null,
          "rateLimitInsideContentDownloadWindow": null,
          "rateLimitOutsideContentDownloadWindow": null,
          "contentDownloadEnabled": false,
          "textFeedsDownloadEnabled": false,
          "mediaFeedsDownloadEnabled": false,
          "healthReportingEnabled": false,
          "logsUploadEnabled": false
        },
        {
          "name": "eth0.110",
          "type": "Virtual",
          "enabled": true,
          "parent": "eth0",
          "vlanId": 110,
          "proto": "Static",
          "ip": [
            "16.194.230.251/28"
          ],
          "gateway": "16.194.230.241",
          "dns": [
            "192.168.0.125",
            "74.38.99.135"
          ],
          "rateLimitDuringInitialDownloads": null,
          "rateLimitInsideContentDownloadWindow": null,
          "rateLimitOutsideContentDownloadWindow": null,
          "contentDownloadEnabled": true,
          "textFeedsDownloadEnabled": true,
          "mediaFeedsDownloadEnabled": true,
          "healthReportingEnabled": true,
          "logsUploadEnabled": true
        }
      ]
    },
    "beacons": [],
    "location": {
         "placeId": null,
         "gpsLatitude": 37.4152,
         "gpsLongitude": -122.1224,
         "country": "US",
         "countryLongName": "United States",
         "adminAreaLevel1": "CA",
         "adminAreaLevel1LongName": "California",
         "adminAreaLevel2": "Santa Clara County",
         "adminAreaLevel2LongName": "Santa Clara County",
         "locality": "Palo Alto",
         "localityLongName": "Palo Alto",
         "path": "/US/CA/Santa Clara County/Palo Alto/",
         "pathLongName": "/United States/California/Santa Clara County/Palo Alto/"
        },
    "screenshots": {
         "interval": "00:15:00",
         "countLimit": 5,
         "quality": 50,
         "orientation": "Landscape"
      },
    "logging": {
      "enableDiagnosticLog": false,
      "enableEventLog": false,
      "enablePlaybackLog": false,
      "enableStateLog": false,
      "enableVariableLog": false,
      "uploadAtBoot": false,
      "uploadTime": null
    },
    "lws": {
      "username": "",
      "password": "",
      "enableUpdateNotifications": true
    },
    "ldws": {
      "password": "RLSJZ35Sm9b1lB0npVFW4kPYegscBlMF3NFG6wtOaSTXIoC+iR5NGrhJa77ZaWTgpiCzPdDdnwMlQSb4QLqe6nEFx6q/927scO6LlVTtRBVch+RlgzlJ2SXYqAH6TUx66JRFuvCxyHzL0iUNKR/R4E1hdTQpxH3yXIPJ5OBOTlaw8OW6DZNixDGMuvhgmWAW9/TgksUYTlwb1SKqGzQOrDYmmg+A71YMGV6NcKbuN3P0DjQsMrVxlFe9+awQ73LSxqKF5Q52FjUhgSKsYcTtnoJvY/n9HWcREyxOPKF7vsEIfKOeG/qoFBvgZZKOoqaTyD82iBKbOQu9WllBGX+qaaTTQHR1SrZoyS2PDmBlddLhngE4BHiDxmOPhm69bsmiakUcUqgjvgi8sRL/9kUxLXuayeQ6VYzUnHdX7K3nYqbhgJCxVbSURe5wIS/vQ97zi4wt0NpF55FmoAQlZA1JcSk/85w8S4hfpCYlDnqQMI8jXqvNZ5apc7nKsg6NSibGhh4h1cpA7DG6d6MzjBldVKhutni3Bj991cP45RIaGlmWipbC9eKwODrsDPYMK2CDN/JEygmfiUdJJW4Cvgi4s6Z3oyqddiEV+plZtGD69NAau4OMCoHcR1STJdsVOrq++tF+R0/IkC5wDhAUBszXvlSdcKja7Gv7v4kOAZC0CmtA="
    }
  },
  "status": {
    "group": {
      "id": 123,
      "name": "TestGroup",
      "link": null
    },
    "brightWall": null,
    "presentation": {
      "id": 12345,
      "name": "Test2",
      "type": "Presentation",
      "link": null
    },
    "timezone": "PST",
    "synchronization": {
      "settings": {
        "enabled": false
      },
      "schedule": {
        "enabled": false
      },
      "content": {
        "enabled": false
      }
    },
    "script": {
      "type": "Autorun",
      "version": "10.0.100",
      "plugins": null
    },
    "firmware": {
      "version": "8.5.35"
    },
    "storage": [
      {
        "interface": "SD1",
        "system": "ExFAT",
        "access": "Read, Write",
        "stats": {
          "sizeTotal": 31905546240,
          "sizeFree": 31898959872,
          "blockSize": 32768
        }
      }
    ],
    "network": {
      "externalIp": "98.134.53.219",
      "interfaces": [
        {
          "name": "eth0",
          "type": "Ethernet",
          "proto": "Static",
          "mac": "D0:6A:85:DA:FE:71",
          "ip": [
            "192.168.0.1/24",
            "EF88:7::2FAB:7657/64",
            "FE80::C60C:27BF:74E0:2E0F/128"
          ],
          "gateway": "192.168.0.1",
          "metric": 100
        },
        {
          "name": "eth0.25",
          "type": "Virtual",
          "proto": "DHCPv4",
          "mac": "D0:6A:85:DA:FE:71",
          "ip": [
            "176.216.148.166/16",
            "FE80::1623:693:8588:65BB/128"
          ],
          "gateway": "176.216.0.1",
          "metric": 2
        },
        {
          "name": "wlan0",
          "type": "WiFi",
          "proto": "NDP, DHCPv6",
          "mac": "33:5B:FE:4A:E1:BB",
          "ip": [
            "10.10.0.2/16"
          ],
          "gateway": "10.10.0.1",
          "metric": 110
        },
        {
          "name": "ppp0",
          "type": "Cellular",
          "proto": "Static",
          "mac": "FE:98:1A:AA:B4:72",
          "ip": [
            "192.168.255.255/31"
          ],
          "gateway": "192.168.255.254",
          "metric": 120,
          "modem": {
            "imei": "35778404001349",
            "manufacturer": "Vodafone",
            "model": "IK41US_USBC4G_V2_NA",
            "revision": "IK41_00_02.00_09"
          },
          "sims": [
            {
              "status": "OK",
              "iccid": "8910412345678907",
              "connection": {
                "network": "Vodafone Libertel",
                "signal": -53
              }
            }
          ]
        },
        {
          "name": "usb0",
          "type": "Ethernet",
          "proto": "Static",
          "mac": "5A:64:A1:72:EE:12",
          "ip": [
            "132.80.245.191/24"
          ],
          "gateway": null,
          "metric": null
        },
        {
          "name": "eth0.110",
          "type": "Virtual",
          "proto": "Static",
          "mac": "D0:6A:85:DA:FE:71",
          "ip": [
            "16.194.230.251/28",
            "FE80::8C6F:34A9:C88:31D5/128"
          ],
          "gateway": "16.194.230.241",
          "metric": 3
        }
      ]
    },
    "uptime": "08:20:46",
    "currentSettingsTimestamp": "2021-05-04T10:45:06Z",
    "currentScheduleTimestamp": "2021-05-04T10:45:06Z",
    "health": "Error",
    "lastModifiedDate": "2022-02-15T23:53:50.16Z"
  },
  "subscription": {
    "id": 123456,
    "device": {
      "id": 12345,
      "serial": "46C89C101839"
    },
    "type": "Commercial",
    "activityPeriod": "365.00:00:00",
    "status": "Active",
    "creationDate": "2020-08-17T20:49:49.09Z",
    "lastModifiedDate": "2020-08-17T20:49:49.09Z",
    "activationDate": "2020-08-17T20:49:49.09Z",
    "suspensionDate": null,
    "expirationDate": null
  },
  "taggedGroups": [],
  "tags": {
    "string::[Content].<Anon>": "image",
    "number::[Content].<BillingRate>": "30"
  },
  "permissions": []
}

Success Response 

304: The resource was not modified since the time specified in the “If-Modified-Since” header

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method

404: The server cannot find the requested resource (the path does not exist) 

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

PUT /{id:int}/ 

Update the specified device. Applies only to the player settings.

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

id int

A unique identifier for the device

______________________________________________________________

Request Body

The Player Entity

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is set to 12345

  • The optional If-Unmodified-Since header value equals the Last-Modified header value retrieved from the GET /id or GET /serial response.

PUT /2022/06/REST/Devices/12345/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate
If-Unmodified-Since: Wed, 13 Mar 2024 15:51:01 GMT
Content-Type: application/json
Content-Length: 5947

This is the example request body:

 Expand to see the example request body
{
   "id": 0,
   "serial": "46D89C107131",
   "model": "HD1024",
   "family": "Pagani",
   "registrationDate": "0001-01-01T00:00:00",
   "lastModifiedDate": "0001-01-01T00:00:00",
   "settings":    {
      "name": "OutsidePlayer",
      "description": "Outside of Building A",
      "concatNameAndSerial": false,
      "setupType": "BSN",
      "lastModifiedDate": "2022-01-05T18:12:22.643Z",
      "group":       {
         "id": 123,
         "name": "TestGroup",
         "link": null
      },
      "brightWall": null,
      "timezone": "PST",
      "screen":       {
         "idleColor": "FF702896",
         "splashUrl": null
      },
      "synchronization":       {
         "status": {"period": "00:05:00"},
         "settings": {"period": "00:00:00"},
         "schedule": {"period": "06:00:00"},
         "content":          {
            "start": null,
            "end": null
         }
      },
      "network":       {
         "hostname": "BrightSign-46D89C107131",
         "proxyServer": null,
         "proxyBypass": [],
         "timeServers": ["http://time.brightsignnetwork.com/"],
         "interfaces":          [
                        {
               "enabled": true,
               "proto": "DHCP",
               "ip": null,
               "gateway": null,
               "dns": null,
               "rateLimitDuringInitialDownloads": 0,
               "rateLimitInsideContentDownloadWindow": 0,
               "rateLimitOutsideContentDownloadWindow": null,
               "contentDownloadEnabled": true,
               "textFeedsDownloadEnabled": true,
               "mediaFeedsDownloadEnabled": true,
               "healthReportingEnabled": true,
               "logsUploadEnabled": true,
               "name": "eth0",
               "type": "Ethernet"
            },
                        {
               "enabled": false,
               "ssid": "",
               "security":                {
                  "authentication":                   {
                     "mode": "Shared",
                     "passphrase": ""
                  },
                  "encryption": {"mode": "TKIP, CCMP"}
               },
               "proto": "DHCP",
               "ip": null,
               "gateway": null,
               "dns": null,
               "rateLimitDuringInitialDownloads": 0,
               "rateLimitInsideContentDownloadWindow": 0,
               "rateLimitOutsideContentDownloadWindow": 0,
               "contentDownloadEnabled": false,
               "textFeedsDownloadEnabled": false,
               "mediaFeedsDownloadEnabled": false,
               "healthReportingEnabled": false,
               "logsUploadEnabled": false,
               "name": "wlan0",
               "type": "WiFi"
            }
         ]
      },
      "beacons": [],
      "location": null,
      "screenshots": null,
      "logging":       {
         "enableDiagnosticLog": false,
         "enableEventLog": false,
         "enablePlaybackLog": false,
         "enableStateLog": false,
         "enableVariableLog": false,
         "uploadAtBoot": false,
         "uploadTime": null
      },
      "lws":       {
         "username": "",
         "password": "",
         "enableUpdateNotifications": true
      },
      "ldws": {"password": "RLSJPQSm9z15lB8nwVFWjkPYegscBlMF3NFG6wt3aSTXIoC+iR5NGrhJa77ZaWTgpiCzPdDdnwMlQSb4QLqe6nEFx6q/927scO6LlVTtRBVch+RlgzlJ2SXYqAH6TUx66JRFuvCxyHzL0iUNKR/R4E1hdTQpxH3yXIPJ5OBOTlaw8OW6DZNixDGMuvhgmWAW9/TgksUYTlwb1SKqGzQOrDYmmg+A71YMGV6NcKbuN3P0DjQsMrVxlFe9+awQ73LSxqKF5Q52FjUhgSKsYcTtnoJvY/n9HWcREyxOPKF7vsEIfKOeG/qoFBvgZZKOoqaTyD82iBKbOQu9WllBGX+qaaTTQHR1SrZoyS2PDmBlddLhngE4BHiDxmOPhm69bsmiakUcUqgjvgi8sRL/9kUxLXuayeQ6VYzUnHdX7K3nYqbhgJCxVbSURe5wIS/vQ97zi4wt0NpF55FmoAQlZA1JcSk/85w8S4hfpCYlDnqQMI8jXqvNZ5apc7nKsg6NSibGhh4h1cpA7DG6d6MzjBldVKhutni3Bj991cP45RIaGlmWipbC9eKwODrsDPYMK2CDN/JEygmfiUdJJW4Cvgi4s6Z3oyqddiEV+plZtGD69NAau4OMCoHcR1STJdsVOrq++tF+R0/IkC5wDhAUBszXvlSdcKja7Gv7v4kOAZC0CmtA="}
   },
   "status": null,
   "subscription": null,
   "taggedGroups": [],
   "tags": {},
   "permissions": []
}

______________________________________________________________

Response

Success

204: The specified device was successfully updated

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

412: Precondition failed (the resource changed since the time specified in the “If-Unmodified-Since” header value)

415: The server cannot accept the data representation that you sent (as specified in the "Content-Type" header)

5XX: Any 500 code is an internal server error

PATCH /{id:int}/ 

Replaces certain parameters on the specified device. Applies only to the player settings. See rfc6902.

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

id int

A unique identifier for the device

______________________________________________________________

Request Body

These properties are entries in an array. Every entry must have all three of these properties:

op string The type of operation - in this case it is always "replace"

path string: A Uri path that references the location within the target document where the update will be performed

value:  The replacement value(s) for the parameters that must be updated

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is 12345

  • The optional If-Unmodified-Since header value equals the Last-Modified header value retrieved from the GET /id or GET /serial response.

PATCH /2022/06/REST/Devices/12345/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate
If-Unmodified-Since: Wed, 13 Mar 2024 15:51:01 GMT
Content-Type: application/json-patch+json
Content-Length: 94

This is the example request body:

[
  {
    "op": "replace",
    "path": "/settings/description/",
    "value": "Main Screen Player"
  }
]

______________________________________________________________

Response

Success

204: The parameters have been successfully replaced.

Failure

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

403: The supplied access token, though valid, doesn't provide access to this method

404: The server cannot find the requested resource (the path does not exist)

412: Precondition failed (the resource changed since the time specified in the “If-Unmodified-Since” header value)

415: The server cannot accept the data representation that you sent (as specified in the "Content-Type" header)

5XX: Any 500 code is an internal server error

DELETE /{id:int}/ 

Delete the specified device

Required Scope Token

bsn.api.main.devices.delete

______________________________________________________________

Segment

id int

A unique identifier for the device to delete

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is set to 12345

  • The optional If-Unmodified-Since header value equals the Last-Modified header value retrieved from the GET /id or GET /serial response.

DELETE /2022/06/REST/Devices/12345/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}}
If-Unmodified-Since: Wed, 13 Mar 2024 15:51:01 GMT
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Response

Success

204: The device was successfully deleted

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

412: Precondition failed (the resource changed since the time specified in the “If-Unmodified-Since” header value)

5XX: Any 500 code is an internal server error

GET /{serial}/ 

Return the specified device information

Required Scope

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

serial string

The device serial number

______________________________________________________________ 

Request Example

The example request parameters and headers are set as follows:

  • serial is set to 46D89C101139

  • The optional If-Modified-Since header value equals the Last-Modified header value retrieved from the previous GET /id or GET /serial response

GET /2022/06/REST/Devices/46D89C101139/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
If-Modified-Since: Wed, 13 Mar 2024 15:51:01 GMT
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Response

Success Response with Body

200: Returns the Player Entity

Example

 Expand to see response example:
{
  "id": 12345,
  "serial": "46D89C101139",
  "model": "HD1024",
  "family": "Pagani",
  "registrationDate": "2020-07-09T19:15:22.773Z",
  "lastModifiedDate": "2024-03-13T16:29:11.983Z",
  "settings": {
    "name": "HDPlayer",
    "description": "Primary Display",
    "concatNameAndSerial": false,
    "setupType": "BSN",
    "lastModifiedDate": "2022-01-05T18:12:22.643Z",
    "group": {
      "id": 123,
      "name": "TestGroup",
      "link": null
    },
    "brightWall": null,
    "timezone": "PST",
    "screen": {
      "idleColor": "FF702896",
      "splashUrl": null
    },
    "synchronization": {
      "status": {
        "period": "00:05:00"
      },
      "settings": {
        "period": "00:00:00"
      },
      "schedule": {
        "period": "06:00:00"
      },
      "content": {
        "start": null,
        "end": null
      }
    },
    "network": {
      "hostname": "BrightSign-46D89C101139",
      "proxyServer": null,
      "proxyBypass": [],
      "timeServers": [
        "http://time.brightsignnetwork.com/"
      ],
      "interfaces": [
        {
          "name": "eth0",
          "type": "Ethernet",
          "enabled": true,
          "proto": "Static",
          "ip": [
            "192.168.0.2/24",
            "EF88:7::2FAB:7657/64"
          ],
          "gateway": "192.168.0.1",
          "dns": [
            "192.168.0.125",
            "74.38.99.135"
          ],
          "rateLimitDuringInitialDownloads": null,
          "rateLimitInsideContentDownloadWindow": null,
          "rateLimitOutsideContentDownloadWindow": null,
          "contentDownloadEnabled": true,
          "textFeedsDownloadEnabled": true,
          "mediaFeedsDownloadEnabled": true,
          "healthReportingEnabled": true,
          "logsUploadEnabled": true
        },
        {
          "name": "eth0.25",
          "type": "Virtual",
          "enabled": false,
          "parent": "eth0",
          "vlanId": 25,
          "proto": "DHCPv4",
          "ip": null,
          "gateway": null,
          "dns": null,
          "rateLimitDuringInitialDownloads": null,
          "rateLimitInsideContentDownloadWindow": null,
          "rateLimitOutsideContentDownloadWindow": null,
          "contentDownloadEnabled": false,
          "textFeedsDownloadEnabled": false,
          "mediaFeedsDownloadEnabled": false,
          "healthReportingEnabled": true,
          "logsUploadEnabled": true
        },
        {
          "name": "wlan0",
          "type": "WiFi",
          "enabled": true,
          "ssid": "hall_devices",
          "security": {
            "authentication": {
              "mode": "Shared",
              "passphrase": "A8201E996438DE85103486A44CA96A999B0A6D"
            },
            "encryption": {
              "mode": "TKIP"
            }
          },
          "proto": "NDP, DHCPv6",
          "ip": null,
          "gateway": null,
          "dns": null,
          "rateLimitDuringInitialDownloads": 10240000,
          "rateLimitInsideContentDownloadWindow": 10240000,
          "rateLimitOutsideContentDownloadWindow": 256000,
          "contentDownloadEnabled": true,
          "textFeedsDownloadEnabled": true,
          "mediaFeedsDownloadEnabled": false,
          "healthReportingEnabled": true,
          "logsUploadEnabled": false
        },
        {
          "name": "ppp0",
          "type": "Cellular",
          "enabled": true,
          "modems": [
            {
              "model": "BrightSign IK41",
              "usbDeviceIds": [
                "1bbb:00b6"
              ]
            }
          ],
          "sims": [
            {
              "mcc": "901",
              "mnc": "28",
              "connection": {
                "type": "Default"
              }
            },
            {
              "mcc": "204",
              "mnc": "04",
              "connection": {
                "type": "Default"
              }
            }
          ],
          "rateLimitDuringInitialDownloads": null,
          "rateLimitInsideContentDownloadWindow": null,
          "rateLimitOutsideContentDownloadWindow": null,
          "contentDownloadEnabled": true,
          "textFeedsDownloadEnabled": true,
          "mediaFeedsDownloadEnabled": true,
          "healthReportingEnabled": true,
          "logsUploadEnabled": true
        },
        {
          "name": "usb0",
          "type": "Ethernet",
          "enabled": true,
          "proto": "Static",
          "ip": [
            "132.80.245.191/24"
          ],
          "gateway": null,
          "dns": [
            "132.80.245.142"
          ],
          "rateLimitDuringInitialDownloads": null,
          "rateLimitInsideContentDownloadWindow": null,
          "rateLimitOutsideContentDownloadWindow": null,
          "contentDownloadEnabled": false,
          "textFeedsDownloadEnabled": false,
          "mediaFeedsDownloadEnabled": false,
          "healthReportingEnabled": false,
          "logsUploadEnabled": false
        },
        {
          "name": "eth0.110",
          "type": "Virtual",
          "enabled": true,
          "parent": "eth0",
          "vlanId": 110,
          "proto": "Static",
          "ip": [
            "16.194.230.251/28"
          ],
          "gateway": "16.194.230.241",
          "dns": [
            "192.168.0.125",
            "74.38.99.135"
          ],
          "rateLimitDuringInitialDownloads": null,
          "rateLimitInsideContentDownloadWindow": null,
          "rateLimitOutsideContentDownloadWindow": null,
          "contentDownloadEnabled": true,
          "textFeedsDownloadEnabled": true,
          "mediaFeedsDownloadEnabled": true,
          "healthReportingEnabled": true,
          "logsUploadEnabled": true
        }
      ]
    },
    "beacons": [],
    "location": {
         "placeId": null,
         "gpsLatitude": 37.4152,
         "gpsLongitude": -122.1224,
         "country": "US",
         "countryLongName": "United States",
         "adminAreaLevel1": "CA",
         "adminAreaLevel1LongName": "California",
         "adminAreaLevel2": "Santa Clara County",
         "adminAreaLevel2LongName": "Santa Clara County",
         "locality": "Palo Alto",
         "localityLongName": "Palo Alto",
         "path": "/US/CA/Santa Clara County/Palo Alto/",
         "pathLongName": "/United States/California/Santa Clara County/Palo Alto/"
        },
    "screenshots": {
         "interval": "00:15:00",
         "countLimit": 5,
         "quality": 50,
         "orientation": "Landscape"
      },
    "logging": {
      "enableDiagnosticLog": false,
      "enableEventLog": false,
      "enablePlaybackLog": false,
      "enableStateLog": false,
      "enableVariableLog": false,
      "uploadAtBoot": false,
      "uploadTime": null
    },
    "lws": {
      "username": "",
      "password": "",
      "enableUpdateNotifications": true
    },
    "ldws": {
      "password": "RLSJZ35Sm9b1lB0npVFW4kPYegscBlMF3NFG6wtOaSTXIoC+iR5NGrhJa77ZaWTgpiCzPdDdnwMlQSb4QLqe6nEFx6q/927scO6LlVTtRBVch+RlgzlJ2SXYqAH6TUx66JRFuvCxyHzL0iUNKR/R4E1hdTQpxH3yXIPJ5OBOTlaw8OW6DZNixDGMuvhgmWAW9/TgksUYTlwb1SKqGzQOrDYmmg+A71YMGV6NcKbuN3P0DjQsMrVxlFe9+awQ73LSxqKF5Q52FjUhgSKsYcTtnoJvY/n9HWcREyxOPKF7vsEIfKOeG/qoFBvgZZKOoqaTyD82iBKbOQu9WllBGX+qaaTTQHR1SrZoyS2PDmBlddLhngE4BHiDxmOPhm69bsmiakUcUqgjvgi8sRL/9kUxLXuayeQ6VYzUnHdX7K3nYqbhgJCxVbSURe5wIS/vQ97zi4wt0NpF55FmoAQlZA1JcSk/85w8S4hfpCYlDnqQMI8jXqvNZ5apc7nKsg6NSibGhh4h1cpA7DG6d6MzjBldVKhutni3Bj991cP45RIaGlmWipbC9eKwODrsDPYMK2CDN/JEygmfiUdJJW4Cvgi4s6Z3oyqddiEV+plZtGD69NAau4OMCoHcR1STJdsVOrq++tF+R0/IkC5wDhAUBszXvlSdcKja7Gv7v4kOAZC0CmtA="
    }
  },
  "status": {
    "group": {
      "id": 123,
      "name": "TestGroup",
      "link": null
    },
    "brightWall": null,
    "presentation": {
      "id": 12345,
      "name": "Test2",
      "type": "Presentation",
      "link": null
    },
    "timezone": "PST",
    "synchronization": {
      "settings": {
        "enabled": false
      },
      "schedule": {
        "enabled": false
      },
      "content": {
        "enabled": false
      }
    },
    "script": {
      "type": "Autorun",
      "version": "10.0.100",
      "plugins": null
    },
    "firmware": {
      "version": "8.5.35"
    },
    "storage": [
      {
        "interface": "SD1",
        "system": "ExFAT",
        "access": "Read, Write",
        "stats": {
          "sizeTotal": 31905546240,
          "sizeFree": 31898959872,
          "blockSize": 32768
        }
      }
    ],
    "network": {
      "externalIp": "98.134.53.219",
      "interfaces": [
        {
          "name": "eth0",
          "type": "Ethernet",
          "proto": "Static",
          "mac": "D0:6A:85:DA:FE:71",
          "ip": [
            "192.168.0.1/24",
            "EF88:7::2FAB:7657/64",
            "FE80::C60C:27BF:74E0:2E0F/128"
          ],
          "gateway": "192.168.0.1",
          "metric": 100
        },
        {
          "name": "eth0.25",
          "type": "Virtual",
          "proto": "DHCPv4",
          "mac": "D0:6A:85:DA:FE:71",
          "ip": [
            "176.216.148.166/16",
            "FE80::1623:693:8588:65BB/128"
          ],
          "gateway": "176.216.0.1",
          "metric": 2
        },
        {
          "name": "wlan0",
          "type": "WiFi",
          "proto": "NDP, DHCPv6",
          "mac": "33:5B:FE:4A:E1:BB",
          "ip": [
            "10.10.0.2/16"
          ],
          "gateway": "10.10.0.1",
          "metric": 110
        },
        {
          "name": "ppp0",
          "type": "Cellular",
          "proto": "Static",
          "mac": "FE:98:1A:AA:B4:72",
          "ip": [
            "192.168.255.255/31"
          ],
          "gateway": "192.168.255.254",
          "metric": 120,
          "modem": {
            "imei": "35778404001349",
            "manufacturer": "Vodafone",
            "model": "IK41US_USBC4G_V2_NA",
            "revision": "IK41_00_02.00_09"
          },
          "sims": [
            {
              "status": "OK",
              "iccid": "8910412345678907",
              "connection": {
                "network": "Vodafone Libertel",
                "signal": -53
              }
            }
          ]
        },
        {
          "name": "usb0",
          "type": "Ethernet",
          "proto": "Static",
          "mac": "5A:64:A1:72:EE:12",
          "ip": [
            "132.80.245.191/24"
          ],
          "gateway": null,
          "metric": null
        },
        {
          "name": "eth0.110",
          "type": "Virtual",
          "proto": "Static",
          "mac": "D0:6A:85:DA:FE:71",
          "ip": [
            "16.194.230.251/28",
            "FE80::8C6F:34A9:C88:31D5/128"
          ],
          "gateway": "16.194.230.241",
          "metric": 3
        }
      ]
    },
    "uptime": "08:20:46",
    "currentSettingsTimestamp": "2021-05-04T10:45:06Z",
    "currentScheduleTimestamp": "2021-05-04T10:45:06Z",
    "health": "Error",
    "lastModifiedDate": "2022-02-15T23:53:50.16Z"
  },
  "subscription": {
    "id": 123456,
    "device": {
      "id": 12345,
      "serial": "46D89C101139"
    },
    "type": "Commercial",
    "activityPeriod": "365.00:00:00",
    "status": "Active",
    "creationDate": "2020-08-17T20:49:49.09Z",
    "lastModifiedDate": "2020-08-17T20:49:49.09Z",
    "activationDate": "2020-08-17T20:49:49.09Z",
    "suspensionDate": null,
    "expirationDate": null
  },
  "taggedGroups": [],
  "tags": {
    "string::[Content].<Anon>": "image",
    "number::[Content].<BillingRate>": "30"
  },
  "permissions": []
}

Success Response

304: The resource was not modified since the time specified in the “If-Modified-Since” header

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

PUT /{serial}/ 

Update a specified device. Applies only to the player settings.

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

serial string 

The device serial number 

______________________________________________________________

Request Body

The Player Entity

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • serial is set to 46D89C107131

  • The optional If-Unmodified-Since header value equals the Last-Modified header value retrieved from the GET /id or GET /serial response.

PUT /2022/06/REST/Devices/46D89C107131/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate
If-Unmodified-Since: Wed, 13 Mar 2024 15:51:01 GMT
Content-Type: application/json
Content-Length: 5947

This is the example request body:

 Expand to see an example request body:
{
   "id": 0,
   "serial": "46D89C107131",
   "model": "HD1024",
   "family": "Pagani",
   "registrationDate": "0001-01-01T00:00:00",
   "lastModifiedDate": "0001-01-01T00:00:00",
   "settings":    {
      "name": "OutsidePlayer",
      "description": "Outside of Building A",
      "concatNameAndSerial": false,
      "setupType": "BSN",
      "lastModifiedDate": "2022-01-05T18:12:22.643Z",
      "group":       {
         "id": 123,
         "name": "TestGroup",
         "link": null
      },
      "brightWall": null,
      "timezone": "PST",
      "screen":       {
         "idleColor": "FF702896",
         "splashUrl": null
      },
      "synchronization":       {
         "status": {"period": "00:05:00"},
         "settings": {"period": "00:00:00"},
         "schedule": {"period": "06:00:00"},
         "content":          {
            "start": null,
            "end": null
         }
      },
      "network":       {
         "hostname": "BrightSign-46D89C107131",
         "proxyServer": null,
         "proxyBypass": [],
         "timeServers": ["http://time.brightsignnetwork.com/"],
         "interfaces":          [
                        {
               "enabled": true,
               "proto": "DHCP",
               "ip": null,
               "gateway": null,
               "dns": null,
               "rateLimitDuringInitialDownloads": 0,
               "rateLimitInsideContentDownloadWindow": 0,
               "rateLimitOutsideContentDownloadWindow": null,
               "contentDownloadEnabled": true,
               "textFeedsDownloadEnabled": true,
               "mediaFeedsDownloadEnabled": true,
               "healthReportingEnabled": true,
               "logsUploadEnabled": true,
               "name": "eth0",
               "type": "Ethernet"
            },
                        {
               "enabled": false,
               "ssid": "",
               "security":                {
                  "authentication":                   {
                     "mode": "Shared",
                     "passphrase": ""
                  },
                  "encryption": {"mode": "TKIP, CCMP"}
               },
               "proto": "DHCP",
               "ip": null,
               "gateway": null,
               "dns": null,
               "rateLimitDuringInitialDownloads": 0,
               "rateLimitInsideContentDownloadWindow": 0,
               "rateLimitOutsideContentDownloadWindow": 0,
               "contentDownloadEnabled": false,
               "textFeedsDownloadEnabled": false,
               "mediaFeedsDownloadEnabled": false,
               "healthReportingEnabled": false,
               "logsUploadEnabled": false,
               "name": "wlan0",
               "type": "WiFi"
            }
         ]
      },
      "beacons": [],
      "location": null,
      "screenshots": null,
      "logging":       {
         "enableDiagnosticLog": false,
         "enableEventLog": false,
         "enablePlaybackLog": false,
         "enableStateLog": false,
         "enableVariableLog": false,
         "uploadAtBoot": false,
         "uploadTime": null
      },
      "lws":       {
         "username": "",
         "password": "",
         "enableUpdateNotifications": true
      },
      "ldws": {"password": "RLSJPQSm9z15lB8nwVFWjkPYegscBlMF3NFG6wt3aSTXIoC+iR5NGrhJa77ZaWTgpiCzPdDdnwMlQSb4QLqe6nEFx6q/927scO6LlVTtRBVch+RlgzlJ2SXYqAH6TUx66JRFuvCxyHzL0iUNKR/R4E1hdTQpxH3yXIPJ5OBOTlaw8OW6DZNixDGMuvhgmWAW9/TgksUYTlwb1SKqGzQOrDYmmg+A71YMGV6NcKbuN3P0DjQsMrVxlFe9+awQ73LSxqKF5Q52FjUhgSKsYcTtnoJvY/n9HWcREyxOPKF7vsEIfKOeG/qoFBvgZZKOoqaTyD82iBKbOQu9WllBGX+qaaTTQHR1SrZoyS2PDmBlddLhngE4BHiDxmOPhm69bsmiakUcUqgjvgi8sRL/9kUxLXuayeQ6VYzUnHdX7K3nYqbhgJCxVbSURe5wIS/vQ97zi4wt0NpF55FmoAQlZA1JcSk/85w8S4hfpCYlDnqQMI8jXqvNZ5apc7nKsg6NSibGhh4h1cpA7DG6d6MzjBldVKhutni3Bj991cP45RIaGlmWipbC9eKwODrsDPYMK2CDN/JEygmfiUdJJW4Cvgi4s6Z3oyqddiEV+plZtGD69NAau4OMCoHcR1STJdsVOrq++tF+R0/IkC5wDhAUBszXvlSdcKja7Gv7v4kOAZC0CmtA="}
   },
   "status": null,
   "subscription": null,
   "taggedGroups": [],
   "tags": {},
   "permissions": []
}

______________________________________________________________

Response

Success

204: The specified device was successfully updated

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

412: Precondition failed (the resource changed since the time specified in the “If-Unmodified-Since” header value)

415: The server cannot accept the data representation that you sent (as specified in the "Content-Type" header)

5XX: Any 500 code is an internal server error

PATCH /{serial}/ 

Replaces certain parameters on the specified device. Applies only to player settings. See rfc6902.

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

serial string

The serial number of the device to delete

______________________________________________________________

Request Body

These properties are entries in an array. Every entry must have all three of these properties:

op string:  The type of operation - in this case it is always "replace"

path string: A Uri path that references the location within the target document where the update will be performed

value:  The replacement value(s) for the parameters that must be updated. 

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • serial is 46D89C101139

  • The optional If-Unmodified-Since header value equals the Last-Modified header value retrieved from the GET /id or GET /serial response.

PATCH /2022/06/REST/Devices/46D89C101139/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate
If-Unmodified-Since: Wed, 13 Mar 2024 15:51:01 GMT
Content-Type: application/json-patch+json
Content-Length: 94

This is the example request body:

[
  {
    "op": "replace",
    "path": "/settings/description/",
    "value": "Main Screen Player"
  }
]

______________________________________________________________

Response

Success

204: The parameters have been successfully replaced.

Failure

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

403: The supplied access token, though valid, doesn't provide access to this method

404: The server cannot find the requested resource (the path does not exist)

412: Precondition failed (the resource changed since the time specified in the “If-Unmodified-Since” header value)

415: The server cannot accept the data representation that you sent (as specified in the "Content-Type" header)

5XX: Any 500 code is an internal server error

DELETE /{serial}/ 

Delete the specified device

Required Scope Token

bsn.api.main.devices.delete

______________________________________________________________

Segment

serial string

The device serial number 

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • serial is set to 46D89C101139

  • The optional If-Unmodified-Since header value equals the Last-Modified header value retrieved from the GET /id or GET /serial response.

DELETE /2022/06/REST/Devices/46D89C101139/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}}
If-Unmodified-Since: Wed, 13 Mar 2024 15:51:01 GMT
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Response

Success

204: The device was successfully deleted

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

412: Precondition failed (the resource changed since the time specified in the “If-Unmodified-Since” header value)

5XX: Any 500 code is an internal server error

GET /{deviceId:int}/Beacons/ 

Return the array of all beacons defined for the player that is specified

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

deviceId int

A unique identifier for the device instance

______________________________________________________________

Response

Success Response Body

200: The collection of Player Beacon Entities

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{serial}/Beacons/ 

Return the array of all beacons defined for the player that is specified

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

serial string

The serial number of the device instance

______________________________________________________________

Response

Success Response Body

200: The collection of Player Beacon Entities

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{deviceId:int}/Beacons/{name}/ 

Returns a device beacon of a certain type associated with a specified device and the specified name

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

deviceId int

A unique identifier for the device instance

name string 

The name of the device beacon

 ______________________________________________________________

Response

Success Response Body

200: Returns the Player Beacon Entity

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

DELETE /{deviceId:int}/Beacons/{name}/ 

Delete a specified device beacon from a specified device.

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

deviceId int 

A unique identifier for the device instance

name string 

The name of the device beacon

______________________________________________________________

Response

Success

204: The specified device beacon was successfully deleted from the device

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{serial}/Beacons/{name}/ 

Returns a device beacon of a certain type associated with a specified device and the specified name

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

serial string 

The serial number of the device

name string 

The name of the beacon

______________________________________________________________

Response

Success Response Body

200: Returns the Player Beacon Entity

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

DELETE /{serial}/Beacons/{name}/ 

Delete a specified device beacon on a specified device.

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

serial string 

The serial number of the device

name string 

The name of the beacon to delete

______________________________________________________________

Response

Success

204: The specified device beacon was successfully deleted from the device

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

POST /{id:int}/Beacons/ 

Create a device beacon

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

id int 

A unique identifier for the device instance on which you want to create the beacon

______________________________________________________________

Request Body

The Player Beacon Entity

______________________________________________________________

Response

Success Response Body

201: Returns the new resource created and referenced by the Uri (given by the Location header field) in the response. The response includes the Player Beacon Entity.

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

415: The server cannot accept the data representation that you sent (as specified in the "Content-Type" header)

5XX: Any 500 code is an internal server error

POST /{serial}/Beacons/ 

Create a device beacon on a specified device.

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

serial string

The serial number of the device on which you want to create the beacon

______________________________________________________________

Request Body

The Player Beacon Entity

______________________________________________________________

Response

Success Response Body

201: Returns the new resource created and referenced by the Uri (given by the Location header field) in the response. The response includes the Player Beacon Entity.

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

415: The server cannot accept the data representation that you sent (as specified in the "Content-Type" header)

5XX: Any 500 code is an internal server error

GET /{id:int}/Errors/ 

Returns a list of errors associated with a specified device

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

id int 

A unique identifier for the device that is reporting the errors

______________________________________________________________

Query String Parameters

marker string optional

A value specifying which page to retrieve. This value is useful if the isTruncated entry in the response body of the previous GET call indicates that the number of error instances exceeds the pageSize.

This parameter is only required if you need more elements in the paged list than the pageSize (100).

pageSize int optional

The maximum number of error instances that can be contained in the response body. 

______________________________________________________________

Response

Success Response Body

200: Returns the Player Error Entity

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{serial}/Errors/ 

Returns a list of errors associated with a specified device

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

serial string 

The serial number of the device that is reporting the errors

______________________________________________________________

Query String Parameters

marker string optional

A value specifying which page to retrieve. This value is useful if the isTruncated entry in the response body of the previous GET call indicates that the number of error instances exceeds the pageSize.

This parameter is only required if you need more elements in the paged list than the pageSize (100).

pageSize int optional

The maximum number of error instances that can be contained in the response body

______________________________________________________________

Response

Success Response Body

200: Returns the Player Error Entity

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{id:int}/Downloads/ 

Returns the downloads associated with a specified device

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

id int 

The unique identifier for the device that has the download instances

______________________________________________________________

Query String Parameters

marker string optional

A value specifying which page to retrieve. This value is useful if the isTruncated entry in the response body of the previous GET call indicates that the number of download instances exceeds the pageSize.

This parameter is only required if you need more elements in the paged list than the pageSize (100).

pageSize int optional

The maximum number of download instances that can be contained in the response body

______________________________________________________________

Response

Success Response Body

200: Returns the Player Download Entity

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{serial}/Downloads/ 

Returns a list of downloads carried out by a device (specified by serial number).

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

serial string

The serial number of the device that has the download instances

______________________________________________________________

Query String Parameters

marker string optional

A value specifying which page to retrieve. This value is useful if the isTruncated entry in the response body of the previous GET call indicates that the number of download instances exceeds the pageSize.

This parameter is only required if you need more elements in the paged list than the pageSize (100).

pageSize int optional

The maximum number of download instances that can be contained in the response body

______________________________________________________________

Response

Success Response Body

200: Returns the Player Download Entity 

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{deviceid:int}/ScreenShots/ 

Returns a list of screenshots uploaded by a specified device 

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

id int

The unique identifier for the device

______________________________________________________________

Query String Parameters

marker string optional

A value specifying which page to retrieve. This value is useful if the isTruncated entry in the response body of the previous GET call indicates that the number of screenshot instances exceeds the pageSize.

This parameter is only required if you need more elements in the paged list than the pageSize (100).

pageSize int optional

The maximum number of screenshot instances that can be contained in the response body

______________________________________________________________

Response

Success Response Body

200: Returns the ScreenShot Entity

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{serial}/ScreenShots/ 

Returns a list of screenshots uploaded by a specified device 

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

serial string

The device serial number

______________________________________________________________

Query String Parameters

marker string optional

A value specifying which page to retrieve. This value is useful if the isTruncated entry in the response body of the previous GET call indicates that the number of screenshot instances exceeds the pageSize.

This parameter is only required if you need more elements in the paged list than the pageSize (100).

pageSize int optional

The maximum number of screenshot instances that can be contained in the response body

______________________________________________________________

Response

Success Response Body

200: Returns the ScreenShot Entity

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /ScreenShots/ 

Returns a list of screenshots uploaded by a device.

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Query String Parameters

projection string optional

This parameter currently supports only one placeholder (TOP({int},[Nodes])]) which limits the number of entities in a group. The possible value for {int} is any number from 1 to 100.

filter string optional

An expression for filtering search results

grouping string optional

A grouping expression for the filtered entities. This parameter can be used with the projection parameter to retrieve a certain number of screenshots for a large number of devices in one request (for example, 100 screenshots from 100 players).

sort string optional

An expression for sorting the search results. The sort expression specifies the entry used for sorting and the ascending/descending (ASC/DESC) sorting order (e.g. "[Device].[Serial] ASC")

marker string optional

A value specifying which page to retrieve. This value is useful if the isTruncated entry in the response body of the previous GET call indicates that the number of screenshot instances exceeds the pageSize.

This parameter is only required if you need more elements in the paged list than the pageSize (100).

pageSize int optional

The maximum number of screenshot instances that can be contained in the response body

______________________________________________________________

Response

Success Response Body

200: Returns the ScreenShot Entity

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{id:int}/Tags/ 

Returns an object whose property names match tag keys and whose property values match tag values on a device

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

id int

The unique identifier for the device

______________________________________________________________

Response

Success Response Body

200: A collection of key value pairs where the key is tag name, and the value is tag value. See the Tags entry in Player Entity for more information.

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

POST /{id:int}/Tags/ 

Adds tags to a specified device

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

id int

The unique identifier for the device

______________________________________________________________

Request Body

tags DynamicObjectA collection of key value pairs where the key is tag name, and the value is tag value.  See the Tags entry in Player Entity for more information.

______________________________________________________________

Response

Success

204: The tags were added to the specified device 

Failure

400: Either a tag with the specified key was already defined, the request is malformed and therefore invalid, or there is a conflict

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

415: The server cannot accept the data representation that you sent (as specified in the "Content-Type" header)

5XX: Any 500 code is an internal server error

DELETE /{id:int}/Tags/ 

Remove tags from a specified device

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

id int

The unique identifier for the device

______________________________________________________________

Request Body

list string[]An array of tag keys to delete

______________________________________________________________

Response

Success

204: The specified tag was successfully deleted from the device

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{serial}/Tags/ 

Returns an object whose property names match tag keys and whose property values match tag values on a device

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

serial string

The device serial number

______________________________________________________________

Response

Success Response Body

200: A collection of key value pairs where the key is tag name, and the value is tag value. See the Tags entry in the Player Entity for more information.

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

POST /{serial}/Tags/ 

Adds one or more tags to a specified device

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

serial string 

The device serial number

______________________________________________________________

Request Body

tags DynamicObject

A collection of key value pairs where the key is tag name, and the value is tag value.  See the Tags entry in the Player Entity for more information.

______________________________________________________________

Response

Success

204: The tags were added to the specified device

Failure

400: Either a tag with the specified key was already defined, the request is malformed and therefore invalid, or there is a conflict

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

415: The server cannot accept the data representation that you sent (as specified in the "Content-Type" header)

5XX: Any 500 code is an internal server error

DELETE /{serial}/Tags/ 

Removes one or more tags from a specified device

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

serial string 

The device serial number

______________________________________________________________

Request Body

list string[]An array of tag keys to delete

______________________________________________________________

Response

Success

204: The specified tag was successfully deleted from the device

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /Models/ 

Returns the list of player models supported by the current Main API version

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Response

Success Response Body

200: Returns the complete list of player models that are supported on this Main API version

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /Models/{model}/ 

Returns the list of player models supported by the current Main API version

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

model string 

The player model

______________________________________________________________

Response

Success Response Body

200: Returns the complete list of player models that are supported on this Main API version

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The provided player model does not exist (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /Models/{model}/Connectors/ 

Returns the list of connectors available on a given device model. 

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

model string

The player model

______________________________________________________________

Response

Success Response Body

200: Returns the list of connectors available on a given device model.

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The provided player model does not exist or is incorrect 

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /Models/{model}/Connectors/{connector}/ 

Returns the list of connectors available on a given device model. 

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

model string 

The player model

connector string 

The video connector (for example, "HDMI" or "DisplayPort")

______________________________________________________________

Response

Success Response Body

200: Returns the list of connectors available on a given device model.

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The provided player model or connector does not exist or is incorrect

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /Models/{model}/Connectors/{connector}/VideoModes/ 

Returns the video modes supported by the specified connector on the specified device model. 

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

model string

The player model

connector string

The video connector (for example, "HDMI" or "DisplayPort")

______________________________________________________________

Response

Success Response Body

200: The response body is an array of strings listing video modes supported by the specified connector on the specified device model.

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The provided player model or connector does not exist or is incorrect

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /Operations/ 

Returns operational permissions granted to roles for specific business operations

Required Scope Token

bsn.api.main.operations.retrieve

______________________________________________________________

Response

Success Response Body

200: Returns the Business Operations Entity

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{id:int}/Permissions/ 

Returns the list of permissions allowing or denying specific business operations to be executed on the specified device

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

id int 

A unique identifier for the device

______________________________________________________________

Response

Success Response Body

200: Returns an array of Permission entities 

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

POST /{id:int}/Permissions/ 

Applies permissions allowing or denying specific business operations to be executed on a specified device

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

id int

A unique identifier for the device

______________________________________________________________

Request Body

An array of Permission entities

______________________________________________________________

Response

Success

204: The specified permissions were successfully granted

Failure

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

415: The server cannot accept the data representation that you sent (as specified in the "Content-Type" header)

5XX: Any 500 code is an internal server error

DELETE /{id:int}/Permissions/ 

Removes custom permissions granted to execute business operations from a specified device

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

id int

A unique identifier for the device

______________________________________________________________

Request Body

An array of Permission entities

______________________________________________________________

Response

Success

204: The specified permissions were successfully deleted from the device

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{serial}/Permissions/ 

Returns the list of permissions allowing or denying specific business operations to be executed on a specified device

Required Scope Token

bsn.api.main.devices.retrieve

______________________________________________________________

Segment

serial string 

The serial number of the device

______________________________________________________________

Response

Success Response Body

200: Returns an array of Permission entities 

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

POST /{serial}/Permissions/ 

Applies permissions allowing or denying specific business operations to be executed on a specified device

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

serial string

The serial number of the device

______________________________________________________________

Request Body

An array of Permission entities

______________________________________________________________

Response

Success

204: The specified permissions were successfully granted

Failure

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

415: The server cannot accept the data representation that you sent (as specified in the "Content-Type" header)

5XX: Any 500 code is an internal server error

DELETE /{serial}/Permissions/ 

Removes custom permissions granted to execute business operations from a specified device

Required Scope Token

bsn.api.main.devices.update

______________________________________________________________

Segment

serial string

The serial number of the device

______________________________________________________________

Request Body

An array of Permission entities

______________________________________________________________

Response

Success

204: The specified permissions were successfully deleted from the device

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{serial}/Tokens/{token}/ 

Validates an OAuth2 device access or refresh token on a specified device

Required Scope Token

bsn.api.main.devices.token.validate

______________________________________________________________

Segment

serial string

The serial number of the device

token string

An OAuth2 device access or refresh token issued for the specified device

______________________________________________________________

Response

Success Response Body

200: Returns the Token Info Entity

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

DELETE /{serial}/Tokens/{token}/ 

Revokes an OAuth2 device access or refresh token on a specified device.

Required Scope Token

bsn.api.main.devices.token.revoke

______________________________________________________________

Segment

serial string

The serial number of the device

token string

An OAuth2 device access or refresh token issued for the specified device

______________________________________________________________

Response

Success

204: The specified token was successfully deleted from the device

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

GET /{id:int}/Tokens/{token}/ 

Validates an OAuth2 device access or refresh token on a specified device

Required Scope Token

bsn.api.main.devices.token.validate

______________________________________________________________

Segment

id int 

A unique identifier for the device

token string

An OAuth2 device access or refresh token issued for the specified device

______________________________________________________________

Response

Success Response Body

200: Returns the Token Info Entity

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request is malformed and therefore invalid

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist)

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error

DELETE /{id:int}/Tokens/{token}/ 

Revokes an OAuth2 device access or refresh token on a specified device

Required Scope Token

bsn.api.main.devices.revoke

______________________________________________________________

Segment

id int

A unique identifier for the device

token string

An OAuth2 device access or refresh token issued for the specified device

______________________________________________________________

Response

Success

204: The specified token was successfully deleted from the device

Failure

300: The requested representation could not be returned because it is ambiguous (there are multiple requested representations)

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance to the business rules

401: The access token is invalid or not specified

403: The supplied access token, though valid, doesn't provide access to this method 

404: The server cannot find the requested resource (the path does not exist) 

406: The server cannot return the data representation that you requested (as specified in the "Accept" header)

5XX: Any 500 code is an internal server error


  • No labels