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, }, }, }