Nest Changelog
1.5.4
10/17/2022
1.5.6
10/17/2022
57 changed endpoints Collapse changed endpoints
POST /webhooks/invoice-upcoming 
Request Body
{
amountDue?: number,
amountPaid?: number,
amountTotal?: number,
attemptCount?: number,
attempted?: bool,
billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
currencyCode?: string,
dateCreated?: number,
dateNextAttempt?: number,
datePeriodEnd?: number,
datePeriodStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
isAutomaticCollection?: bool,
isManualPayment?: bool,
isPaid?: bool,
orderCode?: string,
publicNote: string,
- reason: record,
sourceCode?: string,
sourceName?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}POST /webhooks/invoice-upcoming 
Request Body
{
amountDue?: number,
amountPaid?: number,
amountTotal?: number,
attemptCount?: number,
attempted?: bool,
billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
currencyCode?: string,
dateCreated?: number,
dateNextAttempt?: number,
datePeriodEnd?: number,
datePeriodStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
isAutomaticCollection?: bool,
isManualPayment?: bool,
isPaid?: bool,
orderCode?: string,
publicNote: string,
+ reason: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
+ message?: string,
+ },
sourceCode?: string,
sourceName?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}POST /webhooks/invoice-paid 
Request Body
{
amountDue?: number,
amountPaid?: number,
amountTotal?: number,
attemptCount?: number,
attempted?: bool,
billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
currencyCode?: string,
dateCreated?: number,
dateNextAttempt?: number,
datePeriodEnd?: number,
datePeriodStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
isAutomaticCollection?: bool,
isManualPayment?: bool,
isPaid?: bool,
orderCode?: string,
publicNote: string,
- reason: record,
sourceCode?: string,
sourceName?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}POST /webhooks/invoice-paid 
Request Body
{
amountDue?: number,
amountPaid?: number,
amountTotal?: number,
attemptCount?: number,
attempted?: bool,
billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
currencyCode?: string,
dateCreated?: number,
dateNextAttempt?: number,
datePeriodEnd?: number,
datePeriodStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
isAutomaticCollection?: bool,
isManualPayment?: bool,
isPaid?: bool,
orderCode?: string,
publicNote: string,
+ reason: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
+ message?: string,
+ },
sourceCode?: string,
sourceName?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}POST /webhooks/payment-failure 
Request Body
{
amountDue?: number,
amountPaid?: number,
amountTotal?: number,
attemptCount?: number,
attempted?: bool,
billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
currencyCode?: string,
dateCreated?: number,
dateNextAttempt?: number,
datePeriodEnd?: number,
datePeriodStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
isAutomaticCollection?: bool,
isManualPayment?: bool,
isPaid?: bool,
orderCode?: string,
publicNote: string,
- reason: record,
sourceCode?: string,
sourceName?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}POST /webhooks/payment-failure 
Request Body
{
amountDue?: number,
amountPaid?: number,
amountTotal?: number,
attemptCount?: number,
attempted?: bool,
billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
currencyCode?: string,
dateCreated?: number,
dateNextAttempt?: number,
datePeriodEnd?: number,
datePeriodStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
isAutomaticCollection?: bool,
isManualPayment?: bool,
isPaid?: bool,
orderCode?: string,
publicNote: string,
+ reason: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
+ message?: string,
+ },
sourceCode?: string,
sourceName?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}POST /webhooks/subscription-created 
Request Body
{
billingCycleAnchor?: number,
createdAt?: number,
dateCancelled?: number,
dateExpire?: number,
datePausedUntil?: number,
dateStart?: number,
dateTrialEnd?: number,
dateTrialStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
orderCode?: string,
publicNote: string,
- reason: record,
renewedAt?: number,
sourceCode?: string,
sourceType?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}POST /webhooks/subscription-created 
Request Body
{
billingCycleAnchor?: number,
createdAt?: number,
dateCancelled?: number,
dateExpire?: number,
datePausedUntil?: number,
dateStart?: number,
dateTrialEnd?: number,
dateTrialStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
orderCode?: string,
+ plan?: {
+ basePrice: {
+ currency?: {
+ code?: string,
+ scale?: number,
+ symbol?: string,
+ },
+ value?: number,
+ },
+ benefits: List<{
+ text?: string,
+ }>,
+ billingProvider: {
+ credentialsKey?: string,
+ id?: number,
+ name?: string,
+ organizationCode?: string,
+ priceCode?: string,
+ productCode?: string,
+ type?: 'stripe' | 'apple' | 'google' | 'amazon',
+ },
+ 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,
+ source: {
+ accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
+ productId?: string,
+ },
+ tags: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
+ updatedBy: {
+ id?: number,
+ },
+ },
publicNote: string,
+ reason: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
+ message?: string,
+ },
renewedAt?: number,
+ shopifyCustomerCode: string,
sourceCode?: string,
sourceType?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}POST /webhooks/subscription-deleted 
Request Body
{
billingCycleAnchor?: number,
createdAt?: number,
dateCancelled?: number,
dateExpire?: number,
datePausedUntil?: number,
dateStart?: number,
dateTrialEnd?: number,
dateTrialStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
orderCode?: string,
publicNote: string,
- reason: record,
renewedAt?: number,
sourceCode?: string,
sourceType?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}POST /webhooks/subscription-deleted 
Request Body
{
billingCycleAnchor?: number,
createdAt?: number,
dateCancelled?: number,
dateExpire?: number,
datePausedUntil?: number,
dateStart?: number,
dateTrialEnd?: number,
dateTrialStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
orderCode?: string,
+ plan?: {
+ basePrice: {
+ currency?: {
+ code?: string,
+ scale?: number,
+ symbol?: string,
+ },
+ value?: number,
+ },
+ benefits: List<{
+ text?: string,
+ }>,
+ billingProvider: {
+ credentialsKey?: string,
+ id?: number,
+ name?: string,
+ organizationCode?: string,
+ priceCode?: string,
+ productCode?: string,
+ type?: 'stripe' | 'apple' | 'google' | 'amazon',
+ },
+ 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,
+ source: {
+ accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
+ productId?: string,
+ },
+ tags: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
+ updatedBy: {
+ id?: number,
+ },
+ },
publicNote: string,
+ reason: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
+ message?: string,
+ },
renewedAt?: number,
+ shopifyCustomerCode: string,
sourceCode?: string,
sourceType?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}POST /webhooks/subscription-updated 
Request Body
{
billingCycleAnchor?: number,
createdAt?: number,
dateCancelled?: number,
dateExpire?: number,
datePausedUntil?: number,
dateStart?: number,
dateTrialEnd?: number,
dateTrialStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
orderCode?: string,
publicNote: string,
- reason: record,
renewedAt?: number,
sourceCode?: string,
sourceType?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}POST /webhooks/subscription-updated 
Request Body
{
billingCycleAnchor?: number,
createdAt?: number,
dateCancelled?: number,
dateExpire?: number,
datePausedUntil?: number,
dateStart?: number,
dateTrialEnd?: number,
dateTrialStart?: number,
initiatedBy: {
id?: number,
},
internalNote: string,
orderCode?: string,
+ plan?: {
+ basePrice: {
+ currency?: {
+ code?: string,
+ scale?: number,
+ symbol?: string,
+ },
+ value?: number,
+ },
+ benefits: List<{
+ text?: string,
+ }>,
+ billingProvider: {
+ credentialsKey?: string,
+ id?: number,
+ name?: string,
+ organizationCode?: string,
+ priceCode?: string,
+ productCode?: string,
+ type?: 'stripe' | 'apple' | 'google' | 'amazon',
+ },
+ 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,
+ source: {
+ accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
+ productId?: string,
+ },
+ tags: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
+ updatedBy: {
+ id?: number,
+ },
+ },
publicNote: string,
+ reason: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
+ message?: string,
+ },
renewedAt?: number,
+ shopifyCustomerCode: string,
sourceCode?: string,
sourceType?: 'stripe' | 'apple' | 'google' | 'amazon',
sourceUserCode?: string,
status?: string,
}GET /plans 
Get all Plans
Response Body
{
data: List<{
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /plans 
Get all Plans
Response Body
{
data: List<{
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}POST /plans 
Create Plan
Request Body
{
basePrice?: {
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
},
country?: {
code?: string,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
- frequencyDays?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
}Response Body
{
data: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
}POST /plans 
Create Plan
Request Body
{
basePrice?: {
+ currency?: {
+ code?: string,
+ scale?: number,
+ symbol?: string,
+ },
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
+ name?: string,
+ organizationCode?: string,
+ priceCode?: string,
+ productCode?: string,
+ type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
+ id?: 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,
+ image?: {
+ data?: string,
+ filename?: string,
+ },
+ musicRights?: {
+ productId?: string,
+ vendor?: 'audibleMagic',
+ },
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
}Response Body
{
data: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
}PATCH /plans 
Update plans in bulk.
Request Body
{
data?: {
- benefits?: List<{
text?: string,
}>,
- description?: string,
- emailTemplateId?: number,
- family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
- name?: string,
- sku?: string,
- sortOrder?: number,
- source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
- tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
},
image: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
where?: {
countryCode: string,
ids: List<number>,
},
}PATCH /plans 
Update plans in bulk.
Request Body
{
data?: {
+ basePrice: {
+ currency?: {
+ code?: string,
+ scale?: number,
+ symbol?: string,
+ },
+ value?: number,
+ },
+ benefits: List<{
text?: string,
}>,
+ billingProvider: {
+ credentialsKey?: string,
+ id?: number,
+ name?: string,
+ organizationCode?: string,
+ priceCode?: string,
+ productCode?: string,
+ type?: 'stripe' | 'apple' | 'google' | 'amazon',
+ },
+ country: {
+ code?: string,
+ id?: 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,
+ image: {
+ data?: string,
+ filename?: string,
+ },
+ musicRights: {
+ productId?: string,
+ vendor?: 'audibleMagic',
+ },
+ name: string,
+ sku: string,
+ sortOrder: number,
+ source: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
+ tags: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
},
image: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
where?: {
countryCode: string,
ids: List<number>,
},
}GET /plans/{id} 
Get Plan by id
Response Body
{
data: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
}GET /plans/{id} 
Get Plan by id
Response Body
{
data: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
}PATCH /plans/{id} 
Update Plan
Request Body
{
- benefits?: List<{
text?: string,
}>,
- description?: string,
- emailTemplateId?: number,
- family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
- name?: string,
- sku?: string,
- sortOrder?: number,
- source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
- tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
}Response Body
{
data: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
}PATCH /plans/{id} 
Update Plan
Request Body
{
+ basePrice: {
+ currency?: {
+ code?: string,
+ scale?: number,
+ symbol?: string,
+ },
+ value?: number,
+ },
+ benefits: List<{
text?: string,
}>,
+ billingProvider: {
+ credentialsKey?: string,
+ id?: number,
+ name?: string,
+ organizationCode?: string,
+ priceCode?: string,
+ productCode?: string,
+ type?: 'stripe' | 'apple' | 'google' | 'amazon',
+ },
+ country: {
+ code?: string,
+ id?: 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,
+ image: {
+ data?: string,
+ filename?: string,
+ },
+ musicRights: {
+ productId?: string,
+ vendor?: 'audibleMagic',
+ },
+ name: string,
+ sku: string,
+ sortOrder: number,
+ source: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
+ tags: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
}Response Body
{
data: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
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 /auth 
Sign in with email address and password
Response Body
{
data: {
family?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
nickname?: string,
}>,
guid?: string,
jwt?: string,
mongoId?: string,
plan?: {
expires?: number,
features?: record,
id?: number,
name?: string,
planFamily?: {
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
},
},
userId?: number,
},
}POST /auth 
Sign in with email address and password
Response Body
{
data: {
family?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
nickname?: string,
}>,
guid?: string,
jwt?: string,
mongoId?: string,
plan?: {
expires?: number,
features?: record,
id?: number,
name?: string,
planFamily?: {
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
},
},
userId?: number,
},
}GET /auth/{sessionGuid} 
Refresh the token
Response Body
{
data: {
family?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
nickname?: string,
}>,
guid?: string,
jwt?: string,
mongoId?: string,
plan?: {
expires?: number,
features?: record,
id?: number,
name?: string,
planFamily?: {
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
},
},
userId?: number,
},
}GET /auth/{sessionGuid} 
Refresh the token
Response Body
{
data: {
family?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
nickname?: string,
}>,
guid?: string,
jwt?: string,
mongoId?: string,
plan?: {
expires?: number,
features?: record,
id?: number,
name?: string,
planFamily?: {
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
},
},
userId?: number,
},
}POST /auth/upgrade 
Trade in your token from the legacy token for a session
Response Body
{
data: {
family?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
nickname?: string,
}>,
guid?: string,
jwt?: string,
mongoId?: string,
plan?: {
expires?: number,
features?: record,
id?: number,
name?: string,
planFamily?: {
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
},
},
userId?: number,
},
}POST /auth/upgrade 
Trade in your token from the legacy token for a session
Response Body
{
data: {
family?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
nickname?: string,
}>,
guid?: string,
jwt?: string,
mongoId?: string,
plan?: {
expires?: number,
features?: record,
id?: number,
name?: string,
planFamily?: {
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
},
},
userId?: number,
},
}POST /auth/commercial 
COMMERCIAL QUICKSTART - Authenticate a single commercial piece of equipment
Response Body
{
data: {
family?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
nickname?: string,
}>,
guid?: string,
jwt?: string,
mongoId?: string,
plan?: {
expires?: number,
features?: record,
id?: number,
name?: string,
planFamily?: {
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
},
},
userId?: number,
},
}POST /auth/commercial 
COMMERCIAL QUICKSTART - Authenticate a single commercial piece of equipment
Response Body
{
data: {
family?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
nickname?: string,
}>,
guid?: string,
jwt?: string,
mongoId?: string,
plan?: {
expires?: number,
features?: record,
id?: number,
name?: string,
planFamily?: {
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
},
},
userId?: number,
},
}POST /auth/one-time-token 
Trade in your login token from a magic link for a session
Response Body
{
data: {
family?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
nickname?: string,
}>,
guid?: string,
jwt?: string,
mongoId?: string,
plan?: {
expires?: number,
features?: record,
id?: number,
name?: string,
planFamily?: {
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
},
},
userId?: number,
},
}POST /auth/one-time-token 
Trade in your login token from a magic link for a session
Response Body
{
data: {
family?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
nickname?: string,
}>,
guid?: string,
jwt?: string,
mongoId?: string,
plan?: {
expires?: number,
features?: record,
id?: number,
name?: string,
planFamily?: {
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
},
},
userId?: number,
},
}GET /subscriptions/{id} 
Get a subscription
Response Body
{
data: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
}GET /subscriptions/{id} 
Get a subscription
Response Body
{
data: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
}POST /subscriptions/{id}/quote 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Response Body
{
data: {
campaign?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateExpires?: number,
delayBillingDays?: number,
guid?: string,
name?: string,
partner?: {
id?: number,
name?: string,
},
utmCampaign?: string,
utmSource?: string,
},
dateFirstBilling?: number,
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
redemptionCode?: {
batchGuid?: string,
campaignCode?: string,
code?: string,
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBillingDays?: number,
eligibilityRequirements?: record,
plans?: List<{
id?: number,
}>,
redeemedBy?: {
id?: number,
},
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
stripeCoupon?: string,
subscription?: {
id?: number,
},
},
},
}POST /subscriptions/{id}/quote 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Response Body
{
data: {
campaign?: {
createdBy?: {
id?: number,
},
dateCreated?: number,
dateExpires?: number,
delayBillingDays?: number,
guid?: string,
name?: string,
partner?: {
id?: number,
name?: string,
},
utmCampaign?: string,
utmSource?: string,
},
dateFirstBilling?: number,
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
id?: number,
},
},
redemptionCode?: {
batchGuid?: string,
campaignCode?: string,
code?: string,
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBillingDays?: number,
eligibilityRequirements?: record,
plans?: List<{
id?: number,
}>,
redeemedBy?: {
id?: number,
},
referenceNumber?: string,
retailer?: {
bundleDays: number,
id?: number,
name: string,
},
serialNumber?: string,
status?: 'inactive' | 'active' | 'redeemed' | 'deleted',
stripeCoupon?: string,
subscription?: {
id?: number,
},
},
},
}POST /redemption-codes/{code}/redemption 
Redeem a single code
Response Body
{
data: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
}POST /redemption-codes/{code}/redemption 
Redeem a single code
Response Body
{
data: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
}GET /campaigns/{guid}/offers 
Get a list of offers available for this campaign.
Response Body
{
data: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
- basePrice?: {
- currency?: {
- code?: string,
- scale?: number,
- symbol?: string,
- },
- value?: number,
- },
- benefits?: List<{
- text?: string,
- }>,
- billingProvider?: {
- id?: number,
- name?: string,
- organizationCode?: string,
- priceCode?: string,
- productCode?: string,
- type?: 'stripe' | 'apple' | 'google' | 'amazon',
- },
- country?: {
code?: string,
- id?: number,
},
- createdBy?: {
- id?: number,
- },
- dateCreated?: number,
- dateUpdated?: number,
- defaultTrial?: {
- units?: 'day',
- value?: number,
- },
- delayBillingDays?: number,
- description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
- units?: 'month',
- value?: number,
},
- frequencyDays?: number,
id?: number,
- name?: string,
- sku?: string,
- sortOrder?: number,
- source?: {
- accountId?: string,
- productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
- },
- tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
- updatedBy?: {
- id?: number,
- },
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /campaigns/{guid}/offers 
Get a list of offers available for this campaign.
Response Body
{
data: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
+ currency?: {
code?: string,
+ scale?: number,
+ symbol?: string,
},
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
+ days?: number,
},
id?: number,
+ lineItems: List<{
+ text?: string,
+ }>,
+ name: string,
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /users/{userId}/account 
Return the user's account with the payment status and last/current paid subscription
Response Body
{
data: {
- creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
- defaultPaymentMethod?: {
- brand?: string,
- code?: string,
- expiration?: string,
- type?: string,
- },
- discounts?: {
- amount: number,
- dateEnd?: number,
- dateStart?: number,
- name?: string,
- percent: number,
- },
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
- code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}GET /users/{userId}/account 
Return the user's account with the payment status and last/current paid subscription
Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
},
}GET /users/{userId}/account/subscriptions 
Returns all of the accounts subscriptions
Response Body
{
data: List<{
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /users/{userId}/account/subscriptions 
Returns all of the accounts subscriptions
Response Body
{
data: List<{
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}POST /users/{userId}/account/payment 
Update the account payment method on a Stripe subscription
Response Body
{
data: {
- creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
- defaultPaymentMethod?: {
- brand?: string,
- code?: string,
- expiration?: string,
- type?: string,
- },
- discounts?: {
- amount: number,
- dateEnd?: number,
- dateStart?: number,
- name?: string,
- percent: number,
- },
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
- code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}POST /users/{userId}/account/payment 
Update the account payment method on a Stripe subscription
Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
},
}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,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
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,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
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/change 
Response Body
{
data: {
- creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
- defaultPaymentMethod?: {
- brand?: string,
- code?: string,
- expiration?: string,
- type?: string,
- },
- discounts?: {
- amount: number,
- dateEnd?: number,
- dateStart?: number,
- name?: string,
- percent: number,
- },
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
- code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}POST /users/{userId}/account/change 
Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
},
}POST /users/{userId}/account/cancel 
Request Body
{
- initiatedBy: {
- id?: number,
- },
internalNote: string,
publicNote: string,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
}Response Body
{
data: {
- creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
- defaultPaymentMethod?: {
- brand?: string,
- code?: string,
- expiration?: string,
- type?: string,
- },
- discounts?: {
- amount: number,
- dateEnd?: number,
- dateStart?: number,
- name?: string,
- percent: number,
- },
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
- code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}POST /users/{userId}/account/cancel 
Request Body
{
internalNote: string,
publicNote: string,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
}Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
},
}POST /users/{userId}/account/uncancel 
Request Body
{
- initiatedBy?: {
- id?: number,
- },
- internalNote?: string,
- publicNote?: string,
- reason?: record,
}Response Body
{
data: {
- creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
- defaultPaymentMethod?: {
- brand?: string,
- code?: string,
- expiration?: string,
- type?: string,
- },
- discounts?: {
- amount: number,
- dateEnd?: number,
- dateStart?: number,
- name?: string,
- percent: number,
- },
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
- code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}POST /users/{userId}/account/uncancel 
Request Body
{
+ internalNote: string,
+ publicNote: string,
}Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
},
}POST /users/{userId}/account/pause 
Request Body
{
durationDays?: number,
- initiatedBy: {
- id?: number,
- },
internalNote: string,
publicNote: string,
reason: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
}Response Body
{
data: {
- creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
- defaultPaymentMethod?: {
- brand?: string,
- code?: string,
- expiration?: string,
- type?: string,
- },
- discounts?: {
- amount: number,
- dateEnd?: number,
- dateStart?: number,
- name?: string,
- percent: number,
- },
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
- code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}POST /users/{userId}/account/pause 
Request Body
{
durationDays?: number,
internalNote: string,
publicNote: string,
reason: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
}Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
},
}POST /users/{userId}/account/unpause 
Request Body
{
- initiatedBy?: {
- id?: number,
- },
- internalNote?: string,
- publicNote?: string,
- reason?: record,
}Response Body
{
data: {
- creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
- defaultPaymentMethod?: {
- brand?: string,
- code?: string,
- expiration?: string,
- type?: string,
- },
- discounts?: {
- amount: number,
- dateEnd?: number,
- dateStart?: number,
- name?: string,
- percent: number,
- },
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
- code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}POST /users/{userId}/account/unpause 
Request Body
{
+ internalNote: string,
+ publicNote: string,
}Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
},
}POST /users/{userId}/account/terminate 
Request Body
{
- initiatedBy: {
- id?: number,
- },
internalNote: string,
publicNote: string,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
}Response Body
{
data: {
- creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
- defaultPaymentMethod?: {
- brand?: string,
- code?: string,
- expiration?: string,
- type?: string,
- },
- discounts?: {
- amount: number,
- dateEnd?: number,
- dateStart?: number,
- name?: string,
- percent: number,
- },
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
- code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}POST /users/{userId}/account/terminate 
Request Body
{
internalNote: string,
publicNote: string,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
}Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
},
}POST /users/{userId}/account/credit 
Request Body
{
durationDays?: number,
initiatedBy?: {
id?: number,
},
internalNote?: string,
publicNote?: string,
- reason?: record,
}Response Body
{
data: {
- creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
- defaultPaymentMethod?: {
- brand?: string,
- code?: string,
- expiration?: string,
- type?: string,
- },
- discounts?: {
- amount: number,
- dateEnd?: number,
- dateStart?: number,
- name?: string,
- percent: number,
- },
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
- code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}POST /users/{userId}/account/credit 
Request Body
{
durationDays?: number,
initiatedBy?: {
id?: number,
},
internalNote?: string,
publicNote?: string,
+ reason?: {
+ code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
+ message?: string,
+ },
}Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
},
}POST /users/{userId}/account/activate 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Response Body
{
data: {
- creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
- defaultPaymentMethod?: {
- brand?: string,
- code?: string,
- expiration?: string,
- type?: string,
- },
- discounts?: {
- amount: number,
- dateEnd?: number,
- dateStart?: number,
- name?: string,
- percent: number,
- },
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
- code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}POST /users/{userId}/account/activate 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
},
}POST /users/{userId}/account/subscribe 
Create a new subscription in stripe
Response Body
{
data: {
- creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
- defaultPaymentMethod?: {
- brand?: string,
- code?: string,
- expiration?: string,
- type?: string,
- },
- discounts?: {
- amount: number,
- dateEnd?: number,
- dateStart?: number,
- name?: string,
- percent: number,
- },
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
- code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}POST /users/{userId}/account/subscribe 
Create a new subscription in stripe
Response Body
{
data: {
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
},
}POST /users/{userId}/account/test-subscription 
create a blank subscription for testing purposes
Response Body
{
data: {
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
tokenId?: string,
},
}POST /users/{userId}/account/test-subscription 
create a blank subscription for testing purposes
Response Body
{
data: {
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
tokenId?: string,
},
}GET /partners/{id}/offers 
Get a list of offers available for this specific partner/retailer
Response Body
{
data: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
- basePrice?: {
- currency?: {
- code?: string,
- scale?: number,
- symbol?: string,
- },
- value?: number,
- },
- benefits?: List<{
- text?: string,
- }>,
- billingProvider?: {
- id?: number,
- name?: string,
- organizationCode?: string,
- priceCode?: string,
- productCode?: string,
- type?: 'stripe' | 'apple' | 'google' | 'amazon',
- },
- country?: {
code?: string,
- id?: number,
},
- createdBy?: {
- id?: number,
- },
- dateCreated?: number,
- dateUpdated?: number,
- defaultTrial?: {
- units?: 'day',
- value?: number,
- },
- delayBillingDays?: number,
- description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
- units?: 'month',
- value?: number,
},
- frequencyDays?: number,
id?: number,
- name?: string,
- sku?: string,
- sortOrder?: number,
- source?: {
- accountId?: string,
- productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
- },
- tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
- updatedBy?: {
- id?: number,
- },
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /partners/{id}/offers 
Get a list of offers available for this specific partner/retailer
Response Body
{
data: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
+ currency?: {
code?: string,
+ scale?: number,
+ symbol?: string,
},
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
+ days?: number,
},
id?: number,
+ lineItems: List<{
+ text?: string,
+ }>,
+ name: string,
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}POST /offers 
Create a new offer
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
- basePrice?: {
- currency?: {
- code?: string,
- scale?: number,
- symbol?: string,
- },
- value?: number,
- },
- benefits?: List<{
- text?: string,
- }>,
- billingProvider?: {
- id?: number,
- name?: string,
- organizationCode?: string,
- priceCode?: string,
- productCode?: string,
- type?: 'stripe' | 'apple' | 'google' | 'amazon',
- },
- country?: {
code?: string,
- id?: number,
},
- createdBy?: {
- id?: number,
- },
- dateCreated?: number,
- dateUpdated?: number,
- defaultTrial?: {
- units?: 'day',
- value?: number,
- },
- delayBillingDays?: number,
- description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
- units?: 'month',
- value?: number,
},
- frequencyDays?: number,
id?: number,
- name?: string,
- sku?: string,
- sortOrder?: number,
- source?: {
- accountId?: string,
- productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
- },
- tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
- updatedBy?: {
- id?: number,
- },
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
},
}POST /offers 
Create a new offer
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
+ currency?: {
code?: string,
+ scale?: number,
+ symbol?: string,
},
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
+ days?: number,
},
id?: number,
+ lineItems: List<{
+ text?: string,
+ }>,
+ name: string,
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
},
}GET /offers 
Get all offers
Response Body
{
data: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
- basePrice?: {
- currency?: {
- code?: string,
- scale?: number,
- symbol?: string,
- },
- value?: number,
- },
- benefits?: List<{
- text?: string,
- }>,
- billingProvider?: {
- id?: number,
- name?: string,
- organizationCode?: string,
- priceCode?: string,
- productCode?: string,
- type?: 'stripe' | 'apple' | 'google' | 'amazon',
- },
- country?: {
code?: string,
- id?: number,
},
- createdBy?: {
- id?: number,
- },
- dateCreated?: number,
- dateUpdated?: number,
- defaultTrial?: {
- units?: 'day',
- value?: number,
- },
- delayBillingDays?: number,
- description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
- units?: 'month',
- value?: number,
},
- frequencyDays?: number,
id?: number,
- name?: string,
- sku?: string,
- sortOrder?: number,
- source?: {
- accountId?: string,
- productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
- },
- tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
- updatedBy?: {
- id?: number,
- },
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /offers 
Get all offers
Response Body
{
data: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
+ currency?: {
code?: string,
+ scale?: number,
+ symbol?: string,
},
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
+ days?: number,
},
id?: number,
+ lineItems: List<{
+ text?: string,
+ }>,
+ name: string,
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /offers/{guid} 
Get a specific offer
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
- basePrice?: {
- currency?: {
- code?: string,
- scale?: number,
- symbol?: string,
- },
- value?: number,
- },
- benefits?: List<{
- text?: string,
- }>,
- billingProvider?: {
- id?: number,
- name?: string,
- organizationCode?: string,
- priceCode?: string,
- productCode?: string,
- type?: 'stripe' | 'apple' | 'google' | 'amazon',
- },
- country?: {
code?: string,
- id?: number,
},
- createdBy?: {
- id?: number,
- },
- dateCreated?: number,
- dateUpdated?: number,
- defaultTrial?: {
- units?: 'day',
- value?: number,
- },
- delayBillingDays?: number,
- description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
- units?: 'month',
- value?: number,
},
- frequencyDays?: number,
id?: number,
- name?: string,
- sku?: string,
- sortOrder?: number,
- source?: {
- accountId?: string,
- productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
- },
- tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
- updatedBy?: {
- id?: number,
- },
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
},
}GET /offers/{guid} 
Get a specific offer
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
+ currency?: {
code?: string,
+ scale?: number,
+ symbol?: string,
},
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
+ days?: number,
},
id?: number,
+ lineItems: List<{
+ text?: string,
+ }>,
+ name: string,
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
},
}PATCH /offers/{guid} 
Edit an offer
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
- basePrice?: {
- currency?: {
- code?: string,
- scale?: number,
- symbol?: string,
- },
- value?: number,
- },
- benefits?: List<{
- text?: string,
- }>,
- billingProvider?: {
- id?: number,
- name?: string,
- organizationCode?: string,
- priceCode?: string,
- productCode?: string,
- type?: 'stripe' | 'apple' | 'google' | 'amazon',
- },
- country?: {
code?: string,
- id?: number,
},
- createdBy?: {
- id?: number,
- },
- dateCreated?: number,
- dateUpdated?: number,
- defaultTrial?: {
- units?: 'day',
- value?: number,
- },
- delayBillingDays?: number,
- description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
- units?: 'month',
- value?: number,
},
- frequencyDays?: number,
id?: number,
- name?: string,
- sku?: string,
- sortOrder?: number,
- source?: {
- accountId?: string,
- productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
- },
- tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
- updatedBy?: {
- id?: number,
- },
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
},
}PATCH /offers/{guid} 
Edit an offer
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
+ currency?: {
code?: string,
+ scale?: number,
+ symbol?: string,
},
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
+ days?: number,
},
id?: number,
+ lineItems: List<{
+ text?: string,
+ }>,
+ name: string,
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
},
}GET /songs/{id}/playlists 
Get all playlists that contain this song
Response Body
{
data: List<{
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
- isWorldWide?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
videoLength?: {
id?: number,
name?: string,
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /songs/{id}/playlists 
Get all playlists that contain this song
Response Body
{
data: List<{
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
videoLength?: {
id?: number,
name?: string,
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /playlists 
Get a list of playlists
Response Body
{
data: List<{
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
- isWorldWide?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
trackCount?: number,
videoLength?: {
id?: number,
name?: string,
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /playlists 
Get a list of playlists
Response Body
{
data: List<{
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
trackCount?: number,
videoLength?: {
id?: number,
name?: string,
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}POST /playlists 
Create a new playlist
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
- isWorldWide?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}POST /playlists 
Create a new playlist
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}GET /playlists/{playlist} 
Get a single playlist by ID
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
- isWorldWide?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
tracks?: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright?: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights?: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags?: record,
},
trackOrder?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}GET /playlists/{playlist} 
Get a single playlist by ID
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
tracks?: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright?: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights?: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags?: record,
},
trackOrder?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}PATCH /playlists/{id} 
Update an existing playlist
Request Body
{
countries: List<{
code?: string,
}>,
createdBy: {
id?: number,
name?: string,
},
dateCreated: number,
dateUpdated: number,
id: number,
instructors: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged: bool,
- isWorldWide: bool,
legacyContentExplicit: bool,
name: string,
schedule: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
videoLength: {
id?: number,
name?: string,
},
}Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
- isWorldWide?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
tracks?: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright?: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights?: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags?: record,
},
trackOrder?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}PATCH /playlists/{id} 
Update an existing playlist
Request Body
{
countries: List<{
code?: string,
}>,
createdBy: {
id?: number,
name?: string,
},
dateCreated: number,
dateUpdated: number,
id: number,
instructors: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged: bool,
legacyContentExplicit: bool,
name: string,
schedule: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
videoLength: {
id?: number,
name?: string,
},
}Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
tracks?: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright?: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights?: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags?: record,
},
trackOrder?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}POST /playlists/{playlist}/import 
Import all songs from a playlist to another playlist
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
- isWorldWide?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
tracks?: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright?: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights?: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags?: record,
},
trackOrder?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}POST /playlists/{playlist}/import 
Import all songs from a playlist to another playlist
Response Body
{
data: {
countries?: List<{
code?: string,
}>,
createdBy?: {
id?: number,
name?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
instructors?: List<{
id?: number,
name?: string,
precedence?: number,
}>,
isFlagged?: bool,
legacyContentExplicit?: bool,
name?: string,
schedule?: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
content?: {
guid?: string,
},
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
studios?: List<{
id?: number,
name?: string,
precedence?: 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' | 'format',
value?: string,
}>,
tracks?: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
album?: {
id?: number,
name?: string,
},
artists?: List<{
id?: number,
name?: string,
}>,
copyright?: record,
coverArtUrl?: string,
duration?: {
seconds: number,
text: string,
},
genres?: List<string>,
id?: number,
isExplicit?: bool,
isrc?: string,
label?: {
id?: number,
name?: string,
},
labelOwner?: {
id?: number,
name?: string,
},
labelRights?: record,
name?: string,
publisherRights?: List<string>,
releaseDate?: number,
searchFlags?: record,
},
trackOrder?: number,
}>,
videoLength?: {
id?: number,
name?: string,
},
},
}GET /content/library 
Search for content in the Library
Response Body
{
data: List<{
contentGuid?: string,
countries?: List<{
code?: string,
}>,
dateLive?: number,
description?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
}>,
- isWorldWide?: bool,
length?: number,
name?: string,
playback?: {
type?: 'hls' | 'dash',
url?: string,
},
playlistId?: number,
scheduleGuid?: string,
status?: 'draft' | 'published' | 'trash',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
text?: string,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
value?: string,
}>,
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
embedded: {
aggregations?: {
durations?: List<{
- count?: number,
- text?: string,
- value?: number,
}>,
instructors?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
}>,
tags?: List<{
buckets?: List<{
count?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
value?: string,
}>,
value?: string,
}>,
},
},
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /content/library 
Search for content in the Library
Response Body
{
data: List<{
contentGuid?: string,
countries?: List<{
code?: string,
}>,
dateLive?: number,
description?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
}>,
length?: number,
name?: string,
playback?: {
type?: 'hls' | 'dash',
url?: string,
},
playlistId?: number,
scheduleGuid?: string,
status?: 'draft' | 'published' | 'trash',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
text?: string,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
value?: string,
}>,
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
embedded: {
aggregations?: {
durations?: List<{
}>,
instructors?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
}>,
tags?: List<{
buckets?: List<{
count?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
text?: string,
value?: string,
}>,
value?: string,
}>,
},
},
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}POST /content/items 
Create a content item
Request Body
{
countries?: List<{
code?: string,
}>,
description?: string,
image: {
data?: string,
filename?: string,
},
instructors?: List<{
id?: number,
precedence?: number,
}>,
- isWorldWide?: bool,
name?: string,
playlist?: {
id?: number,
},
status?: 'draft' | 'published',
studios?: List<{
id?: number,
precedence?: number,
}>,
tags?: List<{
value?: string,
}>,
videoLength?: {
id?: number,
},
}POST /content/items 
Create a content item
Request Body
{
countries?: List<{
code?: string,
}>,
description?: string,
image: {
data?: string,
filename?: string,
},
instructors?: List<{
id?: number,
precedence?: number,
}>,
name?: string,
playlist?: {
id?: number,
},
status?: 'draft' | 'published',
studios?: List<{
id?: number,
precedence?: number,
}>,
tags?: List<{
value?: string,
}>,
videoLength?: {
id?: number,
},
}PATCH /content/items/{guid} 
Update a content item
Request Body
{
countries: List<{
code?: string,
}>,
description: string,
image: {
data?: string,
filename?: string,
},
instructors: List<{
id?: number,
precedence?: number,
}>,
- isWorldWide: bool,
name: string,
playlist: {
id?: number,
},
status: 'draft' | 'published',
studios: List<{
id?: number,
precedence?: number,
}>,
tags: List<{
value?: string,
}>,
videoLength: {
id?: number,
},
- videoStatus: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
}PATCH /content/items/{guid} 
Update a content item
Request Body
{
countries: List<{
code?: string,
}>,
description: string,
image: {
data?: string,
filename?: string,
},
instructors: List<{
id?: number,
precedence?: number,
}>,
name: string,
playlist: {
id?: number,
},
status: 'draft' | 'published',
studios: List<{
id?: number,
precedence?: number,
}>,
tags: List<{
value?: string,
}>,
videoLength: {
id?: number,
},
}GET /content/recommendations 
Get content recommended for this user.
Response Body
{
data: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
contentGuid?: string,
countries?: List<{
code?: string,
}>,
dateLive?: number,
description?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
}>,
- isWorldWide?: bool,
length?: number,
name?: string,
playback?: {
type?: 'hls' | 'dash',
url?: string,
},
playlistId?: number,
scheduleGuid?: string,
score?: number,
status?: 'draft' | 'published' | 'trash',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
text?: string,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
value?: string,
}>,
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /content/recommendations 
Get content recommended for this user.
Response Body
{
data: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
contentGuid?: string,
countries?: List<{
code?: string,
}>,
dateLive?: number,
description?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors?: List<{
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
name?: string,
}>,
length?: number,
name?: string,
playback?: {
type?: 'hls' | 'dash',
url?: string,
},
playlistId?: number,
scheduleGuid?: string,
score?: number,
status?: 'draft' | 'published' | 'trash',
studios?: List<{
id?: number,
name?: string,
}>,
tags?: List<{
text?: string,
type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
value?: string,
}>,
type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /retailers/{id}/offers 
Get a list of offers that this retailer should have.
Response Body
{
data: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
- basePrice?: {
- currency?: {
- code?: string,
- scale?: number,
- symbol?: string,
- },
- value?: number,
- },
- benefits?: List<{
- text?: string,
- }>,
- billingProvider?: {
- id?: number,
- name?: string,
- organizationCode?: string,
- priceCode?: string,
- productCode?: string,
- type?: 'stripe' | 'apple' | 'google' | 'amazon',
- },
- country?: {
code?: string,
- id?: number,
},
- createdBy?: {
- id?: number,
- },
- dateCreated?: number,
- dateUpdated?: number,
- defaultTrial?: {
- units?: 'day',
- value?: number,
- },
- delayBillingDays?: number,
- description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
- units?: 'month',
- value?: number,
},
- frequencyDays?: number,
id?: number,
- name?: string,
- sku?: string,
- sortOrder?: number,
- source?: {
- accountId?: string,
- productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
- },
- tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
- updatedBy?: {
- id?: number,
- },
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /retailers/{id}/offers 
Get a list of offers that this retailer should have.
Response Body
{
data: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
+ currency?: {
code?: string,
+ scale?: number,
+ symbol?: string,
},
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
+ days?: number,
},
id?: number,
+ lineItems: List<{
+ text?: string,
+ }>,
+ name: string,
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
}>,
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,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: 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,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: 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,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
- emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
- code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
- type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
}GET /users/{userId}/subscriptions/{id} 
Get a specific subscription.
Response Body
{
data: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
+ credentialsKey?: string,
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
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,
source?: {
accountId?: string,
+ name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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,
term: string,
},
},
}GET /collections 
List collections
Response Body
{
data: List<{
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
- classCount?: number,
- countries?: List<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,
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' | 'format',
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,
},
},
}GET /collections 
List collections
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,
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' | 'format',
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,
},
},
}POST /collections 
Create a new Collection
Request Body
{
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage: {
data?: string,
filename?: string,
},
- countries?: List<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,
- tags: string,
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,
},
- countries?: List<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,
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' | 'format',
value?: string,
}>,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}POST /collections 
Create a new Collection
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,
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' | 'format',
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
Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
- countries?: List<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,
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' | 'format',
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
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,
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' | 'format',
value?: string,
}>,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}PATCH /collections/{guid} 
Update a Collection
Request Body
{
available: {
end?: number,
start?: number,
},
badge: {
guid?: string,
},
cardImage: {
data?: string,
filename?: string,
},
- countries: List<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,
- tags: string,
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,
},
- countries?: List<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,
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' | 'format',
value?: string,
}>,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}PATCH /collections/{guid} 
Update a Collection
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,
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' | 'format',
value?: string,
}>,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}PUT /collections/{guid}/schedule/{scheduleGuid} 
Add a schedule item to a collection
Response Body
{
data: {
available?: {
end?: number,
start?: number,
},
badge?: {
guid?: string,
},
cardImage?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
- countries?: List<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,
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' | 'format',
value?: string,
}>,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}PUT /collections/{guid}/schedule/{scheduleGuid} 
Add a schedule item to a collection
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,
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' | 'format',
value?: string,
}>,
totalCount?: number,
type?: 'generic' | 'series' | 'challenge' | 'program',
updatedBy?: {
id?: number,
},
visibility?: 'public' | 'unlisted' | 'private' | 'trash',
},
}21 deleted endpoints Collapse deleted 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: record,
retailer?: {
orderCode?: string,
partner?: {
id?: number,
},
storeCode?: string,
},
utm?: {
campaign: string,
content: string,
medium: string,
source: string,
term: string,
},
}PUT /users/{userId}/equipment 
Adds OR replaces all of users equipment
Guard: admin, self
Request Body
{
equipmentIds?: List<number>,
}Response Body
{
data: List<{
dateCreated?: number,
equipmentId?: number,
userId?: number,
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}POST /users/{userId}/equipment 
Adds a piece of equipment to a user
Guard: admin, self
Request Body
{
equipmentId?: number,
}Response Body
{
data: {
dateCreated?: number,
equipmentId?: number,
userId?: number,
},
}GET /users/{userId}/equipment 
Get a list of users equipment
Guard: admin, self
Response Body
{
data: List<{
dateCreated?: number,
equipmentId?: number,
userId?: number,
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}DELETE /users/{userId}/equipment/{equipmentId} 
Remove a piece of equipment from a user
Guard: admin, self
GET /billing-providers 
Get a list of billing providers
Response Body
{
data: List<{
id?: number,
name?: string,
organizationCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}POST /billing-providers 
Create a new billing provider
Request Body
{
name?: string,
organizationCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
}Response Body
{
data: {
id?: number,
name?: string,
organizationCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
}GET /billing-providers/{id} 
Get a single billing provider by ID
Response Body
{
data: {
id?: number,
name?: string,
organizationCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
}PATCH /billing-providers/{id} 
Edit a billing provider
Request Body
{
name: string,
organizationCode: string,
type: 'stripe' | 'apple' | 'google' | 'amazon',
}Response Body
{
data: {
id?: number,
name?: string,
organizationCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
}GET /shops 
Get a list of shops
Response Body
{
data: List<{
country?: {
code?: string,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
mediaNet?: {
code?: string,
territoryId?: number,
},
name?: string,
numberFormat?: {
decimalSeparator?: '.' | ',' | ' ',
thousandsSeparator?: '.' | ',' | ' ',
},
stripe?: {
id?: number,
},
},
id?: number,
name?: string,
vendor?: {
accessToken?: string,
accountCode?: string,
baseUrl?: string,
type?: 'shopify',
},
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}POST /shops 
Create a new shop
Request Body
{
country?: {
code?: string,
},
name?: string,
vendor?: {
accessToken?: string,
accountCode?: string,
baseUrl?: string,
type?: 'shopify',
},
}Response Body
{
data: {
country?: {
code?: string,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
mediaNet?: {
code?: string,
territoryId?: number,
},
name?: string,
numberFormat?: {
decimalSeparator?: '.' | ',' | ' ',
thousandsSeparator?: '.' | ',' | ' ',
},
stripe?: {
id?: number,
},
},
id?: number,
name?: string,
vendor?: {
accessToken?: string,
accountCode?: string,
baseUrl?: string,
type?: 'shopify',
},
},
}GET /shops/{id} 
Get a single shop by ID
Response Body
{
data: {
country?: {
code?: string,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
mediaNet?: {
code?: string,
territoryId?: number,
},
name?: string,
numberFormat?: {
decimalSeparator?: '.' | ',' | ' ',
thousandsSeparator?: '.' | ',' | ' ',
},
stripe?: {
id?: number,
},
},
id?: number,
name?: string,
vendor?: {
accessToken?: string,
accountCode?: string,
baseUrl?: string,
type?: 'shopify',
},
},
}PATCH /shops/{id} 
Edit a shop
Guard: admin
Request Body
{
country: {
code?: string,
},
name: string,
vendor: {
accessToken?: string,
accountCode?: string,
baseUrl?: string,
type?: 'shopify',
},
}Response Body
{
data: {
country?: {
code?: string,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
mediaNet?: {
code?: string,
territoryId?: number,
},
name?: string,
numberFormat?: {
decimalSeparator?: '.' | ',' | ' ',
thousandsSeparator?: '.' | ',' | ' ',
},
stripe?: {
id?: number,
},
},
id?: number,
name?: string,
vendor?: {
accessToken?: string,
accountCode?: string,
baseUrl?: string,
type?: 'shopify',
},
},
}POST /users/{userId}/account/subscribe-inactive 
Create an inactive subscription.
Guard: admin
Response Body
{
data: {
creditBalance?: number,
dateCancelled?: number,
dateExpires?: number,
datePausedUntil?: number,
defaultPaymentMethod?: {
brand?: string,
code?: string,
expiration?: string,
type?: string,
},
discounts?: {
amount: number,
dateEnd?: number,
dateStart?: number,
name?: string,
percent: number,
},
nextInvoice?: {
amount?: number,
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
dateScheduled?: number,
},
status?: {
code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
text?: string,
},
subscription?: {
activation?: {
isActivated?: bool,
isFirstPeriodPrepaid?: bool,
},
billing?: {
customerCode?: string,
orderCode?: string,
},
cancellation?: {
dateCancelled?: number,
reason?: {
code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
message?: string,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
offer?: {
guid?: string,
},
pause?: {
dateEnd?: number,
dateStart?: number,
reason?: string,
},
plan?: {
basePrice?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
value?: number,
},
benefits?: List<{
text?: string,
}>,
billingProvider?: {
id?: number,
name?: string,
organizationCode?: string,
priceCode?: string,
productCode?: string,
type?: 'stripe' | 'apple' | 'google' | 'amazon',
},
country?: {
code?: string,
id?: number,
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
defaultTrial?: {
units?: 'day',
value?: number,
},
delayBillingDays?: number,
description?: string,
emailTemplateId?: number,
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
type?: 'connected' | 'disconnected',
},
frequency?: {
units?: 'month',
value?: number,
},
frequencyDays?: number,
id?: number,
name?: string,
sku?: string,
sortOrder?: number,
source?: {
accountId?: string,
productId?: string,
type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
},
tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
updatedBy?: {
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?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
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,
term: string,
},
},
},
}POST /users/{userId}/account/test-token/{planId} 
Generate a test token for stripe
Guard: admin
Response Body
{
data: string,
}GET /content/video-status 
Get video status by plus-separated content-guid(s)
Guard: loggedIn
Response Body
{
data: List<{
guid?: string,
videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
}>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}GET /content/tag-groups 
Get tagGroups by value
Guard: loggedIn
Response Body
{
data: List<string>,
pagination: {
page?: number,
skip?: number,
take?: number,
total: {
pages?: number,
rows?: number,
},
},
}DELETE /content/tag-groups/{tagGroup}/{value} 
Deletes a value from a tagGroup
Guard: admin
Response Body
{
data: {
group?: string,
level?: 'primary',
translations: record,
values?: List<string>,
},
}GET /content/tag-groups/{tagGroup} 
Get one tag group
Guard: loggedIn
Response Body
{
data: {
group?: string,
level?: 'primary',
translations: record,
values?: List<string>,
},
}