> For the complete documentation index, see [llms.txt](https://docs.xibosignage.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.xibosignage.com/developer/integrate/openapi/playlist.md).

# Playlist

Playlists

## Search Playlists

> Search for Playlists viewable by this user

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist":{"get":{"tags":["playlist"],"summary":"Search Playlists","description":"Search for Playlists viewable by this user","operationId":"playlistSearch","parameters":[{"name":"playlistId","in":"query","description":"Filter by Playlist Id","required":false,"schema":{"type":"integer"}},{"name":"name","in":"query","description":"Filter by partial Playlist name","required":false,"schema":{"type":"string"}},{"name":"userId","in":"query","description":"Filter by user Id","required":false,"schema":{"type":"integer"}},{"name":"tags","in":"query","description":"Filter by tags","required":false,"schema":{"type":"string"}},{"name":"exactTags","in":"query","description":"A flag indicating whether to treat the tags filter as an exact match","required":false,"schema":{"type":"integer"}},{"name":"logicalOperator","in":"query","description":"When filtering by multiple Tags, which logical operator should be used? AND|OR","required":false,"schema":{"type":"string"}},{"name":"ownerUserGroupId","in":"query","description":"Filter by users in this UserGroupId","required":false,"schema":{"type":"integer"}},{"name":"embed","in":"query","description":"Embed related data such as regions, widgets, permissions, tags","required":false,"schema":{"type":"string"}},{"name":"folderId","in":"query","description":"Filter by Folder ID","required":false,"schema":{"type":"integer"}},{"name":"modifiedDateFrom","in":"query","description":"Filter by modified date, greater than or equal","required":false,"schema":{"type":"string"}},{"name":"modifiedDateTo","in":"query","description":"Filter by modified date, less than or equal","required":false,"schema":{"type":"string"}},{"name":"sortBy","in":"query","description":"Specifies which field the results are sorted by. Used together with sortDir","required":false,"schema":{"type":"string","enum":["playlistId","name","duration","owner","isDynamic","enableStat","createdDt","modifiedDt","groupsWithPermissions"]}},{"name":"sortDir","in":"query","description":"Sort direction","required":false,"schema":{"type":"string","enum":["asc","desc"]}}],"responses":{"200":{"description":"successful operation","headers":{"X-Total-Count":{"description":"The total number of records","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Playlist"}}}}}}}}},"components":{"schemas":{"Playlist":{"description":"Class Playlist","properties":{"playlistId":{"description":"The ID of this Playlist","type":"integer"},"ownerId":{"description":"The userId of the User that owns this Playlist","type":"integer"},"name":{"description":"The Name of the Playlist","type":"string"},"regionId":{"description":"The RegionId if this Playlist is specific to a Region","type":"integer"},"isDynamic":{"description":"Flag indicating if this is a dynamic Playlist","type":"integer"},"filterMediaName":{"description":"Filter Name for a Dynamic Playlist","type":"string"},"filterMediaNameLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Plalust names? OR|AND","type":"string"},"filterMediaTags":{"description":"Filter Tags for a Dynamic Playlist","type":"string"},"filterExactTags":{"description":"Flag indicating whether to filter by exact Tag match","type":"integer"},"filterMediaTagsLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Tags? OR|AND","type":"string"},"filterFolderId":{"description":"The ID of the folder to filter media items by","type":"integer"},"maxNumberOfItems":{"description":"Maximum number of Media items matching dynamic Playlist filters","type":"integer"},"createdDt":{"description":"The datetime this entity was created","type":"string"},"modifiedDt":{"description":"The datetime this entity was last modified","type":"string"},"duration":{"description":"A read-only estimate of this Layout's total duration in seconds. This is equal to the longest region duration and is valid when the layout status is 1 or 2.","type":"integer"},"requiresDurationUpdate":{"description":"Flag indicating whether this Playlists requires a duration update","type":"integer"},"enableStat":{"description":"The option to enable the collection of Playlist Proof of Play statistics","type":"string"},"tags":{"description":"Tags associated with this Playlist, array of TagLink objects","type":"array","items":{"$ref":"#/components/schemas/TagLink"}},"widgets":{"description":"An array of Widgets assigned to this Playlist","type":"array","items":{"$ref":"#/components/schemas/Widget"}},"permissions":{"description":"An array of permissions","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"folderId":{"description":"The id of the Folder this Playlist belongs to","type":"integer"},"permissionsFolderId":{"description":"The id of the Folder responsible for providing permissions for this Playlist","type":"integer"}},"type":"object"},"TagLink":{"properties":{"tag":{"description":"The Tag","type":"string"},"tagId":{"description":"The Tag ID","type":"integer"},"value":{"description":"The Tag Value","type":"string"}},"type":"object"},"Widget":{"description":"Class Widget","properties":{"widgetId":{"description":"The Widget ID","type":"integer"},"playlistId":{"description":"The ID of the Playlist this Widget belongs to","type":"integer"},"ownerId":{"description":"The ID of the User that owns this Widget","type":"integer"},"type":{"description":"The Module Type Code","type":"string"},"duration":{"description":"The duration in seconds this widget should be shown","type":"integer"},"displayOrder":{"description":"The display order of this widget","type":"integer"},"useDuration":{"description":"Flag indicating if this widget has a duration that should be used","type":"integer"},"calculatedDuration":{"description":"Calculated Duration of this widget after taking into account the useDuration flag","type":"integer"},"createdDt":{"description":"The datetime the Layout was created","type":"string"},"modifiedDt":{"description":"The datetime the Layout was last modified","type":"string"},"fromDt":{"description":"Widget From Date","type":"integer"},"toDt":{"description":"Widget To Date","type":"integer"},"schemaVersion":{"description":"Widget Schema Version","type":"integer"},"transitionIn":{"description":"Transition Type In","type":"integer"},"transitionOut":{"description":"Transition Type out","type":"integer"},"transitionDurationIn":{"description":"Transition duration in","type":"integer"},"transitionDurationOut":{"description":"Transition duration out","type":"integer"},"widgetOptions":{"description":"An array of Widget Options","type":"array","items":{"$ref":"#/components/schemas/WidgetOption"}},"mediaIds":{"description":"An array of MediaIds this widget is linked to","type":"array","items":{"type":"integer"}},"audio":{"description":"An array of Audio MediaIds this widget is linked to","type":"array","items":{"$ref":"#/components/schemas/WidgetAudio"}},"permissions":{"description":"An array of permissions for this widget","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"playlist":{"description":"The name of the Playlist this Widget is on","type":"string"}},"type":"object"},"WidgetOption":{"description":"Class WidgetOption","properties":{"widgetId":{"description":"The Widget ID that this Option belongs to","type":"integer"},"type":{"description":"The option type, either attrib or raw","type":"string"},"option":{"description":"The option name","type":"string"},"value":{"description":"The option value","type":"string"}},"type":"object"},"WidgetAudio":{"description":"Class WidgetAudio","properties":{"widgetId":{"description":"The Widget Id","type":"integer"},"mediaId":{"description":"The Media Id","type":"integer"},"volume":{"description":"The percentage volume","type":"integer"},"loop":{"description":"Flag indicating whether to loop","type":"integer"}},"type":"object"},"Permission":{"description":"Class Permission","properties":{"permissionId":{"description":"The ID of this Permission Record","type":"integer"},"entityId":{"description":"The Entity ID that this Permission refers to","type":"integer"},"groupId":{"description":"The User Group ID that this permission refers to","type":"integer"},"objectId":{"description":"The object ID that this permission refers to","type":"integer"},"isUser":{"description":"A flag indicating whether the groupId refers to a user specific group","type":"integer"},"entity":{"description":"The entity name that this refers to","type":"string"},"objectIdString":{"description":"Legacy for when the Object ID is a string","type":"string"},"group":{"description":"The group name that this refers to","type":"string"},"view":{"description":"A flag indicating whether view permission is granted","type":"integer"},"edit":{"description":"A flag indicating whether edit permission is granted","type":"integer"},"delete":{"description":"A flag indicating whether delete permission is granted","type":"integer"},"modifyPermissions":{"description":"A flag indicating whether modify permission permission is granted.","type":"integer"}},"type":"object"}}}}
```

## Add a Playlist

> Add a new Playlist

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist":{"post":{"tags":["playlist"],"summary":"Add a Playlist","description":"Add a new Playlist","operationId":"playlistAdd","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"required":["name","isDynamic"],"properties":{"name":{"description":"The Name for this Playlist","type":"string"},"tags":{"description":"Tags","type":"string"},"isDynamic":{"description":"Is this Playlist Dynamic?","type":"integer"},"filterMediaName":{"description":"Add Library Media matching the name filter provided","type":"string"},"logicalOperatorName":{"description":"When filtering by multiple names in name filter, which logical operator should be used? AND|OR","type":"string"},"filterMediaTag":{"description":"Add Library Media matching the tag filter provided","type":"string"},"exactTags":{"description":"When filtering by Tags, should we use exact match?","type":"integer"},"logicalOperator":{"description":"When filtering by Tags, which logical operator should be used? AND|OR","type":"string"},"maxNumberOfItems":{"description":"Maximum number of items that can be assigned to this Playlist (dynamic Playlist only)","type":"integer"},"folderId":{"description":"Folder ID to which this object should be assigned to","type":"integer"}},"type":"object"}}}},"responses":{"201":{"description":"successful operation","headers":{"Location":{"description":"Location of the new record","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Playlist"}}}}}}}},"components":{"schemas":{"Playlist":{"description":"Class Playlist","properties":{"playlistId":{"description":"The ID of this Playlist","type":"integer"},"ownerId":{"description":"The userId of the User that owns this Playlist","type":"integer"},"name":{"description":"The Name of the Playlist","type":"string"},"regionId":{"description":"The RegionId if this Playlist is specific to a Region","type":"integer"},"isDynamic":{"description":"Flag indicating if this is a dynamic Playlist","type":"integer"},"filterMediaName":{"description":"Filter Name for a Dynamic Playlist","type":"string"},"filterMediaNameLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Plalust names? OR|AND","type":"string"},"filterMediaTags":{"description":"Filter Tags for a Dynamic Playlist","type":"string"},"filterExactTags":{"description":"Flag indicating whether to filter by exact Tag match","type":"integer"},"filterMediaTagsLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Tags? OR|AND","type":"string"},"filterFolderId":{"description":"The ID of the folder to filter media items by","type":"integer"},"maxNumberOfItems":{"description":"Maximum number of Media items matching dynamic Playlist filters","type":"integer"},"createdDt":{"description":"The datetime this entity was created","type":"string"},"modifiedDt":{"description":"The datetime this entity was last modified","type":"string"},"duration":{"description":"A read-only estimate of this Layout's total duration in seconds. This is equal to the longest region duration and is valid when the layout status is 1 or 2.","type":"integer"},"requiresDurationUpdate":{"description":"Flag indicating whether this Playlists requires a duration update","type":"integer"},"enableStat":{"description":"The option to enable the collection of Playlist Proof of Play statistics","type":"string"},"tags":{"description":"Tags associated with this Playlist, array of TagLink objects","type":"array","items":{"$ref":"#/components/schemas/TagLink"}},"widgets":{"description":"An array of Widgets assigned to this Playlist","type":"array","items":{"$ref":"#/components/schemas/Widget"}},"permissions":{"description":"An array of permissions","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"folderId":{"description":"The id of the Folder this Playlist belongs to","type":"integer"},"permissionsFolderId":{"description":"The id of the Folder responsible for providing permissions for this Playlist","type":"integer"}},"type":"object"},"TagLink":{"properties":{"tag":{"description":"The Tag","type":"string"},"tagId":{"description":"The Tag ID","type":"integer"},"value":{"description":"The Tag Value","type":"string"}},"type":"object"},"Widget":{"description":"Class Widget","properties":{"widgetId":{"description":"The Widget ID","type":"integer"},"playlistId":{"description":"The ID of the Playlist this Widget belongs to","type":"integer"},"ownerId":{"description":"The ID of the User that owns this Widget","type":"integer"},"type":{"description":"The Module Type Code","type":"string"},"duration":{"description":"The duration in seconds this widget should be shown","type":"integer"},"displayOrder":{"description":"The display order of this widget","type":"integer"},"useDuration":{"description":"Flag indicating if this widget has a duration that should be used","type":"integer"},"calculatedDuration":{"description":"Calculated Duration of this widget after taking into account the useDuration flag","type":"integer"},"createdDt":{"description":"The datetime the Layout was created","type":"string"},"modifiedDt":{"description":"The datetime the Layout was last modified","type":"string"},"fromDt":{"description":"Widget From Date","type":"integer"},"toDt":{"description":"Widget To Date","type":"integer"},"schemaVersion":{"description":"Widget Schema Version","type":"integer"},"transitionIn":{"description":"Transition Type In","type":"integer"},"transitionOut":{"description":"Transition Type out","type":"integer"},"transitionDurationIn":{"description":"Transition duration in","type":"integer"},"transitionDurationOut":{"description":"Transition duration out","type":"integer"},"widgetOptions":{"description":"An array of Widget Options","type":"array","items":{"$ref":"#/components/schemas/WidgetOption"}},"mediaIds":{"description":"An array of MediaIds this widget is linked to","type":"array","items":{"type":"integer"}},"audio":{"description":"An array of Audio MediaIds this widget is linked to","type":"array","items":{"$ref":"#/components/schemas/WidgetAudio"}},"permissions":{"description":"An array of permissions for this widget","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"playlist":{"description":"The name of the Playlist this Widget is on","type":"string"}},"type":"object"},"WidgetOption":{"description":"Class WidgetOption","properties":{"widgetId":{"description":"The Widget ID that this Option belongs to","type":"integer"},"type":{"description":"The option type, either attrib or raw","type":"string"},"option":{"description":"The option name","type":"string"},"value":{"description":"The option value","type":"string"}},"type":"object"},"WidgetAudio":{"description":"Class WidgetAudio","properties":{"widgetId":{"description":"The Widget Id","type":"integer"},"mediaId":{"description":"The Media Id","type":"integer"},"volume":{"description":"The percentage volume","type":"integer"},"loop":{"description":"Flag indicating whether to loop","type":"integer"}},"type":"object"},"Permission":{"description":"Class Permission","properties":{"permissionId":{"description":"The ID of this Permission Record","type":"integer"},"entityId":{"description":"The Entity ID that this Permission refers to","type":"integer"},"groupId":{"description":"The User Group ID that this permission refers to","type":"integer"},"objectId":{"description":"The object ID that this permission refers to","type":"integer"},"isUser":{"description":"A flag indicating whether the groupId refers to a user specific group","type":"integer"},"entity":{"description":"The entity name that this refers to","type":"string"},"objectIdString":{"description":"Legacy for when the Object ID is a string","type":"string"},"group":{"description":"The group name that this refers to","type":"string"},"view":{"description":"A flag indicating whether view permission is granted","type":"integer"},"edit":{"description":"A flag indicating whether edit permission is granted","type":"integer"},"delete":{"description":"A flag indicating whether delete permission is granted","type":"integer"},"modifyPermissions":{"description":"A flag indicating whether modify permission permission is granted.","type":"integer"}},"type":"object"}}}}
```

## Playlist search by ID

> Get the Playlist object specified by the provided playlistId

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist/{playlistId}":{"get":{"tags":["playlist"],"summary":"Playlist search by ID","description":"Get the Playlist object specified by the provided playlistId","operationId":"PlaylistSearchById","parameters":[{"name":"playlistId","in":"path","description":"Numeric ID of the Playlist to get","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Playlist"}}}}}}}},"components":{"schemas":{"Playlist":{"description":"Class Playlist","properties":{"playlistId":{"description":"The ID of this Playlist","type":"integer"},"ownerId":{"description":"The userId of the User that owns this Playlist","type":"integer"},"name":{"description":"The Name of the Playlist","type":"string"},"regionId":{"description":"The RegionId if this Playlist is specific to a Region","type":"integer"},"isDynamic":{"description":"Flag indicating if this is a dynamic Playlist","type":"integer"},"filterMediaName":{"description":"Filter Name for a Dynamic Playlist","type":"string"},"filterMediaNameLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Plalust names? OR|AND","type":"string"},"filterMediaTags":{"description":"Filter Tags for a Dynamic Playlist","type":"string"},"filterExactTags":{"description":"Flag indicating whether to filter by exact Tag match","type":"integer"},"filterMediaTagsLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Tags? OR|AND","type":"string"},"filterFolderId":{"description":"The ID of the folder to filter media items by","type":"integer"},"maxNumberOfItems":{"description":"Maximum number of Media items matching dynamic Playlist filters","type":"integer"},"createdDt":{"description":"The datetime this entity was created","type":"string"},"modifiedDt":{"description":"The datetime this entity was last modified","type":"string"},"duration":{"description":"A read-only estimate of this Layout's total duration in seconds. This is equal to the longest region duration and is valid when the layout status is 1 or 2.","type":"integer"},"requiresDurationUpdate":{"description":"Flag indicating whether this Playlists requires a duration update","type":"integer"},"enableStat":{"description":"The option to enable the collection of Playlist Proof of Play statistics","type":"string"},"tags":{"description":"Tags associated with this Playlist, array of TagLink objects","type":"array","items":{"$ref":"#/components/schemas/TagLink"}},"widgets":{"description":"An array of Widgets assigned to this Playlist","type":"array","items":{"$ref":"#/components/schemas/Widget"}},"permissions":{"description":"An array of permissions","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"folderId":{"description":"The id of the Folder this Playlist belongs to","type":"integer"},"permissionsFolderId":{"description":"The id of the Folder responsible for providing permissions for this Playlist","type":"integer"}},"type":"object"},"TagLink":{"properties":{"tag":{"description":"The Tag","type":"string"},"tagId":{"description":"The Tag ID","type":"integer"},"value":{"description":"The Tag Value","type":"string"}},"type":"object"},"Widget":{"description":"Class Widget","properties":{"widgetId":{"description":"The Widget ID","type":"integer"},"playlistId":{"description":"The ID of the Playlist this Widget belongs to","type":"integer"},"ownerId":{"description":"The ID of the User that owns this Widget","type":"integer"},"type":{"description":"The Module Type Code","type":"string"},"duration":{"description":"The duration in seconds this widget should be shown","type":"integer"},"displayOrder":{"description":"The display order of this widget","type":"integer"},"useDuration":{"description":"Flag indicating if this widget has a duration that should be used","type":"integer"},"calculatedDuration":{"description":"Calculated Duration of this widget after taking into account the useDuration flag","type":"integer"},"createdDt":{"description":"The datetime the Layout was created","type":"string"},"modifiedDt":{"description":"The datetime the Layout was last modified","type":"string"},"fromDt":{"description":"Widget From Date","type":"integer"},"toDt":{"description":"Widget To Date","type":"integer"},"schemaVersion":{"description":"Widget Schema Version","type":"integer"},"transitionIn":{"description":"Transition Type In","type":"integer"},"transitionOut":{"description":"Transition Type out","type":"integer"},"transitionDurationIn":{"description":"Transition duration in","type":"integer"},"transitionDurationOut":{"description":"Transition duration out","type":"integer"},"widgetOptions":{"description":"An array of Widget Options","type":"array","items":{"$ref":"#/components/schemas/WidgetOption"}},"mediaIds":{"description":"An array of MediaIds this widget is linked to","type":"array","items":{"type":"integer"}},"audio":{"description":"An array of Audio MediaIds this widget is linked to","type":"array","items":{"$ref":"#/components/schemas/WidgetAudio"}},"permissions":{"description":"An array of permissions for this widget","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"playlist":{"description":"The name of the Playlist this Widget is on","type":"string"}},"type":"object"},"WidgetOption":{"description":"Class WidgetOption","properties":{"widgetId":{"description":"The Widget ID that this Option belongs to","type":"integer"},"type":{"description":"The option type, either attrib or raw","type":"string"},"option":{"description":"The option name","type":"string"},"value":{"description":"The option value","type":"string"}},"type":"object"},"WidgetAudio":{"description":"Class WidgetAudio","properties":{"widgetId":{"description":"The Widget Id","type":"integer"},"mediaId":{"description":"The Media Id","type":"integer"},"volume":{"description":"The percentage volume","type":"integer"},"loop":{"description":"Flag indicating whether to loop","type":"integer"}},"type":"object"},"Permission":{"description":"Class Permission","properties":{"permissionId":{"description":"The ID of this Permission Record","type":"integer"},"entityId":{"description":"The Entity ID that this Permission refers to","type":"integer"},"groupId":{"description":"The User Group ID that this permission refers to","type":"integer"},"objectId":{"description":"The object ID that this permission refers to","type":"integer"},"isUser":{"description":"A flag indicating whether the groupId refers to a user specific group","type":"integer"},"entity":{"description":"The entity name that this refers to","type":"string"},"objectIdString":{"description":"Legacy for when the Object ID is a string","type":"string"},"group":{"description":"The group name that this refers to","type":"string"},"view":{"description":"A flag indicating whether view permission is granted","type":"integer"},"edit":{"description":"A flag indicating whether edit permission is granted","type":"integer"},"delete":{"description":"A flag indicating whether delete permission is granted","type":"integer"},"modifyPermissions":{"description":"A flag indicating whether modify permission permission is granted.","type":"integer"}},"type":"object"}}}}
```

## Edit a Playlist

> Edit a Playlist

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist/{playlistId}":{"put":{"tags":["playlist"],"summary":"Edit a Playlist","description":"Edit a Playlist","operationId":"playlistEdit","parameters":[{"name":"playlistId","in":"path","description":"The PlaylistId to Edit","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"required":["name","isDynamic"],"properties":{"name":{"description":"The Name for this Playlist","type":"string"},"tags":{"description":"Tags","type":"string"},"isDynamic":{"description":"Is this Playlist Dynamic?","type":"integer"},"filterMediaName":{"description":"Add Library Media matching the name filter provided","type":"string"},"logicalOperatorName":{"description":"When filtering by multiple names in name filter, which logical operator should be used? AND|OR","type":"string"},"filterMediaTag":{"description":"Add Library Media matching the tag filter provided","type":"string"},"exactTags":{"description":"When filtering by Tags, should we use exact match?","type":"integer"},"logicalOperator":{"description":"When filtering by Tags, which logical operator should be used? AND|OR","type":"string"},"maxNumberOfItems":{"description":"Maximum number of items that can be assigned to this Playlist (dynamic Playlist only)","type":"integer"},"folderId":{"description":"Folder ID to which this object should be assigned to","type":"integer"}},"type":"object"}}}},"responses":{"204":{"description":"successful operation"}}}}}}
```

## Delete a Playlist

> Delete a Playlist

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist/{playlistId}":{"delete":{"tags":["playlist"],"summary":"Delete a Playlist","description":"Delete a Playlist","operationId":"playlistDelete","parameters":[{"name":"playlistId","in":"path","description":"The PlaylistId to delete","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"successful operation"}}}}}}
```

## Copy Playlist

> Copy a Playlist, providing a new name if applicable

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist/copy/{playlistId}":{"post":{"tags":["playlist"],"summary":"Copy Playlist","description":"Copy a Playlist, providing a new name if applicable","operationId":"playlistCopy","parameters":[{"name":"playlistId","in":"path","description":"The Playlist ID to Copy","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"required":["name","copyMediaFiles"],"properties":{"name":{"description":"The name for the new Playlist","type":"string"},"copyMediaFiles":{"description":"Flag indicating whether to make new Copies of all Media Files assigned to the Playlist being Copied","type":"integer"}},"type":"object"}}}},"responses":{"201":{"description":"successful operation","headers":{"Location":{"description":"Location of the new record","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Playlist"}}}}}}}},"components":{"schemas":{"Playlist":{"description":"Class Playlist","properties":{"playlistId":{"description":"The ID of this Playlist","type":"integer"},"ownerId":{"description":"The userId of the User that owns this Playlist","type":"integer"},"name":{"description":"The Name of the Playlist","type":"string"},"regionId":{"description":"The RegionId if this Playlist is specific to a Region","type":"integer"},"isDynamic":{"description":"Flag indicating if this is a dynamic Playlist","type":"integer"},"filterMediaName":{"description":"Filter Name for a Dynamic Playlist","type":"string"},"filterMediaNameLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Plalust names? OR|AND","type":"string"},"filterMediaTags":{"description":"Filter Tags for a Dynamic Playlist","type":"string"},"filterExactTags":{"description":"Flag indicating whether to filter by exact Tag match","type":"integer"},"filterMediaTagsLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Tags? OR|AND","type":"string"},"filterFolderId":{"description":"The ID of the folder to filter media items by","type":"integer"},"maxNumberOfItems":{"description":"Maximum number of Media items matching dynamic Playlist filters","type":"integer"},"createdDt":{"description":"The datetime this entity was created","type":"string"},"modifiedDt":{"description":"The datetime this entity was last modified","type":"string"},"duration":{"description":"A read-only estimate of this Layout's total duration in seconds. This is equal to the longest region duration and is valid when the layout status is 1 or 2.","type":"integer"},"requiresDurationUpdate":{"description":"Flag indicating whether this Playlists requires a duration update","type":"integer"},"enableStat":{"description":"The option to enable the collection of Playlist Proof of Play statistics","type":"string"},"tags":{"description":"Tags associated with this Playlist, array of TagLink objects","type":"array","items":{"$ref":"#/components/schemas/TagLink"}},"widgets":{"description":"An array of Widgets assigned to this Playlist","type":"array","items":{"$ref":"#/components/schemas/Widget"}},"permissions":{"description":"An array of permissions","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"folderId":{"description":"The id of the Folder this Playlist belongs to","type":"integer"},"permissionsFolderId":{"description":"The id of the Folder responsible for providing permissions for this Playlist","type":"integer"}},"type":"object"},"TagLink":{"properties":{"tag":{"description":"The Tag","type":"string"},"tagId":{"description":"The Tag ID","type":"integer"},"value":{"description":"The Tag Value","type":"string"}},"type":"object"},"Widget":{"description":"Class Widget","properties":{"widgetId":{"description":"The Widget ID","type":"integer"},"playlistId":{"description":"The ID of the Playlist this Widget belongs to","type":"integer"},"ownerId":{"description":"The ID of the User that owns this Widget","type":"integer"},"type":{"description":"The Module Type Code","type":"string"},"duration":{"description":"The duration in seconds this widget should be shown","type":"integer"},"displayOrder":{"description":"The display order of this widget","type":"integer"},"useDuration":{"description":"Flag indicating if this widget has a duration that should be used","type":"integer"},"calculatedDuration":{"description":"Calculated Duration of this widget after taking into account the useDuration flag","type":"integer"},"createdDt":{"description":"The datetime the Layout was created","type":"string"},"modifiedDt":{"description":"The datetime the Layout was last modified","type":"string"},"fromDt":{"description":"Widget From Date","type":"integer"},"toDt":{"description":"Widget To Date","type":"integer"},"schemaVersion":{"description":"Widget Schema Version","type":"integer"},"transitionIn":{"description":"Transition Type In","type":"integer"},"transitionOut":{"description":"Transition Type out","type":"integer"},"transitionDurationIn":{"description":"Transition duration in","type":"integer"},"transitionDurationOut":{"description":"Transition duration out","type":"integer"},"widgetOptions":{"description":"An array of Widget Options","type":"array","items":{"$ref":"#/components/schemas/WidgetOption"}},"mediaIds":{"description":"An array of MediaIds this widget is linked to","type":"array","items":{"type":"integer"}},"audio":{"description":"An array of Audio MediaIds this widget is linked to","type":"array","items":{"$ref":"#/components/schemas/WidgetAudio"}},"permissions":{"description":"An array of permissions for this widget","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"playlist":{"description":"The name of the Playlist this Widget is on","type":"string"}},"type":"object"},"WidgetOption":{"description":"Class WidgetOption","properties":{"widgetId":{"description":"The Widget ID that this Option belongs to","type":"integer"},"type":{"description":"The option type, either attrib or raw","type":"string"},"option":{"description":"The option name","type":"string"},"value":{"description":"The option value","type":"string"}},"type":"object"},"WidgetAudio":{"description":"Class WidgetAudio","properties":{"widgetId":{"description":"The Widget Id","type":"integer"},"mediaId":{"description":"The Media Id","type":"integer"},"volume":{"description":"The percentage volume","type":"integer"},"loop":{"description":"Flag indicating whether to loop","type":"integer"}},"type":"object"},"Permission":{"description":"Class Permission","properties":{"permissionId":{"description":"The ID of this Permission Record","type":"integer"},"entityId":{"description":"The Entity ID that this Permission refers to","type":"integer"},"groupId":{"description":"The User Group ID that this permission refers to","type":"integer"},"objectId":{"description":"The object ID that this permission refers to","type":"integer"},"isUser":{"description":"A flag indicating whether the groupId refers to a user specific group","type":"integer"},"entity":{"description":"The entity name that this refers to","type":"string"},"objectIdString":{"description":"Legacy for when the Object ID is a string","type":"string"},"group":{"description":"The group name that this refers to","type":"string"},"view":{"description":"A flag indicating whether view permission is granted","type":"integer"},"edit":{"description":"A flag indicating whether edit permission is granted","type":"integer"},"delete":{"description":"A flag indicating whether delete permission is granted","type":"integer"},"modifyPermissions":{"description":"A flag indicating whether modify permission permission is granted.","type":"integer"}},"type":"object"}}}}
```

