Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

Use these endpoints to manage dynamic playlists on the network. 

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

_________________________________________________________________________

GET /

Retrieves a list of dynamic playlists on the network.

Required Scope Token

bsn.api.main.playlists.dynamic.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"). The default value is null.

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 dynamic playlist 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 dynamic playlist 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 [Name] CONTAINS 'Building'

  • sort is set to [LastModifiedDate] DESC

Code Block
GET /2022/06/REST/Playlists/Dynamic/?marker=MjAyMy0xMS0wMVQyMjozNzoyNC40MDNaLDExNjQwNDE3&pageSize=1&filter=%5BName%5D%20CONTAINS%20%27Building%27&sort=%5BLastModifiedDate%5D%20DESC 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

______________________________________________________________

Success Response Body

200: Returns a paged list

...

of Dynamic Playlists 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

Code Block
languagejson
{
   "items": [   {
      "id": 12345678,
      "name": "WestBuilding",
      "physicalPath": "https://bsncloud.s3.amazonaws.com/JaneDoe/87a992afd6071576647ecd1fd65776ba",
      "fileSize": 1060,
      "fileHash": "SHA1:B995E0604EDD01F5E143B0329AABE9A14D06B821",
      "creationDate": "2023-11-01T22:36:42.153Z",
      "lastModifiedDate": "2023-11-01T22:36:42.253Z",
      "supportsAudio": true,
      "supportsVideo": true,
      "supportsImages": true,
      "content": null,
      "presentations": [      {
         "id": 3210,
         "name": "Test4Buildings",
         "type": "Presentation",
         "link": null
      }],
      "permissions": []
   }],
   "totalItemCount": 3,
   "matchingItemCount": 2,
   "pageSize": 1,
   "nextMarker": "MjAyMy0xMS0wMVQyMjozNjo0Mi4yNTNaLDExNjQwNDE1",
   "isTruncated": false,
   "sortExpression": "[LastModifiedDate] DESC",
   "filterExpression": "[Name] CONTAINS 'Building'"
}

Failure Response

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:

...

POST /

Create a new dynamic playlist on the network.

Required Scope Token

bsn.api.main.playlists.dynamic.create

______________________________________________________________

Request Body

The Dynamic Playlists Entity

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

Code Block
POST /2022/06/REST/Playlists/Dynamic/ 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
Content-Type: application/json
Content-Length: 328

This is the example request body:

Code Block
languagejson
{
  "id": 0,
  "name": "NorthwestBuilding",
  "physicalPath": null,
  "fileSize": 0,
  "fileHash": null,
  "creationDate": "0001-01-01T00:00:00",
  "lastModifiedDate": "0001-01-01T00:00:00",
  "supportsAudio": true,
  "supportsVideo": true,
  "supportsImages": true,
  "content": [
    {
      "contentId": 12345,
      "fileName": "Saturday Breakfast Menu.jpg",
      "displayDuration": "00:00:15",
      "validityStartDate": "2023-11-11T08:00:00",
      "validityEndDate": "2023-11-11T12:00:00"
    }
  ],
  "presentations": null,
  "permissions": []
}

______________________________________________________________

Success Response Body

201: Returns the Dynamic Playlists Entity created and referenced by the Uri (given by the Location header field) in the response

Example

Code Block
languagejson
{
  "id": 23456789,
  "name": "NorthwestBuilding",
  "physicalPath": "https://bsncloud.s3.amazonaws.com/JaneDoe/3004b40831e00749a44e646fbe1ad068",
  "fileSize": 334,
  "fileHash": "SHA1:4ADEBD82AB32F6E9FD4733F552D56C0282736BBD",
  "creationDate": "2023-11-03T16:44:44.9301064Z",
  "lastModifiedDate": "2023-11-03T16:44:44.9301064Z",
  "supportsAudio": true,
  "supportsVideo": true,
  "supportsImages": true,
  "content": [
    {
      "contentId": 12345,
      "fileName": "Saturday Breakfast Menu.jpg",
      "displayDuration": "00:00:15",
      "validityStartDate": "2023-11-11T08:00:00",
      "validityEndDate": "2023-11-11T12:00:00"
    }
  ],
  "presentations": [],
  "permissions": []
}

Failure Response

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 with 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)

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 /

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

Required Scope Token

bsn.api.main.playlists.dynamic.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 [Name] CONTAINS 'Southeast'

Code Block
DELETE /2022/06/REST/Playlists/Dynamic/?filter=%5BName%5D%20CONTAINS%20%27Southeast%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

______________________________________________________________

Success Response Body

200: Returns the number of affected dynamic playlists as an integer value

Failure Response

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 with the business rules (for example, the specified dynamic playlist is being used in a presentation and cannot be deleted)

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 /Count/  

Returns the number of dynamic playlists on the network that match the specified filter criteria. If no filter is included, this call returns the total number of dynamic playlists on the network. 

Required Scope Token

bsn.api.main.playlists.dynamic.retrieve

______________________________________________________________

Query String Parameter

