Nest Changelog

1.5.4

10/17/2022

1.5.6

10/17/2022

57 changed endpoints

POST /webhooks/invoice-upcoming

Request Body
{
  amountDue?: number,
  amountPaid?: number,
  amountTotal?: number,
  attemptCount?: number,
  attempted?: bool,
  billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
  currencyCode?: string,
  dateCreated?: number,
  dateNextAttempt?: number,
  datePeriodEnd?: number,
  datePeriodStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  isAutomaticCollection?: bool,
  isManualPayment?: bool,
  isPaid?: bool,
  orderCode?: string,
  publicNote: string,
- reason: record,

sourceCode?: string, sourceName?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

POST /webhooks/invoice-upcoming

Request Body
{
  amountDue?: number,
  amountPaid?: number,
  amountTotal?: number,
  attemptCount?: number,
  attempted?: bool,
  billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
  currencyCode?: string,
  dateCreated?: number,
  dateNextAttempt?: number,
  datePeriodEnd?: number,
  datePeriodStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  isAutomaticCollection?: bool,
  isManualPayment?: bool,
  isPaid?: bool,
  orderCode?: string,
  publicNote: string,

+ reason: { + code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', + message?: string, + }, sourceCode?: string, sourceName?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

POST /webhooks/invoice-paid

Request Body
{
  amountDue?: number,
  amountPaid?: number,
  amountTotal?: number,
  attemptCount?: number,
  attempted?: bool,
  billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
  currencyCode?: string,
  dateCreated?: number,
  dateNextAttempt?: number,
  datePeriodEnd?: number,
  datePeriodStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  isAutomaticCollection?: bool,
  isManualPayment?: bool,
  isPaid?: bool,
  orderCode?: string,
  publicNote: string,
- reason: record,

sourceCode?: string, sourceName?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

POST /webhooks/invoice-paid

Request Body
{
  amountDue?: number,
  amountPaid?: number,
  amountTotal?: number,
  attemptCount?: number,
  attempted?: bool,
  billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
  currencyCode?: string,
  dateCreated?: number,
  dateNextAttempt?: number,
  datePeriodEnd?: number,
  datePeriodStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  isAutomaticCollection?: bool,
  isManualPayment?: bool,
  isPaid?: bool,
  orderCode?: string,
  publicNote: string,

+ reason: { + code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', + message?: string, + }, sourceCode?: string, sourceName?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

POST /webhooks/payment-failure

Request Body
{
  amountDue?: number,
  amountPaid?: number,
  amountTotal?: number,
  attemptCount?: number,
  attempted?: bool,
  billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
  currencyCode?: string,
  dateCreated?: number,
  dateNextAttempt?: number,
  datePeriodEnd?: number,
  datePeriodStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  isAutomaticCollection?: bool,
  isManualPayment?: bool,
  isPaid?: bool,
  orderCode?: string,
  publicNote: string,
- reason: record,

sourceCode?: string, sourceName?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

POST /webhooks/payment-failure

Request Body
{
  amountDue?: number,
  amountPaid?: number,
  amountTotal?: number,
  attemptCount?: number,
  attempted?: bool,
  billingReason?: 'subscriptionRenewed' | 'subscriptionCreate' | 'subscriptionChanged' | 'manual' | 'subscriptionRenewalUpcoming',
  currencyCode?: string,
  dateCreated?: number,
  dateNextAttempt?: number,
  datePeriodEnd?: number,
  datePeriodStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  isAutomaticCollection?: bool,
  isManualPayment?: bool,
  isPaid?: bool,
  orderCode?: string,
  publicNote: string,

+ reason: { + code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', + message?: string, + }, sourceCode?: string, sourceName?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

POST /webhooks/subscription-created

Request Body
{
  billingCycleAnchor?: number,
  createdAt?: number,
  dateCancelled?: number,
  dateExpire?: number,
  datePausedUntil?: number,
  dateStart?: number,
  dateTrialEnd?: number,
  dateTrialStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  orderCode?: string,

publicNote: string, - reason: record,

renewedAt?: number,

sourceCode?: string, sourceType?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

POST /webhooks/subscription-created

Request Body
{
  billingCycleAnchor?: number,
  createdAt?: number,
  dateCancelled?: number,
  dateExpire?: number,
  datePausedUntil?: number,
  dateStart?: number,
  dateTrialEnd?: number,
  dateTrialStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  orderCode?: string,
+ plan?: {
+   basePrice: {
+     currency?: {
+       code?: string,
+       scale?: number,
+       symbol?: string,
+     },
+     value?: number,
+   },
+   benefits: List<{
+     text?: string,
+   }>,
+   billingProvider: {
+     credentialsKey?: string,
+     id?: number,
+     name?: string,
+     organizationCode?: string,
+     priceCode?: string,
+     productCode?: string,
+     type?: 'stripe' | 'apple' | 'google' | 'amazon',
+   },
+   country: {
+     code?: string,
+     id?: number,
+   },
+   createdBy: {
+     id?: number,
+   },
+   dateCreated: number,
+   dateUpdated: number,
+   defaultTrial: {
+     units?: 'day',
+     value?: number,
+   },
+   delayBillingDays: number,
+   description: string,
+   family: {
+     brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+     code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
+     type?: 'connected' | 'disconnected',
+   },
+   frequency: {
+     units?: 'month',
+     value?: number,
+   },
+   frequencyDays: number,
+   id: number,
+   image: {
+     default: string,
+     large: string,
+     medium: string,
+     small: string,
+     url?: string,
+   },
+   musicRights: {
+     productId?: string,
+     vendor?: 'audibleMagic',
+   },
+   name: string,
+   sku: string,
+   sortOrder: number,
+   source: {
+     accountId?: string,
+     name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
+     productId?: string,
+   },
+   tags: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
+   updatedBy: {
+     id?: number,
+   },
+ },
  publicNote: string,

+ reason: { + code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', + message?: string, + }, renewedAt?: number, + shopifyCustomerCode: string, sourceCode?: string, sourceType?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

POST /webhooks/subscription-deleted

Request Body
{
  billingCycleAnchor?: number,
  createdAt?: number,
  dateCancelled?: number,
  dateExpire?: number,
  datePausedUntil?: number,
  dateStart?: number,
  dateTrialEnd?: number,
  dateTrialStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  orderCode?: string,

publicNote: string, - reason: record,

renewedAt?: number,

sourceCode?: string, sourceType?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

POST /webhooks/subscription-deleted

Request Body
{
  billingCycleAnchor?: number,
  createdAt?: number,
  dateCancelled?: number,
  dateExpire?: number,
  datePausedUntil?: number,
  dateStart?: number,
  dateTrialEnd?: number,
  dateTrialStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  orderCode?: string,
+ plan?: {
+   basePrice: {
+     currency?: {
+       code?: string,
+       scale?: number,
+       symbol?: string,
+     },
+     value?: number,
+   },
+   benefits: List<{
+     text?: string,
+   }>,
+   billingProvider: {
+     credentialsKey?: string,
+     id?: number,
+     name?: string,
+     organizationCode?: string,
+     priceCode?: string,
+     productCode?: string,
+     type?: 'stripe' | 'apple' | 'google' | 'amazon',
+   },
+   country: {
+     code?: string,
+     id?: number,
+   },
+   createdBy: {
+     id?: number,
+   },
+   dateCreated: number,
+   dateUpdated: number,
+   defaultTrial: {
+     units?: 'day',
+     value?: number,
+   },
+   delayBillingDays: number,
+   description: string,
+   family: {
+     brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+     code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
+     type?: 'connected' | 'disconnected',
+   },
+   frequency: {
+     units?: 'month',
+     value?: number,
+   },
+   frequencyDays: number,
+   id: number,
+   image: {
+     default: string,
+     large: string,
+     medium: string,
+     small: string,
+     url?: string,
+   },
+   musicRights: {
+     productId?: string,
+     vendor?: 'audibleMagic',
+   },
+   name: string,
+   sku: string,
+   sortOrder: number,
+   source: {
+     accountId?: string,
+     name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
+     productId?: string,
+   },
+   tags: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
+   updatedBy: {
+     id?: number,
+   },
+ },
  publicNote: string,

+ reason: { + code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', + message?: string, + }, renewedAt?: number, + shopifyCustomerCode: string, sourceCode?: string, sourceType?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

POST /webhooks/subscription-updated

Request Body
{
  billingCycleAnchor?: number,
  createdAt?: number,
  dateCancelled?: number,
  dateExpire?: number,
  datePausedUntil?: number,
  dateStart?: number,
  dateTrialEnd?: number,
  dateTrialStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  orderCode?: string,

publicNote: string, - reason: record,

renewedAt?: number,

sourceCode?: string, sourceType?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

POST /webhooks/subscription-updated

Request Body
{
  billingCycleAnchor?: number,
  createdAt?: number,
  dateCancelled?: number,
  dateExpire?: number,
  datePausedUntil?: number,
  dateStart?: number,
  dateTrialEnd?: number,
  dateTrialStart?: number,
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  orderCode?: string,
+ plan?: {
+   basePrice: {
+     currency?: {
+       code?: string,
+       scale?: number,
+       symbol?: string,
+     },
+     value?: number,
+   },
+   benefits: List<{
+     text?: string,
+   }>,
+   billingProvider: {
+     credentialsKey?: string,
+     id?: number,
+     name?: string,
+     organizationCode?: string,
+     priceCode?: string,
+     productCode?: string,
+     type?: 'stripe' | 'apple' | 'google' | 'amazon',
+   },
+   country: {
+     code?: string,
+     id?: number,
+   },
+   createdBy: {
+     id?: number,
+   },
+   dateCreated: number,
+   dateUpdated: number,
+   defaultTrial: {
+     units?: 'day',
+     value?: number,
+   },
+   delayBillingDays: number,
+   description: string,
+   family: {
+     brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+     code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free',
+     type?: 'connected' | 'disconnected',
+   },
+   frequency: {
+     units?: 'month',
+     value?: number,
+   },
+   frequencyDays: number,
+   id: number,
+   image: {
+     default: string,
+     large: string,
+     medium: string,
+     small: string,
+     url?: string,
+   },
+   musicRights: {
+     productId?: string,
+     vendor?: 'audibleMagic',
+   },
+   name: string,
+   sku: string,
+   sortOrder: number,
+   source: {
+     accountId?: string,
+     name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
+     productId?: string,
+   },
+   tags: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
+   updatedBy: {
+     id?: number,
+   },
+ },
  publicNote: string,

+ reason: { + code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', + message?: string, + }, renewedAt?: number, + shopifyCustomerCode: string, sourceCode?: string, sourceType?: 'stripe' | 'apple' | 'google' | 'amazon', sourceUserCode?: string, status?: string, }

GET /plans

Get all Plans

Response Body
{
  data: List<{
    basePrice?: {
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      value?: number,
    },
    benefits?: List<{
      text?: string,
    }>,
    billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /plans

Get all Plans

Response Body
{
  data: List<{
    basePrice?: {
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      value?: number,
    },
    benefits?: List<{
      text?: string,
    }>,
    billingProvider?: {
+     credentialsKey?: string,
      id?: number,
      name?: string,
      organizationCode?: string,
      priceCode?: string,
      productCode?: string,
      type?: 'stripe' | 'apple' | 'google' | 'amazon',
    },
    country?: {
      code?: string,
      id?: number,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    defaultTrial?: {
      units?: 'day',
      value?: number,
    },
    delayBillingDays?: number,
    description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

POST /plans

Create Plan

Request Body
{
  basePrice?: {

value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number,

}, country?: { code?: string,

},

delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, - frequencyDays?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, }
Response Body
{
  data: {
    basePrice?: {
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      value?: number,
    },
    benefits?: List<{
      text?: string,
    }>,
    billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, }

POST /plans

Create Plan

Request Body
{
  basePrice?: {
+   currency?: {
+     code?: string,
+     scale?: number,
+     symbol?: string,
+   },
    value?: number,
  },
  benefits?: List<{
    text?: string,
  }>,
  billingProvider?: {
+   credentialsKey?: string,
    id?: number,
+   name?: string,
+   organizationCode?: string,
+   priceCode?: string,
+   productCode?: string,
+   type?: 'stripe' | 'apple' | 'google' | 'amazon',
  },
  country?: {
    code?: string,
+   id?: number,
  },
+ defaultTrial: {
+   units?: 'day',
+   value?: number,
+ },
  delayBillingDays?: number,
  description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', },

+ frequency: { + units?: 'month', + value?: number, + }, + frequencyDays: number, + image?: { + data?: string, + filename?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, }
Response Body
{
  data: {
    basePrice?: {
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      value?: number,
    },
    benefits?: List<{
      text?: string,
    }>,
    billingProvider?: {
+     credentialsKey?: string,
      id?: number,
      name?: string,
      organizationCode?: string,
      priceCode?: string,
      productCode?: string,
      type?: 'stripe' | 'apple' | 'google' | 'amazon',
    },
    country?: {
      code?: string,
      id?: number,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    defaultTrial?: {
      units?: 'day',
      value?: number,
    },
    delayBillingDays?: number,
    description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, }

PATCH /plans

Update plans in bulk.

Request Body
{
  data?: {
-   benefits?: List<{

text?: string, }>, - description?: string, - emailTemplateId?: number, - family?: {

brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, - name?: string, - sku?: string, - sortOrder?: number, - source?: {

accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, - tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,

}, image: { default: string, large: string, medium: string, small: string, url?: string, }, where?: { countryCode: string, ids: List<number>, }, }

PATCH /plans

Update plans in bulk.

Request Body
{
  data?: {

+ basePrice: { + currency?: { + code?: string, + scale?: number, + symbol?: string, + }, + value?: number, + }, + benefits: List<{ text?: string, }>,

+ billingProvider: { + credentialsKey?: string, + id?: number, + name?: string, + organizationCode?: string, + priceCode?: string, + productCode?: string, + type?: 'stripe' | 'apple' | 'google' | 'amazon', + }, + country: { + code?: string, + id?: number, + }, + defaultTrial: { + units?: 'day', + value?: number, + }, + delayBillingDays: number, + description: string, + family: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', },

+ frequency: { + units?: 'month', + value?: number, + }, + frequencyDays: number, + image: { + data?: string, + filename?: string, + }, + musicRights: { + productId?: string, + vendor?: 'audibleMagic', + }, + name: string, + sku: string, + sortOrder: number, + source: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

},

+ tags: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, }, image: { default: string, large: string, medium: string, small: string, url?: string, }, where?: { countryCode: string, ids: List<number>, }, }

GET /plans/{id}

Get Plan by id

Response Body
{
  data: {
    basePrice?: {
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      value?: number,
    },
    benefits?: List<{
      text?: string,
    }>,
    billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, }

GET /plans/{id}

Get Plan by id

Response Body
{
  data: {
    basePrice?: {
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      value?: number,
    },
    benefits?: List<{
      text?: string,
    }>,
    billingProvider?: {
+     credentialsKey?: string,
      id?: number,
      name?: string,
      organizationCode?: string,
      priceCode?: string,
      productCode?: string,
      type?: 'stripe' | 'apple' | 'google' | 'amazon',
    },
    country?: {
      code?: string,
      id?: number,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    defaultTrial?: {
      units?: 'day',
      value?: number,
    },
    delayBillingDays?: number,
    description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, }

PATCH /plans/{id}

Update Plan

Request Body
{
- benefits?: List<{

text?: string, }>, - description?: string, - emailTemplateId?: number, - family?: {

brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, - name?: string, - sku?: string, - sortOrder?: number, - source?: {

accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, - tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,

}
Response Body
{
  data: {
    basePrice?: {
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      value?: number,
    },
    benefits?: List<{
      text?: string,
    }>,
    billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, }

PATCH /plans/{id}

Update Plan

Request Body
{

+ basePrice: { + currency?: { + code?: string, + scale?: number, + symbol?: string, + }, + value?: number, + }, + benefits: List<{ text?: string, }>,

+ billingProvider: { + credentialsKey?: string, + id?: number, + name?: string, + organizationCode?: string, + priceCode?: string, + productCode?: string, + type?: 'stripe' | 'apple' | 'google' | 'amazon', + }, + country: { + code?: string, + id?: number, + }, + defaultTrial: { + units?: 'day', + value?: number, + }, + delayBillingDays: number, + description: string, + family: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', },

+ frequency: { + units?: 'month', + value?: number, + }, + frequencyDays: number, + image: { + data?: string, + filename?: string, + }, + musicRights: { + productId?: string, + vendor?: 'audibleMagic', + }, + name: string, + sku: string, + sortOrder: number, + source: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

},

+ tags: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, }
Response Body
{
  data: {
    basePrice?: {
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      value?: number,
    },
    benefits?: List<{
      text?: string,
    }>,
    billingProvider?: {
+     credentialsKey?: string,
      id?: number,
      name?: string,
      organizationCode?: string,
      priceCode?: string,
      productCode?: string,
      type?: 'stripe' | 'apple' | 'google' | 'amazon',
    },
    country?: {
      code?: string,
      id?: number,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    defaultTrial?: {
      units?: 'day',
      value?: number,
    },
    delayBillingDays?: number,
    description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, }

POST /auth

Sign in with email address and password

Response Body
{
  data: {
    family?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      nickname?: string,
    }>,
    guid?: string,
    jwt?: string,
    mongoId?: string,
    plan?: {
      expires?: number,
      features?: record,
      id?: number,
      name?: string,
      planFamily?: {
-       code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

}, }, userId?: number, }, }

POST /auth

Sign in with email address and password

Response Body
{
  data: {
    family?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      nickname?: string,
    }>,
    guid?: string,
    jwt?: string,
    mongoId?: string,
    plan?: {
      expires?: number,
      features?: record,
      id?: number,
      name?: string,
      planFamily?: {

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', }, }, userId?: number, }, }

GET /auth/{sessionGuid}

Refresh the token

Response Body
{
  data: {
    family?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      nickname?: string,
    }>,
    guid?: string,
    jwt?: string,
    mongoId?: string,
    plan?: {
      expires?: number,
      features?: record,
      id?: number,
      name?: string,
      planFamily?: {
-       code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

}, }, userId?: number, }, }

GET /auth/{sessionGuid}

Refresh the token

Response Body
{
  data: {
    family?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      nickname?: string,
    }>,
    guid?: string,
    jwt?: string,
    mongoId?: string,
    plan?: {
      expires?: number,
      features?: record,
      id?: number,
      name?: string,
      planFamily?: {

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', }, }, userId?: number, }, }

POST /auth/upgrade

Trade in your token from the legacy token for a session

Response Body
{
  data: {
    family?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      nickname?: string,
    }>,
    guid?: string,
    jwt?: string,
    mongoId?: string,
    plan?: {
      expires?: number,
      features?: record,
      id?: number,
      name?: string,
      planFamily?: {
-       code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

}, }, userId?: number, }, }

POST /auth/upgrade

Trade in your token from the legacy token for a session

Response Body
{
  data: {
    family?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      nickname?: string,
    }>,
    guid?: string,
    jwt?: string,
    mongoId?: string,
    plan?: {
      expires?: number,
      features?: record,
      id?: number,
      name?: string,
      planFamily?: {

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', }, }, userId?: number, }, }

POST /auth/commercial

COMMERCIAL QUICKSTART - Authenticate a single commercial piece of equipment

Response Body
{
  data: {
    family?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      nickname?: string,
    }>,
    guid?: string,
    jwt?: string,
    mongoId?: string,
    plan?: {
      expires?: number,
      features?: record,
      id?: number,
      name?: string,
      planFamily?: {
-       code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

}, }, userId?: number, }, }

POST /auth/commercial

COMMERCIAL QUICKSTART - Authenticate a single commercial piece of equipment

Response Body
{
  data: {
    family?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      nickname?: string,
    }>,
    guid?: string,
    jwt?: string,
    mongoId?: string,
    plan?: {
      expires?: number,
      features?: record,
      id?: number,
      name?: string,
      planFamily?: {

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', }, }, userId?: number, }, }

POST /auth/one-time-token

Trade in your login token from a magic link for a session

Response Body
{
  data: {
    family?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      nickname?: string,
    }>,
    guid?: string,
    jwt?: string,
    mongoId?: string,
    plan?: {
      expires?: number,
      features?: record,
      id?: number,
      name?: string,
      planFamily?: {
-       code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

}, }, userId?: number, }, }

POST /auth/one-time-token

Trade in your login token from a magic link for a session

Response Body
{
  data: {
    family?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      nickname?: string,
    }>,
    guid?: string,
    jwt?: string,
    mongoId?: string,
    plan?: {
      expires?: number,
      features?: record,
      id?: number,
      name?: string,
      planFamily?: {

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', }, }, userId?: number, }, }

GET /subscriptions/{id}

Get a subscription

Response Body
{
  data: {
    activation?: {
      isActivated?: bool,
      isFirstPeriodPrepaid?: bool,
    },
    billing?: {
      customerCode?: string,
      orderCode?: string,
    },
    cancellation?: {
      dateCancelled?: number,
      reason?: {
        code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
        message?: string,
      },
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    offer?: {
      guid?: string,
    },
    pause?: {
      dateEnd?: number,
      dateStart?: number,
      reason?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }

GET /subscriptions/{id}

Get a subscription

Response Body
{
  data: {
    activation?: {
      isActivated?: bool,
      isFirstPeriodPrepaid?: bool,
    },
    billing?: {
      customerCode?: string,
      orderCode?: string,
    },
    cancellation?: {
      dateCancelled?: number,
      reason?: {
        code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
        message?: string,
      },
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    offer?: {
      guid?: string,
    },
    pause?: {
      dateEnd?: number,
      dateStart?: number,
      reason?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {
+       credentialsKey?: string,
        id?: number,
        name?: string,
        organizationCode?: string,
        priceCode?: string,
        productCode?: string,
        type?: 'stripe' | 'apple' | 'google' | 'amazon',
      },
      country?: {
        code?: string,
        id?: number,
      },
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateUpdated?: number,
      defaultTrial?: {
        units?: 'day',
        value?: number,
      },
      delayBillingDays?: number,
      description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }

POST /subscriptions/{id}/quote

create a new subscription in stripe from shopify order, optionally applies a redemption code

Response Body
{
  data: {
    campaign?: {
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateExpires?: number,
      delayBillingDays?: number,
      guid?: string,
      name?: string,
      partner?: {
        id?: number,
        name?: string,
      },
      utmCampaign?: string,
      utmSource?: string,
    },
    dateFirstBilling?: number,
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, redemptionCode?: { batchGuid?: string, campaignCode?: string, code?: string, createdBy?: { id?: number, }, dateCreated?: number, delayBillingDays?: number, eligibilityRequirements?: record, plans?: List<{ id?: number, }>, redeemedBy?: { id?: number, }, referenceNumber?: string, retailer?: { bundleDays: number, id?: number, name: string, }, serialNumber?: string, status?: 'inactive' | 'active' | 'redeemed' | 'deleted', stripeCoupon?: string, subscription?: { id?: number, }, }, }, }

POST /subscriptions/{id}/quote

create a new subscription in stripe from shopify order, optionally applies a redemption code

Response Body
{
  data: {
    campaign?: {
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateExpires?: number,
      delayBillingDays?: number,
      guid?: string,
      name?: string,
      partner?: {
        id?: number,
        name?: string,
      },
      utmCampaign?: string,
      utmSource?: string,
    },
    dateFirstBilling?: number,
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {
+       credentialsKey?: string,
        id?: number,
        name?: string,
        organizationCode?: string,
        priceCode?: string,
        productCode?: string,
        type?: 'stripe' | 'apple' | 'google' | 'amazon',
      },
      country?: {
        code?: string,
        id?: number,
      },
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateUpdated?: number,
      defaultTrial?: {
        units?: 'day',
        value?: number,
      },
      delayBillingDays?: number,
      description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, redemptionCode?: { batchGuid?: string, campaignCode?: string, code?: string, createdBy?: { id?: number, }, dateCreated?: number, delayBillingDays?: number, eligibilityRequirements?: record, plans?: List<{ id?: number, }>, redeemedBy?: { id?: number, }, referenceNumber?: string, retailer?: { bundleDays: number, id?: number, name: string, }, serialNumber?: string, status?: 'inactive' | 'active' | 'redeemed' | 'deleted', stripeCoupon?: string, subscription?: { id?: number, }, }, }, }

POST /redemption-codes/{code}/redemption

Redeem a single code

Response Body
{
  data: {
    activation?: {
      isActivated?: bool,
      isFirstPeriodPrepaid?: bool,
    },
    billing?: {
      customerCode?: string,
      orderCode?: string,
    },
    cancellation?: {
      dateCancelled?: number,
      reason?: {
        code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
        message?: string,
      },
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    offer?: {
      guid?: string,
    },
    pause?: {
      dateEnd?: number,
      dateStart?: number,
      reason?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }

POST /redemption-codes/{code}/redemption

Redeem a single code

Response Body
{
  data: {
    activation?: {
      isActivated?: bool,
      isFirstPeriodPrepaid?: bool,
    },
    billing?: {
      customerCode?: string,
      orderCode?: string,
    },
    cancellation?: {
      dateCancelled?: number,
      reason?: {
        code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
        message?: string,
      },
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    offer?: {
      guid?: string,
    },
    pause?: {
      dateEnd?: number,
      dateStart?: number,
      reason?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {
+       credentialsKey?: string,
        id?: number,
        name?: string,
        organizationCode?: string,
        priceCode?: string,
        productCode?: string,
        type?: 'stripe' | 'apple' | 'google' | 'amazon',
      },
      country?: {
        code?: string,
        id?: number,
      },
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateUpdated?: number,
      defaultTrial?: {
        units?: 'day',
        value?: number,
      },
      delayBillingDays?: number,
      description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }

GET /campaigns/{guid}/offers

Get a list of offers available for this campaign.

Response Body
{
  data: List<{
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {
-     basePrice?: {
-       currency?: {
-         code?: string,
-         scale?: number,
-         symbol?: string,
-       },
-       value?: number,
-     },
-     benefits?: List<{
-       text?: string,
-     }>,
-     billingProvider?: {
-       id?: number,
-       name?: string,
-       organizationCode?: string,
-       priceCode?: string,
-       productCode?: string,
-       type?: 'stripe' | 'apple' | 'google' | 'amazon',
-     },
-     country?: {

code?: string, - id?: number,

}, - createdBy?: { - id?: number, - }, - dateCreated?: number, - dateUpdated?: number, - defaultTrial?: { - units?: 'day', - value?: number, - }, - delayBillingDays?: number, - description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { - units?: 'month', - value?: number,

}, - frequencyDays?: number, id?: number, - name?: string, - sku?: string, - sortOrder?: number, - source?: { - accountId?: string, - productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', - }, - tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, - updatedBy?: { - id?: number, - },

}, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /campaigns/{guid}/offers

Get a list of offers available for this campaign.

Response Body
{
  data: List<{
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {

+ currency?: { code?: string,

+ scale?: number, + symbol?: string, },

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: {

+ days?: number, },

id?: number,

+ lineItems: List<{ + text?: string, + }>, + name: string, }, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /users/{userId}/account

Return the user's account with the payment status and last/current paid subscription

Response Body
{
  data: {
-   creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
-   defaultPaymentMethod?: {
-     brand?: string,
-     code?: string,
-     expiration?: string,
-     type?: string,
-   },
-   discounts?: {
-     amount: number,
-     dateEnd?: number,
-     dateStart?: number,
-     name?: string,
-     percent: number,
-   },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
-     code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',

text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

GET /users/{userId}/account

Return the user's account with the payment status and last/current paid subscription

Response Body
{
  data: {

dateCancelled?: number, dateExpires?: number, datePausedUntil?: number,

nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: {

+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary', text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: { + credentialsKey?: string, id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

GET /users/{userId}/account/subscriptions

Returns all of the accounts subscriptions

Response Body
{
  data: List<{
    activation?: {
      isActivated?: bool,
      isFirstPeriodPrepaid?: bool,
    },
    billing?: {
      customerCode?: string,
      orderCode?: string,
    },
    cancellation?: {
      dateCancelled?: number,
      reason?: {
        code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
        message?: string,
      },
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    offer?: {
      guid?: string,
    },
    pause?: {
      dateEnd?: number,
      dateStart?: number,
      reason?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /users/{userId}/account/subscriptions

Returns all of the accounts subscriptions

Response Body
{
  data: List<{
    activation?: {
      isActivated?: bool,
      isFirstPeriodPrepaid?: bool,
    },
    billing?: {
      customerCode?: string,
      orderCode?: string,
    },
    cancellation?: {
      dateCancelled?: number,
      reason?: {
        code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
        message?: string,
      },
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    offer?: {
      guid?: string,
    },
    pause?: {
      dateEnd?: number,
      dateStart?: number,
      reason?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {
+       credentialsKey?: string,
        id?: number,
        name?: string,
        organizationCode?: string,
        priceCode?: string,
        productCode?: string,
        type?: 'stripe' | 'apple' | 'google' | 'amazon',
      },
      country?: {
        code?: string,
        id?: number,
      },
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateUpdated?: number,
      defaultTrial?: {
        units?: 'day',
        value?: number,
      },
      delayBillingDays?: number,
      description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

POST /users/{userId}/account/payment

Update the account payment method on a Stripe subscription

Response Body
{
  data: {
-   creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
-   defaultPaymentMethod?: {
-     brand?: string,
-     code?: string,
-     expiration?: string,
-     type?: string,
-   },
-   discounts?: {
-     amount: number,
-     dateEnd?: number,
-     dateStart?: number,
-     name?: string,
-     percent: number,
-   },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
-     code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',

text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/payment

Update the account payment method on a Stripe subscription

Response Body
{
  data: {

dateCancelled?: number, dateExpires?: number, datePausedUntil?: number,

nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: {

+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary', text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: { + credentialsKey?: string, id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/quote

Response Body
{
  data: {
    charges?: {
      balance?: {
        currentBalance?: number,
        futureCredit?: number,
      },
      billedToday?: {
        discount?: number,
        subtotal?: number,
        total?: number,
      },
      recurring?: {
        dateStart?: number,
        frequencyDays?: number,
        price?: number,
      },
    },
    currency?: {
      code?: string,
      scale?: number,
      symbol?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, }, }

POST /users/{userId}/account/quote

Response Body
{
  data: {
    charges?: {
      balance?: {
        currentBalance?: number,
        futureCredit?: number,
      },
      billedToday?: {
        discount?: number,
        subtotal?: number,
        total?: number,
      },
      recurring?: {
        dateStart?: number,
        frequencyDays?: number,
        price?: number,
      },
    },
    currency?: {
      code?: string,
      scale?: number,
      symbol?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {
+       credentialsKey?: string,
        id?: number,
        name?: string,
        organizationCode?: string,
        priceCode?: string,
        productCode?: string,
        type?: 'stripe' | 'apple' | 'google' | 'amazon',
      },
      country?: {
        code?: string,
        id?: number,
      },
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateUpdated?: number,
      defaultTrial?: {
        units?: 'day',
        value?: number,
      },
      delayBillingDays?: number,
      description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, }, }

POST /users/{userId}/account/change

Response Body
{
  data: {
-   creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
-   defaultPaymentMethod?: {
-     brand?: string,
-     code?: string,
-     expiration?: string,
-     type?: string,
-   },
-   discounts?: {
-     amount: number,
-     dateEnd?: number,
-     dateStart?: number,
-     name?: string,
-     percent: number,
-   },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
-     code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',

text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/change

Response Body
{
  data: {

dateCancelled?: number, dateExpires?: number, datePausedUntil?: number,

nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: {

+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary', text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: { + credentialsKey?: string, id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/cancel

Request Body
{
- initiatedBy: {
-   id?: number,
- },
  internalNote: string,
  publicNote: string,
  reason?: {
    code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
    message?: string,
  },
}
Response Body
{
  data: {
-   creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
-   defaultPaymentMethod?: {
-     brand?: string,
-     code?: string,
-     expiration?: string,
-     type?: string,
-   },
-   discounts?: {
-     amount: number,
-     dateEnd?: number,
-     dateStart?: number,
-     name?: string,
-     percent: number,
-   },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
-     code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',

text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/cancel

Request Body
{

internalNote: string, publicNote: string, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }
Response Body
{
  data: {

dateCancelled?: number, dateExpires?: number, datePausedUntil?: number,

nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: {

+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary', text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: { + credentialsKey?: string, id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/uncancel

Request Body
{
- initiatedBy?: {
-   id?: number,
- },
- internalNote?: string,
- publicNote?: string,
- reason?: record,

}
Response Body
{
  data: {
-   creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
-   defaultPaymentMethod?: {
-     brand?: string,
-     code?: string,
-     expiration?: string,
-     type?: string,
-   },
-   discounts?: {
-     amount: number,
-     dateEnd?: number,
-     dateStart?: number,
-     name?: string,
-     percent: number,
-   },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
-     code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',

text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/uncancel

Request Body
{

+ internalNote: string, + publicNote: string, }
Response Body
{
  data: {

dateCancelled?: number, dateExpires?: number, datePausedUntil?: number,

nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: {

+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary', text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: { + credentialsKey?: string, id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/pause

Request Body
{
  durationDays?: number,
- initiatedBy: {
-   id?: number,
- },
  internalNote: string,
  publicNote: string,
  reason: {
    code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
    message?: string,
  },
}
Response Body
{
  data: {
-   creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
-   defaultPaymentMethod?: {
-     brand?: string,
-     code?: string,
-     expiration?: string,
-     type?: string,
-   },
-   discounts?: {
-     amount: number,
-     dateEnd?: number,
-     dateStart?: number,
-     name?: string,
-     percent: number,
-   },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
-     code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',

text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/pause

Request Body
{
  durationDays?: number,

internalNote: string, publicNote: string, reason: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }
Response Body
{
  data: {

dateCancelled?: number, dateExpires?: number, datePausedUntil?: number,

nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: {

+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary', text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: { + credentialsKey?: string, id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/unpause

Request Body
{
- initiatedBy?: {
-   id?: number,
- },
- internalNote?: string,
- publicNote?: string,
- reason?: record,

}
Response Body
{
  data: {
-   creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
-   defaultPaymentMethod?: {
-     brand?: string,
-     code?: string,
-     expiration?: string,
-     type?: string,
-   },
-   discounts?: {
-     amount: number,
-     dateEnd?: number,
-     dateStart?: number,
-     name?: string,
-     percent: number,
-   },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
-     code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',

text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/unpause

Request Body
{

+ internalNote: string, + publicNote: string, }
Response Body
{
  data: {

dateCancelled?: number, dateExpires?: number, datePausedUntil?: number,

nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: {

+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary', text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: { + credentialsKey?: string, id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/terminate

Request Body
{
- initiatedBy: {
-   id?: number,
- },
  internalNote: string,
  publicNote: string,
  reason?: {
    code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
    message?: string,
  },
}
Response Body
{
  data: {
-   creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
-   defaultPaymentMethod?: {
-     brand?: string,
-     code?: string,
-     expiration?: string,
-     type?: string,
-   },
-   discounts?: {
-     amount: number,
-     dateEnd?: number,
-     dateStart?: number,
-     name?: string,
-     percent: number,
-   },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
-     code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',

text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/terminate

Request Body
{

internalNote: string, publicNote: string, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }
Response Body
{
  data: {

dateCancelled?: number, dateExpires?: number, datePausedUntil?: number,

nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: {

+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary', text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: { + credentialsKey?: string, id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/credit

Request Body
{
  durationDays?: number,
  initiatedBy?: {
    id?: number,
  },
  internalNote?: string,
  publicNote?: string,
- reason?: record,

}
Response Body
{
  data: {
-   creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
-   defaultPaymentMethod?: {
-     brand?: string,
-     code?: string,
-     expiration?: string,
-     type?: string,
-   },
-   discounts?: {
-     amount: number,
-     dateEnd?: number,
-     dateStart?: number,
-     name?: string,
-     percent: number,
-   },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
-     code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',

text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/credit

Request Body
{
  durationDays?: number,
  initiatedBy?: {
    id?: number,
  },
  internalNote?: string,
  publicNote?: string,

+ reason?: { + code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', + message?: string, + }, }
Response Body
{
  data: {

dateCancelled?: number, dateExpires?: number, datePausedUntil?: number,

nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: {

+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary', text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: { + credentialsKey?: string, id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/activate

create a new subscription in stripe from shopify order, optionally applies a redemption code

Response Body
{
  data: {
-   creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
-   defaultPaymentMethod?: {
-     brand?: string,
-     code?: string,
-     expiration?: string,
-     type?: string,
-   },
-   discounts?: {
-     amount: number,
-     dateEnd?: number,
-     dateStart?: number,
-     name?: string,
-     percent: number,
-   },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
-     code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',

text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/activate

create a new subscription in stripe from shopify order, optionally applies a redemption code

Response Body
{
  data: {

dateCancelled?: number, dateExpires?: number, datePausedUntil?: number,

nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: {

+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary', text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: { + credentialsKey?: string, id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/subscribe

Create a new subscription in stripe

Response Body
{
  data: {
-   creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
-   defaultPaymentMethod?: {
-     brand?: string,
-     code?: string,
-     expiration?: string,
-     type?: string,
-   },
-   discounts?: {
-     amount: number,
-     dateEnd?: number,
-     dateStart?: number,
-     name?: string,
-     percent: number,
-   },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
-     code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',

text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/subscribe

Create a new subscription in stripe

Response Body
{
  data: {

dateCancelled?: number, dateExpires?: number, datePausedUntil?: number,

nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: {

+ code?: 'childProfile' | 'neverSubscribed' | 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary', text?: string, }, subscription?: { activation?: { isActivated?: bool, isFirstPeriodPrepaid?: bool, }, billing?: { customerCode?: string, orderCode?: string, }, cancellation?: { dateCancelled?: number, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange', message?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, offer?: { guid?: string, }, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProvider?: { + credentialsKey?: string, id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }, }

POST /users/{userId}/account/test-subscription

create a blank subscription for testing purposes

Response Body
{
  data: {
    subscription?: {
      activation?: {
        isActivated?: bool,
        isFirstPeriodPrepaid?: bool,
      },
      billing?: {
        customerCode?: string,
        orderCode?: string,
      },
      cancellation?: {
        dateCancelled?: number,
        reason?: {
          code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
          message?: string,
        },
      },
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateUpdated?: number,
      id?: number,
      offer?: {
        guid?: string,
      },
      pause?: {
        dateEnd?: number,
        dateStart?: number,
        reason?: string,
      },
      plan?: {
        basePrice?: {
          currency?: {
            code?: string,
            scale?: number,
            symbol?: string,
          },
          value?: number,
        },
        benefits?: List<{
          text?: string,
        }>,
        billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, tokenId?: string, }, }

POST /users/{userId}/account/test-subscription

create a blank subscription for testing purposes

Response Body
{
  data: {
    subscription?: {
      activation?: {
        isActivated?: bool,
        isFirstPeriodPrepaid?: bool,
      },
      billing?: {
        customerCode?: string,
        orderCode?: string,
      },
      cancellation?: {
        dateCancelled?: number,
        reason?: {
          code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
          message?: string,
        },
      },
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateUpdated?: number,
      id?: number,
      offer?: {
        guid?: string,
      },
      pause?: {
        dateEnd?: number,
        dateStart?: number,
        reason?: string,
      },
      plan?: {
        basePrice?: {
          currency?: {
            code?: string,
            scale?: number,
            symbol?: string,
          },
          value?: number,
        },
        benefits?: List<{
          text?: string,
        }>,
        billingProvider?: {
+         credentialsKey?: string,
          id?: number,
          name?: string,
          organizationCode?: string,
          priceCode?: string,
          productCode?: string,
          type?: 'stripe' | 'apple' | 'google' | 'amazon',
        },
        country?: {
          code?: string,
          id?: number,
        },
        createdBy?: {
          id?: number,
        },
        dateCreated?: number,
        dateUpdated?: number,
        defaultTrial?: {
          units?: 'day',
          value?: number,
        },
        delayBillingDays?: number,
        description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, tokenId?: string, }, }

GET /partners/{id}/offers

Get a list of offers available for this specific partner/retailer

Response Body
{
  data: List<{
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {
-     basePrice?: {
-       currency?: {
-         code?: string,
-         scale?: number,
-         symbol?: string,
-       },
-       value?: number,
-     },
-     benefits?: List<{
-       text?: string,
-     }>,
-     billingProvider?: {
-       id?: number,
-       name?: string,
-       organizationCode?: string,
-       priceCode?: string,
-       productCode?: string,
-       type?: 'stripe' | 'apple' | 'google' | 'amazon',
-     },
-     country?: {

code?: string, - id?: number,

}, - createdBy?: { - id?: number, - }, - dateCreated?: number, - dateUpdated?: number, - defaultTrial?: { - units?: 'day', - value?: number, - }, - delayBillingDays?: number, - description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { - units?: 'month', - value?: number,

}, - frequencyDays?: number, id?: number, - name?: string, - sku?: string, - sortOrder?: number, - source?: { - accountId?: string, - productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', - }, - tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, - updatedBy?: { - id?: number, - },

}, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /partners/{id}/offers

Get a list of offers available for this specific partner/retailer

Response Body
{
  data: List<{
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {

+ currency?: { code?: string,

+ scale?: number, + symbol?: string, },

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: {

+ days?: number, },

id?: number,

+ lineItems: List<{ + text?: string, + }>, + name: string, }, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

POST /offers

Create a new offer

Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {
-     basePrice?: {
-       currency?: {
-         code?: string,
-         scale?: number,
-         symbol?: string,
-       },
-       value?: number,
-     },
-     benefits?: List<{
-       text?: string,
-     }>,
-     billingProvider?: {
-       id?: number,
-       name?: string,
-       organizationCode?: string,
-       priceCode?: string,
-       productCode?: string,
-       type?: 'stripe' | 'apple' | 'google' | 'amazon',
-     },
-     country?: {

code?: string, - id?: number,

}, - createdBy?: { - id?: number, - }, - dateCreated?: number, - dateUpdated?: number, - defaultTrial?: { - units?: 'day', - value?: number, - }, - delayBillingDays?: number, - description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { - units?: 'month', - value?: number,

}, - frequencyDays?: number, id?: number, - name?: string, - sku?: string, - sortOrder?: number, - source?: { - accountId?: string, - productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', - }, - tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, - updatedBy?: { - id?: number, - },

}, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }, }

POST /offers

Create a new offer

Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {

+ currency?: { code?: string,

+ scale?: number, + symbol?: string, },

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: {

+ days?: number, },

id?: number,

+ lineItems: List<{ + text?: string, + }>, + name: string, }, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }, }

GET /offers

Get all offers

Response Body
{
  data: List<{
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {
-     basePrice?: {
-       currency?: {
-         code?: string,
-         scale?: number,
-         symbol?: string,
-       },
-       value?: number,
-     },
-     benefits?: List<{
-       text?: string,
-     }>,
-     billingProvider?: {
-       id?: number,
-       name?: string,
-       organizationCode?: string,
-       priceCode?: string,
-       productCode?: string,
-       type?: 'stripe' | 'apple' | 'google' | 'amazon',
-     },
-     country?: {

code?: string, - id?: number,

}, - createdBy?: { - id?: number, - }, - dateCreated?: number, - dateUpdated?: number, - defaultTrial?: { - units?: 'day', - value?: number, - }, - delayBillingDays?: number, - description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { - units?: 'month', - value?: number,

}, - frequencyDays?: number, id?: number, - name?: string, - sku?: string, - sortOrder?: number, - source?: { - accountId?: string, - productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', - }, - tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, - updatedBy?: { - id?: number, - },

}, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /offers

Get all offers

Response Body
{
  data: List<{
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {

+ currency?: { code?: string,

+ scale?: number, + symbol?: string, },

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: {

+ days?: number, },

id?: number,

+ lineItems: List<{ + text?: string, + }>, + name: string, }, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /offers/{guid}

Get a specific offer

Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {
-     basePrice?: {
-       currency?: {
-         code?: string,
-         scale?: number,
-         symbol?: string,
-       },
-       value?: number,
-     },
-     benefits?: List<{
-       text?: string,
-     }>,
-     billingProvider?: {
-       id?: number,
-       name?: string,
-       organizationCode?: string,
-       priceCode?: string,
-       productCode?: string,
-       type?: 'stripe' | 'apple' | 'google' | 'amazon',
-     },
-     country?: {

code?: string, - id?: number,

}, - createdBy?: { - id?: number, - }, - dateCreated?: number, - dateUpdated?: number, - defaultTrial?: { - units?: 'day', - value?: number, - }, - delayBillingDays?: number, - description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { - units?: 'month', - value?: number,

}, - frequencyDays?: number, id?: number, - name?: string, - sku?: string, - sortOrder?: number, - source?: { - accountId?: string, - productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', - }, - tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, - updatedBy?: { - id?: number, - },

}, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }, }

GET /offers/{guid}

Get a specific offer

Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {

+ currency?: { code?: string,

+ scale?: number, + symbol?: string, },

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: {

+ days?: number, },

id?: number,

+ lineItems: List<{ + text?: string, + }>, + name: string, }, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }, }

PATCH /offers/{guid}

Edit an offer

Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {
-     basePrice?: {
-       currency?: {
-         code?: string,
-         scale?: number,
-         symbol?: string,
-       },
-       value?: number,
-     },
-     benefits?: List<{
-       text?: string,
-     }>,
-     billingProvider?: {
-       id?: number,
-       name?: string,
-       organizationCode?: string,
-       priceCode?: string,
-       productCode?: string,
-       type?: 'stripe' | 'apple' | 'google' | 'amazon',
-     },
-     country?: {

code?: string, - id?: number,

}, - createdBy?: { - id?: number, - }, - dateCreated?: number, - dateUpdated?: number, - defaultTrial?: { - units?: 'day', - value?: number, - }, - delayBillingDays?: number, - description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { - units?: 'month', - value?: number,

}, - frequencyDays?: number, id?: number, - name?: string, - sku?: string, - sortOrder?: number, - source?: { - accountId?: string, - productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', - }, - tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, - updatedBy?: { - id?: number, - },

}, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }, }

PATCH /offers/{guid}

Edit an offer

Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {

+ currency?: { code?: string,

+ scale?: number, + symbol?: string, },

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: {

+ days?: number, },

id?: number,

+ lineItems: List<{ + text?: string, + }>, + name: string, }, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }, }

GET /songs/{id}/playlists

Get all playlists that contain this song

Response Body
{
  data: List<{
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
-   isWorldWide?: bool,
    legacyContentExplicit?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
      type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
    }>,
    studios?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    videoLength?: {
      id?: number,
      name?: string,
    },
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

GET /songs/{id}/playlists

Get all playlists that contain this song

Response Body
{
  data: List<{
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,

legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', }, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, videoLength?: { id?: number, name?: string, }, }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /playlists

Get a list of playlists

Response Body
{
  data: List<{
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
-   isWorldWide?: bool,
    legacyContentExplicit?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
      type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
    }>,
    studios?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    trackCount?: number,
    videoLength?: {
      id?: number,
      name?: string,
    },
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

GET /playlists

Get a list of playlists

Response Body
{
  data: List<{
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,

legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', }, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, trackCount?: number, videoLength?: { id?: number, name?: string, }, }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

POST /playlists

Create a new playlist

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
-   isWorldWide?: bool,
    legacyContentExplicit?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
      type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
    }>,
    studios?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    videoLength?: {
      id?: number,
      name?: string,
    },
  },
}

POST /playlists

Create a new playlist

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,

legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', }, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, videoLength?: { id?: number, name?: string, }, }, }

GET /playlists/{playlist}

Get a single playlist by ID

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
-   isWorldWide?: bool,
    legacyContentExplicit?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
      type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
    }>,
    studios?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    tracks?: List<{
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      flag?: string,
      playlist?: {
        id?: number,
      },
      song?: {
        album?: {
          id?: number,
          name?: string,
        },
        artists?: List<{
          id?: number,
          name?: string,
        }>,
        copyright?: record,
        coverArtUrl?: string,
        duration?: {
          seconds: number,
          text: string,
        },
        genres?: List<string>,
        id?: number,
        isExplicit?: bool,
        isrc?: string,
        label?: {
          id?: number,
          name?: string,
        },
        labelOwner?: {
          id?: number,
          name?: string,
        },
        labelRights?: record,
        name?: string,
        publisherRights?: List<string>,
        releaseDate?: number,
        searchFlags?: record,
      },
      trackOrder?: number,
    }>,
    videoLength?: {
      id?: number,
      name?: string,
    },
  },
}

GET /playlists/{playlist}

Get a single playlist by ID

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,

legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', }, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, tracks?: List<{ createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright?: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights?: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags?: record, }, trackOrder?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

PATCH /playlists/{id}

Update an existing playlist

Request Body
{
  countries: List<{
    code?: string,
  }>,
  createdBy: {
    id?: number,
    name?: string,
  },
  dateCreated: number,
  dateUpdated: number,
  id: number,
  instructors: List<{
    id?: number,
    name?: string,
    precedence?: number,
  }>,
  isFlagged: bool,
- isWorldWide: bool,
  legacyContentExplicit: bool,
  name: string,
  schedule: List<{
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    content?: {
      guid?: string,
    },
    guid?: string,
    legacy: {
      hlsUrl?: string,
      id?: number,
      liveStreamId?: number,
      type?: 'reflect' | 'connect',
    },
    type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
  }>,
  studios: List<{
    id?: number,
    name?: string,
    precedence?: number,
  }>,
  tags: List<{
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    text?: string,
    translations: record,
    type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
    value?: string,
  }>,
  videoLength: {
    id?: number,
    name?: string,
  },
}
Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
-   isWorldWide?: bool,
    legacyContentExplicit?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
      type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
    }>,
    studios?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    tracks?: List<{
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      flag?: string,
      playlist?: {
        id?: number,
      },
      song?: {
        album?: {
          id?: number,
          name?: string,
        },
        artists?: List<{
          id?: number,
          name?: string,
        }>,
        copyright?: record,
        coverArtUrl?: string,
        duration?: {
          seconds: number,
          text: string,
        },
        genres?: List<string>,
        id?: number,
        isExplicit?: bool,
        isrc?: string,
        label?: {
          id?: number,
          name?: string,
        },
        labelOwner?: {
          id?: number,
          name?: string,
        },
        labelRights?: record,
        name?: string,
        publisherRights?: List<string>,
        releaseDate?: number,
        searchFlags?: record,
      },
      trackOrder?: number,
    }>,
    videoLength?: {
      id?: number,
      name?: string,
    },
  },
}

PATCH /playlists/{id}

Update an existing playlist

Request Body
{
  countries: List<{
    code?: string,
  }>,
  createdBy: {
    id?: number,
    name?: string,
  },
  dateCreated: number,
  dateUpdated: number,
  id: number,
  instructors: List<{
    id?: number,
    name?: string,
    precedence?: number,
  }>,
  isFlagged: bool,

legacyContentExplicit: bool, name: string, schedule: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', }, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios: List<{ id?: number, name?: string, precedence?: number, }>, tags: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, videoLength: { id?: number, name?: string, }, }
Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,

legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', }, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, tracks?: List<{ createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright?: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights?: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags?: record, }, trackOrder?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

POST /playlists/{playlist}/import

Import all songs from a playlist to another playlist

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
-   isWorldWide?: bool,
    legacyContentExplicit?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
      type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
    }>,
    studios?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    tracks?: List<{
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      flag?: string,
      playlist?: {
        id?: number,
      },
      song?: {
        album?: {
          id?: number,
          name?: string,
        },
        artists?: List<{
          id?: number,
          name?: string,
        }>,
        copyright?: record,
        coverArtUrl?: string,
        duration?: {
          seconds: number,
          text: string,
        },
        genres?: List<string>,
        id?: number,
        isExplicit?: bool,
        isrc?: string,
        label?: {
          id?: number,
          name?: string,
        },
        labelOwner?: {
          id?: number,
          name?: string,
        },
        labelRights?: record,
        name?: string,
        publisherRights?: List<string>,
        releaseDate?: number,
        searchFlags?: record,
      },
      trackOrder?: number,
    }>,
    videoLength?: {
      id?: number,
      name?: string,
    },
  },
}

POST /playlists/{playlist}/import

Import all songs from a playlist to another playlist

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
      name?: string,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,

legacyContentExplicit?: bool, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { guid?: string, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', }, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, tracks?: List<{ createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright?: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights?: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags?: record, }, trackOrder?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

GET /content/library

Search for content in the Library

Response Body
{
  data: List<{
    contentGuid?: string,
    countries?: List<{
      code?: string,
    }>,
    dateLive?: number,
    description?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      name?: string,
    }>,
-   isWorldWide?: bool,
    length?: number,
    name?: string,
    playback?: {
      type?: 'hls' | 'dash',
      url?: string,
    },
    playlistId?: number,
    scheduleGuid?: string,
    status?: 'draft' | 'published' | 'trash',
    studios?: List<{
      id?: number,
      name?: string,
    }>,
    tags?: List<{
      text?: string,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
  }>,
  embedded: {
    aggregations?: {
      durations?: List<{
-       count?: number,
-       text?: string,
-       value?: number,

}>, instructors?: List<{ id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, }>, tags?: List<{ buckets?: List<{ count?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, value?: string, }>, value?: string, }>, }, }, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /content/library

Search for content in the Library

Response Body
{
  data: List<{
    contentGuid?: string,
    countries?: List<{
      code?: string,
    }>,
    dateLive?: number,
    description?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      name?: string,
    }>,

length?: number, name?: string, playback?: { type?: 'hls' | 'dash', url?: string, }, playlistId?: number, scheduleGuid?: string, status?: 'draft' | 'published' | 'trash', studios?: List<{ id?: number, name?: string, }>, tags?: List<{ text?: string, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, embedded: { aggregations?: { durations?: List<{

}>, instructors?: List<{ id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, }>, tags?: List<{ buckets?: List<{ count?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, value?: string, }>, value?: string, }>, }, }, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

POST /content/items

Create a content item

Request Body
{
  countries?: List<{
    code?: string,
  }>,
  description?: string,
  image: {
    data?: string,
    filename?: string,
  },
  instructors?: List<{
    id?: number,
    precedence?: number,
  }>,
- isWorldWide?: bool,
  name?: string,
  playlist?: {
    id?: number,
  },
  status?: 'draft' | 'published',
  studios?: List<{
    id?: number,
    precedence?: number,
  }>,
  tags?: List<{
    value?: string,
  }>,
  videoLength?: {
    id?: number,
  },
}

POST /content/items

Create a content item

Request Body
{
  countries?: List<{
    code?: string,
  }>,
  description?: string,
  image: {
    data?: string,
    filename?: string,
  },
  instructors?: List<{
    id?: number,
    precedence?: number,
  }>,

name?: string, playlist?: { id?: number, }, status?: 'draft' | 'published', studios?: List<{ id?: number, precedence?: number, }>, tags?: List<{ value?: string, }>, videoLength?: { id?: number, }, }

PATCH /content/items/{guid}

Update a content item

Request Body
{
  countries: List<{
    code?: string,
  }>,
  description: string,
  image: {
    data?: string,
    filename?: string,
  },
  instructors: List<{
    id?: number,
    precedence?: number,
  }>,
- isWorldWide: bool,
  name: string,
  playlist: {
    id?: number,
  },
  status: 'draft' | 'published',
  studios: List<{
    id?: number,
    precedence?: number,
  }>,
  tags: List<{
    value?: string,
  }>,
  videoLength: {
    id?: number,
  },
- videoStatus: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
}

PATCH /content/items/{guid}

Update a content item

Request Body
{
  countries: List<{
    code?: string,
  }>,
  description: string,
  image: {
    data?: string,
    filename?: string,
  },
  instructors: List<{
    id?: number,
    precedence?: number,
  }>,

name: string, playlist: { id?: number, }, status: 'draft' | 'published', studios: List<{ id?: number, precedence?: number, }>, tags: List<{ value?: string, }>, videoLength: { id?: number, },

}

GET /content/recommendations

Get content recommended for this user.

Response Body
{
  data: List<{
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    contentGuid?: string,
    countries?: List<{
      code?: string,
    }>,
    dateLive?: number,
    description?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      name?: string,
    }>,
-   isWorldWide?: bool,
    length?: number,
    name?: string,
    playback?: {
      type?: 'hls' | 'dash',
      url?: string,
    },
    playlistId?: number,
    scheduleGuid?: string,
    score?: number,
    status?: 'draft' | 'published' | 'trash',
    studios?: List<{
      id?: number,
      name?: string,
    }>,
    tags?: List<{
      text?: string,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

GET /content/recommendations

Get content recommended for this user.

Response Body
{
  data: List<{
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    contentGuid?: string,
    countries?: List<{
      code?: string,
    }>,
    dateLive?: number,
    description?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      name?: string,
    }>,

length?: number, name?: string, playback?: { type?: 'hls' | 'dash', url?: string, }, playlistId?: number, scheduleGuid?: string, score?: number, status?: 'draft' | 'published' | 'trash', studios?: List<{ id?: number, name?: string, }>, tags?: List<{ text?: string, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /retailers/{id}/offers

Get a list of offers that this retailer should have.

Response Body
{
  data: List<{
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {
-     basePrice?: {
-       currency?: {
-         code?: string,
-         scale?: number,
-         symbol?: string,
-       },
-       value?: number,
-     },
-     benefits?: List<{
-       text?: string,
-     }>,
-     billingProvider?: {
-       id?: number,
-       name?: string,
-       organizationCode?: string,
-       priceCode?: string,
-       productCode?: string,
-       type?: 'stripe' | 'apple' | 'google' | 'amazon',
-     },
-     country?: {

code?: string, - id?: number,

}, - createdBy?: { - id?: number, - }, - dateCreated?: number, - dateUpdated?: number, - defaultTrial?: { - units?: 'day', - value?: number, - }, - delayBillingDays?: number, - description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { - units?: 'month', - value?: number,

}, - frequencyDays?: number, id?: number, - name?: string, - sku?: string, - sortOrder?: number, - source?: { - accountId?: string, - productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', - }, - tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, - updatedBy?: { - id?: number, - },

}, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /retailers/{id}/offers

Get a list of offers that this retailer should have.

Response Body
{
  data: List<{
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    delayBilling?: {
      days?: number,
      text?: string,
      type?: 'trial' | 'bundle',
    },
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    introductory?: {
      days?: number,
      price?: number,
      stripeCouponId?: string,
      text?: string,
    },
    name?: string,
    plan?: {

+ currency?: { code?: string,

+ scale?: number, + symbol?: string, },

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: {

+ days?: number, },

id?: number,

+ lineItems: List<{ + text?: string, + }>, + name: string, }, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /users/{userId}/subscriptions

Get a list of a user's subscriptions.

Response Body
{
  data: List<{
    activation?: {
      isActivated?: bool,
      isFirstPeriodPrepaid?: bool,
    },
    billing?: {
      customerCode?: string,
      orderCode?: string,
    },
    cancellation?: {
      dateCancelled?: number,
      reason?: {
        code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
        message?: string,
      },
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    offer?: {
      guid?: string,
    },
    pause?: {
      dateEnd?: number,
      dateStart?: number,
      reason?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /users/{userId}/subscriptions

Get a list of a user's subscriptions.

Response Body
{
  data: List<{
    activation?: {
      isActivated?: bool,
      isFirstPeriodPrepaid?: bool,
    },
    billing?: {
      customerCode?: string,
      orderCode?: string,
    },
    cancellation?: {
      dateCancelled?: number,
      reason?: {
        code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
        message?: string,
      },
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    offer?: {
      guid?: string,
    },
    pause?: {
      dateEnd?: number,
      dateStart?: number,
      reason?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {
+       credentialsKey?: string,
        id?: number,
        name?: string,
        organizationCode?: string,
        priceCode?: string,
        productCode?: string,
        type?: 'stripe' | 'apple' | 'google' | 'amazon',
      },
      country?: {
        code?: string,
        id?: number,
      },
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateUpdated?: number,
      defaultTrial?: {
        units?: 'day',
        value?: number,
      },
      delayBillingDays?: number,
      description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

GET /users/{userId}/subscriptions/{id}

Get a specific subscription.

Response Body
{
  data: {
    activation?: {
      isActivated?: bool,
      isFirstPeriodPrepaid?: bool,
    },
    billing?: {
      customerCode?: string,
      orderCode?: string,
    },
    cancellation?: {
      dateCancelled?: number,
      reason?: {
        code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
        message?: string,
      },
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    offer?: {
      guid?: string,
    },
    pause?: {
      dateEnd?: number,
      dateStart?: number,
      reason?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {

id?: number, name?: string, organizationCode?: string, priceCode?: string, productCode?: string, type?: 'stripe' | 'apple' | 'google' | 'amazon', }, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, - emailTemplateId?: number, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, - code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',

type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number,

name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string,

productId?: string, - type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', }, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, - status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',

term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }

GET /users/{userId}/subscriptions/{id}

Get a specific subscription.

Response Body
{
  data: {
    activation?: {
      isActivated?: bool,
      isFirstPeriodPrepaid?: bool,
    },
    billing?: {
      customerCode?: string,
      orderCode?: string,
    },
    cancellation?: {
      dateCancelled?: number,
      reason?: {
        code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
        message?: string,
      },
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    offer?: {
      guid?: string,
    },
    pause?: {
      dateEnd?: number,
      dateStart?: number,
      reason?: string,
    },
    plan?: {
      basePrice?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      benefits?: List<{
        text?: string,
      }>,
      billingProvider?: {
+       credentialsKey?: string,
        id?: number,
        name?: string,
        organizationCode?: string,
        priceCode?: string,
        productCode?: string,
        type?: 'stripe' | 'apple' | 'google' | 'amazon',
      },
      country?: {
        code?: string,
        id?: number,
      },
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateUpdated?: number,
      defaultTrial?: {
        units?: 'day',
        value?: number,
      },
      delayBillingDays?: number,
      description?: string,

family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>,

+ code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, + image?: { + default: string, + large: string, + medium: string, + small: string, + url?: string, + }, + musicRights?: { + productId?: string, + vendor?: 'audibleMagic', + }, name?: string, sku?: string, sortOrder?: number, source?: { accountId?: string, + name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string,

}, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, provisional?: { isProvisioned?: bool, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, },

+ status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign: string, content: string, medium: string, source: string, term: string, }, }, }

GET /collections

List collections

Response Body
{
  data: List<{
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
-   classCount?: number,
-   countries?: List<string>,
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,
    sortOrder?: number,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    totalCount?: number,
    type?: 'generic' | 'series' | 'challenge' | 'program',
    updatedBy?: {
      id?: number,
    },
    visibility?: 'public' | 'unlisted' | 'private' | 'trash',
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

GET /collections

List collections

Response Body
{
  data: List<{
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },

coverImage?: { default: string, large: string, medium: string, small: string, url?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, name?: string, sortOrder?: number, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'trash', }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }

POST /collections

Create a new Collection

Request Body
{
  available?: {
    end?: number,
    start?: number,
  },
  badge?: {
    guid?: string,
  },
  cardImage: {
    data?: string,
    filename?: string,
  },
- countries?: List<string>,
  coverImage: {
    data?: string,
    filename?: string,
  },
  description?: string,
  durationDays?: number,
  episodeWord?: string,
  name?: string,
  schedule: List<{
    guid?: string,
    sortOrder: number,
  }>,
  showcase: List<{
    country?: {
      code?: string,
    },
    sortOrder?: number,
    tagValue?: string,
  }>,
  sortOrder?: number,
- tags: string,
  totalCount?: number,
  type?: 'generic' | 'series' | 'challenge' | 'program',
  visibility?: 'public' | 'unlisted' | 'private' | 'trash',
}
Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
-   countries?: List<string>,
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,
    showcase?: List<{
      collectionGuid?: string,
      country?: {
        code?: string,
      },
      guid?: string,
      sortOrder?: number,
      tagValue?: string,
    }>,
    sortOrder?: number,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    totalCount?: number,
    type?: 'generic' | 'series' | 'challenge' | 'program',
    updatedBy?: {
      id?: number,
    },
    visibility?: 'public' | 'unlisted' | 'private' | 'trash',
  },
}

POST /collections

Create a new Collection

Request Body
{
  available?: {
    end?: number,
    start?: number,
  },
  badge?: {
    guid?: string,
  },
  cardImage: {
    data?: string,
    filename?: string,
  },

coverImage: { data?: string, filename?: string, }, description?: string, durationDays?: number, episodeWord?: string, name?: string, schedule: List<{ guid?: string, sortOrder: number, }>, showcase: List<{ country?: { code?: string, }, sortOrder?: number, tagValue?: string, }>, sortOrder?: number,

totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', visibility?: 'public' | 'unlisted' | 'private' | 'trash', }
Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },

coverImage?: { default: string, large: string, medium: string, small: string, url?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, name?: string, showcase?: List<{ collectionGuid?: string, country?: { code?: string, }, guid?: string, sortOrder?: number, tagValue?: string, }>, sortOrder?: number, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'trash', }, }

GET /collections/{guid}

Get a collection by guid

Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
-   countries?: List<string>,
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,
    showcase?: List<{
      collectionGuid?: string,
      country?: {
        code?: string,
      },
      guid?: string,
      sortOrder?: number,
      tagValue?: string,
    }>,
    sortOrder?: number,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    totalCount?: number,
    type?: 'generic' | 'series' | 'challenge' | 'program',
    updatedBy?: {
      id?: number,
    },
    visibility?: 'public' | 'unlisted' | 'private' | 'trash',
  },
}

GET /collections/{guid}

Get a collection by guid

Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },

coverImage?: { default: string, large: string, medium: string, small: string, url?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, name?: string, showcase?: List<{ collectionGuid?: string, country?: { code?: string, }, guid?: string, sortOrder?: number, tagValue?: string, }>, sortOrder?: number, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'trash', }, }

PATCH /collections/{guid}

Update a Collection

Request Body
{
  available: {
    end?: number,
    start?: number,
  },
  badge: {
    guid?: string,
  },
  cardImage: {
    data?: string,
    filename?: string,
  },
- countries: List<string>,
  coverImage: {
    data?: string,
    filename?: string,
  },
  description: string,
  durationDays: number,
  episodeWord: string,
  name: string,
  schedule: List<{
    guid?: string,
    sortOrder: number,
  }>,
  showcase: List<{
    country?: {
      code?: string,
    },
    sortOrder?: number,
    tagValue?: string,
  }>,
  sortOrder: number,
- tags: string,
  totalCount: number,
  type: 'generic' | 'series' | 'challenge' | 'program',
  visibility: 'public' | 'unlisted' | 'private' | 'trash',
}
Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
-   countries?: List<string>,
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,
    showcase?: List<{
      collectionGuid?: string,
      country?: {
        code?: string,
      },
      guid?: string,
      sortOrder?: number,
      tagValue?: string,
    }>,
    sortOrder?: number,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    totalCount?: number,
    type?: 'generic' | 'series' | 'challenge' | 'program',
    updatedBy?: {
      id?: number,
    },
    visibility?: 'public' | 'unlisted' | 'private' | 'trash',
  },
}

PATCH /collections/{guid}

Update a Collection

Request Body
{
  available: {
    end?: number,
    start?: number,
  },
  badge: {
    guid?: string,
  },
  cardImage: {
    data?: string,
    filename?: string,
  },

coverImage: { data?: string, filename?: string, }, description: string, durationDays: number, episodeWord: string, name: string, schedule: List<{ guid?: string, sortOrder: number, }>, showcase: List<{ country?: { code?: string, }, sortOrder?: number, tagValue?: string, }>, sortOrder: number,

totalCount: number, type: 'generic' | 'series' | 'challenge' | 'program', visibility: 'public' | 'unlisted' | 'private' | 'trash', }
Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },

coverImage?: { default: string, large: string, medium: string, small: string, url?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, name?: string, showcase?: List<{ collectionGuid?: string, country?: { code?: string, }, guid?: string, sortOrder?: number, tagValue?: string, }>, sortOrder?: number, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'trash', }, }

PUT /collections/{guid}/schedule/{scheduleGuid}

Add a schedule item to a collection

Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
-   countries?: List<string>,
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,
    showcase?: List<{
      collectionGuid?: string,
      country?: {
        code?: string,
      },
      guid?: string,
      sortOrder?: number,
      tagValue?: string,
    }>,
    sortOrder?: number,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format',
      value?: string,
    }>,
    totalCount?: number,
    type?: 'generic' | 'series' | 'challenge' | 'program',
    updatedBy?: {
      id?: number,
    },
    visibility?: 'public' | 'unlisted' | 'private' | 'trash',
  },
}

PUT /collections/{guid}/schedule/{scheduleGuid}

Add a schedule item to a collection

Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },

coverImage?: { default: string, large: string, medium: string, small: string, url?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, name?: string, showcase?: List<{ collectionGuid?: string, country?: { code?: string, }, guid?: string, sortOrder?: number, tagValue?: string, }>, sortOrder?: number, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level' | 'format', value?: string, }>, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'trash', }, }
Added endpoints

POST /users/{userId}/account/test-token

Generate a test token for stripe

Guard: admin

Response Body
{
  data: string,
}
21 deleted endpoints

POST /webhooks/orders

Request Body
{
  customer?: {
    email?: string,
    firstName?: string,
    lastName?: string,
  },
  initiatedBy: {
    id?: number,
  },
  internalNote: string,
  isFirstPeriodPrepaid?: bool,
  offerGuid?: string,
  publicNote: string,
  reason: record,
  retailer?: {
    orderCode?: string,
    partner?: {
      id?: number,
    },
    storeCode?: string,
  },
  utm?: {
    campaign: string,
    content: string,
    medium: string,
    source: string,
    term: string,
  },
}

PUT /users/{userId}/equipment

Adds OR replaces all of users equipment

Guard: admin, self

Request Body
{
  equipmentIds?: List<number>,
}
Response Body
{
  data: List<{
    dateCreated?: number,
    equipmentId?: number,
    userId?: number,
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

POST /users/{userId}/equipment

Adds a piece of equipment to a user

Guard: admin, self

Request Body
{
  equipmentId?: number,
}
Response Body
{
  data: {
    dateCreated?: number,
    equipmentId?: number,
    userId?: number,
  },
}

GET /users/{userId}/equipment

Get a list of users equipment

Guard: admin, self

Response Body
{
  data: List<{
    dateCreated?: number,
    equipmentId?: number,
    userId?: number,
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

DELETE /users/{userId}/equipment/{equipmentId}

Remove a piece of equipment from a user

Guard: admin, self

GET /billing-providers

Get a list of billing providers

Response Body
{
  data: List<{
    id?: number,
    name?: string,
    organizationCode?: string,
    type?: 'stripe' | 'apple' | 'google' | 'amazon',
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

POST /billing-providers

Create a new billing provider

Request Body
{
  name?: string,
  organizationCode?: string,
  type?: 'stripe' | 'apple' | 'google' | 'amazon',
}
Response Body
{
  data: {
    id?: number,
    name?: string,
    organizationCode?: string,
    type?: 'stripe' | 'apple' | 'google' | 'amazon',
  },
}

GET /billing-providers/{id}

Get a single billing provider by ID

Response Body
{
  data: {
    id?: number,
    name?: string,
    organizationCode?: string,
    type?: 'stripe' | 'apple' | 'google' | 'amazon',
  },
}

PATCH /billing-providers/{id}

Edit a billing provider

Request Body
{
  name: string,
  organizationCode: string,
  type: 'stripe' | 'apple' | 'google' | 'amazon',
}
Response Body
{
  data: {
    id?: number,
    name?: string,
    organizationCode?: string,
    type?: 'stripe' | 'apple' | 'google' | 'amazon',
  },
}

GET /shops

Get a list of shops

Response Body
{
  data: List<{
    country?: {
      code?: string,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateCreated?: number,
      dateUpdated?: number,
      id?: number,
      mediaNet?: {
        code?: string,
        territoryId?: number,
      },
      name?: string,
      numberFormat?: {
        decimalSeparator?: '.' | ',' | ' ',
        thousandsSeparator?: '.' | ',' | ' ',
      },
      stripe?: {
        id?: number,
      },
    },
    id?: number,
    name?: string,
    vendor?: {
      accessToken?: string,
      accountCode?: string,
      baseUrl?: string,
      type?: 'shopify',
    },
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

POST /shops

Create a new shop

Request Body
{
  country?: {
    code?: string,
  },
  name?: string,
  vendor?: {
    accessToken?: string,
    accountCode?: string,
    baseUrl?: string,
    type?: 'shopify',
  },
}
Response Body
{
  data: {
    country?: {
      code?: string,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateCreated?: number,
      dateUpdated?: number,
      id?: number,
      mediaNet?: {
        code?: string,
        territoryId?: number,
      },
      name?: string,
      numberFormat?: {
        decimalSeparator?: '.' | ',' | ' ',
        thousandsSeparator?: '.' | ',' | ' ',
      },
      stripe?: {
        id?: number,
      },
    },
    id?: number,
    name?: string,
    vendor?: {
      accessToken?: string,
      accountCode?: string,
      baseUrl?: string,
      type?: 'shopify',
    },
  },
}

GET /shops/{id}

Get a single shop by ID

Response Body
{
  data: {
    country?: {
      code?: string,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateCreated?: number,
      dateUpdated?: number,
      id?: number,
      mediaNet?: {
        code?: string,
        territoryId?: number,
      },
      name?: string,
      numberFormat?: {
        decimalSeparator?: '.' | ',' | ' ',
        thousandsSeparator?: '.' | ',' | ' ',
      },
      stripe?: {
        id?: number,
      },
    },
    id?: number,
    name?: string,
    vendor?: {
      accessToken?: string,
      accountCode?: string,
      baseUrl?: string,
      type?: 'shopify',
    },
  },
}

PATCH /shops/{id}

Edit a shop

Guard: admin

Request Body
{
  country: {
    code?: string,
  },
  name: string,
  vendor: {
    accessToken?: string,
    accountCode?: string,
    baseUrl?: string,
    type?: 'shopify',
  },
}
Response Body
{
  data: {
    country?: {
      code?: string,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateCreated?: number,
      dateUpdated?: number,
      id?: number,
      mediaNet?: {
        code?: string,
        territoryId?: number,
      },
      name?: string,
      numberFormat?: {
        decimalSeparator?: '.' | ',' | ' ',
        thousandsSeparator?: '.' | ',' | ' ',
      },
      stripe?: {
        id?: number,
      },
    },
    id?: number,
    name?: string,
    vendor?: {
      accessToken?: string,
      accountCode?: string,
      baseUrl?: string,
      type?: 'shopify',
    },
  },
}

POST /users/{userId}/account/subscribe-inactive

Create an inactive subscription.

Guard: admin

Response Body
{
  data: {
    creditBalance?: number,
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
    defaultPaymentMethod?: {
      brand?: string,
      code?: string,
      expiration?: string,
      type?: string,
    },
    discounts?: {
      amount: number,
      dateEnd?: number,
      dateStart?: number,
      name?: string,
      percent: number,
    },
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
      code?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary' | 'childProfile' | 'neverSubscribed',
      text?: string,
    },
    subscription?: {
      activation?: {
        isActivated?: bool,
        isFirstPeriodPrepaid?: bool,
      },
      billing?: {
        customerCode?: string,
        orderCode?: string,
      },
      cancellation?: {
        dateCancelled?: number,
        reason?: {
          code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other' | 'planChange',
          message?: string,
        },
      },
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateUpdated?: number,
      id?: number,
      offer?: {
        guid?: string,
      },
      pause?: {
        dateEnd?: number,
        dateStart?: number,
        reason?: string,
      },
      plan?: {
        basePrice?: {
          currency?: {
            code?: string,
            scale?: number,
            symbol?: string,
          },
          value?: number,
        },
        benefits?: List<{
          text?: string,
        }>,
        billingProvider?: {
          id?: number,
          name?: string,
          organizationCode?: string,
          priceCode?: string,
          productCode?: string,
          type?: 'stripe' | 'apple' | 'google' | 'amazon',
        },
        country?: {
          code?: string,
          id?: number,
        },
        createdBy?: {
          id?: number,
        },
        dateCreated?: number,
        dateUpdated?: number,
        defaultTrial?: {
          units?: 'day',
          value?: number,
        },
        delayBillingDays?: number,
        description?: string,
        emailTemplateId?: number,
        family?: {
          brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
          code?: 'spinco' | 'premier' | 'select' | 'flex' | 'fitpass' | 'lite' | 'choice' | 'free',
          type?: 'connected' | 'disconnected',
        },
        frequency?: {
          units?: 'month',
          value?: number,
        },
        frequencyDays?: number,
        id?: number,
        name?: string,
        sku?: string,
        sortOrder?: number,
        source?: {
          accountId?: string,
          productId?: string,
          type?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
        },
        tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>,
        updatedBy?: {
          id?: number,
        },
      },
      price?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      promotion?: {
        id?: number,
      },
      provisional?: {
        isProvisioned?: bool,
      },
      renewal?: 'auto' | 'paused' | 'cancelled' | 'failed',
      source?: {
        accountId?: string,
        lineItemId?: string,
        name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
        orderId?: string,
        productId?: string,
      },
      status?: 'notActivated' | 'onTrialCancelled' | 'onTrialPaused' | 'onTrial' | 'activeCancelled' | 'activePaused' | 'active' | 'expiredPaused' | 'expiredVoluntary' | 'expiredInvoluntary',
      term?: {
        dateEnd?: number,
        dateStart?: number,
      },
      token?: string,
      trial?: {
        dateEnd?: number,
        dateStart?: number,
      },
      updatedBy?: {
        id?: number,
      },
      user?: {
        id?: number,
      },
      utm?: {
        campaign: string,
        content: string,
        medium: string,
        source: string,
        term: string,
      },
    },
  },
}

POST /users/{userId}/account/test-token/{planId}

Generate a test token for stripe

Guard: admin

Response Body
{
  data: string,
}

GET /content/video-status

Get video status by plus-separated content-guid(s)

Guard: loggedIn

Response Body
{
  data: List<{
    guid?: string,
    videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

GET /content/tag-groups

Get tagGroups by value

Guard: loggedIn

Response Body
{
  data: List<string>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

DELETE /content/tag-groups/{tagGroup}/{value}

Deletes a value from a tagGroup

Guard: admin

Response Body
{
  data: {
    group?: string,
    level?: 'primary',
    translations: record,
    values?: List<string>,
  },
}

GET /content/tag-groups/{tagGroup}

Get one tag group

Guard: loggedIn

Response Body
{
  data: {
    group?: string,
    level?: 'primary',
    translations: record,
    values?: List<string>,
  },
}

PATCH /content/tag-groups/{tagGroup}

Edit tag group

Guard: admin

Request Body
{
  level: 'primary',
  translations: record,
  values: List<string>,
}
Response Body
{
  data: {
    group?: string,
    level?: 'primary',
    translations: record,
    values?: List<string>,
  },
}

GET /content/schedule/available-times

Get list of available schedule time slots

Guard: admin

Response Body
{
  data: List<number>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}
Deleted endpoints
WORK IN PROGRESS