## Assign Library Items

> Assign Media from the Library to this Playlist

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist/library/assign/{playlistId}":{"post":{"tags":["playlist"],"summary":"Assign Library Items","description":"Assign Media from the Library to this Playlist","operationId":"playlistLibraryAssign","parameters":[{"name":"playlistId","in":"path","description":"The Playlist ID to assign to","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"required":["media"],"properties":{"media":{"description":"Array of Media IDs to assign","type":"array","items":{"type":"integer"}},"duration":{"description":"Optional duration for all Media in this assignment to use on the Widget","type":"integer"},"useDuration":{"description":"Optional flag indicating whether to enable the useDuration field","type":"integer"},"displayOrder":{"description":"Optional integer to say which position this assignment should occupy in the list. If more than one media item is being added, this will be the position of the first one.","type":"integer"}},"type":"object"}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Playlist"}}}}}}}},"components":{"schemas":{"Playlist":{"description":"Class Playlist","properties":{"playlistId":{"description":"The ID of this Playlist","type":"integer"},"ownerId":{"description":"The userId of the User that owns this Playlist","type":"integer"},"name":{"description":"The Name of the Playlist","type":"string"},"regionId":{"description":"The RegionId if this Playlist is specific to a Region","type":"integer"},"isDynamic":{"description":"Flag indicating if this is a dynamic Playlist","type":"integer"},"filterMediaName":{"description":"Filter Name for a Dynamic Playlist","type":"string"},"filterMediaNameLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Plalust names? OR|AND","type":"string"},"filterMediaTags":{"description":"Filter Tags for a Dynamic Playlist","type":"string"},"filterExactTags":{"description":"Flag indicating whether to filter by exact Tag match","type":"integer"},"filterMediaTagsLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Tags? OR|AND","type":"string"},"filterFolderId":{"description":"The ID of the folder to filter media items by","type":"integer"},"maxNumberOfItems":{"description":"Maximum number of Media items matching dynamic Playlist filters","type":"integer"},"createdDt":{"description":"The datetime this entity was created","type":"string"},"modifiedDt":{"description":"The datetime this entity was last modified","type":"string"},"duration":{"description":"A read-only estimate of this Layout's total duration in seconds. This is equal to the longest region duration and is valid when the layout status is 1 or 2.","type":"integer"},"requiresDurationUpdate":{"description":"Flag indicating whether this Playlists requires a duration update","type":"integer"},"enableStat":{"description":"The option to enable the collection of Playlist Proof of Play statistics","type":"string"},"tags":{"description":"Tags associated with this Playlist, array of TagLink objects","type":"array","items":{"$ref":"#/components/schemas/TagLink"}},"widgets":{"description":"An array of Widgets assigned to this Playlist","type":"array","items":{"$ref":"#/components/schemas/Widget"}},"permissions":{"description":"An array of permissions","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"folderId":{"description":"The id of the Folder this Playlist belongs to","type":"integer"},"permissionsFolderId":{"description":"The id of the Folder responsible for providing permissions for this Playlist","type":"integer"}},"type":"object"},"TagLink":{"properties":{"tag":{"description":"The Tag","type":"string"},"tagId":{"description":"The Tag ID","type":"integer"},"value":{"description":"The Tag Value","type":"string"}},"type":"object"},"Widget":{"description":"Class Widget","properties":{"widgetId":{"description":"The Widget ID","type":"integer"},"playlistId":{"description":"The ID of the Playlist this Widget belongs to","type":"integer"},"ownerId":{"description":"The ID of the User that owns this Widget","type":"integer"},"type":{"description":"The Module Type Code","type":"string"},"duration":{"description":"The duration in seconds this widget should be shown","type":"integer"},"displayOrder":{"description":"The display order of this widget","type":"integer"},"useDuration":{"description":"Flag indicating if this widget has a duration that should be used","type":"integer"},"calculatedDuration":{"description":"Calculated Duration of this widget after taking into account the useDuration flag","type":"integer"},"createdDt":{"description":"The datetime the Layout was created","type":"string"},"modifiedDt":{"description":"The datetime the Layout was last modified","type":"string"},"fromDt":{"description":"Widget From Date","type":"integer"},"toDt":{"description":"Widget To Date","type":"integer"},"schemaVersion":{"description":"Widget Schema Version","type":"integer"},"transitionIn":{"description":"Transition Type In","type":"integer"},"transitionOut":{"description":"Transition Type out","type":"integer"},"transitionDurationIn":{"description":"Transition duration in","type":"integer"},"transitionDurationOut":{"description":"Transition duration out","type":"integer"},"widgetOptions":{"description":"An array of Widget Options","type":"array","items":{"$ref":"#/components/schemas/WidgetOption"}},"mediaIds":{"description":"An array of MediaIds this widget is linked to","type":"array","items":{"type":"integer"}},"audio":{"description":"An array of Audio MediaIds this widget is linked to","type":"array","items":{"$ref":"#/components/schemas/WidgetAudio"}},"permissions":{"description":"An array of permissions for this widget","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"playlist":{"description":"The name of the Playlist this Widget is on","type":"string"}},"type":"object"},"WidgetOption":{"description":"Class WidgetOption","properties":{"widgetId":{"description":"The Widget ID that this Option belongs to","type":"integer"},"type":{"description":"The option type, either attrib or raw","type":"string"},"option":{"description":"The option name","type":"string"},"value":{"description":"The option value","type":"string"}},"type":"object"},"WidgetAudio":{"description":"Class WidgetAudio","properties":{"widgetId":{"description":"The Widget Id","type":"integer"},"mediaId":{"description":"The Media Id","type":"integer"},"volume":{"description":"The percentage volume","type":"integer"},"loop":{"description":"Flag indicating whether to loop","type":"integer"}},"type":"object"},"Permission":{"description":"Class Permission","properties":{"permissionId":{"description":"The ID of this Permission Record","type":"integer"},"entityId":{"description":"The Entity ID that this Permission refers to","type":"integer"},"groupId":{"description":"The User Group ID that this permission refers to","type":"integer"},"objectId":{"description":"The object ID that this permission refers to","type":"integer"},"isUser":{"description":"A flag indicating whether the groupId refers to a user specific group","type":"integer"},"entity":{"description":"The entity name that this refers to","type":"string"},"objectIdString":{"description":"Legacy for when the Object ID is a string","type":"string"},"group":{"description":"The group name that this refers to","type":"string"},"view":{"description":"A flag indicating whether view permission is granted","type":"integer"},"edit":{"description":"A flag indicating whether edit permission is granted","type":"integer"},"delete":{"description":"A flag indicating whether delete permission is granted","type":"integer"},"modifyPermissions":{"description":"A flag indicating whether modify permission permission is granted.","type":"integer"}},"type":"object"}}}}
```

## Order Widgets

> Set the order of widgets in the Playlist

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist/order/{playlistId}":{"post":{"tags":["playlist"],"summary":"Order Widgets","description":"Set the order of widgets in the Playlist","operationId":"playlistOrder","parameters":[{"name":"playlistId","in":"path","description":"The Playlist ID to Order","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"required":["widgets"],"properties":{"widgets":{"description":"Array of widgetIds and positions - all widgetIds present in the playlist need to be passed in the call with their positions","type":"array","items":{"$ref":"#/components/schemas/PlaylistWidgetList"}}},"type":"object"}}}},"responses":{"200":{"description":"successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Playlist"}}}}}}}},"components":{"schemas":{"PlaylistWidgetList":{"properties":{"widgetId":{"description":"Widget ID","type":"integer"},"position":{"description":"The position in the Playlist","type":"integer"}},"type":"object"},"Playlist":{"description":"Class Playlist","properties":{"playlistId":{"description":"The ID of this Playlist","type":"integer"},"ownerId":{"description":"The userId of the User that owns this Playlist","type":"integer"},"name":{"description":"The Name of the Playlist","type":"string"},"regionId":{"description":"The RegionId if this Playlist is specific to a Region","type":"integer"},"isDynamic":{"description":"Flag indicating if this is a dynamic Playlist","type":"integer"},"filterMediaName":{"description":"Filter Name for a Dynamic Playlist","type":"string"},"filterMediaNameLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Plalust names? OR|AND","type":"string"},"filterMediaTags":{"description":"Filter Tags for a Dynamic Playlist","type":"string"},"filterExactTags":{"description":"Flag indicating whether to filter by exact Tag match","type":"integer"},"filterMediaTagsLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Tags? OR|AND","type":"string"},"filterFolderId":{"description":"The ID of the folder to filter media items by","type":"integer"},"maxNumberOfItems":{"description":"Maximum number of Media items matching dynamic Playlist filters","type":"integer"},"createdDt":{"description":"The datetime this entity was created","type":"string"},"modifiedDt":{"description":"The datetime this entity was last modified","type":"string"},"duration":{"description":"A read-only estimate of this Layout's total duration in seconds. This is equal to the longest region duration and is valid when the layout status is 1 or 2.","type":"integer"},"requiresDurationUpdate":{"description":"Flag indicating whether this Playlists requires a duration update","type":"integer"},"enableStat":{"description":"The option to enable the collection of Playlist Proof of Play statistics","type":"string"},"tags":{"description":"Tags associated with this Playlist, array of TagLink objects","type":"array","items":{"$ref":"#/components/schemas/TagLink"}},"widgets":{"description":"An array of Widgets assigned to this Playlist","type":"array","items":{"$ref":"#/components/schemas/Widget"}},"permissions":{"description":"An array of permissions","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"folderId":{"description":"The id of the Folder this Playlist belongs to","type":"integer"},"permissionsFolderId":{"description":"The id of the Folder responsible for providing permissions for this Playlist","type":"integer"}},"type":"object"},"TagLink":{"properties":{"tag":{"description":"The Tag","type":"string"},"tagId":{"description":"The Tag ID","type":"integer"},"value":{"description":"The Tag Value","type":"string"}},"type":"object"},"Widget":{"description":"Class Widget","properties":{"widgetId":{"description":"The Widget ID","type":"integer"},"playlistId":{"description":"The ID of the Playlist this Widget belongs to","type":"integer"},"ownerId":{"description":"The ID of the User that owns this Widget","type":"integer"},"type":{"description":"The Module Type Code","type":"string"},"duration":{"description":"The duration in seconds this widget should be shown","type":"integer"},"displayOrder":{"description":"The display order of this widget","type":"integer"},"useDuration":{"description":"Flag indicating if this widget has a duration that should be used","type":"integer"},"calculatedDuration":{"description":"Calculated Duration of this widget after taking into account the useDuration flag","type":"integer"},"createdDt":{"description":"The datetime the Layout was created","type":"string"},"modifiedDt":{"description":"The datetime the Layout was last modified","type":"string"},"fromDt":{"description":"Widget From Date","type":"integer"},"toDt":{"description":"Widget To Date","type":"integer"},"schemaVersion":{"description":"Widget Schema Version","type":"integer"},"transitionIn":{"description":"Transition Type In","type":"integer"},"transitionOut":{"description":"Transition Type out","type":"integer"},"transitionDurationIn":{"description":"Transition duration in","type":"integer"},"transitionDurationOut":{"description":"Transition duration out","type":"integer"},"widgetOptions":{"description":"An array of Widget Options","type":"array","items":{"$ref":"#/components/schemas/WidgetOption"}},"mediaIds":{"description":"An array of MediaIds this widget is linked to","type":"array","items":{"type":"integer"}},"audio":{"description":"An array of Audio MediaIds this widget is linked to","type":"array","items":{"$ref":"#/components/schemas/WidgetAudio"}},"permissions":{"description":"An array of permissions for this widget","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"playlist":{"description":"The name of the Playlist this Widget is on","type":"string"}},"type":"object"},"WidgetOption":{"description":"Class WidgetOption","properties":{"widgetId":{"description":"The Widget ID that this Option belongs to","type":"integer"},"type":{"description":"The option type, either attrib or raw","type":"string"},"option":{"description":"The option name","type":"string"},"value":{"description":"The option value","type":"string"}},"type":"object"},"WidgetAudio":{"description":"Class WidgetAudio","properties":{"widgetId":{"description":"The Widget Id","type":"integer"},"mediaId":{"description":"The Media Id","type":"integer"},"volume":{"description":"The percentage volume","type":"integer"},"loop":{"description":"Flag indicating whether to loop","type":"integer"}},"type":"object"},"Permission":{"description":"Class Permission","properties":{"permissionId":{"description":"The ID of this Permission Record","type":"integer"},"entityId":{"description":"The Entity ID that this Permission refers to","type":"integer"},"groupId":{"description":"The User Group ID that this permission refers to","type":"integer"},"objectId":{"description":"The object ID that this permission refers to","type":"integer"},"isUser":{"description":"A flag indicating whether the groupId refers to a user specific group","type":"integer"},"entity":{"description":"The entity name that this refers to","type":"string"},"objectIdString":{"description":"Legacy for when the Object ID is a string","type":"string"},"group":{"description":"The group name that this refers to","type":"string"},"view":{"description":"A flag indicating whether view permission is granted","type":"integer"},"edit":{"description":"A flag indicating whether edit permission is granted","type":"integer"},"delete":{"description":"A flag indicating whether delete permission is granted","type":"integer"},"modifyPermissions":{"description":"A flag indicating whether modify permission permission is granted.","type":"integer"}},"type":"object"}}}}
```

