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',
},
}