Nest Changelog
1.1.54
6/30/2022
1.1.55
7/7/2022
18 changed endpoints Collapse changed endpoints
POST /users 
Request Body
{
billingAddress: {
city: string,
country: {
code?: string,
},
postalCode: string,
region: {
code?: string,
},
streetLine1: string,
streetLine2: string,
},
birthdate: string,
dealer: {
id?: number,
},
email?: string,
firstName: string,
forcePasswordChange: bool,
gender: {
value?: 'm' | 'f' | 'o',
},
height: {
units?: 'in' | 'cm',
value?: number,
},
image: {
colors?: {
background?: {
hex?: string,
},
foreground?: {
hex?: string,
},
},
default: string,
initials?: string,
isPlaceholder?: bool,
large: string,
medium: string,
small: string,
url?: string,
},
lastName: string,
mongoId: string,
nickname: string,
parent: {
id?: number,
mongoId?: string,
},
password?: string,
phoneNumber: string,
purchaseHistory: List<{
datePurchased?: number,
name?: string,
retailer?: {
id?: number,
},
serialNumber?: string,
}>,
roles: List<string>,
tagline: string,
weight: {
units?: 'lb' | 'kg',
value?: number,
},
}POST /users 
Request Body
{
billingAddress: {
city: string,
country: {
code?: string,
},
postalCode: string,
region: {
code?: string,
},
streetLine1: string,
streetLine2: string,
},
birthdate: string,
+ captcha: {
+ token?: string,
+ },
dealer: {
id?: number,
},
email?: string,
firstName: string,
forcePasswordChange: bool,
gender: {
value?: 'm' | 'f' | 'o',
},
height: {
units?: 'in' | 'cm',
value?: number,
},
image: {
colors?: {
background?: {
hex?: string,
},
foreground?: {
hex?: string,
},
},
default: string,
initials?: string,
isPlaceholder?: bool,
large: string,
medium: string,
small: string,
url?: string,
},
lastName: string,
mongoId: string,
nickname: string,
parent: {
id?: number,
mongoId?: string,
},
password?: string,
phoneNumber: string,
purchaseHistory: List<{
datePurchased?: number,
name?: string,
retailer?: {
id?: number,
},
serialNumber?: string,
}>,
roles: List<string>,
tagline: string,
weight: {
units?: 'lb' | 'kg',
value?: number,
},
}POST /users/{userId}/family 
Request Body
{
billingAddress: {
city: string,
country: {
code?: string,
},
postalCode: string,
region: {
code?: string,
},
streetLine1: string,
streetLine2: string,
},
birthdate: string,
dealer: {
id?: number,
},
email?: string,
firstName: string,
forcePasswordChange: bool,
gender: {
value?: 'm' | 'f' | 'o',
},
height: {
units?: 'in' | 'cm',
value?: number,
},
image: {
colors?: {
background?: {
hex?: string,
},
foreground?: {
hex?: string,
},
},
default: string,
initials?: string,
isPlaceholder?: bool,
large: string,
medium: string,
small: string,
url?: string,
},
lastName: string,
mongoId: string,
nickname: string,
parent: {
id?: number,
mongoId?: string,
},
password?: string,
phoneNumber: string,
purchaseHistory: List<{
datePurchased?: number,
name?: string,
retailer?: {
id?: number,
},
serialNumber?: string,
}>,
roles: List<string>,
tagline: string,
weight: {
units?: 'lb' | 'kg',
value?: number,
},
}POST /users/{userId}/family 
Request Body
{
billingAddress: {
city: string,
country: {
code?: string,
},
postalCode: string,
region: {
code?: string,
},
streetLine1: string,
streetLine2: string,
},
birthdate: string,
+ captcha: {
+ token?: string,
+ },
dealer: {
id?: number,
},
email?: string,
firstName: string,
forcePasswordChange: bool,
gender: {
value?: 'm' | 'f' | 'o',
},
height: {
units?: 'in' | 'cm',
value?: number,
},
image: {
colors?: {
background?: {
hex?: string,
},
foreground?: {
hex?: string,
},
},
default: string,
initials?: string,
isPlaceholder?: bool,
large: string,
medium: string,
small: string,
url?: string,
},
lastName: string,
mongoId: string,
nickname: string,
parent: {
id?: number,
mongoId?: string,
},
password?: string,
phoneNumber: string,
purchaseHistory: List<{
datePurchased?: number,
name?: string,
retailer?: {
id?: number,
},
serialNumber?: string,
}>,
roles: List<string>,
tagline: string,
weight: {
units?: 'lb' | 'kg',
value?: number,
},
}GET /subscriptions/{id} 
Get a subscription
Response Body
{
data: {
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,
},
provisional?: {
isProvisioned?: bool,
},
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,
},
},
}GET /subscriptions/{id} 
Get a subscription
Response Body
{
data: {
activation?: {
isActivated?: bool,
},
billingProvider?: {
accountId?: string,
customerId?: string,
name?: 'stripe' | 'ios' | 'android' | 'amazon',
orderId?: string,
},
cancellation?: {
dateCancelled?: number,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
+ message?: 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,
},
provisional?: {
isProvisioned?: bool,
},
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 /subscriptions/{id}/activate 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Response Body
{
data: {
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,
},
provisional?: {
isProvisioned?: bool,
},
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 /subscriptions/{id}/activate 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Response Body
{
data: {
activation?: {
isActivated?: bool,
},
billingProvider?: {
accountId?: string,
customerId?: string,
name?: 'stripe' | 'ios' | 'android' | 'amazon',
orderId?: string,
},
cancellation?: {
dateCancelled?: number,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
+ message?: 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,
},
provisional?: {
isProvisioned?: bool,
},
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 /subscriptions 
create a blank subscription for testing purposes
Response Body
{
data: {
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,
},
provisional?: {
isProvisioned?: bool,
},
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,
},
},
tokenId?: string,
},
}POST /subscriptions 
create a blank subscription for testing purposes
Response Body
{
data: {
subscription?: {
activation?: {
isActivated?: bool,
},
billingProvider?: {
accountId?: string,
customerId?: string,
name?: 'stripe' | 'ios' | 'android' | 'amazon',
orderId?: string,
},
cancellation?: {
dateCancelled?: number,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
+ message?: 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,
},
provisional?: {
isProvisioned?: bool,
},
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,
},
},
tokenId?: string,
},
}GET /users/{userId}/account 
Return the current state of the user’s account with payment status
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,
},
provisional?: {
isProvisioned?: bool,
},
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,
},
},
},
}GET /users/{userId}/account 
Return the current state of the user’s account with payment status
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,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
+ message?: 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,
},
provisional?: {
isProvisioned?: bool,
},
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 
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,
},
},
},
}POST /users/{userId}/account/quote 
Response Body
{
data: {
charges?: {
+ balance?: {
+ currentBalance?: number,
+ futureCredit?: number,
+ },
billedToday?: {
discount?: number,
subtotal?: number,
total?: 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,
},
},
},
}POST /users/{userId}/account/cancel 
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,
},
provisional?: {
isProvisioned?: bool,
},
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/cancel 
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,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
+ message?: 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,
},
provisional?: {
isProvisioned?: bool,
},
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/uncancel 
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,
},
provisional?: {
isProvisioned?: bool,
},
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/uncancel 
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,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
+ message?: 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,
},
provisional?: {
isProvisioned?: bool,
},
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/pause 
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,
},
provisional?: {
isProvisioned?: bool,
},
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/pause 
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,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
+ message?: 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,
},
provisional?: {
isProvisioned?: bool,
},
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/unpause 
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,
},
provisional?: {
isProvisioned?: bool,
},
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/unpause 
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,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
+ message?: 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,
},
provisional?: {
isProvisioned?: bool,
},
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/terminate 
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,
},
provisional?: {
isProvisioned?: bool,
},
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/terminate 
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,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
+ message?: 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,
},
provisional?: {
isProvisioned?: bool,
},
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,
},
},
},
}GET /users/{userId}/subscriptions 
Get a list of a user's subscriptions.
Response Body
{
data: List<{
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,
},
provisional?: {
isProvisioned?: bool,
},
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,
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /users/{userId}/subscriptions 
Get a list of a user's subscriptions.
Response Body
{
data: List<{
activation?: {
isActivated?: bool,
},
billingProvider?: {
accountId?: string,
customerId?: string,
name?: 'stripe' | 'ios' | 'android' | 'amazon',
orderId?: string,
},
cancellation?: {
dateCancelled?: number,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
+ message?: 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,
},
provisional?: {
isProvisioned?: bool,
},
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,
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /users/{userId}/subscriptions/{id} 
Get a specific subscription.
Response Body
{
data: {
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,
},
provisional?: {
isProvisioned?: bool,
},
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,
},
},
}GET /users/{userId}/subscriptions/{id} 
Get a specific subscription.
Response Body
{
data: {
activation?: {
isActivated?: bool,
},
billingProvider?: {
accountId?: string,
customerId?: string,
name?: 'stripe' | 'ios' | 'android' | 'amazon',
orderId?: string,
},
cancellation?: {
dateCancelled?: number,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
+ message?: 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,
},
provisional?: {
isProvisioned?: bool,
},
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 /collections 
Create a new Collection
Guard: producer
Request Body
{
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage: {
data?: string,
filename?: string,
},
coverImage: {
data?: string,
filename?: string,
},
description?: string,
durationDays?: number,
episodeWord?: string,
name?: string,
schedule: List<{
guid?: string,
- sortOrder?: number,
}>,
showcase: List<{
country?: {
code?: string,
},
sortOrder?: number,
tagValue?: string,
}>,
sortOrder?: number,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
}Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
coverImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
name?: string,
studios?: List<{
id?: number,
name?: string,
}>,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
showcase?: List<{
collectionGuid?: string,
country?: {
code?: string,
},
guid?: string,
sortOrder?: number,
tagValue?: string,
}>,
sortOrder?: number,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}POST /collections 
Create a new Collection
Guard: loggedIn
Request Body
{
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage: {
data?: string,
filename?: string,
},
coverImage: {
data?: string,
filename?: string,
},
description?: string,
durationDays?: number,
episodeWord?: string,
name?: string,
schedule: List<{
guid?: string,
+ sortOrder: number,
}>,
showcase: List<{
country?: {
code?: string,
},
sortOrder?: number,
tagValue?: string,
}>,
sortOrder?: number,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
}Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
coverImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
name?: string,
studios?: List<{
id?: number,
name?: string,
}>,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
showcase?: List<{
collectionGuid?: string,
country?: {
code?: string,
},
guid?: string,
sortOrder?: number,
tagValue?: string,
}>,
sortOrder?: 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,
+ }>,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}GET /collections/{guid} 
Get a collection by guid
Guard: producer
Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
coverImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
name?: string,
studios?: List<{
id?: number,
name?: string,
}>,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
showcase?: List<{
collectionGuid?: string,
country?: {
code?: string,
},
guid?: string,
sortOrder?: number,
tagValue?: string,
}>,
sortOrder?: number,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}GET /collections/{guid} 
Get a collection by guid
Guard: loggedIn
Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
coverImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
name?: string,
studios?: List<{
id?: number,
name?: string,
}>,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
showcase?: List<{
collectionGuid?: string,
country?: {
code?: string,
},
guid?: string,
sortOrder?: number,
tagValue?: string,
}>,
sortOrder?: 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,
+ }>,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}PATCH /collections/{guid} 
Update a Collection
Guard: producer
Request Body
{
available: {
end?: number,
start?: number,
},
badge: {
guid?: string,
},
cardImage: {
data?: string,
filename?: string,
},
coverImage: {
data?: string,
filename?: string,
},
description: string,
durationDays: number,
episodeWord: string,
name: string,
schedule: List<{
guid?: string,
- sortOrder?: number,
}>,
showcase: List<{
country?: {
code?: string,
},
sortOrder?: number,
tagValue?: string,
}>,
sortOrder: number,
totalCount: number,
type: 'generic' | 'series' | 'challenge' | 'program',
visibility: 'public' | 'unlisted' | 'private' | 'trash',
}Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
coverImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
name?: string,
studios?: List<{
id?: number,
name?: string,
}>,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
showcase?: List<{
collectionGuid?: string,
country?: {
code?: string,
},
guid?: string,
sortOrder?: number,
tagValue?: string,
}>,
sortOrder?: number,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}PATCH /collections/{guid} 
Update a Collection
Guard: loggedIn
Request Body
{
available: {
end?: number,
start?: number,
},
badge: {
guid?: string,
},
cardImage: {
data?: string,
filename?: string,
},
coverImage: {
data?: string,
filename?: string,
},
description: string,
durationDays: number,
episodeWord: string,
name: string,
schedule: List<{
guid?: string,
+ sortOrder: number,
}>,
showcase: List<{
country?: {
code?: string,
},
sortOrder?: number,
tagValue?: string,
}>,
sortOrder: number,
totalCount: number,
type: 'generic' | 'series' | 'challenge' | 'program',
visibility: 'public' | 'unlisted' | 'private' | 'trash',
}Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
coverImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
name?: string,
studios?: List<{
id?: number,
name?: string,
}>,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
showcase?: List<{
collectionGuid?: string,
country?: {
code?: string,
},
guid?: string,
sortOrder?: number,
tagValue?: string,
}>,
sortOrder?: 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,
+ }>,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}9 added endpoints Collapse added endpoints
POST /webhooks/invoice-upcoming 
Request Body
{
amountDue?: number,
amountPaid?: number,
amountTotal?: number,
attemptCount?: number,
attempted?: bool,
billingProviderId?: string,
billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual',
currencyCode?: string,
dateCreated?: number,
dateNextAttempt?: number,
datePeriodEnd?: number,
datePeriodStart?: number,
initiatedBy?: {
id?: number,
},
internalNote?: string,
isAutomaticCollection?: bool,
isManualPayment?: bool,
isPaid?: bool,
publicNote?: string,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
message?: string,
},
status?: string,
}POST /webhooks/invoice-paid 
Request Body
{
amountDue?: number,
amountPaid?: number,
amountTotal?: number,
attemptCount?: number,
attempted?: bool,
billingProviderId?: string,
billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual',
currencyCode?: string,
dateCreated?: number,
dateNextAttempt?: number,
datePeriodEnd?: number,
datePeriodStart?: number,
initiatedBy?: {
id?: number,
},
internalNote?: string,
isAutomaticCollection?: bool,
isManualPayment?: bool,
isPaid?: bool,
publicNote?: string,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
message?: string,
},
status?: string,
}POST /webhooks/payment-failure 
Request Body
{
amountDue?: number,
amountPaid?: number,
amountTotal?: number,
attemptCount?: number,
attempted?: bool,
billingProviderId?: string,
billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual',
currencyCode?: string,
dateCreated?: number,
dateNextAttempt?: number,
datePeriodEnd?: number,
datePeriodStart?: number,
initiatedBy?: {
id?: number,
},
internalNote?: string,
isAutomaticCollection?: bool,
isManualPayment?: bool,
isPaid?: bool,
publicNote?: string,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
message?: string,
},
status?: string,
}POST /users/{userId}/account/change 
Guard: selfOrAdmin
Request Body
{
addOns: List<number>,
internalNote: string,
planId?: number,
publicNote: string,
}Response Body
{
data: {
charges?: {
balance?: {
currentBalance?: number,
futureCredit?: number,
},
billedToday?: {
discount?: number,
subtotal?: number,
total?: 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 /collections 
List collections
Guard: loggedIn
Response Body
{
data: List<{
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
coverImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
name?: string,
studios?: List<{
id?: number,
name?: string,
}>,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
showcase?: List<{
collectionGuid?: string,
country?: {
code?: string,
},
guid?: string,
sortOrder?: number,
tagValue?: string,
}>,
sortOrder?: 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,
}>,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}DELETE /collections/{guid}/schedule/{scheduleGuid} 
Delete a schedule item from a collection
Guard: loggedIn
PUT /collections/{guid}/schedule/{scheduleGuid} 
Add a schedule item to a collection
Guard: loggedIn
Request Body
{
sortOrder: number,
}Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
coverImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
description?: string,
durationDays?: number,
episodeWord?: string,
guid?: string,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
description?: string,
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
name?: string,
}>,
name?: string,
studios?: List<{
id?: number,
name?: string,
}>,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
showcase?: List<{
collectionGuid?: string,
country?: {
code?: string,
},
guid?: string,
sortOrder?: number,
tagValue?: string,
}>,
sortOrder?: 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,
}>,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}POST /users/{userId}/account/extend 
Guard: selfOrAdmin
Request Body
{
durationDays?: number,
internalNote: string,
publicNote: string,
reason: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other',
message?: string,
},
}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,
},
provisional?: {
isProvisioned?: bool,
},
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,
},
},
},
}