Nest Changelog
1.18.4
3/8/2023
1.19.0 PRE
3/6/2023
8 changed endpoints Collapse changed endpoints
GET /collections/items 
List collections. Cached every 10 minutes.
Response Body
{
data: List<{
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
classCount?: number,
countries?: List<{
code?: string,
- sortOrder: number,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
sortOrder?: number,
totalCount?: number,
- type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}GET /collections/items 
List collections. Does not return user-favorites. Cache refresh: 10 minutes.
Response Body
{
data: List<{
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
classCount?: number,
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
sortOrder?: number,
totalCount?: number,
+ type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}POST /collections/items 
Create a new Collection
Request Body
{
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
countries?: List<{
code?: string,
- sortOrder: number,
}>,
description?: string,
durationDays?: number,
episodeWord?: string,
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
schedule?: List<{
guid?: string,
sortOrder?: number,
}>,
sortOrder?: number,
tags?: List<{
value?: string,
}>,
totalCount?: number,
- type?: 'generic' | 'series' | 'challenge' | 'program',
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
}Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
countries?: List<{
code?: string,
- sortOrder: number,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
schedule?: List<{
guid?: string,
sortOrder?: number,
}>,
sortOrder?: number,
tags?: List<{
description?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
modality?: 'ride' | 'row' | 'run' | 'off' | 'all',
text?: string,
type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus',
value?: string,
}>,
totalCount?: number,
- type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
},
}POST /collections/items 
Create a new Collection
Request Body
{
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
countries?: List<{
code?: string,
}>,
description?: string,
durationDays?: number,
episodeWord?: string,
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
schedule?: List<{
guid?: string,
sortOrder?: number,
}>,
sortOrder?: number,
tags?: List<{
value?: string,
}>,
totalCount?: number,
+ type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite',
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
}Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
schedule?: List<{
+ contentGuid?: string,
guid?: string,
sortOrder?: number,
}>,
sortOrder?: number,
tags?: List<{
description?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
modality?: 'ride' | 'row' | 'run' | 'off' | 'all',
text?: string,
type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus',
value?: string,
}>,
totalCount?: number,
+ type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
},
}GET /collections/items/{guid} 
Get a collection by guid. Cached every 10 minutes.
Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
countries?: List<{
code?: string,
- sortOrder: number,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
schedule?: List<{
guid?: string,
sortOrder?: number,
}>,
sortOrder?: number,
tags?: List<{
description?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
modality?: 'ride' | 'row' | 'run' | 'off' | 'all',
text?: string,
type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus',
value?: string,
}>,
totalCount?: number,
- type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
},
}GET /collections/items/{guid} 
Get a collection by guid. Cached every 10 minutes.
Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
schedule?: List<{
+ contentGuid?: string,
guid?: string,
sortOrder?: number,
}>,
sortOrder?: number,
tags?: List<{
description?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
modality?: 'ride' | 'row' | 'run' | 'off' | 'all',
text?: string,
type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus',
value?: string,
}>,
totalCount?: number,
+ type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
},
}PATCH /collections/items/{guid} 
Update a Collection
Request Body
{
available: {
end?: number,
start?: number,
},
badge: {
guid?: string,
},
- countries: List<{
- code?: string,
- sortOrder: number,
- }>,
description: string,
durationDays: number,
episodeWord: string,
name: string,
- planFamily: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
schedule: List<{
guid?: string,
sortOrder?: number,
}>,
sortOrder: number,
tags: List<{
value?: string,
}>,
totalCount: number,
- type: 'generic' | 'series' | 'challenge' | 'program',
visibility: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
}Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
countries?: List<{
code?: string,
- sortOrder: number,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
schedule?: List<{
guid?: string,
sortOrder?: number,
}>,
sortOrder?: number,
tags?: List<{
description?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
modality?: 'ride' | 'row' | 'run' | 'off' | 'all',
text?: string,
type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus',
value?: string,
}>,
totalCount?: number,
- type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
},
}PATCH /collections/items/{guid} 
Update a Collection
Request Body
{
available: {
end?: number,
start?: number,
},
badge: {
guid?: string,
},
description: string,
durationDays: number,
episodeWord: string,
name: string,
schedule: List<{
guid?: string,
sortOrder?: number,
}>,
sortOrder: number,
tags: List<{
value?: string,
}>,
totalCount: number,
+ type: 'generic' | 'series' | 'challenge' | 'program' | 'favorite',
visibility: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
}Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
schedule?: List<{
+ contentGuid?: string,
guid?: string,
sortOrder?: number,
}>,
sortOrder?: number,
tags?: List<{
description?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
modality?: 'ride' | 'row' | 'run' | 'off' | 'all',
text?: string,
type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus',
value?: string,
}>,
totalCount?: number,
+ type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
},
}PUT /collections/items/{guid}/schedule/{scheduleGuid} 
Add a content schedule item to a collection
Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
countries?: List<{
code?: string,
- sortOrder: number,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
sortOrder?: number,
totalCount?: number,
- type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
},
}PUT /collections/items/{guid}/schedule/{scheduleGuid} 
Add a content schedule item to a collection
Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
medium?: 'reflect' | 'standard',
name?: string,
planFamily?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
sortOrder?: number,
totalCount?: number,
+ type?: 'generic' | 'series' | 'challenge' | 'program' | 'favorite',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'draft' | 'trash',
},
}GET /content/library 
Search for content in the Library
Response Body
{
data: List<{
catalog?: {
audio?: 'labelMusic' | 'royaltyFree' | 'userProvided',
code?: string,
hasMusic?: bool,
},
contentGuid?: string,
countries?: List<{
code?: string,
}>,
dateLive?: number,
description?: string,
format?: {
code?: string,
},
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
instructors?: List<{
id?: number,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
name?: string,
}>,
legacy?: {
id?: number,
},
length?: number,
medium?: 'reflect' | 'standard',
name?: string,
playback?: {
type?: 'hls' | 'dash',
url?: string,
},
playlistId?: number,
scheduleGuid?: string,
status?: 'draft' | 'published' | 'trash',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
text?: string,
type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus',
value?: string,
}>,
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
embedded: {
aggregations?: {
durations?: List<{
count?: number,
text?: string,
value?: number,
}>,
instructors?: List<{
id?: number,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
name?: string,
}>,
tags?: List<{
buckets?: List<{
count?: number,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
text?: string,
value?: string,
}>,
value?: string,
}>,
},
},
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}GET /content/library 
Search for content in the Library
Response Body
{
data: List<{
catalog?: {
audio?: 'labelMusic' | 'royaltyFree' | 'userProvided',
code?: string,
hasMusic?: bool,
},
contentGuid?: string,
countries?: List<{
code?: string,
}>,
dateLive?: number,
description?: string,
format?: {
code?: string,
},
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
instructors?: List<{
id?: number,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
name?: string,
}>,
legacy?: {
id?: number,
},
length?: number,
medium?: 'reflect' | 'standard',
name?: string,
playback?: {
type?: 'hls' | 'dash',
url?: string,
},
playlistId?: number,
scheduleGuid?: string,
status?: 'draft' | 'published' | 'trash',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
text?: string,
type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus',
value?: string,
}>,
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
+ userData?: {
+ favorite?: {
+ content?: bool,
+ },
+ },
}>,
embedded: {
aggregations?: {
durations?: List<{
count?: number,
text?: string,
value?: number,
}>,
instructors?: List<{
id?: number,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
name?: string,
}>,
tags?: List<{
buckets?: List<{
count?: number,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
text?: string,
value?: string,
}>,
value?: string,
}>,
},
},
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}POST /workouts/process 
Process workout - Internal use only
Request Body
{
rideIndex?: {
appversion: string,
avgcadence: number,
avgresistance: number,
classimage: string,
classname: string,
datecreated: number,
device: string,
dnf: bool,
finalrank: number,
incline: number,
instanceuuid?: string,
instructorname: string,
iscomplete: bool,
osversion: string,
rideid: number,
ridetype?: string,
source: string,
totalcalories: number,
totaldistance: number,
totalhrpoints: number,
totaloutput: number,
totalriders: number,
userid?: number,
},
rideIndexById?: {
appversion: string,
avgcadence: number,
avgheartrate: number,
avgresistance: number,
classimage: string,
classname: string,
device: string,
dnf: bool,
duration: number,
encore: bool,
finalrank: number,
incline: number,
instanceuuid?: string,
instructorname: string,
iscomplete: bool,
osversion: string,
rideid: number,
ridetype: string,
source: string,
totalcalories: number,
totaldistance: number,
totalhrpoints: number,
totaloutput: number,
totalriders: number,
userid: number,
},
segment?: {
- activity_type?: string,
bike_statistics: {
cadence?: number,
calories?: number,
distance?: number,
output?: {
average?: number,
best?: number,
total?: number,
},
resistance?: {
average?: number,
maximum?: number,
},
speed?: number,
},
- class_length?: number,
- class_name?: string,
- content_id?: string,
- content_type?: 'encore' | 'freestyle' | 'live' | 'vod',
email?: string,
- equipment_type?: 'bike' | 'fitpass' | 'reflect' | 'row' | 'stride',
first_name?: string,
fitpass_statistics: {
calories?: number,
heart_rate_points?: number,
},
- instructor_id?: number,
- instructor_name?: string,
last_name?: string,
metric_preference?: 'imperial' | 'metric',
- music_genre?: string,
- place?: number,
platform?: string,
reflect_statistics: {
calories?: number,
heart_rate_points?: number,
},
rowing_statistics: {
calories?: number,
distance?: number,
output?: {
average?: number,
best?: number,
total?: number,
},
resistance?: {
average?: number,
maximum?: number,
},
speed?: number,
stroke?: {
average?: number,
maximum?: number,
},
},
stride_statistics: {
calories?: number,
distance?: number,
incline?: {
average?: number,
maximum?: number,
},
output?: {
average?: number,
best?: number,
total?: number,
},
speed?: {
average?: number,
maximum?: number,
},
},
user_id?: number,
},
workoutEntity?: {
buffering?: number,
commercialCode?: string,
completion?: number,
contentDuration?: number,
contentGuid?: string,
dateDeleted?: number,
dateEnd?: number,
dateStart?: number,
duration?: number,
format?: string,
guid?: string,
output?: number,
rankingPlace?: number,
rankingTotal?: number,
stats?: record,
type?: 'live' | 'vod' | 'encore' | 'freestyle',
userId?: number,
},
}POST /workouts/process 
Process workout - Internal use only
Request Body
{
rideIndex?: {
appversion: string,
avgcadence: number,
avgresistance: number,
classimage: string,
classname: string,
datecreated: number,
device: string,
dnf: bool,
finalrank: number,
incline: number,
instanceuuid?: string,
instructorname: string,
iscomplete: bool,
osversion: string,
rideid: number,
ridetype?: string,
source: string,
totalcalories: number,
totaldistance: number,
totalhrpoints: number,
totaloutput: number,
totalriders: number,
userid?: number,
},
rideIndexById?: {
appversion: string,
avgcadence: number,
avgheartrate: number,
avgresistance: number,
classimage: string,
classname: string,
device: string,
dnf: bool,
duration: number,
encore: bool,
finalrank: number,
incline: number,
instanceuuid?: string,
instructorname: string,
iscomplete: bool,
osversion: string,
rideid: number,
ridetype: string,
source: string,
totalcalories: number,
totaldistance: number,
totalhrpoints: number,
totaloutput: number,
totalriders: number,
userid: number,
},
segment?: {
+ activity_type: string,
bike_statistics: {
cadence?: number,
calories?: number,
distance?: number,
output?: {
average?: number,
best?: number,
total?: number,
},
resistance?: {
average?: number,
maximum?: number,
},
speed?: number,
},
+ class_length: number,
+ class_name: string,
+ content_id: string,
+ content_type: 'live' | 'vod' | 'encore' | 'freestyle',
email?: string,
+ equipment_type: 'bike' | 'fitpass' | 'reflect' | 'row' | 'stride',
first_name?: string,
fitpass_statistics: {
calories?: number,
heart_rate_points?: number,
},
+ instructor_id: number,
+ instructor_name: string,
last_name?: string,
metric_preference?: 'imperial' | 'metric',
+ music_genre: string,
+ place: number,
platform?: string,
reflect_statistics: {
calories?: number,
heart_rate_points?: number,
},
rowing_statistics: {
calories?: number,
distance?: number,
output?: {
average?: number,
best?: number,
total?: number,
},
resistance?: {
average?: number,
maximum?: number,
},
speed?: number,
stroke?: {
average?: number,
maximum?: number,
},
},
stride_statistics: {
calories?: number,
distance?: number,
incline?: {
average?: number,
maximum?: number,
},
output?: {
average?: number,
best?: number,
total?: number,
},
speed?: {
average?: number,
maximum?: number,
},
},
user_id?: number,
},
workoutEntity?: {
buffering?: number,
commercialCode?: string,
completion?: number,
contentDuration?: number,
contentGuid?: string,
dateDeleted?: number,
dateEnd?: number,
dateStart?: number,
duration?: number,
format?: string,
guid?: string,
output?: number,
rankingPlace?: number,
rankingTotal?: number,
stats?: record,
type?: 'live' | 'vod' | 'encore' | 'freestyle',
userId?: number,
},
}3 added endpoints Collapse added endpoints
Added endpoints
GET /favorites/{userId}/items 
List users favorite content items.
Guard: admin, customerService, self
Response Body
{
data: List<{
content?: {
format?: {
code?: string,
},
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
instructors?: List<{
bio?: string,
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
flags?: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>,
id?: number,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
name?: string,
status?: 'active' | 'inactive',
studio?: {
id?: number,
},
updatedBy?: {
id?: number,
},
user?: {
id?: number,
},
}>,
medium?: 'reflect' | 'standard',
name?: string,
scheduleGuid?: string,
status?: 'draft' | 'published' | 'trash',
tags?: List<{
description?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
modality?: 'ride' | 'row' | 'run' | 'off' | 'all',
text?: string,
type?: 'format' | 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'accessories' | 'focus',
value?: string,
}>,
},
dateCreated?: number,
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}