Nest Changelog
1.1.50
6/6/2022
1.1.51
6/13/2022
16 changed endpoints Collapse changed endpoints
GET /songs/{id}/playlists
Get all playlists that contain this song
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
GET /songs/{id}/playlists
Get all playlists that contain this song
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
GET /playlists
Get a list of playlists
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
GET /playlists
Get a list of playlists
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
POST /playlists
Create a new playlist
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
POST /playlists
Create a new playlist
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
GET /playlists/{playlist}
Get a single playlist by ID
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tracks?: List<{ dateCreated?: number, flag?: string, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags: record, }, trackOrder?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
GET /playlists/{playlist}
Get a single playlist by ID
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tracks?: List<{ dateCreated?: number, flag?: string, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags: record, }, trackOrder?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
PATCH /playlists/{id}
Update an existing playlist
Request Body
{ countries: List<{ code?: string, }>, createdBy: { id?: number, }, dateCreated: number, dateUpdated: number, id: number, instructors: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged: bool, name: string, schedule: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}>, studios: List<{ id?: number, name?: string, precedence?: number, }>, videoLength: { id?: number, name?: string, }, }
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
PATCH /playlists/{id}
Update an existing playlist
Request Body
{ countries: List<{ code?: string, }>, createdBy: { id?: number, }, dateCreated: number, dateUpdated: number, id: number, instructors: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged: bool, name: string, schedule: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios: List<{ id?: number, name?: string, precedence?: number, }>, videoLength: { id?: number, name?: string, }, }
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
POST /playlists/{playlist}/import
Import all songs from a playlist to another playlist
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tracks?: List<{ dateCreated?: number, flag?: string, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags: record, }, trackOrder?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
POST /playlists/{playlist}/import
Import all songs from a playlist to another playlist
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tracks?: List<{ dateCreated?: number, flag?: string, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags: record, }, trackOrder?: number, }>, videoLength?: { id?: number, name?: string, }, }, }
GET /content/library
Search for content in the Library
Response Body
{ data: { aggregations?: List<{ buckets?: List<{ }>, key?: string, }>, count?: number, pagination?: { skip?: number, take?: number, }, results?: List<{ countries?: List<{ code?: string, }>, dateLive?: number, description?: string, guid?: string, image?: string, instructors?: List<string>, length?: number, name?: string, studios?: List<string>, tags?: List<{ text?: string, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level', value?: string, }>,- type?: 'live' | 'vod' | 'encore',}>, }, }
GET /content/library
Search for content in the Library
Response Body
{ data: { aggregations?: List<{ buckets?: List<{ }>, key?: string, }>, count?: number, pagination?: { skip?: number, take?: number, }, results?: List<{ countries?: List<{ code?: string, }>, dateLive?: number, description?: string, guid?: string, image?: string, instructors?: List<string>, length?: number, name?: string, studios?: List<string>, tags?: List<{ text?: string, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level', value?: string, }>,+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, }, }
GET /content/items
Get list of content items
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, },sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, 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, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }
GET /content/items
Get list of content items
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, }, + schedule?: List<{ + available?: { + end?: number, + live?: number, + start?: number, + }, + content?: { + guid?: string, + }, + guid?: string, + legacy: { + hlsUrl?: string, + id?: number, + liveStreamId?: number, + type?: 'reflect' | 'connect', + }, + type?: 'live' | 'vod' | 'encore' | 'rebroadcast', + }>, sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, 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, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }
POST /content/items
Create a content item
Request Body
{ countries?: List<{ code?: string, }>, description?: string,- image: string,instructors?: List<{ id?: number, precedence?: number, }>, 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, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, },sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, 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, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }
POST /content/items
Create a content item
Request Body
{ countries?: List<{ code?: string, }>, description?: string,+ image: { + data?: string, + filename?: string, + }, instructors?: List<{ id?: number, precedence?: number, }>, 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, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, }, + schedule?: List<{ + available?: { + end?: number, + live?: number, + start?: number, + }, + content?: { + guid?: string, + }, + guid?: string, + legacy: { + hlsUrl?: string, + id?: number, + liveStreamId?: number, + type?: 'reflect' | 'connect', + }, + type?: 'live' | 'vod' | 'encore' | 'rebroadcast', + }>, sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, 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, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }
GET /content/items/{guid}
Get a specific content item
Guard: none
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, },sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, 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, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }
GET /content/items/{guid}
Get a specific content item
Guard: loggedIn
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, }, + schedule?: List<{ + available?: { + end?: number, + live?: number, + start?: number, + }, + content?: { + guid?: string, + }, + guid?: string, + legacy: { + hlsUrl?: string, + id?: number, + liveStreamId?: number, + type?: 'reflect' | 'connect', + }, + type?: 'live' | 'vod' | 'encore' | 'rebroadcast', + }>, sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, 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, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }
PATCH /content/items/{guid}
Update a content item
Request Body
{ countries: List<{ code?: string, }>, description: string,- image: string,instructors: List<{ id?: number, precedence?: number, }>, 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, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, },sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, 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, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }
PATCH /content/items/{guid}
Update a content item
Request Body
{ countries: List<{ code?: string, }>, description: string,+ image: { + data?: string, + filename?: string, + }, instructors: List<{ id?: number, precedence?: number, }>, 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, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, }, + schedule?: List<{ + available?: { + end?: number, + live?: number, + start?: number, + }, + content?: { + guid?: string, + }, + guid?: string, + legacy: { + hlsUrl?: string, + id?: number, + liveStreamId?: number, + type?: 'reflect' | 'connect', + }, + type?: 'live' | 'vod' | 'encore' | 'rebroadcast', + }>, sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, 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, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }
GET /content/recommendations
Get content recommended for this user.
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, },sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, 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, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }
GET /content/recommendations
Get content recommended for this user.
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, }, + schedule?: List<{ + available?: { + end?: number, + live?: number, + start?: number, + }, + content?: { + guid?: string, + }, + guid?: string, + legacy: { + hlsUrl?: string, + id?: number, + liveStreamId?: number, + type?: 'reflect' | 'connect', + }, + type?: 'live' | 'vod' | 'encore' | 'rebroadcast', + }>, sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, 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, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }
GET /content/schedule
Get list of scheduled content.
Guard: loggedIn
Response Body
{ data: { available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}, }
GET /content/schedule
Get list of scheduled content.
Guard: none
Response Body
{ data: { available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }, }
POST /content/schedule
Create a new schedule entry for a piece of content
Request Body
{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}
Response Body
{ data: { available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}, }
POST /content/schedule
Create a new schedule entry for a piece of content
Request Body
{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }
Response Body
{ data: { available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }, }
GET /content/schedule/{scheduleId}
Get a piece of scheduled content by its guid (not its content guid!).
Response Body
{ data: { available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}, }
GET /content/schedule/{scheduleId}
Get a piece of scheduled content by its guid (not its content guid!).
Response Body
{ data: { available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }, }
PATCH /content/schedule/{guid}
Edit a schedule entry for a piece of content
Response Body
{ data: { available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },- type?: 'live' | 'vod' | 'encore',}, }
PATCH /content/schedule/{guid}
Edit a schedule entry for a piece of content
Response Body
{ data: { available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', },+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }, }
8 added endpoints Collapse added endpoints
GET /users/{userId}/account
Return the current state of the user’s account with payment status
Guard: selfOrAdmin
Response Body
{ data: { dateCancelled?: number, dateExpires?: number, datePausedUntil?: number, nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: { status?: 'accepted' | 'blocked' | 'requested', }, subscription?: { activation?: { isActivated?: bool, }, billingProvider?: { accountId?: string, customerId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', orderId?: string, }, cancellation?: { dateCancelled?: number, feedback?: string, reason?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { id?: number, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign?: string, content?: string, medium?: string, source?: string, }, }, }, }
POST /users/{userId}/account/quote
Guard: selfOrAdmin
Request Body
{ addOns: List<number>, internalNote: string, planId?: number, publicNote: string, }
Response Body
{ data: { charges?: { billedToday?: { discount?: number, subtotal?: number, total?: number, }, credit?: { currentCredit?: number, futureCredit?: number, }, recurring?: { dateStart?: number, frequencyDays?: number, price?: number, }, }, currency?: { code?: string, scale?: number, symbol?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProviders?: List<{ accountId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', priceId?: string, productId?: string, }>, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, musicRights?: { productId?: string, vendor?: 'audibleMagic', }, name?: string, sku?: string, sortOrder?: number, sources?: List<{ accountId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string, }>, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, }, }
GET /playlists/{playlistId}/tracks
Get tracks from a given playlist
Guard: loggedIn
Response Body
{ data: { dateCreated?: number, flag?: string, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags: record, }, trackOrder?: number, }, }
GET /playlists/{playlistId}/tracks/{songId}
Get song from a playlist
Guard: instructor
Response Body
{ data: { createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, song?: { id?: number, }, trackOrder?: number, }, }
DELETE /playlists/{playlistId}/tracks/{songId}
Remove song from a playlist
Guard: instructor
Response Body
{ data: { createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, song?: { id?: number, }, trackOrder?: number, }, }
6 deleted endpoints Collapse deleted endpoints
GET /playlists/{playlist}/tracks
Get tracks from a given playlist
Guard: loggedIn
Response Body
{ data: { dateCreated?: number, flag?: string, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags: record, }, trackOrder?: number, }, }
GET /playlists/{playlist}/tracks/{song}
Get song from a playlist
Guard: instructor
Response Body
{ data: { createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, song?: { id?: number, }, trackOrder?: number, }, }
DELETE /playlists/{playlist}/tracks/{song}
Remove song from a playlist
Guard: instructor
Response Body
{ data: { createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, song?: { id?: number, }, trackOrder?: number, }, }