Nest Changelog
1.1.51
6/13/2022
1.1.52
6/27/2022
42 changed endpoints Collapse changed endpoints
GET /users
Get all users
Response Body
{- data: {billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number,
email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, },
}, }
GET /users
Get all users
Response Body
{+ data: List<{ billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number, + dealer?: { + id?: number, + }, email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
POST /users
Request Body
{ billingAddress: { city: string, country: { code?: string, }, postalCode: string, region: { code?: string, }, streetLine1: string, streetLine2: string, }, birthdate: string,email?: string, firstName: string, forcePasswordChange: bool, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName: string, mongoId: string, nickname: string, parent: { id?: number, mongoId?: string, }, password?: string, phoneNumber: string, purchaseHistory: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, }, serialNumber?: string, }>, roles: List<string>, tagline: string, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{ data: { billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number,email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, }, }
POST /users
Request Body
{ billingAddress: { city: string, country: { code?: string, }, postalCode: string, region: { code?: string, }, streetLine1: string, streetLine2: string, }, birthdate: string, + dealer: { + id?: number, + }, email?: string, firstName: string, forcePasswordChange: bool, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName: string, mongoId: string, nickname: string, parent: { id?: number, mongoId?: string, }, password?: string, phoneNumber: string, purchaseHistory: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, }, serialNumber?: string, }>, roles: List<string>, tagline: string, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{ data: { billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number, + dealer?: { + id?: number, + }, email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, }, }
GET /users/{userId}
Get a specific user by id
Response Body
{ data: { billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number,email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, }, }
GET /users/{userId}
Get a specific user by id
Response Body
{ data: { billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number, + dealer?: { + id?: number, + }, email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, }, }
PATCH /users/{userId}
Edit this user
Request Body
{ billingAddress: { city: string, country: { code?: string, }, postalCode: string, region: { code?: string, }, streetLine1: string, streetLine2: string, }, birthdate: string,email: string, firstName: string, forcePasswordChange: bool, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName: string, mongoId: string, nickname: string, parent: { id?: number, mongoId?: string, }, phoneNumber: string, purchaseHistory: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, }, serialNumber?: string, }>, roles: List<string>, tagline: string, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{ data: { billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number,email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, }, }
PATCH /users/{userId}
Edit this user
Request Body
{ billingAddress: { city: string, country: { code?: string, }, postalCode: string, region: { code?: string, }, streetLine1: string, streetLine2: string, }, birthdate: string, + dealer: { + id?: number, + }, email: string, firstName: string, forcePasswordChange: bool, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName: string, mongoId: string, nickname: string, parent: { id?: number, mongoId?: string, }, phoneNumber: string, purchaseHistory: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, }, serialNumber?: string, }>, roles: List<string>, tagline: string, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{ data: { billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number, + dealer?: { + id?: number, + }, email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, }, }
GET /users/{userId}/family
Get child accounts of this user
Response Body
{- data: {billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number,
email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, },
}, }
GET /users/{userId}/family
Get child accounts of this user
Response Body
{+ data: List<{ billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number, + dealer?: { + id?: number, + }, email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
POST /users/{userId}/family
Request Body
{ billingAddress: { city: string, country: { code?: string, }, postalCode: string, region: { code?: string, }, streetLine1: string, streetLine2: string, }, birthdate: string,email?: string, firstName: string, forcePasswordChange: bool, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName: string, mongoId: string, nickname: string, parent: { id?: number, mongoId?: string, }, password?: string, phoneNumber: string, purchaseHistory: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, }, serialNumber?: string, }>, roles: List<string>, tagline: string, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{ data: { billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number,email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, }, embedded: { jwt?: string, }, }
POST /users/{userId}/family
Request Body
{ billingAddress: { city: string, country: { code?: string, }, postalCode: string, region: { code?: string, }, streetLine1: string, streetLine2: string, }, birthdate: string, + dealer: { + id?: number, + }, email?: string, firstName: string, forcePasswordChange: bool, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName: string, mongoId: string, nickname: string, parent: { id?: number, mongoId?: string, }, password?: string, phoneNumber: string, purchaseHistory: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, }, serialNumber?: string, }>, roles: List<string>, tagline: string, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{ data: { billingAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, birthdate: string, createdBy?: { id?: number, }, dateActivated?: number, dateCreated?: number, dateUpdated?: number, + dealer?: { + id?: number, + }, email?: string, firstName?: string, forcePasswordChange?: bool, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { colors?: { background?: { hex?: string, }, foreground?: { hex?: string, }, }, default: string, initials?: string, isPlaceholder?: bool, large: string, medium: string, small: string, url?: string, }, lastName?: string, mongoId?: string, nickname?: string, parent?: { id?: number, mongoId?: string, }, phoneNumber?: string, purchaseHistory?: List<{ datePurchased?: number, name?: string, retailer?: { id?: number, name?: string, }, serialNumber?: string, }>, roles?: List<string>, stripe?: { customerId?: string, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, }, embedded: { jwt?: string, }, }
GET /plans
Get all Plans
Response Body
{- data: {basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProviders?: List<{ accountId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', priceId?: string, productId?: string, }>, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, musicRights?: { productId?: string, vendor?: 'audibleMagic', }, name?: string, sku?: string, sortOrder?: number, sources?: List<{ accountId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string, }>, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, },
}, }
GET /plans
Get all Plans
Response Body
{+ data: List<{ basePrice?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, benefits?: List<{ text?: string, }>, billingProviders?: List<{ accountId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', priceId?: string, productId?: string, }>, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, defaultTrial?: { units?: 'day', value?: number, }, delayBillingDays?: number, description?: string, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { units?: 'month', value?: number, }, frequencyDays?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, musicRights?: { productId?: string, vendor?: 'audibleMagic', }, name?: string, sku?: string, sortOrder?: number, sources?: List<{ accountId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', productId?: string, }>, tags?: List<'humana' | 'gympass' | 'addon' | 'amazon' | 'popular' | 'directPurchase' | 'csOnly' | 'displayInAdmin'>, updatedBy?: { id?: number, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /preferences
Get a list of possible preferences
Response Body
{- data: {code?: string, defaultValue: record, description?: string, group?: { id?: number, }, id?: number, inputType?: 'string' | 'number' | 'boolean' | 'enum' | 'multiSelect', name?: string, sortOrder?: number, validation?: { isNullable: bool, maxChoices: number, maxLength: number, maxValue: number, minChoices: number, minLength: number, minValue: number, options: List<string>, precision: number, regexPattern: string, },
}, }
GET /preferences
Get a list of possible preferences
Response Body
{+ data: List<{ code?: string, defaultValue: record, description?: string, group?: { id?: number, }, id?: number, inputType?: 'string' | 'number' | 'boolean' | 'enum' | 'multiSelect', name?: string, sortOrder?: number, validation?: { isNullable: bool, maxChoices: number, maxLength: number, maxValue: number, minChoices: number, minLength: number, minValue: number, options: List<string>, precision: number, regexPattern: string, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /subscriptions/{id}/history
Get a subscription history by subscription ID
Response Body
{- data: {action?: 'paused' | 'planChanged' | 'created' | 'canceled' | 'discounted', dateOccurred?: number, guid?: string, initiatedBy?: { id?: number, }, payload: record, rawJson: record, reason?: string, source?: 'stripe.com' | 'admin.echelonfit.com' | 'falcon1.echelonfit.com' | 'member.echelonfit.com' | 'stag.member.echelonfit.com', subscription?: { id?: number, }, user?: { id?: number, },
}, }
GET /subscriptions/{id}/history
Get a subscription history by subscription ID
Response Body
{+ data: List<{ action?: 'paused' | 'planChanged' | 'created' | 'canceled' | 'discounted', dateOccurred?: number, guid?: string, initiatedBy?: { id?: number, }, payload: record, rawJson: record, reason?: string, source?: 'stripe.com' | 'admin.echelonfit.com' | 'falcon1.echelonfit.com' | 'member.echelonfit.com' | 'stag.member.echelonfit.com', subscription?: { id?: number, }, user?: { id?: number, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /campaigns
Get all campaigns
Response Body
{- data: {createdBy?: { id?: number, }, dateCreated?: number, dateExpires?: number, delayBillingDays?: number, guid?: string, name?: string, partner?: { id?: number, name?: string, }, utmCampaign?: string, utmSource?: string,
}, }
GET /campaigns
Get all campaigns
Response Body
{+ data: List<{ createdBy?: { id?: number, }, dateCreated?: number, dateExpires?: number, delayBillingDays?: number, guid?: string, name?: string, partner?: { id?: number, name?: string, }, utmCampaign?: string, utmSource?: string, + }>, + 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: {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 /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 /instructors
Get a list of instructors
Response Body
{- data: {bio?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, flags?: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, updatedBy?: { id?: number, }, user?: { id?: number, },
}, }
GET /instructors
Get a list of instructors
Response Body
{+ data: List<{ bio?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, flags?: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, updatedBy?: { id?: number, }, user?: { id?: number, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /studios
Get a list of all studios
Response Body
{- data: {code?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, streetAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, updatedBy?: { id?: number, },
}, }
GET /studios
Get a list of all studios
Response Body
{+ data: List<{ code?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, streetAddress?: { city?: string, 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, }, }, postalCode?: string, region?: { code?: string, name?: string, }, streetLine1?: string, streetLine2?: string, }, updatedBy?: { id?: number, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /features
Get a list of all available features
Response Body
{- data: {code?: string, defaultValue: record, description?: string, id?: number, inputType?: 'string' | 'number' | 'boolean' | 'enum' | 'multiSelect', name?: string, sortOrder?: number, usedBy?: List<'client' | 'server'>, validation?: { isNullable: bool, maxChoices: number, maxLength: number, maxValue: number, minChoices: number, minLength: number, minValue: number, options: List<string>, precision: number, regexPattern: string, },
}, }
GET /features
Get a list of all available features
Response Body
{+ data: List<{ code?: string, defaultValue: record, description?: string, id?: number, inputType?: 'string' | 'number' | 'boolean' | 'enum' | 'multiSelect', name?: string, sortOrder?: number, usedBy?: List<'client' | 'server'>, validation?: { isNullable: bool, maxChoices: number, maxLength: number, maxValue: number, minChoices: number, minLength: number, minValue: number, options: List<string>, precision: number, regexPattern: string, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /songs
Get a list of songs
Response Body
{ data: {- 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,}, }
GET /songs
Get a list of songs
Response Body
{ data: {+ aggregations?: List<{ + buckets?: List<{ + }>, + key?: string, + }>, + count?: number, + pagination?: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, },
+ results?: List<{ + 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, }>,
}, }
GET /songs/{id}/playlists
Get all playlists that contain this song
Response Body
{- data: {countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: 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, }>, videoLength?: { id?: number, name?: string, },
}, }
GET /songs/{id}/playlists
Get all playlists that contain this song
Response Body
{+ data: List<{ countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: 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, }>, 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: {countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: 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, }>, videoLength?: { id?: number, name?: string, },
}, }
GET /playlists
Get a list of playlists
Response Body
{+ data: List<{ countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: 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, }>, videoLength?: { id?: number, name?: string, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /playlists/{playlist}
Get a single playlist by ID
Response Body
{ data: { countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: 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, }>, tracks?: List<{dateCreated?: number, flag?: string,
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, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: 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, }>, 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, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: 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, }>, tracks?: List<{dateCreated?: number, flag?: string,
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, }, dateCreated?: number, dateUpdated?: number, id?: number, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, isFlagged?: 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, }>, 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/{playlistId}/tracks
Get tracks from a given playlist
Response Body
{- data: {dateCreated?: number, flag?: string,
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,
}, }
GET /playlists/{playlistId}/tracks
Get tracks from a given playlist
Response Body
{+ data: 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, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
DELETE /playlists/{playlistId}/tracks/{songId}
Remove song from a playlist
Response Body
{- data: {createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, song?: { id?: number, }, trackOrder?: number,
}, }
DELETE /playlists/{playlistId}/tracks/{songId}
Remove song from a playlist
Response Body
{+ data: List<{ createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, song?: { id?: number, }, trackOrder?: number, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
PUT /playlists/{playlistId}/tracks/{songId}
Response Body
{- data: {createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, song?: { id?: number, }, trackOrder?: number,
}, }
PUT /playlists/{playlistId}/tracks/{songId}
Response Body
{+ data: List<{ createdBy?: { id?: number, }, dateCreated?: number, flag?: string, playlist?: { id?: number, }, song?: { id?: number, }, trackOrder?: number, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /firmware
Get a list of the available firmware updates
Response Body
{- data: {appVersions?: { android?: { maxVersion?: string, minVersion?: string, }, ios?: { maxVersion?: string, minVersion?: string, }, screen?: { maxVersion?: string, minVersion?: string, }, }, capabilities?: List<{ data: record, name?: string, }>, dateReleased?: number, dateRequired?: number, id?: number, name?: string, releaseNotes?: string, status?: 'draft' | 'published' | 'trash', supportedModels?: List<string>, type?: 'hardware' | 'tablet' | 'reflect', updateFile?: { url?: string, }, version?: string,
}, }
GET /firmware
Get a list of the available firmware updates
Response Body
{+ data: List<{ appVersions?: { android?: { maxVersion?: string, minVersion?: string, }, ios?: { maxVersion?: string, minVersion?: string, }, screen?: { maxVersion?: string, minVersion?: string, }, }, capabilities?: List<{ data: record, name?: string, }>, dateReleased?: number, dateRequired?: number, id?: number, name?: string, releaseNotes?: string, status?: 'draft' | 'published' | 'trash', supportedModels?: List<string>, type?: 'hardware' | 'tablet' | 'reflect', updateFile?: { url?: string, }, version?: 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: {aggregations?: List<{ buckets?: List<{ }>, key?: string, }>, count?: number, pagination?: {
skip?: number, take?: number,
}, results?: List<{ countries?: List<{ code?: string, }>, dateLive?: number, description?: string, guid?: string, image?: string, instructors?: List<string>, length?: number, name?: string, studios?: List<string>, tags?: List<{ text?: string, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level', value?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>,
}, }
GET /content/library
Search for content in the Library
Response Body
{+ data: List<{ aggregations?: List<{ buckets?: List<{ }>, key?: string, }>, count?: number, pagination?: { + page?: number, skip?: number, take?: number, + total: { + pages?: number, + rows?: number, + }, }, results?: List<{ countries?: List<{ code?: string, }>, dateLive?: number, description?: string, guid?: string, image?: string, instructors?: List<string>, length?: number, name?: string, studios?: List<string>, tags?: List<{ text?: string, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level', value?: string, }>, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /content/items
Get list of content items
Response Body
{- data: {countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, }, 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', }>, sourceUrl?: string, status?: 'draft' | 'published', 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', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
}, }
GET /content/items
Get list of content items
Response Body
{+ data: List<{ countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, }, 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', }>, sourceUrl?: string, status?: 'draft' | 'published', 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', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /content/items/{guid}
Get a specific content item
Response Body
{- data: {countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, }, 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', }>, sourceUrl?: string, status?: 'draft' | 'published', 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', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
}, }
GET /content/items/{guid}
Get a specific content item
Response Body
{+ data: List<{ countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, }, 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', }>, sourceUrl?: string, status?: 'draft' | 'published', 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', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /content/recommendations
Get content recommended for this user.
Response Body
{- data: {countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, }, 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', }>, sourceUrl?: string, status?: 'draft' | 'published', 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', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
}, }
GET /content/recommendations
Get content recommended for this user.
Response Body
{+ data: List<{ countries?: List<{ code?: string, }>, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, duration?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, precedence?: number, }>, name?: string, playlist?: { id?: number, }, 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', }>, sourceUrl?: string, status?: 'draft' | 'published', 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', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /content/tags
Get available content tags.
Response Body
{- data: {image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level', value?: string,
}, }
GET /content/tags
Get available content tags.
Response Body
{+ data: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level', value?: string, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /content/schedule
Get list of scheduled content.
Response Body
{- data: {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',
}, }
GET /content/schedule
Get list of scheduled content.
Response Body
{+ data: 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', + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /content/schedule/{scheduleId}
Get a piece of scheduled content by its guid (not its content guid!).
Response Body
{- data: {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',
}, }
GET /content/schedule/{scheduleId}
Get a piece of scheduled content by its guid (not its content guid!).
Response Body
{+ data: 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', + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /redemption-codes
Get a list of redemption codes
Response Body
{- data: {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, },
}, }
GET /redemption-codes
Get a list of redemption codes
Response Body
{+ data: List<{ 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, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /retailers
Get a list of retailers
Response Body
{- data: {brand?: { id?: number, name?: string, }, bundleDays?: number, country?: { code?: string, id?: number, }, dateCreated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, isActive?: bool, name?: string,
}, }
GET /retailers
Get a list of retailers
Response Body
{+ data: List<{ brand?: { id?: number, name?: string, }, bundleDays?: number, country?: { code?: string, id?: number, }, dateCreated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, isActive?: bool, name?: string, + }>, + 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: {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 /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}/relationships
Retrieve valid relationships by userId
Response Body
{- data: {type?: 'friends' | 'outgoing-request' | 'incoming-request' | 'blocked', user?: { id?: number, name?: string, },
}, }
GET /users/{userId}/relationships
Retrieve valid relationships by userId
Response Body
{+ data: List<{ type?: 'friends' | 'outgoing-request' | 'incoming-request' | 'blocked', user?: { id?: number, name?: string, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /equipment/models
Get a list of all available Equipment
Response Body
{- data: {brand?: { name?: string, }, category: { guid?: string, name?: string, }, dateAvailable?: number, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, pdf?: { url?: string, }, plans?: List<{ id?: number, }>, video?: { url?: string, },
}, }
GET /equipment/models
Get a list of all available Equipment
Response Body
{+ data: List<{ brand?: { name?: string, }, category: { guid?: string, name?: string, }, dateAvailable?: number, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, pdf?: { url?: string, }, plans?: List<{ id?: number, }>, video?: { url?: string, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /equipment/categories
Get all equipment categories.
Response Body
{- data: {contentTag?: string, dateCreated?: number, dateUpdated?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, isActive?: bool, legacyContentTag?: string, name?: string, sortOrder?: number, updatedBy?: { id?: number, },
}, }
GET /equipment/categories
Get all equipment categories.
Response Body
{+ data: List<{ contentTag?: string, dateCreated?: number, dateUpdated?: number, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, isActive?: bool, legacyContentTag?: string, name?: string, sortOrder?: number, updatedBy?: { id?: number, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /brands
Get all brands
Response Body
{- data: {alias?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, isActive?: bool, name?: string, updatedBy?: { id?: number, },
}, }
GET /brands
Get all brands
Response Body
{+ data: List<{ alias?: string, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, isActive?: bool, name?: string, updatedBy?: { id?: number, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /partners
Get a list of partners
Response Body
{- data: {brand?: { id?: number, name?: string, }, bundleDays?: number, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, type?: 'retailer' | 'dealer' | 'affiliate' | 'employer', updatedBy?: { id?: number, },
}, }
GET /partners
Get a list of partners
Response Body
{+ data: List<{ brand?: { id?: number, name?: string, }, bundleDays?: number, country?: { code?: string, id?: number, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string, type?: 'retailer' | 'dealer' | 'affiliate' | 'employer', updatedBy?: { id?: number, }, + }>, + 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: {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 /partners/{id}/offers
Get a list of offers available for this specific partner/retailer
Response Body
{+ data: List<{ createdBy?: { id?: number, }, dateCreated?: number, delayBilling?: { days?: number, text?: string, type?: 'trial' | 'bundle', }, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, introductory?: { days?: number, price?: number, stripeCouponId?: string, text?: string, }, name?: string, plan?: { currency?: { code?: string, scale?: number, symbol?: string, }, family?: { brands?: List<'echelon' | 'fitnation' | 'fitquest'>, code?: 'premier' | 'select' | 'flex' | 'fitpass' | 'free', type?: 'connected' | 'disconnected', }, frequency?: { days?: number, }, id?: number, lineItems: List<{ text?: string, }>, name: string, }, recurring?: { price?: number, stripePriceId?: string, text?: string, }, status?: 'draft' | 'published', + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /users/{userId}/subscriptions
Get a list of a user's subscriptions.
Response Body
{- data: {activation?: { isActivated?: bool, }, billingProvider?: { accountId?: string, customerId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', orderId?: string, }, cancellation?: { dateCancelled?: number, feedback?: string, reason?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { id?: number, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign?: string, content?: string, medium?: string, source?: string, },
}, }
GET /users/{userId}/subscriptions
Get a list of a user's subscriptions.
Response Body
{+ data: List<{ activation?: { isActivated?: bool, }, billingProvider?: { accountId?: string, customerId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', orderId?: string, }, cancellation?: { dateCancelled?: number, feedback?: string, reason?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { id?: number, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign?: string, content?: string, medium?: string, source?: string, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
GET /countries
Get a list of countries
Response Body
{- data: {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, },
}, }
GET /countries
Get a list of countries
Response Body
{+ data: List<{ 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, }, + }>, + pagination: { + page?: number, + skip?: number, + take?: number, + total: { + pages?: number, + rows?: number, + }, }, }
11 added endpoints Collapse added endpoints
GET /users/{userId}/account/history
Get the changes that have happened to this account
Guard: selfOrAdmin
Response Body
{ data: List<{ action?: 'create' | 'activate' | 'started' | 'ended' | 'pause' | 'unpause' | 'cancel' | 'uncancel' | 'terminate' | 'change' | 'extend' | 'refund' | 'credit' | 'discount' | 'anonymize' | 'ban' | 'join-family' | 'unjoin-family ' | 'memo' | 'upcoming' | 'paid' | 'updated' | 'failed', dateOccurred?: number, guid?: string, initiatedBy?: { id?: number, }, internalNote?: string, payload: record, publicNote?: string, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other', message?: string, }, source?: 'webhook' | 'cs' | 'member' | 'app' | 'nest', subscription?: { id?: number, }, user?: { id?: number, }, }>, pagination: { page?: number, skip?: number, take?: number, total: { pages?: number, rows?: number, }, }, }
POST /users/{userId}/account/cancel
Guard: selfOrAdmin
Request Body
{ internalNote: string, publicNote: string, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other', message?: string, }, }
Response Body
{ data: { dateCancelled?: number, dateExpires?: number, datePausedUntil?: number, nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: { status?: 'accepted' | 'blocked' | 'requested', }, subscription?: { activation?: { isActivated?: bool, }, billingProvider?: { accountId?: string, customerId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', orderId?: string, }, cancellation?: { dateCancelled?: number, feedback?: string, reason?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { id?: number, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign?: string, content?: string, medium?: string, source?: string, }, }, }, }
POST /users/{userId}/account/uncancel
Guard: selfOrAdmin
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?: { status?: 'accepted' | 'blocked' | 'requested', }, subscription?: { activation?: { isActivated?: bool, }, billingProvider?: { accountId?: string, customerId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', orderId?: string, }, cancellation?: { dateCancelled?: number, feedback?: string, reason?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { id?: number, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign?: string, content?: string, medium?: string, source?: string, }, }, }, }
POST /users/{userId}/account/pause
Guard: selfOrAdmin
Request Body
{ durationDays?: number, internalNote: string, publicNote: string, reason: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other', message?: string, }, }
Response Body
{ data: { dateCancelled?: number, dateExpires?: number, datePausedUntil?: number, nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: { status?: 'accepted' | 'blocked' | 'requested', }, subscription?: { activation?: { isActivated?: bool, }, billingProvider?: { accountId?: string, customerId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', orderId?: string, }, cancellation?: { dateCancelled?: number, feedback?: string, reason?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { id?: number, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign?: string, content?: string, medium?: string, source?: string, }, }, }, }
POST /users/{userId}/account/unpause
Guard: selfOrAdmin
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?: { status?: 'accepted' | 'blocked' | 'requested', }, subscription?: { activation?: { isActivated?: bool, }, billingProvider?: { accountId?: string, customerId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', orderId?: string, }, cancellation?: { dateCancelled?: number, feedback?: string, reason?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { id?: number, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign?: string, content?: string, medium?: string, source?: string, }, }, }, }
POST /users/{userId}/account/terminate
Guard: admin
Request Body
{ internalNote: string, publicNote: string, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other', message?: string, }, }
Response Body
{ data: { dateCancelled?: number, dateExpires?: number, datePausedUntil?: number, nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: { status?: 'accepted' | 'blocked' | 'requested', }, subscription?: { activation?: { isActivated?: bool, }, billingProvider?: { accountId?: string, customerId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', orderId?: string, }, cancellation?: { dateCancelled?: number, feedback?: string, reason?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { id?: number, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign?: string, content?: string, medium?: string, source?: string, }, }, }, }
POST /users/{userId}/account/extend
Guard: selfOrAdmin
Request Body
{ durationDays?: number, internalNote: string, publicNote: string, reason: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other', message?: string, }, }
Response Body
{ data: { dateCancelled?: number, dateExpires?: number, datePausedUntil?: number, nextInvoice?: { amount?: number, currency?: { code?: string, scale?: number, symbol?: string, }, dateScheduled?: number, }, status?: { status?: 'accepted' | 'blocked' | 'requested', }, subscription?: { activation?: { isActivated?: bool, }, billingProvider?: { accountId?: string, customerId?: string, name?: 'stripe' | 'ios' | 'android' | 'amazon', orderId?: string, }, cancellation?: { dateCancelled?: number, feedback?: string, reason?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, pause?: { dateEnd?: number, dateStart?: number, reason?: string, }, plan?: { id?: number, }, price?: { currency?: { code?: string, scale?: number, symbol?: string, }, value?: number, }, promotion?: { id?: number, }, renewal?: 'auto' | 'paused' | 'cancelled' | 'failed', source?: { accountId?: string, lineItemId?: string, name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free', orderId?: string, productId?: string, }, status?: 'pending' | 'trialing' | 'active' | 'expired', term?: { dateEnd?: number, dateStart?: number, }, token?: string, trial?: { dateEnd?: number, dateStart?: number, }, updatedBy?: { id?: number, }, user?: { id?: number, }, utm?: { campaign?: string, content?: string, medium?: string, source?: string, }, }, }, }
GET /collections/{guid}
Get a collection by guid
Guard: producer
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { guid?: string, }, cardImage?: { default: string, large: string, medium: string, small: string, url?: string, }, coverImage?: { default: string, large: string, medium: string, small: string, url?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { description?: string, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, }>, name?: string, studios?: List<{ id?: number, name?: string, }>, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', }, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, showcase?: List<{ collectionGuid?: string, country?: { code?: string, }, guid?: string, sortOrder?: number, tagValue?: string, }>, sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'trash', }, }
PATCH /collections/{guid}
Update a Collection
Guard: producer
Request Body
{ available: { end?: number, start?: number, }, badge: { guid?: string, }, cardImage: { data?: string, filename?: string, }, coverImage: { data?: string, filename?: string, }, description: string, durationDays: number, episodeWord: string, name: string, schedule: List<{ guid?: string, sortOrder?: number, }>, showcase: List<{ country?: { code?: string, }, sortOrder?: number, tagValue?: string, }>, sortOrder: number, totalCount: number, type: 'generic' | 'series' | 'challenge' | 'program', visibility: 'public' | 'unlisted' | 'private' | 'trash', }
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { guid?: string, }, cardImage?: { default: string, large: string, medium: string, small: string, url?: string, }, coverImage?: { default: string, large: string, medium: string, small: string, url?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { description?: string, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, }>, name?: string, studios?: List<{ id?: number, name?: string, }>, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', }, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, showcase?: List<{ collectionGuid?: string, country?: { code?: string, }, guid?: string, sortOrder?: number, tagValue?: string, }>, sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'trash', }, }
POST /collections
Create a new Collection
Guard: producer
Request Body
{ available?: { end?: number, start?: number, }, badge?: { guid?: string, }, cardImage: { data?: string, filename?: string, }, coverImage: { data?: string, filename?: string, }, description?: string, durationDays?: number, episodeWord?: string, name?: string, schedule: List<{ guid?: string, sortOrder?: number, }>, showcase: List<{ country?: { code?: string, }, sortOrder?: number, tagValue?: string, }>, sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', visibility?: 'public' | 'unlisted' | 'private' | 'trash', }
Response Body
{ data: { available?: { end?: number, start?: number, }, badge?: { guid?: string, }, cardImage?: { default: string, large: string, medium: string, small: string, url?: string, }, coverImage?: { default: string, large: string, medium: string, small: string, url?: string, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, description?: string, durationDays?: number, episodeWord?: string, guid?: string, name?: string, schedule?: List<{ available?: { end?: number, live?: number, start?: number, }, content?: { description?: string, guid?: string, image?: { default: string, large: string, medium: string, small: string, url?: string, }, instructors?: List<{ id?: number, name?: string, }>, name?: string, studios?: List<{ id?: number, name?: string, }>, }, guid?: string, legacy: { hlsUrl?: string, id?: number, liveStreamId?: number, type?: 'reflect' | 'connect', }, type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, showcase?: List<{ collectionGuid?: string, country?: { code?: string, }, guid?: string, sortOrder?: number, tagValue?: string, }>, sortOrder?: number, totalCount?: number, type?: 'generic' | 'series' | 'challenge' | 'program', updatedBy?: { id?: number, }, visibility?: 'public' | 'unlisted' | 'private' | 'trash', }, }