Nest Changelog
1.1.9
2/22/2022
1.1.10
3/14/2022
10 changed endpoints Collapse changed endpoints
GET /songs/{id}/playlists 
Get all playlists that contain this song
Response Body
{
data: List<{
content?: {
- countries?: List<{
code?: string,
}>,
- createdBy?: {
id?: number,
},
- dateCreated?: number,
- dateUpdated?: number,
- description?: string,
- guid?: string,
- image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
- instructors?: List<{
id?: number,
name?: string,
}>,
- keywords?: List<string>,
- name?: string,
- playlist?: {
id?: number,
name?: string,
},
- schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
type?: 'live' | 'vod' | 'encore',
}>,
- status?: 'draft' | 'published',
- studios?: List<{
id?: number,
name?: string,
}>,
- tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
- updatedBy?: {
id?: number,
},
- videoLength?: {
id?: number,
name?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
name?: string,
}>,
}GET /songs/{id}/playlists 
Get all playlists that contain this song
Response Body
{
data: List<{
content?: {
+ countries: List<{
code?: string,
}>,
+ createdBy: {
id?: number,
},
+ dateCreated: number,
+ dateUpdated: number,
+ description: string,
+ guid: string,
+ image: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
+ instructors: List<{
id?: number,
name?: string,
}>,
+ keywords: List<string>,
+ name: string,
+ playlist: {
id?: number,
name?: string,
},
+ schedule: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
+ contentGuid?: string,
+ duration: number,
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
type?: 'live' | 'vod' | 'encore',
}>,
+ status: 'draft' | 'published',
+ studios: List<{
id?: number,
name?: string,
}>,
+ tags: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
+ updatedBy: {
id?: number,
},
+ videoLength: {
id?: number,
name?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
+ isFlagged?: bool,
name?: string,
}>,
}GET /playlists 
Get a list of playlists
Response Body
{
data: List<{
content?: {
- countries?: List<{
code?: string,
}>,
- createdBy?: {
id?: number,
},
- dateCreated?: number,
- dateUpdated?: number,
- description?: string,
- guid?: string,
- image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
- instructors?: List<{
id?: number,
name?: string,
}>,
- keywords?: List<string>,
- name?: string,
- playlist?: {
id?: number,
name?: string,
},
- schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
type?: 'live' | 'vod' | 'encore',
}>,
- status?: 'draft' | 'published',
- studios?: List<{
id?: number,
name?: string,
}>,
- tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
- updatedBy?: {
id?: number,
},
- videoLength?: {
id?: number,
name?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
name?: string,
}>,
}GET /playlists 
Get a list of playlists
Response Body
{
data: List<{
content?: {
+ countries: List<{
code?: string,
}>,
+ createdBy: {
id?: number,
},
+ dateCreated: number,
+ dateUpdated: number,
+ description: string,
+ guid: string,
+ image: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
+ instructors: List<{
id?: number,
name?: string,
}>,
+ keywords: List<string>,
+ name: string,
+ playlist: {
id?: number,
name?: string,
},
+ schedule: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
+ contentGuid?: string,
+ duration: number,
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
type?: 'live' | 'vod' | 'encore',
}>,
+ status: 'draft' | 'published',
+ studios: List<{
id?: number,
name?: string,
}>,
+ tags: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
+ updatedBy: {
id?: number,
},
+ videoLength: {
id?: number,
name?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
+ isFlagged?: bool,
name?: string,
}>,
}POST /playlists 
Create a new playlist
Response Body
{
data: {
content?: {
- countries?: List<{
code?: string,
}>,
- createdBy?: {
id?: number,
},
- dateCreated?: number,
- dateUpdated?: number,
- description?: string,
- guid?: string,
- image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
- instructors?: List<{
id?: number,
name?: string,
}>,
- keywords?: List<string>,
- name?: string,
- playlist?: {
id?: number,
name?: string,
},
- schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
type?: 'live' | 'vod' | 'encore',
}>,
- status?: 'draft' | 'published',
- studios?: List<{
id?: number,
name?: string,
}>,
- tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
- updatedBy?: {
id?: number,
},
- videoLength?: {
id?: number,
name?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
name?: string,
},
}POST /playlists 
Create a new playlist
Response Body
{
data: {
content?: {
+ countries: List<{
code?: string,
}>,
+ createdBy: {
id?: number,
},
+ dateCreated: number,
+ dateUpdated: number,
+ description: string,
+ guid: string,
+ image: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
+ instructors: List<{
id?: number,
name?: string,
}>,
+ keywords: List<string>,
+ name: string,
+ playlist: {
id?: number,
name?: string,
},
+ schedule: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
+ contentGuid?: string,
+ duration: number,
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
type?: 'live' | 'vod' | 'encore',
}>,
+ status: 'draft' | 'published',
+ studios: List<{
id?: number,
name?: string,
}>,
+ tags: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
+ updatedBy: {
id?: number,
},
+ videoLength: {
id?: number,
name?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
+ isFlagged?: bool,
name?: string,
},
}PATCH /playlists/{id} 
Update an existing playlist
Request Body
{
- name?: string,
}Response Body
{
data: {
content?: {
- countries?: List<{
code?: string,
}>,
- createdBy?: {
id?: number,
},
- dateCreated?: number,
- dateUpdated?: number,
- description?: string,
- guid?: string,
- image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
- instructors?: List<{
id?: number,
name?: string,
}>,
- keywords?: List<string>,
- name?: string,
- playlist?: {
id?: number,
name?: string,
},
- schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
type?: 'live' | 'vod' | 'encore',
}>,
- status?: 'draft' | 'published',
- studios?: List<{
id?: number,
name?: string,
}>,
- tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
- updatedBy?: {
id?: number,
},
- videoLength?: {
id?: number,
name?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
name?: string,
},
}PATCH /playlists/{id} 
Update an existing playlist
Request Body
{
+ content: {
+ countries: List<{
+ code?: string,
+ }>,
+ createdBy: {
+ id?: number,
+ },
+ dateCreated: number,
+ dateUpdated: number,
+ description: string,
+ guid: string,
+ image: {
+ default: string,
+ large: string,
+ medium: string,
+ small: string,
+ url?: string,
+ },
+ instructors: List<{
+ id?: number,
+ name?: string,
+ }>,
+ keywords: List<string>,
+ name: string,
+ playlist: {
+ id?: number,
+ name?: string,
+ },
+ schedule: List<{
+ available?: {
+ end?: number,
+ live?: number,
+ start?: number,
+ },
+ contentGuid?: string,
+ duration: number,
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
+ type?: 'live' | 'vod' | 'encore',
+ }>,
+ status: 'draft' | 'published',
+ studios: List<{
+ id?: number,
+ name?: string,
+ }>,
+ tags: List<{
+ image?: {
+ default: string,
+ large: string,
+ medium: string,
+ small: string,
+ url?: string,
+ },
+ text?: string,
+ translations: record,
+ type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
+ value?: string,
+ }>,
+ updatedBy: {
+ id?: number,
+ },
+ videoLength: {
+ id?: number,
+ name?: string,
+ },
+ },
+ createdBy: {
+ id?: number,
+ },
+ dateCreated: number,
+ dateUpdated: number,
+ id: number,
+ isFlagged: bool,
+ name: string,
}Response Body
{
data: {
content?: {
+ countries: List<{
code?: string,
}>,
+ createdBy: {
id?: number,
},
+ dateCreated: number,
+ dateUpdated: number,
+ description: string,
+ guid: string,
+ image: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
+ instructors: List<{
id?: number,
name?: string,
}>,
+ keywords: List<string>,
+ name: string,
+ playlist: {
id?: number,
name?: string,
},
+ schedule: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
+ contentGuid?: string,
+ duration: number,
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
type?: 'live' | 'vod' | 'encore',
}>,
+ status: 'draft' | 'published',
+ studios: List<{
id?: number,
name?: string,
}>,
+ tags: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
+ updatedBy: {
id?: number,
},
+ videoLength: {
id?: number,
name?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
+ isFlagged?: bool,
name?: string,
},
}GET /content/items 
Get list of content items
Response Body
{
data: List<{
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
keywords?: List<string>,
name?: string,
playlist?: {
id?: number,
name?: string,
},
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
type?: 'live' | 'vod' | 'encore',
}>,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
}>,
}GET /content/items 
Get list of content items
Response Body
{
data: List<{
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
keywords?: List<string>,
name?: string,
playlist?: {
id?: number,
name?: string,
},
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
+ contentGuid?: string,
+ duration: number,
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
type?: 'live' | 'vod' | 'encore',
}>,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
}>,
}GET /content/items/{guid} 
Get a specific content item
Response Body
{
data: List<{
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
keywords?: List<string>,
name?: string,
playlist?: {
id?: number,
name?: string,
},
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
type?: 'live' | 'vod' | 'encore',
}>,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
}>,
}GET /content/items/{guid} 
Get a specific content item
Response Body
{
data: List<{
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
keywords?: List<string>,
name?: string,
playlist?: {
id?: number,
name?: string,
},
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
+ contentGuid?: string,
+ duration: number,
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
type?: 'live' | 'vod' | 'encore',
}>,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
}>,
}GET /content/recommendations 
Get content recommended for this user.
Response Body
{
data: List<{
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
keywords?: List<string>,
name?: string,
playlist?: {
id?: number,
name?: string,
},
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
type?: 'live' | 'vod' | 'encore',
}>,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
}>,
}GET /content/recommendations 
Get content recommended for this user.
Response Body
{
data: List<{
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
keywords?: List<string>,
name?: string,
playlist?: {
id?: number,
name?: string,
},
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
+ contentGuid?: string,
+ duration: number,
+ guid?: string,
+ legacy: {
+ hlsUrl?: string,
+ id?: number,
+ liveStreamId?: number,
+ type?: 'reflect' | 'connect',
+ },
type?: 'live' | 'vod' | 'encore',
}>,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
}>,
}GET /equipment/models 
Get a list of all available Equipment
Response Body
{
data: List<{
category: {
guid?: string,
name?: string,
},
dateAvailable?: number,
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
- pdf?: string,
plans?: List<{
id?: number,
}>,
- video?: string,
}>,
}GET /equipment/models 
Get a list of all available Equipment
Response Body
{
data: List<{
category: {
guid?: string,
name?: string,
},
dateAvailable?: number,
+ dateCreated?: number,
+ dateUpdated?: number,
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
+ pdf?: {
+ url?: string,
+ },
plans?: List<{
id?: number,
}>,
+ video?: {
+ url?: string,
+ },
}>,
}GET /equipment/models/{id} 
Get a specific model of equipment
Response Body
{
data: {
category: {
guid?: string,
name?: string,
},
dateAvailable?: number,
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
- pdf?: string,
plans?: List<{
id?: number,
}>,
- video?: string,
},
}GET /equipment/models/{id} 
Get a specific model of equipment
Response Body
{
data: {
category: {
guid?: string,
name?: string,
},
dateAvailable?: number,
+ dateCreated?: number,
+ dateUpdated?: number,
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
+ pdf?: {
+ url?: string,
+ },
plans?: List<{
id?: number,
}>,
+ video?: {
+ url?: string,
+ },
},
}15 added endpoints Collapse added endpoints
GET /playlists/{playlist} 
Get a single playlist by ID
Guard: loggedIn
Response Body
{
data: {
content?: {
countries: List<{
code?: string,
}>,
createdBy: {
id?: number,
},
dateCreated: number,
dateUpdated: number,
description: string,
guid: string,
image: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors: List<{
id?: number,
name?: string,
}>,
keywords: List<string>,
name: string,
playlist: {
id?: number,
name?: string,
},
schedule: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
contentGuid?: string,
duration: number,
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore',
}>,
status: 'draft' | 'published',
studios: List<{
id?: number,
name?: string,
}>,
tags: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy: {
id?: number,
},
videoLength: {
id?: number,
name?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
isFlagged?: bool,
name?: string,
tracks?: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
id?: number,
},
trackOrder?: number,
}>,
},
}GET /playlists/{playlist}/tracks/{song} 
Get song from a playlist
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
id?: number,
},
trackOrder?: number,
},
}PUT /playlists/{playlist}/tracks/{song} 
Request Body
{
flag?: string,
trackOrder?: number,
}Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
id?: number,
},
trackOrder?: number,
},
}PATCH /playlists/{playlist}/tracks/{song} 
Request Body
{
flag: string,
trackOrder: number,
}Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
id?: number,
},
trackOrder?: number,
},
}POST /content/items 
Create a content item
Guard: producer
Request Body
{
countries?: List<string>,
description?: string,
image: string,
instructors?: List<{
id?: number,
precedence?: number,
}>,
keywords?: List<string>,
name?: string,
playlist?: {
id?: number,
},
status?: 'draft' | 'published',
studios?: List<{
id?: number,
precedence?: number,
}>,
tags?: List<{
value?: string,
}>,
videoLength?: {
id?: number,
},
}Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
keywords?: List<string>,
name?: string,
playlist?: {
id?: number,
name?: string,
},
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
contentGuid?: string,
duration: number,
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore',
}>,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
},
}PATCH /content/items/{guid} 
Update a content item
Guard: producer
Request Body
{
countries: List<string>,
description: string,
image: string,
instructors: List<{
id?: number,
precedence?: number,
}>,
keywords: List<string>,
name: string,
playlist: {
id?: number,
},
status: 'draft' | 'published',
studios: List<{
id?: number,
precedence?: number,
}>,
tags: List<{
value?: string,
}>,
videoLength: {
id?: number,
},
}Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
keywords?: List<string>,
name?: string,
playlist?: {
id?: number,
name?: string,
},
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
contentGuid?: string,
duration: number,
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore',
}>,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
},
}POST /equipment/models 
Create a new equipment model
Guard: admin
Request Body
{
dateAvailable?: number,
image?: {
data?: string,
filename?: string,
},
name?: string,
pdf: {
data?: string,
filename?: string,
},
plans?: List<{
id?: number,
}>,
video?: {
url?: string,
},
}Response Body
{
data: {
category: {
guid?: string,
name?: string,
},
dateAvailable?: number,
dateCreated?: number,
dateUpdated?: number,
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
pdf?: {
url?: string,
},
plans?: List<{
id?: number,
}>,
video?: {
url?: string,
},
},
}PATCH /equipment/models/{id} 
Update an existing equipment model.
Guard: admin
Request Body
{
dateAvailable: number,
image: {
data?: string,
filename?: string,
},
name: string,
pdf: {
data?: string,
filename?: string,
},
plans: List<{
id?: number,
}>,
video: {
url?: string,
},
}Response Body
{
data: {
category: {
guid?: string,
name?: string,
},
dateAvailable?: number,
dateCreated?: number,
dateUpdated?: number,
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
pdf?: {
url?: string,
},
plans?: List<{
id?: number,
}>,
video?: {
url?: string,
},
},
}POST /campaigns 
Create a new campaign
Guard: admin
Request Body
{
dateExpires?: number,
name?: string,
partner?: {
id?: number,
},
utmCampaign?: string,
utmSource?: string,
}Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateExpires?: number,
guid?: string,
name?: string,
partner?: {
id?: number,
},
utmCampaign?: string,
utmSource?: string,
},
}GET /campaigns 
Get all campaigns
Response Body
{
data: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
dateExpires?: number,
guid?: string,
name?: string,
partner?: {
id?: number,
},
utmCampaign?: string,
utmSource?: string,
}>,
}GET /campaigns/{guid} 
Get a specific campaign
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateExpires?: number,
guid?: string,
name?: string,
partner?: {
id?: number,
},
utmCampaign?: string,
utmSource?: string,
},
}PATCH /campaigns/{guid} 
Edit a campaign (overlay)
Guard: admin
Request Body
{
dateExpires: number,
name: string,
partner: {
id?: number,
},
utmCampaign: string,
utmSource: string,
}Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateExpires?: number,
guid?: string,
name?: string,
partner?: {
id?: number,
},
utmCampaign?: string,
utmSource?: string,
},
}3 deleted endpoints Collapse deleted endpoints
GET /playlists/{id} 
Get a single playlist by ID
Guard: loggedIn
Response Body
{
data: {
content?: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
keywords?: List<string>,
name?: string,
playlist?: {
id?: number,
name?: string,
},
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
type?: 'live' | 'vod' | 'encore',
}>,
status?: 'draft' | 'published',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
translations: record,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
value?: string,
}>,
updatedBy?: {
id?: number,
},
videoLength?: {
id?: number,
name?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
name?: string,
tracks?: List<{
dateCreated?: number,
song?: {
album?: {
id?: number,
name?: string,
},
artist?: List<{
id?: number,
name?: string,
}>,
coverArt?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
duration?: {
seconds: number,
text: string,
},
genres?: List<{
id?: number,
name?: string,
}>,
id?: number,
isExplicit?: bool,
isrcCode?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
licenseDetails?: {
label: record,
publisher: record,
},
licensedIn?: List<string>,
name?: string,
yearPublished?: number,
},
trackOrder?: number,
}>,
},
}PUT /playlists/{playlistId}/tracks/{songId} 
Guard: instructor
Request Body
{
trackOrder: number,
}Response Body
{
data: {
dateCreated?: number,
song?: {
album?: {
id?: number,
name?: string,
},
artist?: List<{
id?: number,
name?: string,
}>,
coverArt?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
duration?: {
seconds: number,
text: string,
},
genres?: List<{
id?: number,
name?: string,
}>,
id?: number,
isExplicit?: bool,
isrcCode?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
licenseDetails?: {
label: record,
publisher: record,
},
licensedIn?: List<string>,
name?: string,
yearPublished?: number,
},
trackOrder?: number,
},
}