Nest Changelog
1.28.10
6/8/2023
1.29.0 PRE
6/6/2023
6 changed endpoints Collapse changed endpoints
POST /webhooks/orders 
Request Body
{
customer?: {
email?: string,
firstName?: string,
lastName?: string,
},
initiatedBy: {
id?: number,
},
internalNote: string,
isFirstPeriodPrepaid?: bool,
- offerGuid: string,
publicNote: string,
reason: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
retailer?: {
orderCode?: string,
partner?: {
id?: number,
},
storeCode: string,
},
sourceName?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
utm: {
campaign: string,
content: string,
medium: string,
source: string,
term: string,
},
}POST /webhooks/orders 
Request Body
{
customer?: {
email?: string,
firstName?: string,
lastName?: string,
},
initiatedBy: {
id?: number,
},
internalNote: string,
isFirstPeriodPrepaid?: bool,
+ offerGuid?: string,
publicNote: string,
reason: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
retailer?: {
orderCode?: string,
partner?: {
id?: number,
},
storeCode: string,
},
sourceName?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
utm: {
campaign: string,
content: string,
medium: string,
source: string,
term: string,
},
}POST /workouts/items 
Post a Workout
Request Body
{
- content?: {
guid?: string,
type?: 'live' | 'vod' | 'encore' | 'freestyle',
},
device?: {
appVersion?: string,
model?: string,
os?: string,
osVersion?: string,
},
legacyProduct?: string,
localTime?: string,
peripherals?: List<{
firmwareVersion?: string,
guid?: string,
hardwareVersion?: string,
modelId?: string,
name?: string,
serialNO?: string,
type?: 'bike' | 'rower' | 'treadmill',
}>,
- ranking?: {
place?: number,
total?: number,
},
stats?: List<{
classState?: 'warmup' | 'in-session' | 'overflow' | 'ended',
dateLoggedMs?: number,
output?: {
distance: number,
incrementalDistance: number,
joules: number,
RPM: number,
strokesPerMinute: number,
time500Meters: number,
watts: number,
},
- peripheral?: {
guid: string,
incline: number,
resistance: number,
speed: number,
},
physiology?: {
calories: number,
heartRate: number,
hrPoints: number,
},
playbackState?: 'playing' | 'paused' | 'stopped' | 'buffering',
}>,
user?: {
id?: number,
},
}POST /workouts/items 
Post a Workout
Request Body
{
+ content: {
guid?: string,
type?: 'live' | 'vod' | 'encore' | 'freestyle',
},
device?: {
appVersion?: string,
model?: string,
os?: string,
osVersion?: string,
},
legacyProduct?: string,
localTime?: string,
peripherals?: List<{
firmwareVersion?: string,
guid?: string,
hardwareVersion?: string,
modelId?: string,
name?: string,
serialNO?: string,
type?: 'bike' | 'rower' | 'treadmill',
}>,
+ ranking: {
place?: number,
total?: number,
},
stats?: List<{
classState?: 'warmup' | 'in-session' | 'overflow' | 'ended',
dateLoggedMs?: number,
output?: {
distance: number,
incrementalDistance: number,
joules: number,
RPM: number,
strokesPerMinute: number,
time500Meters: number,
watts: number,
},
+ peripheral: {
guid: string,
incline: number,
resistance: number,
speed: number,
},
physiology?: {
calories: number,
heartRate: number,
hrPoints: number,
},
playbackState?: 'playing' | 'paused' | 'stopped' | 'buffering',
}>,
user?: {
id?: number,
},
}PUT /workouts/items/{guid} 
Put a Workout
Request Body
{
- content?: {
guid?: string,
type?: 'live' | 'vod' | 'encore' | 'freestyle',
},
device?: {
appVersion?: string,
model?: string,
os?: string,
osVersion?: string,
},
legacyProduct?: string,
localTime?: string,
peripherals?: List<{
firmwareVersion?: string,
guid?: string,
hardwareVersion?: string,
modelId?: string,
name?: string,
serialNO?: string,
type?: 'bike' | 'rower' | 'treadmill',
}>,
- ranking?: {
place?: number,
total?: number,
},
stats?: List<{
classState?: 'warmup' | 'in-session' | 'overflow' | 'ended',
dateLoggedMs?: number,
output?: {
distance: number,
incrementalDistance: number,
joules: number,
RPM: number,
strokesPerMinute: number,
time500Meters: number,
watts: number,
},
- peripheral?: {
guid: string,
incline: number,
resistance: number,
speed: number,
},
physiology?: {
calories: number,
heartRate: number,
hrPoints: number,
},
playbackState?: 'playing' | 'paused' | 'stopped' | 'buffering',
}>,
user?: {
id?: number,
},
}PUT /workouts/items/{guid} 
Put a Workout
Request Body
{
+ content: {
guid?: string,
type?: 'live' | 'vod' | 'encore' | 'freestyle',
},
device?: {
appVersion?: string,
model?: string,
os?: string,
osVersion?: string,
},
legacyProduct?: string,
localTime?: string,
peripherals?: List<{
firmwareVersion?: string,
guid?: string,
hardwareVersion?: string,
modelId?: string,
name?: string,
serialNO?: string,
type?: 'bike' | 'rower' | 'treadmill',
}>,
+ ranking: {
place?: number,
total?: number,
},
stats?: List<{
classState?: 'warmup' | 'in-session' | 'overflow' | 'ended',
dateLoggedMs?: number,
output?: {
distance: number,
incrementalDistance: number,
joules: number,
RPM: number,
strokesPerMinute: number,
time500Meters: number,
watts: number,
},
+ peripheral: {
guid: string,
incline: number,
resistance: number,
speed: number,
},
physiology?: {
calories: number,
heartRate: number,
hrPoints: number,
},
playbackState?: 'playing' | 'paused' | 'stopped' | 'buffering',
}>,
user?: {
id?: number,
},
}POST /users/{userId}/account/activate 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Request Body
{
applyBillingDelay: bool,
billingAddress: {
city: string,
country: {
code?: string,
},
postalCode: string,
region: {
code?: string,
},
streetLine1: string,
streetLine2: string,
},
- cardTokenId?: string,
equipment: {
id?: number,
},
firstName: string,
isFirstPeriodPrepaid: bool,
lastName: string,
partner: {
id?: number,
},
phoneNumber: string,
redemptionCode: string,
serialNumber: string,
utm: {
campaign: string,
content: string,
medium: string,
source: string,
term: string,
},
}POST /users/{userId}/account/activate 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Request Body
{
applyBillingDelay: bool,
billingAddress: {
city: string,
country: {
code?: string,
},
postalCode: string,
region: {
code?: string,
},
streetLine1: string,
streetLine2: string,
},
+ cardTokenId: string,
equipment: {
id?: number,
},
firstName: string,
isFirstPeriodPrepaid: bool,
lastName: string,
partner: {
id?: number,
},
+ paymentMethodId: string,
phoneNumber: string,
redemptionCode: string,
serialNumber: string,
utm: {
campaign: string,
content: string,
medium: string,
source: string,
term: string,
},
}POST /users/{userId}/account/subscribe 
Create a new subscription in stripe
Request Body
{
applyBillingDelay: bool,
billingAddress: {
city: string,
country: {
code?: string,
},
postalCode: string,
region: {
code?: string,
},
streetLine1: string,
streetLine2: string,
},
- cardTokenId?: string,
equipment: {
id?: number,
},
firstName: string,
isFirstPeriodPrepaid: bool,
lastName: string,
offer: {
guid?: string,
},
partner: {
id?: number,
},
phoneNumber: string,
planId: number,
redemptionCode: string,
serialNumber: string,
utm: {
campaign: string,
content: string,
medium: string,
source: string,
term: string,
},
}POST /users/{userId}/account/subscribe 
Create a new subscription in stripe
Request Body
{
applyBillingDelay: bool,
billingAddress: {
city: string,
country: {
code?: string,
},
postalCode: string,
region: {
code?: string,
},
streetLine1: string,
streetLine2: string,
},
+ cardTokenId: string,
equipment: {
id?: number,
},
firstName: string,
isFirstPeriodPrepaid: bool,
lastName: string,
offer: {
guid?: string,
},
partner: {
id?: number,
},
+ paymentMethodId: string,
phoneNumber: string,
planId: number,
redemptionCode: string,
serialNumber: string,
utm: {
campaign: string,
content: string,
medium: string,
source: string,
term: string,
},
}