## Get Playlist Item Usage Report

> Get the records for the playlist item usage report

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist/usage/{playlistId}":{"get":{"tags":["playlist"],"summary":"Get Playlist Item Usage Report","description":"Get the records for the playlist item usage report","operationId":"playlistUsageReport","parameters":[{"name":"playlistId","in":"path","description":"The Playlist Id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Total-Count":{"description":"The total number of records","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Display"}}}}}}}}},"components":{"schemas":{"Display":{"description":"Class Display","properties":{"displayId":{"description":"The ID of this Display","type":"integer"},"displayTypeId":{"description":"The Display Type ID of this Display","type":"integer"},"venueId":{"description":"The Venue ID of this Display","type":"integer"},"address":{"description":"The Location Address of this Display","type":"string"},"isMobile":{"description":"Is this Display mobile?","type":"integer"},"languages":{"description":"The Languages supported in this display location","type":"string"},"displayType":{"description":"The type of this Display","type":"string"},"screenSize":{"description":"The screen size of this Display","type":"integer"},"isOutdoor":{"description":"Is this Display Outdoor?","type":"integer"},"customId":{"description":"The custom ID (an Id of any external system) of this Display","type":"string"},"costPerPlay":{"description":"The Cost Per Play of this Display","type":"number","format":"double"},"impressionsPerPlay":{"description":"The Impressions Per Play of this Display","type":"number","format":"double"},"ref1":{"description":"Optional Reference 1","type":"string"},"ref2":{"description":"Optional Reference 2","type":"string"},"ref3":{"description":"Optional Reference 3","type":"string"},"ref4":{"description":"Optional Reference 4","type":"string"},"ref5":{"description":"Optional Reference 5","type":"string"},"auditingUntil":{"description":"Flag indicating whether this Display is recording Auditing Information from XMDS","type":"integer"},"display":{"description":"The Name of this Display","type":"string"},"description":{"description":"The Description of this Display","type":"string"},"defaultLayoutId":{"description":"The ID of the Default Layout","type":"integer"},"license":{"description":"The Display Unique Identifier also called hardware key","type":"string"},"licensed":{"description":"A flag indicating whether this Display is licensed or not","type":"integer"},"loggedIn":{"description":"A flag indicating whether this Display is currently logged in","type":"integer"},"lastAccessed":{"description":"A timestamp in CMS time for the last time the Display accessed XMDS","type":"integer"},"incSchedule":{"description":"A flag indicating whether the default layout is interleaved with the Schedule","type":"integer"},"emailAlert":{"description":"A flag indicating whether the Display will send email alerts.","type":"integer"},"alertTimeout":{"description":"A timeout in seconds for the Display to send email alerts.","type":"integer"},"clientAddress":{"description":"The MAC Address of the Display","type":"string"},"mediaInventoryStatus":{"description":"The media inventory status of the Display","type":"integer"},"macAddress":{"description":"The current Mac Address of the Player","type":"string"},"lastChanged":{"description":"A timestamp indicating the last time the Mac Address changed","type":"integer"},"numberOfMacAddressChanges":{"description":"A count of Mac Address changes","type":"integer"},"lastWakeOnLanCommandSent":{"description":"A timestamp indicating the last time a WOL command was sent","type":"integer"},"wakeOnLanEnabled":{"description":"A flag indicating whether Wake On Lan is enabled","type":"integer"},"wakeOnLanTime":{"description":"A h:i string indicating the time to send a WOL command","type":"string"},"broadCastAddress":{"description":"The broad cast address for this Display","type":"string"},"secureOn":{"description":"The secureOn WOL settings for this display.","type":"string"},"cidr":{"description":"The CIDR WOL settings for this display","type":"string"},"latitude":{"description":"The display Latitude","type":"number","format":"double"},"longitude":{"description":"The display longitude","type":"number","format":"double"},"clientType":{"description":"A string representing the player type","type":"string"},"clientVersion":{"description":"A string representing the player version","type":"string"},"clientCode":{"description":"A number representing the Player version code","type":"integer"},"displayProfileId":{"description":"The display settings profile ID for this Display","type":"integer"},"currentLayoutId":{"description":"The current layout ID reported via XMDS","type":"integer"},"screenShotRequested":{"description":"A flag indicating that a screen shot should be taken by the Player","type":"integer"},"storageAvailableSpace":{"description":"The number of bytes of storage available on the device.","type":"integer"},"storageTotalSpace":{"description":"The number of bytes of storage in total on the device","type":"integer"},"displayGroupId":{"description":"The ID of the Display Group for this Device","type":"integer"},"currentLayout":{"description":"The current layout","type":"string"},"defaultLayout":{"description":"The default layout","type":"string"},"displayGroups":{"description":"The Display Groups this Display belongs to","type":"array","items":{"$ref":"#/components/schemas/DisplayGroup"}},"xmrChannel":{"description":"The Player Subscription Channel","type":"string"},"xmrPubKey":{"description":"The Player Public Key","type":"string"},"lastCommandSuccess":{"description":"The last command success, 0 = failure, 1 = success, 2 = unknown","type":"integer"},"deviceName":{"description":"The Device Name for the device hardware associated with this Display","type":"string"},"timeZone":{"description":"The Display Timezone, or empty to use the CMS timezone","type":"string"},"tags":{"description":"Tags associated with this Display, array of TagLink objects","type":"array","items":{"$ref":"#/components/schemas/TagLink"}},"overrideConfig":{"description":"The configuration options that will overwrite Display Profile Config"},"bandwidthLimit":{"description":"The display bandwidth limit","type":"integer"},"newCmsAddress":{"description":"The new CMS Address","type":"string"},"newCmsKey":{"description":"The new CMS Key","type":"string"},"orientation":{"description":"The orientation of the Display, either landscape or portrait","type":"string"},"resolution":{"description":"The resolution of the Display expressed as a string in the format WxH","type":"string"},"commercialLicence":{"description":"Status of the commercial licence for this Display. 0 - Not licensed, 1 - licensed, 2 - trial licence, 3 - not applicable","type":"integer"},"teamViewerSerial":{"description":"The TeamViewer serial number for this Display","type":"string"},"webkeySerial":{"description":"The Webkey serial number for this Display","type":"string"},"groupsWithPermissions":{"description":"A comma separated list of groups/users with permissions to this Display","type":"string"},"createdDt":{"description":"The datetime this entity was created","type":"string"},"modifiedDt":{"description":"The datetime this entity was last modified","type":"string"},"folderId":{"description":"The id of the Folder this Display belongs to","type":"integer"},"permissionsFolderId":{"description":"The id of the Folder responsible for providing permissions for this Display","type":"integer"},"countFaults":{"description":"The count of Player reported faults","type":"integer"},"lanIpAddress":{"description":"LAN IP Address, if available on the Player","type":"string"},"syncGroupId":{"description":"The Display Group ID this Display is synced to","type":"integer"},"osVersion":{"description":"The OS version of the Display","type":"string"},"osSdk":{"description":"The SDK version of the Display","type":"string"},"manufacturer":{"description":"The manufacturer of the Display","type":"string"},"brand":{"description":"The brand of the Display","type":"string"},"model":{"description":"The model of the Display","type":"string"}},"type":"object"},"DisplayGroup":{"description":"Class DisplayGroup","properties":{"displayGroupId":{"description":"The displayGroup Id","type":"integer"},"displayGroup":{"description":"The displayGroup Name","type":"string"},"description":{"description":"The displayGroup Description","type":"string"},"isDisplaySpecific":{"description":"A flag indicating whether this displayGroup is a single display displayGroup","type":"integer"},"isDynamic":{"description":"A flag indicating whether this displayGroup is dynamic","type":"integer"},"dynamicCriteria":{"description":"Criteria for this dynamic group. A comma separated set of regular expressions to apply","type":"string"},"dynamicCriteriaLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple dynamic criteria? OR|AND","type":"string"},"dynamicCriteriaTags":{"description":"Criteria for this dynamic group. A comma separated set of tags to apply","type":"string"},"dynamicCriteriaExactTags":{"description":"Flag indicating whether to filter by exact Tag match","type":"integer"},"dynamicCriteriaTagsLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Tags? OR|AND","type":"string"},"userId":{"description":"The UserId who owns this display group","type":"integer"},"tags":{"description":"Tags associated with this Display Group, array of TagLink objects","type":"array","items":{"$ref":"#/components/schemas/TagLink"}},"bandwidthLimit":{"description":"The display bandwidth limit","type":"integer"},"groupsWithPermissions":{"description":"A comma separated list of groups/users with permissions to this DisplayGroup","type":"string"},"createdDt":{"description":"The datetime this entity was created","type":"string"},"modifiedDt":{"description":"The datetime this entity was last modified","type":"string"},"folderId":{"description":"The id of the Folder this Display Group belongs to","type":"integer"},"permissionsFolderId":{"description":"The id of the Folder responsible for providing permissions for this Display Group","type":"integer"},"ref1":{"description":"Optional Reference 1","type":"string"},"ref2":{"description":"Optional Reference 2","type":"string"},"ref3":{"description":"Optional Reference 3","type":"string"},"ref4":{"description":"Optional Reference 4","type":"string"},"ref5":{"description":"Optional Reference 5","type":"string"}},"type":"object"},"TagLink":{"properties":{"tag":{"description":"The Tag","type":"string"},"tagId":{"description":"The Tag ID","type":"integer"},"value":{"description":"The Tag Value","type":"string"}},"type":"object"}}}}
```

## Get Playlist Item Usage Report for Layouts

> Get the records for the playlist item usage report for Layouts

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist/usage/layouts/{playlistId}":{"get":{"tags":["playlist"],"summary":"Get Playlist Item Usage Report for Layouts","description":"Get the records for the playlist item usage report for Layouts","operationId":"playlistUsageLayoutsReport","parameters":[{"name":"playlistId","in":"path","description":"The Playlist Id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"successful operation","headers":{"X-Total-Count":{"description":"The total number of records","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Layout"}}}}}}}}},"components":{"schemas":{"Layout":{"description":"Class Layout","properties":{"layoutId":{"description":"The layoutId","type":"integer"},"ownerId":{"description":"The userId of the Layout Owner","type":"integer"},"campaignId":{"description":"The id of the Layout's dedicated Campaign","type":"integer"},"parentId":{"description":"The parentId, if this Layout has a draft","type":"integer"},"publishedStatusId":{"description":"The Status Id","type":"integer"},"publishedStatus":{"description":"The Published Status (Published, Draft or Pending Approval","type":"string"},"publishedDate":{"description":"The Published Date","type":"string"},"backgroundImageId":{"description":"The id of the image media set as the background","type":"integer"},"schemaVersion":{"description":"The XLF schema version","type":"integer"},"layout":{"description":"The name of the Layout","type":"string"},"description":{"description":"The description of the Layout","type":"string"},"backgroundColor":{"description":"A HEX string representing the Layout background color","type":"string"},"createdDt":{"description":"The datetime the Layout was created","type":"string"},"modifiedDt":{"description":"The datetime the Layout was last modified","type":"string"},"status":{"description":"Flag indicating the Layout status","type":"integer"},"retired":{"description":"Flag indicating whether the Layout is retired","type":"integer"},"backgroundzIndex":{"description":"The Layer that the background should occupy","type":"integer"},"width":{"description":"The Layout Width","type":"number","format":"double"},"height":{"description":"The Layout Height","type":"number","format":"double"},"orientation":{"description":"The Layout Orientation","type":"string"},"displayOrder":{"description":"If this Layout has been requested by Campaign, then this is the display order of the Layout within the Campaign","type":"integer"},"duration":{"description":"A read-only estimate of this Layout's total duration in seconds. This is equal to the longest region duration and is valid when the layout status is 1 or 2.","type":"integer"},"statusMessage":{"description":"A status message detailing any errors with the layout","type":"string"},"enableStat":{"description":"Flag indicating whether the Layout stat is enabled","type":"integer"},"autoApplyTransitions":{"description":"Flag indicating whether the default transitions should be applied to this Layout","type":"integer"},"code":{"description":"Code identifier for this Layout","type":"string"},"isLocked":{"description":"Is this layout locked by another user?","type":"boolean"},"regions":{"description":"An array of Regions belonging to this Layout","type":"array","items":{"$ref":"#/components/schemas/Region"}},"tags":{"description":"Tags associated with this Layout, array of TagLink objects","type":"array","items":{"$ref":"#/components/schemas/TagLink"}},"folderId":{"description":"The id of the Folder this Layout belongs to","type":"integer"},"permissionsFolderId":{"description":"The id of the Folder responsible for providing permissions for this Layout","type":"integer"}},"type":"object"},"Region":{"description":"Class Region","properties":{"regionId":{"description":"The ID of this region","type":"integer"},"layoutId":{"description":"The Layout ID this region belongs to","type":"integer"},"ownerId":{"description":"The userId of the User that owns this Region","type":"integer"},"type":{"description":"Region Type, zone, playlist, frame or canvas","type":"string"},"name":{"description":"The name of this Region","type":"string"},"width":{"description":"Width of the region","type":"number","format":"double"},"height":{"description":"Height of the Region","type":"number","format":"double"},"top":{"description":"The top coordinate of the Region","type":"number","format":"double"},"left":{"description":"The left coordinate of the Region","type":"number","format":"double"},"zIndex":{"description":"The z-index of the Region to control Layering","type":"integer"},"syncKey":{"description":"The syncKey of this Region","type":"string"},"regionOptions":{"description":"An array of Region Options","type":"array","items":{"$ref":"#/components/schemas/RegionOption"}},"permissions":{"description":"An array of Permissions","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"duration":{"description":"A read-only estimate of this Regions's total duration in seconds. This is valid when the parent layout status is 1 or 2.","type":"integer"},"isDrawer":{"description":"Flag, whether this region is used as an interactive drawer attached to a layout.","type":"integer"},"regionPlaylist":{"$ref":"#/components/schemas/Playlist"}},"type":"object"},"RegionOption":{"description":"Class RegionOption","properties":{"regionId":{"description":"The regionId that this Option applies to","type":"integer"},"option":{"description":"The option name","type":"string"},"value":{"description":"The option value","type":"string"}},"type":"object"},"Permission":{"description":"Class Permission","properties":{"permissionId":{"description":"The ID of this Permission Record","type":"integer"},"entityId":{"description":"The Entity ID that this Permission refers to","type":"integer"},"groupId":{"description":"The User Group ID that this permission refers to","type":"integer"},"objectId":{"description":"The object ID that this permission refers to","type":"integer"},"isUser":{"description":"A flag indicating whether the groupId refers to a user specific group","type":"integer"},"entity":{"description":"The entity name that this refers to","type":"string"},"objectIdString":{"description":"Legacy for when the Object ID is a string","type":"string"},"group":{"description":"The group name that this refers to","type":"string"},"view":{"description":"A flag indicating whether view permission is granted","type":"integer"},"edit":{"description":"A flag indicating whether edit permission is granted","type":"integer"},"delete":{"description":"A flag indicating whether delete permission is granted","type":"integer"},"modifyPermissions":{"description":"A flag indicating whether modify permission permission is granted.","type":"integer"}},"type":"object"},"Playlist":{"description":"Class Playlist","properties":{"playlistId":{"description":"The ID of this Playlist","type":"integer"},"ownerId":{"description":"The userId of the User that owns this Playlist","type":"integer"},"name":{"description":"The Name of the Playlist","type":"string"},"regionId":{"description":"The RegionId if this Playlist is specific to a Region","type":"integer"},"isDynamic":{"description":"Flag indicating if this is a dynamic Playlist","type":"integer"},"filterMediaName":{"description":"Filter Name for a Dynamic Playlist","type":"string"},"filterMediaNameLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Plalust names? OR|AND","type":"string"},"filterMediaTags":{"description":"Filter Tags for a Dynamic Playlist","type":"string"},"filterExactTags":{"description":"Flag indicating whether to filter by exact Tag match","type":"integer"},"filterMediaTagsLogicalOperator":{"description":"Which logical operator should be used when filtering by multiple Tags? OR|AND","type":"string"},"filterFolderId":{"description":"The ID of the folder to filter media items by","type":"integer"},"maxNumberOfItems":{"description":"Maximum number of Media items matching dynamic Playlist filters","type":"integer"},"createdDt":{"description":"The datetime this entity was created","type":"string"},"modifiedDt":{"description":"The datetime this entity was last modified","type":"string"},"duration":{"description":"A read-only estimate of this Layout's total duration in seconds. This is equal to the longest region duration and is valid when the layout status is 1 or 2.","type":"integer"},"requiresDurationUpdate":{"description":"Flag indicating whether this Playlists requires a duration update","type":"integer"},"enableStat":{"description":"The option to enable the collection of Playlist Proof of Play statistics","type":"string"},"tags":{"description":"Tags associated with this Playlist, array of TagLink objects","type":"array","items":{"$ref":"#/components/schemas/TagLink"}},"widgets":{"description":"An array of Widgets assigned to this Playlist","type":"array","items":{"$ref":"#/components/schemas/Widget"}},"permissions":{"description":"An array of permissions","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"folderId":{"description":"The id of the Folder this Playlist belongs to","type":"integer"},"permissionsFolderId":{"description":"The id of the Folder responsible for providing permissions for this Playlist","type":"integer"}},"type":"object"},"TagLink":{"properties":{"tag":{"description":"The Tag","type":"string"},"tagId":{"description":"The Tag ID","type":"integer"},"value":{"description":"The Tag Value","type":"string"}},"type":"object"},"Widget":{"description":"Class Widget","properties":{"widgetId":{"description":"The Widget ID","type":"integer"},"playlistId":{"description":"The ID of the Playlist this Widget belongs to","type":"integer"},"ownerId":{"description":"The ID of the User that owns this Widget","type":"integer"},"type":{"description":"The Module Type Code","type":"string"},"duration":{"description":"The duration in seconds this widget should be shown","type":"integer"},"displayOrder":{"description":"The display order of this widget","type":"integer"},"useDuration":{"description":"Flag indicating if this widget has a duration that should be used","type":"integer"},"calculatedDuration":{"description":"Calculated Duration of this widget after taking into account the useDuration flag","type":"integer"},"createdDt":{"description":"The datetime the Layout was created","type":"string"},"modifiedDt":{"description":"The datetime the Layout was last modified","type":"string"},"fromDt":{"description":"Widget From Date","type":"integer"},"toDt":{"description":"Widget To Date","type":"integer"},"schemaVersion":{"description":"Widget Schema Version","type":"integer"},"transitionIn":{"description":"Transition Type In","type":"integer"},"transitionOut":{"description":"Transition Type out","type":"integer"},"transitionDurationIn":{"description":"Transition duration in","type":"integer"},"transitionDurationOut":{"description":"Transition duration out","type":"integer"},"widgetOptions":{"description":"An array of Widget Options","type":"array","items":{"$ref":"#/components/schemas/WidgetOption"}},"mediaIds":{"description":"An array of MediaIds this widget is linked to","type":"array","items":{"type":"integer"}},"audio":{"description":"An array of Audio MediaIds this widget is linked to","type":"array","items":{"$ref":"#/components/schemas/WidgetAudio"}},"permissions":{"description":"An array of permissions for this widget","type":"array","items":{"$ref":"#/components/schemas/Permission"}},"playlist":{"description":"The name of the Playlist this Widget is on","type":"string"}},"type":"object"},"WidgetOption":{"description":"Class WidgetOption","properties":{"widgetId":{"description":"The Widget ID that this Option belongs to","type":"integer"},"type":{"description":"The option type, either attrib or raw","type":"string"},"option":{"description":"The option name","type":"string"},"value":{"description":"The option value","type":"string"}},"type":"object"},"WidgetAudio":{"description":"Class WidgetAudio","properties":{"widgetId":{"description":"The Widget Id","type":"integer"},"mediaId":{"description":"The Media Id","type":"integer"},"volume":{"description":"The percentage volume","type":"integer"},"loop":{"description":"Flag indicating whether to loop","type":"integer"}},"type":"object"}}}}
```