filter string optional 

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

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • filter is set to [SupportsVideo] IS TRUE

Code Block
GET /2022/06/REST/Playlists/Dynamic/Count/?filter=%5BSupportsVideo%5D%20IS%20TRUE 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

______________________________________________________________

Success Response Body

200: The number of dynamic playlists is returned as an integer value.

Failure Response

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}/  

Returns the specified dynamic playlist instance 

Required Scope Token

bsn.api.main.playlists.dynamic.retrieve

______________________________________________________________

Segment

id int  

A unique identifier for the dynamic playlist instance

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is set to 12345678

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

Code Block
GET /2022/06/REST/Playlists/Dynamic/12345678/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
If-Modified-Since: Wed, 13 Mar 2024 21:32:34 GMT
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Success Response with Body

200: Returns the Dynamic Playlists Entity

Example

This is an example of a 200 level response:

Code Block
languagejson
{
  "id": 12345678,
  "name": "WestBuilding",
  "physicalPath": "https://bsncloud.s3.amazonaws.com/JaneDoe/87a992afd6071576647ecd1fd65776ba",
  "fileSize": 1060,
  "fileHash": "SHA1:B895E0604EDD11F5E143B1329AABE9L13D06B821",
  "creationDate": "2023-11-01T22:36:42.153Z",
  "lastModifiedDate": "2024-03-13T21:32:35.093Z",
  "supportsAudio": true,
  "supportsVideo": true,
  "supportsImages": true,
  "content": [
    {
      "contentId": 123456,
      "fileName": "Steampunk Resin Clock With Metallic Cogs And Gears.mp4",
      "displayDuration": "00:00:00",
      "validityStartDate": null,
      "validityEndDate": null
    }
  ],
  "presentations": [
    {
      "id": 987654,
      "name": "Test4Buildings",
      "type": "Presentation",
      "link": null
    }
  ],
  "permissions": []
}

Success Response

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

Failure Response

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}/  

Modifies the specified dynamic playlist instance

Required Scope Token

bsn.api.main.playlists.dynamic.update

______________________________________________________________

Segment

id int  

A unique identifier for the dynamic playlist instance

______________________________________________________________

Request Body

The Dynamic Playlists Entity

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is set to 1234567

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

Code Block
PUT /2022/06/REST/Playlists/Dynamic/1234567/ 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 21:32:34 GMT
Content-Type: application/json
Content-Length: 320

This is the example request body:

Code Block
languagejson
{
  "id": 0,
  "name": "Southwest",
  "physicalPath": null,
  "fileSize": 0,
  "fileHash": null,
  "creationDate": "0001-01-01T00:00:00",
  "lastModifiedDate": "0001-01-01T00:00:00",
  "supportsAudio": true,
  "supportsVideo": true,
  "supportsImages": true,
  "content":  [
    {
      "contentId": 123456,
      "fileName": "Steampunk Resin Clock With Metallic Cogs And Gears.mp4",
      "displayDuration": "00:00:00",
      "validityStartDate": null,
      "validityEndDate": null
    }
  ],
  "presentations": null,
  "permissions": []
}

______________________________________________________________

Success Response

204: The specified dynamic playlist has been modified

Failure Response

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 with 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

DELETE /{id:int}/  

Removes the specified dynamic playlist 

Required Scope Token

bsn.api.main.playlists.dynamic.delete

______________________________________________________________

Segment

id int 

A unique identifier for the dynamic playlist instance

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is set to 1234567

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

Code Block
DELETE /2022/06/REST/Playlists/Dynamic/1234567/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
If-Unmodified-Since: Wed, 13 Mar 2024 21:32:34 GMT
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Success Response

204: The specified dynamic playlist file has been removed from the network

Failure Response

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 with 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)

5XX: Any 500 code is an internal server error

GET /{name}/  

Returns the specified dynamic playlist instance

Required Scope Token

bsn.api.main.playlists.dynamic.retrieve

______________________________________________________________

Segment

name string 

The name of the dynamic playlist instance

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • name is set to WestBuilding

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

Code Block
GET /2022/06/REST/Playlists/Dynamic/WestBuilding/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
If-Modified-Since: Wed, 13 Mar 2024 21:32:34 GMT
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Success Response with Body

200: Returns the Dynamic Playlists Entity

Example

This is an example of a 200 level response:

Code Block
languagejson
{
  "id": 12345678,
  "name": "WestBuilding",
  "physicalPath": "https://bsncloud.s3.amazonaws.com/JaneDoe/87a992afd6071576647ecd1fd65776ba",
  "fileSize": 1060,
  "fileHash": "SHA1:B895E0604EDD11F5E143B0329AABE9A13D06B821",
  "creationDate": "2023-11-01T22:36:42.153Z",
  "lastModifiedDate": "2024-03-13T21:32:35.093Z",
  "supportsAudio": true,
  "supportsVideo": true,
  "supportsImages": true,
  "content": [
    {
      "contentId": 123456,
      "fileName": "Steampunk Resin Clock With Metallic Cogs And Gears.mp4",
      "displayDuration": "00:00:00",
      "validityStartDate": null,
      "validityEndDate": null
    }
  ],
  "presentations": [
    {
      "id": 987654,
      "name": "Test4Buildings",
      "type": "Presentation",
      "link": null
    }
  ],
  "permissions": []
}

