Nest Changelog
1.5.3
10/17/2022
1.5.4
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: { - 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-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-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/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/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/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/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-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-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-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-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, }
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, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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>, }, }
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>, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }
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, }, }
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, }, }
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, }, }
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/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/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/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/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, }, }
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, }, }
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, }, }, }
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, }, }, }
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 /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 /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, }, }, }
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, }, }, }
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 /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 /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
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/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, }, }, }
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, }, }, }
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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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, }, }
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, }, }
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, }, }, }
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, }, }, }
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', }, }
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', }, }
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
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/{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', }, }
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', }, }
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', }, }
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', }, }
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 /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 /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, }, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }, }
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, }, }
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, }, }
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, },
}
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', }
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 /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 /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 /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 /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
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/{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 /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 /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, }, }, }
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, }, }, }
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', }, }
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', }, }
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', }, }
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', }, }
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', }, }
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', }, }
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', }, }
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', }, }
21 added endpoints Collapse added 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>, }, }