Nest Changelog
1.23.9 PRE
4/6/2023
1.24.0 PRE
4/10/2023
9 changed endpoints Collapse changed endpoints
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,
},
},
}GET /collections/items 
List collections. Does not return user-favorites. Cache refresh: 10 minutes.
Response Body
{
data: List<{
available?: {
end?: number,
start?: number,
},
badge?: {
+ eventCode?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
+ translations?: record,
},
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,
}>,
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',
},
}POST /collections/items 
Create a new Collection
Request Body
{
available?: {
end?: number,
start?: number,
},
badge?: {
+ eventCode?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
+ translations?: record,
},
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?: {
+ eventCode?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
+ translations?: record,
},
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,
}>,
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?: {
+ eventCode?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
+ translations?: record,
},
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,
},
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',
},
}PATCH /collections/items/{guid} 
Update a Collection
Request Body
{
available: {
end?: number,
start?: number,
},
badge: {
+ eventCode?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
+ translations?: record,
},
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?: {
+ eventCode?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
+ translations?: record,
},
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,
}>,
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',
},
}PUT /collections/items/{guid}/schedule/{scheduleGuid} 
Add a content schedule item to a collection
Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
+ eventCode?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
+ translations?: record,
},
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 /badges 
Get a list of badges
Response Body
{
data: List<{
eventCode?: string,
guid?: string,
translations?: record,
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}GET /badges 
Get a list of badges
Response Body
{
data: List<{
eventCode?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
translations?: record,
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}PATCH /badges/{guid} 
Edit a badge
Request Body
{
eventCode: string,
guid: string,
translations: record,
}Response Body
{
data: {
eventCode?: string,
guid?: string,
translations?: record,
},
}PATCH /badges/{guid} 
Edit a badge
Request Body
{
eventCode: string,
guid: string,
+ images: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
translations: record,
}Response Body
{
data: {
eventCode?: string,
guid?: string,
+ images?: {
+ default?: string,
+ hd?: string,
+ portrait?: string,
+ sd?: string,
+ square?: string,
+ },
translations?: record,
},
}4 added endpoints Collapse added endpoints
Added endpoints
GET /users/{userId}/collections/{collectionGuid}/progress 
Get users progress on this collection
Guard: admin, family
Response Body
{
data: List<{
contentGuid?: string,
workoutGuid?: string,
}>,
}GET /users/{userId}/badges 
Get users badges
Guard: admin, family
Response Body
{
data: List<{
awarded?: {
content?: {
guid?: string,
},
date?: number,
workout?: {
guid?: string,
},
},
badge?: {
description?: string,
guid?: string,
images?: {
default?: string,
hd?: string,
portrait?: string,
sd?: string,
square?: string,
},
text?: string,
type?: 'milestone' | 'collection' | 'streak',
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total?: {
pages?: number,
rows?: number,
},
},
}