Success Response

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

Failure Response

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 /{name}/  

Modifies the specified dynamic playlist instance

Required Scope Token

bsn.api.main.playlists.dynamic.update

______________________________________________________________

Segment

name string 

The name of the dynamic playlist instance

______________________________________________________________

Request Body

The Dynamic Playlists Entity

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • name is set to Southwest

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

Code Block
PUT /2022/06/REST/Playlists/Dynamic/Southwest/ 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 21:32:34 GMT
Content-Type: application/json
Content-Length: 320

This is the example request body:

Code Block
languagejson
{
  "id": 0,
  "name": "Southwest",
  "physicalPath": null,
  "fileSize": 0,
  "fileHash": null,
  "creationDate": "0001-01-01T00:00:00",
  "lastModifiedDate": "0001-01-01T00:00:00",
  "supportsAudio": true,
  "supportsVideo": true,
  "supportsImages": true,
  "content": [
    {
      "contentId": 123456,
      "fileName": "Steampunk Resin Clock With Metallic Cogs And Gears.mp4",
      "displayDuration": "00:00:00",
      "validityStartDate": null,
      "validityEndDate": null
    }
  ],
  "presentations": null,
  "permissions": []
}

______________________________________________________________

Success Response

204: The specified dynamic playlist has been modified

Failure Response

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 with 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

DELETE /{name}/  

Removes the specified dynamic playlist

Required Scope Token

bsn.api.main.playlists.dynamic.delete

______________________________________________________________

Segment

name string 

The name of the dynamic playlist instance

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • name is set to Northeast

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

Code Block
DELETE /2022/06/REST/Playlists/Dynamic/Northeast/ HTTP/1.1
Host: api.bsn.cloud
Connection: Keep-Alive
Authorization: Bearer {{UserAccessToken}}
If-Unmodified-Since: Wed, 13 Mar 2024 21:32:34 GMT
Accept: application/json, application/vnd.bsn.error+json
Accept-Encoding: gzip,deflate

______________________________________________________________

Success Response

204: The specified dynamic playlist file has been removed from the network

Failure Response

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 with 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)

5XX: Any 500 code is an internal server error

GET /Operations/  

Returns the operational permissions granted to roles for specific business operations

Required Scope Token

bsn.api.main.operations.retrieve

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

Code Block
GET /2022/06/REST/Playlists/Dynamic/Operations/ 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

______________________________________________________________

Success Response Body

200: Returns the Business Operations Entity

Example