## Enable Stats Collection

> Set Enable Stats Collection? to use for the collection of Proof of Play statistics for a Playlist.

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist/setenablestat/{playlistId}":{"put":{"tags":["playlist"],"summary":"Enable Stats Collection","description":"Set Enable Stats Collection? to use for the collection of Proof of Play statistics for a Playlist.","operationId":"playlistSetEnableStat","parameters":[{"name":"playlistId","in":"path","description":"The Playlist ID","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"required":["enableStat"],"properties":{"enableStat":{"description":"The option to enable the collection of Media Proof of Play statistics","type":"string"}},"type":"object"}}}},"responses":{"204":{"description":"successful operation"}}}}}}
```

## Playlist Select folder

> Select Folder for Playlist

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist/{id}/selectfolder":{"put":{"tags":["playlist"],"summary":"Playlist Select folder","description":"Select Folder for Playlist","operationId":"playlistSelectFolder","parameters":[{"name":"playlistId","in":"path","description":"The Playlist ID","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"required":["folderId"],"properties":{"folderId":{"description":"Folder ID to which this object should be assigned to","type":"integer"}},"type":"object"}}}},"responses":{"204":{"description":"successful operation"}}}}}}
```

## Playlist Convert

> Create a global playlist from inline editor Playlist.> \
> &#x20;    \* Assign created Playlist via sub-playlist Widget to region Playlist.

```json
{"openapi":"3.0.0","info":{"title":"Xibo API","version":"4.5"},"tags":[{"name":"playlist","description":"Playlists"}],"servers":[{"url":"/api"}],"paths":{"/playlist/{id}/convert":{"post":{"tags":["playlist"],"summary":"Playlist Convert","description":"Create a global playlist from inline editor Playlist.\r\n     * Assign created Playlist via sub-playlist Widget to region Playlist.","operationId":"convert","parameters":[{"name":"playlistId","in":"path","description":"The Playlist ID","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"properties":{"name":{"description":"Optional name for the global Playlist.","type":"string"}},"type":"object"}}}},"responses":{"201":{"description":"successful operation"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.xibosignage.com/developer/integrate/openapi/playlist.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