Expand
titleExpand to see response information
Code Block
languagejson
{
   "uid": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
   "singularName": "Full Control",
   "pluralName": "Dynamic Playlist (Full Control)",
   "fullName": "Dynamic Playlist (Full Control)",
   "targetEntity": "DynamicPlaylist",
   "appliance": "Instance, Collection",
   "parent": null,
   "descendants":    [
            {
         "uid": "3c2c75a2-b799-8174-3992-f1974b7122a9",
         "singularName": "View Dynamic Playlist",
         "pluralName": "View Dynamic Playlists",
         "fullName": "Dynamic Playlist (Full Control) - View Dynamic Playlists",
         "targetEntity": "DynamicPlaylist",
         "appliance": "Instance, Collection",
         "parent":          {
            "uid": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
            "singularName": "Full Control",
            "pluralName": "Dynamic Playlist (Full Control)",
            "fullName": "Dynamic Playlist (Full Control)",
            "targetEntity": "DynamicPlaylist",
            "appliance": "Instance, Collection",
            "parent": null,
            "descendants": null,
            "permissions": null
         },
         "descendants": [],
         "permissions":          [
                        {
               "entityId": null,
               "operationUID": "3c2c75a2-b799-8174-3992-f1974b7122a9",
               "principal":                {
                  "name": "Network Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 5
               },
               "isFixed": true,
               "isInherited": false,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:06.363Z"
            },
                        {
               "entityId": null,
               "operationUID": "3c2c75a2-b799-8174-3992-f1974b7122a9",
               "principal":                {
                  "name": "Viewers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 6
               },
               "isFixed": true,
               "isInherited": false,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:06.91Z"
            },
                        {
               "entityId": null,
               "operationUID": "3c2c75a2-b799-8174-3992-f1974b7122a9",
               "principal":                {
                  "name": "Administrators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 1
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.023Z"
            },
                        {
               "entityId": null,
               "operationUID": "3c2c75a2-b799-8174-3992-f1974b7122a9",
               "principal":                {
                  "name": "General Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 2
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.277Z"
            },
                        {
               "entityId": null,
               "operationUID": "3c2c75a2-b799-8174-3992-f1974b7122a9",
               "principal":                {
                  "name": "Creators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 3
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.523Z"
            },
                        {
               "entityId": null,
               "operationUID": "3c2c75a2-b799-8174-3992-f1974b7122a9",
               "principal":                {
                  "name": "Publishers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 4
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:05.847Z"
            }
         ]
      },
            {
         "uid": "cf5f189b-3be8-0244-65e0-382f9da93c0e",
         "singularName": "View Contents",
         "pluralName": "View Contents",
         "fullName": "Dynamic Playlist (Full Control) - View Contents",
         "targetEntity": "DynamicPlaylist",
         "appliance": "Instance, Collection",
         "parent":          {
            "uid": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
            "singularName": "Full Control",
            "pluralName": "Dynamic Playlist (Full Control)",
            "fullName": "Dynamic Playlist (Full Control)",
            "targetEntity": "DynamicPlaylist",
            "appliance": "Instance, Collection",
            "parent": null,
            "descendants": null,
            "permissions": null
         },
         "descendants": [],
         "permissions":          [
                        {
               "entityId": null,
               "operationUID": "cf5f189b-3be8-0244-65e0-382f9da93c0e",
               "principal":                {
                  "name": "Viewers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 6
               },
               "isFixed": true,
               "isInherited": false,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:06.927Z"
            },
                        {
               "entityId": null,
               "operationUID": "cf5f189b-3be8-0244-65e0-382f9da93c0e",
               "principal":                {
                  "name": "Administrators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 1
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.023Z"
            },
                        {
               "entityId": null,
               "operationUID": "cf5f189b-3be8-0244-65e0-382f9da93c0e",
               "principal":                {
                  "name": "General Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 2
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.277Z"
            },
                        {
               "entityId": null,
               "operationUID": "cf5f189b-3be8-0244-65e0-382f9da93c0e",
               "principal":                {
                  "name": "Creators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 3
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.523Z"
            },
                        {
               "entityId": null,
               "operationUID": "cf5f189b-3be8-0244-65e0-382f9da93c0e",
               "principal":                {
                  "name": "Publishers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 4
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:05.847Z"
            },
                        {
               "entityId": null,
               "operationUID": "cf5f189b-3be8-0244-65e0-382f9da93c0e",
               "principal":                {
                  "name": "Network Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 5
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.35Z"
            }
         ]
      },
            {
         "uid": "4c377bf1-0f9c-a194-edbf-ac79f6b7d305",
         "singularName": "Create Dynamic Playlist",
         "pluralName": "Create Dynamic Playlist",
         "fullName": "Dynamic Playlist (Full Control) - Create Dynamic Playlist",
         "targetEntity": "DynamicPlaylist",
         "appliance": "Collection",
         "parent":          {
            "uid": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
            "singularName": "Full Control",
            "pluralName": "Dynamic Playlist (Full Control)",
            "fullName": "Dynamic Playlist (Full Control)",
            "targetEntity": "DynamicPlaylist",
            "appliance": "Instance, Collection",
            "parent": null,
            "descendants": null,
            "permissions": null
         },
         "descendants": [],
         "permissions":          [
                        {
               "entityId": null,
               "operationUID": "4c377bf1-0f9c-a194-edbf-ac79f6b7d305",
               "principal":                {
                  "name": "Administrators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 1
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.023Z"
            },
                        {
               "entityId": null,
               "operationUID": "4c377bf1-0f9c-a194-edbf-ac79f6b7d305",
               "principal":                {
                  "name": "General Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 2
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.277Z"
            },
                        {
               "entityId": null,
               "operationUID": "4c377bf1-0f9c-a194-edbf-ac79f6b7d305",
               "principal":                {
                  "name": "Creators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 3
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.523Z"
            },
                        {
               "entityId": null,
               "operationUID": "4c377bf1-0f9c-a194-edbf-ac79f6b7d305",
               "principal":                {
                  "name": "Publishers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 4
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:05.847Z"
            },
                        {
               "entityId": null,
               "operationUID": "4c377bf1-0f9c-a194-edbf-ac79f6b7d305",
               "principal":                {
                  "name": "Network Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 5
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.35Z"
            },
                        {
               "entityId": null,
               "operationUID": "4c377bf1-0f9c-a194-edbf-ac79f6b7d305",
               "principal":                {
                  "name": "Viewers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 6
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.897Z"
            }
         ]
      },
            {
         "uid": "f8d54357-096e-cfc4-f153-419b50a4697f",
         "singularName": "Rename Dynamic Playlist",
         "pluralName": "Rename Dynamic Playlist",
         "fullName": "Dynamic Playlist (Full Control) - Rename Dynamic Playlist",
         "targetEntity": "DynamicPlaylist",
         "appliance": "Instance, Collection",
         "parent":          {
            "uid": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
            "singularName": "Full Control",
            "pluralName": "Dynamic Playlist (Full Control)",
            "fullName": "Dynamic Playlist (Full Control)",
            "targetEntity": "DynamicPlaylist",
            "appliance": "Instance, Collection",
            "parent": null,
            "descendants": null,
            "permissions": null
         },
         "descendants": [],
         "permissions":          [
                        {
               "entityId": null,
               "operationUID": "f8d54357-096e-cfc4-f153-419b50a4697f",
               "principal":                {
                  "name": "Administrators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 1
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.023Z"
            },
                        {
               "entityId": null,
               "operationUID": "f8d54357-096e-cfc4-f153-419b50a4697f",
               "principal":                {
                  "name": "General Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 2
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.277Z"
            },
                        {
               "entityId": null,
               "operationUID": "f8d54357-096e-cfc4-f153-419b50a4697f",
               "principal":                {
                  "name": "Creators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 3
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.523Z"
            },
                        {
               "entityId": null,
               "operationUID": "f8d54357-096e-cfc4-f153-419b50a4697f",
               "principal":                {
                  "name": "Publishers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 4
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:05.847Z"
            },
                        {
               "entityId": null,
               "operationUID": "f8d54357-096e-cfc4-f153-419b50a4697f",
               "principal":                {
                  "name": "Network Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 5
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.35Z"
            },
                        {
               "entityId": null,
               "operationUID": "f8d54357-096e-cfc4-f153-419b50a4697f",
               "principal":                {
                  "name": "Viewers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 6
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.897Z"
            }
         ]
      },
            {
         "uid": "7d6e1999-ebdc-4ae7-b242-a903c5c6695e",
         "singularName": "Update Dynamic Playlist",
         "pluralName": "Update Dynamic Playlist",
         "fullName": "Dynamic Playlist (Full Control) - Update Dynamic Playlist",
         "targetEntity": "DynamicPlaylist",
         "appliance": "Instance, Collection",
         "parent":          {
            "uid": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
            "singularName": "Full Control",
            "pluralName": "Dynamic Playlist (Full Control)",
            "fullName": "Dynamic Playlist (Full Control)",
            "targetEntity": "DynamicPlaylist",
            "appliance": "Instance, Collection",
            "parent": null,
            "descendants": null,
            "permissions": null
         },
         "descendants": [],
         "permissions":          [
                        {
               "entityId": null,
               "operationUID": "7d6e1999-ebdc-4ae7-b242-a903c5c6695e",
               "principal":                {
                  "name": "Administrators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 1
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.023Z"
            },
                        {
               "entityId": null,
               "operationUID": "7d6e1999-ebdc-4ae7-b242-a903c5c6695e",
               "principal":                {
                  "name": "General Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 2
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.277Z"
            },
                        {
               "entityId": null,
               "operationUID": "7d6e1999-ebdc-4ae7-b242-a903c5c6695e",
               "principal":                {
                  "name": "Creators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 3
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.523Z"
            },
                        {
               "entityId": null,
               "operationUID": "7d6e1999-ebdc-4ae7-b242-a903c5c6695e",
               "principal":                {
                  "name": "Publishers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 4
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:05.847Z"
            },
                        {
               "entityId": null,
               "operationUID": "7d6e1999-ebdc-4ae7-b242-a903c5c6695e",
               "principal":                {
                  "name": "Network Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 5
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.35Z"
            },
                        {
               "entityId": null,
               "operationUID": "7d6e1999-ebdc-4ae7-b242-a903c5c6695e",
               "principal":                {
                  "name": "Viewers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 6
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.897Z"
            }
         ]
      },
            {
         "uid": "4cbdae4a-a900-4535-9d32-443ea077fc21",
         "singularName": "Assign Dynamic Playlist",
         "pluralName": "Assign Dynamic Playlist",
         "fullName": "Dynamic Playlist (Full Control) - Assign Dynamic Playlist",
         "targetEntity": "DynamicPlaylist",
         "appliance": "Instance, Collection",
         "parent":          {
            "uid": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
            "singularName": "Full Control",
            "pluralName": "Dynamic Playlist (Full Control)",
            "fullName": "Dynamic Playlist (Full Control)",
            "targetEntity": "DynamicPlaylist",
            "appliance": "Instance, Collection",
            "parent": null,
            "descendants": null,
            "permissions": null
         },
         "descendants": [],
         "permissions":          [
                        {
               "entityId": null,
               "operationUID": "4cbdae4a-a900-4535-9d32-443ea077fc21",
               "principal":                {
                  "name": "Administrators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 1
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.023Z"
            },
                        {
               "entityId": null,
               "operationUID": "4cbdae4a-a900-4535-9d32-443ea077fc21",
               "principal":                {
                  "name": "General Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 2
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.277Z"
            },
                        {
               "entityId": null,
               "operationUID": "4cbdae4a-a900-4535-9d32-443ea077fc21",
               "principal":                {
                  "name": "Creators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 3
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.523Z"
            },
                        {
               "entityId": null,
               "operationUID": "4cbdae4a-a900-4535-9d32-443ea077fc21",
               "principal":                {
                  "name": "Publishers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 4
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:05.847Z"
            },
                        {
               "entityId": null,
               "operationUID": "4cbdae4a-a900-4535-9d32-443ea077fc21",
               "principal":                {
                  "name": "Network Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 5
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.35Z"
            },
                        {
               "entityId": null,
               "operationUID": "4cbdae4a-a900-4535-9d32-443ea077fc21",
               "principal":                {
                  "name": "Viewers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 6
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.897Z"
            }
         ]
      },
            {
         "uid": "1c434b6b-355e-4bdb-b6b5-60dc7a145bf9",
         "singularName": "Unassign Dynamic Playlist",
         "pluralName": "Unassign Dynamic Playlist",
         "fullName": "Dynamic Playlist (Full Control) - Unassign Dynamic Playlist",
         "targetEntity": "DynamicPlaylist",
         "appliance": "Instance, Collection",
         "parent":          {
            "uid": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
            "singularName": "Full Control",
            "pluralName": "Dynamic Playlist (Full Control)",
            "fullName": "Dynamic Playlist (Full Control)",
            "targetEntity": "DynamicPlaylist",
            "appliance": "Instance, Collection",
            "parent": null,
            "descendants": null,
            "permissions": null
         },
         "descendants": [],
         "permissions":          [
                        {
               "entityId": null,
               "operationUID": "1c434b6b-355e-4bdb-b6b5-60dc7a145bf9",
               "principal":                {
                  "name": "Administrators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 1
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.023Z"
            },
                        {
               "entityId": null,
               "operationUID": "1c434b6b-355e-4bdb-b6b5-60dc7a145bf9",
               "principal":                {
                  "name": "General Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 2
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.277Z"
            },
                        {
               "entityId": null,
               "operationUID": "1c434b6b-355e-4bdb-b6b5-60dc7a145bf9",
               "principal":                {
                  "name": "Creators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 3
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.523Z"
            },
                        {
               "entityId": null,
               "operationUID": "1c434b6b-355e-4bdb-b6b5-60dc7a145bf9",
               "principal":                {
                  "name": "Publishers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 4
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:05.847Z"
            },
                        {
               "entityId": null,
               "operationUID": "1c434b6b-355e-4bdb-b6b5-60dc7a145bf9",
               "principal":                {
                  "name": "Network Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 5
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.35Z"
            },
                        {
               "entityId": null,
               "operationUID": "1c434b6b-355e-4bdb-b6b5-60dc7a145bf9",
               "principal":                {
                  "name": "Viewers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 6
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.897Z"
            }
         ]
      },
            {
         "uid": "4ab8f14f-be27-41d7-9e6f-38317bf269ba",
         "singularName": "Edit Permissions",
         "pluralName": "Edit Permissions",
         "fullName": "Dynamic Playlist (Full Control) - Edit Permissions",
         "targetEntity": "DynamicPlaylist",
         "appliance": "Collection",
         "parent":          {
            "uid": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
            "singularName": "Full Control",
            "pluralName": "Dynamic Playlist (Full Control)",
            "fullName": "Dynamic Playlist (Full Control)",
            "targetEntity": "DynamicPlaylist",
            "appliance": "Instance, Collection",
            "parent": null,
            "descendants": null,
            "permissions": null
         },
         "descendants": [],
         "permissions":          [
                        {
               "entityId": null,
               "operationUID": "4ab8f14f-be27-41d7-9e6f-38317bf269ba",
               "principal":                {
                  "name": "Administrators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 1
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.023Z"
            },
                        {
               "entityId": null,
               "operationUID": "4ab8f14f-be27-41d7-9e6f-38317bf269ba",
               "principal":                {
                  "name": "General Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 2
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.277Z"
            },
                        {
               "entityId": null,
               "operationUID": "4ab8f14f-be27-41d7-9e6f-38317bf269ba",
               "principal":                {
                  "name": "Creators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 3
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.523Z"
            },
                        {
               "entityId": null,
               "operationUID": "4ab8f14f-be27-41d7-9e6f-38317bf269ba",
               "principal":                {
                  "name": "Publishers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 4
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:05.847Z"
            },
                        {
               "entityId": null,
               "operationUID": "4ab8f14f-be27-41d7-9e6f-38317bf269ba",
               "principal":                {
                  "name": "Network Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 5
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.35Z"
            },
                        {
               "entityId": null,
               "operationUID": "4ab8f14f-be27-41d7-9e6f-38317bf269ba",
               "principal":                {
                  "name": "Viewers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 6
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.897Z"
            }
         ]
      },
            {
         "uid": "60252669-c9ea-c784-7de0-1d685b99c255",
         "singularName": "Delete Dynamic Playlist",
         "pluralName": "Delete Dynamic Playlist",
         "fullName": "Dynamic Playlist (Full Control) - Delete Dynamic Playlist",
         "targetEntity": "DynamicPlaylist",
         "appliance": "Instance, Collection",
         "parent":          {
            "uid": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
            "singularName": "Full Control",
            "pluralName": "Dynamic Playlist (Full Control)",
            "fullName": "Dynamic Playlist (Full Control)",
            "targetEntity": "DynamicPlaylist",
            "appliance": "Instance, Collection",
            "parent": null,
            "descendants": null,
            "permissions": null
         },
         "descendants": [],
         "permissions":          [
                        {
               "entityId": null,
               "operationUID": "60252669-c9ea-c784-7de0-1d685b99c255",
               "principal":                {
                  "name": "Network Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 5
               },
               "isFixed": true,
               "isInherited": false,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:06.377Z"
            },
                        {
               "entityId": null,
               "operationUID": "60252669-c9ea-c784-7de0-1d685b99c255",
               "principal":                {
                  "name": "Administrators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 1
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.023Z"
            },
                        {
               "entityId": null,
               "operationUID": "60252669-c9ea-c784-7de0-1d685b99c255",
               "principal":                {
                  "name": "General Managers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 2
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.277Z"
            },
                        {
               "entityId": null,
               "operationUID": "60252669-c9ea-c784-7de0-1d685b99c255",
               "principal":                {
                  "name": "Creators",
                  "isCustom": false,
                  "type": "Role",
                  "id": 3
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": true,
               "creationDate": "2020-03-05T16:59:05.523Z"
            },
                        {
               "entityId": null,
               "operationUID": "60252669-c9ea-c784-7de0-1d685b99c255",
               "principal":                {
                  "name": "Publishers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 4
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:05.847Z"
            },
                        {
               "entityId": null,
               "operationUID": "60252669-c9ea-c784-7de0-1d685b99c255",
               "principal":                {
                  "name": "Viewers",
                  "isCustom": false,
                  "type": "Role",
                  "id": 6
               },
               "isFixed": true,
               "isInherited": true,
               "isAllowed": false,
               "creationDate": "2020-03-05T16:59:06.897Z"
            }
         ]
      }
   ],
   "permissions":    [
            {
         "entityId": null,
         "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
         "principal":          {
            "name": "Administrators",
            "isCustom": false,
            "type": "Role",
            "id": 1
         },
         "isFixed": true,
         "isInherited": false,
         "isAllowed": true,
         "creationDate": "2020-03-05T16:59:05.023Z"
      },
            {
         "entityId": null,
         "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
         "principal":          {
            "name": "General Managers",
            "isCustom": false,
            "type": "Role",
            "id": 2
         },
         "isFixed": true,
         "isInherited": false,
         "isAllowed": true,
         "creationDate": "2020-03-05T16:59:05.277Z"
      },
            {
         "entityId": null,
         "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
         "principal":          {
            "name": "Creators",
            "isCustom": false,
            "type": "Role",
            "id": 3
         },
         "isFixed": true,
         "isInherited": false,
         "isAllowed": true,
         "creationDate": "2020-03-05T16:59:05.523Z"
      },
            {
         "entityId": null,
         "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
         "principal":          {
            "name": "Publishers",
            "isCustom": false,
            "type": "Role",
            "id": 4
         },
         "isFixed": true,
         "isInherited": false,
         "isAllowed": false,
         "creationDate": "2020-03-05T16:59:05.847Z"
      },
            {
         "entityId": null,
         "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
         "principal":          {
            "name": "Network Managers",
            "isCustom": false,
            "type": "Role",
            "id": 5
         },
         "isFixed": true,
         "isInherited": false,
         "isAllowed": false,
         "creationDate": "2020-03-05T16:59:06.35Z"
      },
            {
         "entityId": null,
         "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
         "principal":          {
            "name": "Viewers",
            "isCustom": false,
            "type": "Role",
            "id": 6
         },
         "isFixed": true,
         "isInherited": false,
         "isAllowed": false,
         "creationDate": "2020-03-05T16:59:06.897Z"
      }
   ]
}

Failure Response

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/  

Includes object permissions for a given dynamic playlist instance

Required Scope Token

bsn.api.main.playlists.dynamic.retrieve

______________________________________________________________

Segment

id int 

A unique identifier for the dynamic playlist instance

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is 12345678

Code Block
GET /2022/06/REST/Playlists/Dynamic/12345678/Permissions/ 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

______________________________________________________________

Success Response Body

200: Returns an array of Permission entities 

Example

Code Block
languagejson
[
  {
    "entityId": 12345678,
    "operationUID": "60252669-c9ea-c784-7de0-1d685b99c255",
    "principal": {
      "login": "JaneDoe@brightsign.biz",
      "type": "User",
      "id": 10498
    },
    "isFixed": false,
    "isInherited": false,
    "isAllowed": true,
    "creationDate": "2023-10-25T22:17:24.28Z"
  },
  {
    "entityId": 12345678,
    "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
    "principal": {
      "name": "Custom",
      "isCustom": true,
      "type": "Role",
      "id": 10498
    },
    "isFixed": false,
    "isInherited": false,
    "isAllowed": false,
    "creationDate": "2023-10-27T18:48:11.053Z"
  }
]

Failure Response

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/  

Adds permissions to the specified dynamic playlist instance.

Required Scope Token

bsn.api.main.playlists.dynamic.update

______________________________________________________________

Segment

id int 

A unique identifier for the dynamic playlist instance

______________________________________________________________

Request Body

An array of Permission entities

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is set to 987654321

Code Block
POST /2022/06/REST/Playlists/Dynamic/987654321/Permissions/ 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
Content-Type: application/json
Content-Length: 318

This is the example request body:

Code Block
languagejson
[
  {
    "entityId": 987654321,
    "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
    "principal": {
      "name": "Custom",
      "isCustom": true,
      "type": "Role",
      "id": 10701
    },
    "isFixed": false,
    "isInherited": false,
    "isAllowed": true,
    "creationDate": "0001-01-01T00:00:00"
  }
]

______________________________________________________________

Success Response

204: The permissions were successfully added to the specified dynamic playlist

Failure Response

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance with 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 permissions for the specified dynamic playlist.

Required Scope Token

bsn.api.main.playlists.dynamic.update

______________________________________________________________

Segment

id int  

A unique identifier for the dynamic playlist instance

______________________________________________________________

Request Body

An array of Permission entities

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is 12345678

Code Block
DELETE /2022/06/REST/Playlists/Dynamic/12345678/Permissions/ 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
Content-Type: application/json
Content-Length: 318

This is the example request body:

Code Block
languagejson
[
  {
    "entityId": 12345678,
    "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
    "principal": {
      "name": "Custom",
      "isCustom": true,
      "type": "Role",
      "id": 10701
    },
    "isFixed": false,
    "isInherited": false,
    "isAllowed": true,
    "creationDate": "0001-01-01T00:00:00"
  }
]

______________________________________________________________

Success Response

204: The specified permissions were successfully deleted

Failure Response

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 with 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 /{name}/Permissions/  

Includes object permissions for a given dynamic playlist instance.

Required Scope Token

bsn.api.main.playlists.dynamic.retrieve

______________________________________________________________

Segment

name string 

The name of the dynamic playlist instance

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • name is NorthBuilding

Code Block
GET /2022/06/REST/Playlists/Dynamic/NorthBuilding/Permissions/ 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

______________________________________________________________

Success Response Body

200: Returns an array of Permission entities 

Example

Code Block
languagejson
[
  {
    "entityId": 12345678,
    "operationUID": "60252669-c9ea-c784-7de0-1d685b99c255",
    "principal": {
      "login": "JaneDoe@brightsign.biz",
      "type": "User",
      "id": 10498
    },
    "isFixed": false,
    "isInherited": false,
    "isAllowed": true,
    "creationDate": "2023-10-25T22:17:24.28Z"
  },
  {
    "entityId": 4567890,
    "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
    "principal": {
      "name": "Custom",
      "isCustom": true,
      "type": "Role",
      "id": 10498
    },
    "isFixed": false,
    "isInherited": false,
    "isAllowed": false,
    "creationDate": "2023-10-27T18:48:11.053Z"
  }
]

Failure Response

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 /{name}/Permissions/  

Adds permissions to the specified dynamic playlist instance.

Required Scope Token

bsn.api.main.playlists.dynamic.update

______________________________________________________________

Segment

name string 

The name of the dynamic playlist instance

______________________________________________________________

Request Body

An array of Permission entities

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is set to NorthBuilding

Code Block
POST /2022/06/REST/Playlists/Dynamic/NorthBuilding/Permissions/ 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
Content-Type: application/json
Content-Length: 318

This is the example request body:

Code Block
languagejson
[
  {
    "entityId": 12345678,
    "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
    "principal": {
      "name": "Custom",
      "isCustom": true,
      "type": "Role",
      "id": 10701
    },
    "isFixed": false,
    "isInherited": false,
    "isAllowed": true,
    "creationDate": "0001-01-01T00:00:00"
  }
]

______________________________________________________________

Success Response

204: The permissions were successfully added to the specified dynamic playlist

Failure Response

400: The request or request body is malformed and therefore invalid, or it is rejected in accordance with 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 /{name}/Permissions/  

Removes permissions for the specified dynamic playlist.

Required Scope Token

bsn.api.main.playlists.dynamic.update

______________________________________________________________

Segment

name string 

The name of the dynamic playlist instance

______________________________________________________________

Request Body

An array of Permission entities

______________________________________________________________

Request Example

The example request parameters and headers are set as follows:

  • id is NorthBuilding

Code Block
DELETE /2022/06/REST/Playlists/Dynamic/NorthBuilding/Permissions/ 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
Content-Type: application/json
Content-Length: 318

This is the example request body:

Code Block
languagejson
[
  {
    "entityId": 12345678,
    "operationUID": "cc86a53e-e63d-4268-b2bf-fe4579d461f4",
    "principal": {
      "name": "Custom",
      "isCustom": true,
      "type": "Role",
      "id": 10701
    },
    "isFixed": false,
    "isInherited": false,
    "isAllowed": true,
    "creationDate": "0001-01-01T00:00:00"
  }
]

______________________________________________________________

Success Response

204: The specified permissions were successfully deleted

Failure Response

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 with 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