Nest Changelog
1.1.21
3/31/2022
1.1.22
4/5/2022
7 changed endpoints Collapse changed endpoints
GET /plans 
Get all Plans
Response Body
{
data: List<{
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,
},
description?: string,
frequency?: {
units?: 'month',
value?: number,
},
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
musicRights?: {
productId?: string,
vendor?: 'audibleMagic',
},
name?: string,
- price?: {
- currency?: string,
- value?: number,
- },
sku?: string,
sortOrder?: number,
sources?: List<{
accountId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
}>,
tags?: List<string>,
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',
+ 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<string>,
updatedBy?: {
id?: number,
},
}>,
}POST /plans 
Create Plan
Request Body
{
billingProviders?: List<{
accountId?: string,
name?: 'stripe' | 'ios' | 'android' | 'amazon',
priceId?: string,
productId?: string,
}>,
country?: {
code?: string,
id?: number,
},
- defaultTrial?: {
units?: 'day',
value?: number,
},
description?: string,
- frequency?: {
units?: 'month',
value?: number,
},
image?: {
- default: string,
- large: string,
- medium: string,
- small: string,
- url?: string,
},
musicRights?: {
productId?: string,
vendor?: 'audibleMagic',
},
name?: string,
- price?: {
- currency?: string,
- value?: number,
- },
sku?: string,
sortOrder?: number,
sources?: List<{
accountId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
}>,
tags?: List<string>,
}Response Body
{
data: {
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,
},
description?: string,
frequency?: {
units?: 'month',
value?: number,
},
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
musicRights?: {
productId?: string,
vendor?: 'audibleMagic',
},
name?: string,
- price?: {
- currency?: string,
- value?: number,
- },
sku?: string,
sortOrder?: number,
sources?: List<{
accountId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
}>,
tags?: List<string>,
updatedBy?: {
id?: number,
},
},
}POST /plans 
Create Plan
Request Body
{
+ 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,
},
+ defaultTrial: {
units?: 'day',
value?: number,
},
+ delayBillingDays?: number,
description?: string,
+ family?: {
+ brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+ code?: 'premier' | 'select' | 'flex' | 'fitpass',
+ type?: 'connected' | 'disconnected',
+ },
+ frequency: {
units?: 'month',
value?: number,
},
+ frequencyDays: number,
image?: {
+ data?: string,
+ filename?: string,
},
musicRights?: {
productId?: string,
vendor?: 'audibleMagic',
},
name?: string,
sku?: string,
sortOrder?: number,
sources?: List<{
accountId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
}>,
tags?: List<string>,
}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',
+ 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<string>,
updatedBy?: {
id?: number,
},
},
}PATCH /plans 
Update plans in bulk.
Request Body
{
data?: {
billingProviders: List<{
accountId?: string,
name?: 'stripe' | 'ios' | 'android' | 'amazon',
priceId?: string,
productId?: string,
}>,
country: {
code?: string,
id?: number,
},
defaultTrial: {
units?: 'day',
value?: number,
},
description: string,
frequency: {
units?: 'month',
value?: number,
},
image: {
- default: string,
- large: string,
- medium: string,
- small: string,
- url?: string,
},
musicRights: {
productId?: string,
vendor?: 'audibleMagic',
},
name: string,
- price: {
- currency?: string,
- value?: number,
- },
sku: string,
sortOrder: number,
sources: List<{
accountId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
}>,
tags: List<string>,
},
where?: {
countryCode: string,
ids: List<number>,
},
}PATCH /plans 
Update plans in bulk.
Request Body
{
data?: {
+ basePrice: {
+ currency?: {
+ code?: string,
+ scale?: number,
+ symbol?: string,
+ },
+ value?: number,
+ },
+ benefits: List<{
+ text?: string,
+ }>,
billingProviders: List<{
accountId?: string,
name?: 'stripe' | 'ios' | 'android' | 'amazon',
priceId?: string,
productId?: string,
}>,
country: {
code?: string,
id?: number,
},
defaultTrial: {
units?: 'day',
value?: number,
},
+ delayBillingDays: number,
description: string,
+ family: {
+ brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+ code?: 'premier' | 'select' | 'flex' | 'fitpass',
+ type?: 'connected' | 'disconnected',
+ },
frequency: {
units?: 'month',
value?: number,
},
+ frequencyDays: number,
image: {
+ data?: string,
+ filename?: string,
},
musicRights: {
productId?: string,
vendor?: 'audibleMagic',
},
name: string,
sku: string,
sortOrder: number,
sources: List<{
accountId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
}>,
tags: List<string>,
},
+ image: {
+ default: string,
+ large: string,
+ medium: string,
+ small: string,
+ url?: string,
+ },
where?: {
countryCode: string,
ids: List<number>,
},
}GET /plans/{id} 
Get Plan by id
Response Body
{
data: {
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,
},
description?: string,
frequency?: {
units?: 'month',
value?: number,
},
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
musicRights?: {
productId?: string,
vendor?: 'audibleMagic',
},
name?: string,
- price?: {
- currency?: string,
- value?: number,
- },
sku?: string,
sortOrder?: number,
sources?: List<{
accountId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
}>,
tags?: List<string>,
updatedBy?: {
id?: number,
},
},
}GET /plans/{id} 
Get Plan by id
Response Body
{
data: {
+ basePrice?: {
+ currency?: {
+ code?: string,
+ scale?: number,
+ symbol?: string,
+ },
+ value?: number,
+ },
+ benefits?: List<{
+ text?: string,
+ }>,
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',
+ 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<string>,
updatedBy?: {
id?: number,
},
},
}PATCH /plans/{id} 
Update Plan
Request Body
{
billingProviders: List<{
accountId?: string,
name?: 'stripe' | 'ios' | 'android' | 'amazon',
priceId?: string,
productId?: string,
}>,
country: {
code?: string,
id?: number,
},
defaultTrial: {
units?: 'day',
value?: number,
},
description: string,
frequency: {
units?: 'month',
value?: number,
},
image: {
- default: string,
- large: string,
- medium: string,
- small: string,
- url?: string,
},
musicRights: {
productId?: string,
vendor?: 'audibleMagic',
},
name: string,
- price: {
- currency?: string,
- value?: number,
- },
sku: string,
sortOrder: number,
sources: List<{
accountId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
}>,
tags: List<string>,
}Response Body
{
data: {
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,
},
description?: string,
frequency?: {
units?: 'month',
value?: number,
},
id?: number,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
musicRights?: {
productId?: string,
vendor?: 'audibleMagic',
},
name?: string,
- price?: {
- currency?: string,
- value?: number,
- },
sku?: string,
sortOrder?: number,
sources?: List<{
accountId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
}>,
tags?: List<string>,
updatedBy?: {
id?: number,
},
},
}PATCH /plans/{id} 
Update Plan
Request Body
{
+ 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,
},
defaultTrial: {
units?: 'day',
value?: number,
},
+ delayBillingDays: number,
description: string,
+ family: {
+ brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
+ code?: 'premier' | 'select' | 'flex' | 'fitpass',
+ type?: 'connected' | 'disconnected',
+ },
frequency: {
units?: 'month',
value?: number,
},
+ frequencyDays: number,
image: {
+ data?: string,
+ filename?: string,
},
musicRights: {
productId?: string,
vendor?: 'audibleMagic',
},
name: string,
sku: string,
sortOrder: number,
sources: List<{
accountId?: string,
name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
productId?: string,
}>,
tags: List<string>,
}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',
+ 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<string>,
updatedBy?: {
id?: number,
},
},
}GET /subscriptions/{id} 
Get a susbcription
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?: 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 /subscriptions/{id} 
Get a susbcription
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,
},
},
}POST /subscriptions/{id}/activate 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Request Body
{
billingAddress?: {
city?: string,
country?: {
code?: string,
},
postalCode?: string,
region?: {
code?: string,
},
streetLine1?: string,
streetLine2?: string,
},
cardTokenId?: string,
email?: string,
firstName?: string,
lastName?: string,
phoneNumber?: string,
redemptionCode: string,
utm: {
campaign?: string,
content?: string,
medium?: string,
source?: string,
},
}POST /subscriptions/{id}/activate 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Request Body
{
billingAddress?: {
city?: string,
country?: {
code?: string,
},
postalCode?: string,
region?: {
code?: string,
},
streetLine1?: string,
streetLine2?: string,
},
cardTokenId?: string,
email?: string,
firstName?: string,
+ isFirstPeriodPrepaid: bool,
lastName?: string,
phoneNumber?: string,
redemptionCode: string,
utm: {
campaign?: string,
content?: string,
medium?: string,
source?: string,
},
}11 added endpoints Collapse added endpoints
POST /playlists/{playlist}/import 
Import all songs from a playlist to another playlist
Request Body
{
sources?: List<{
@type?: 'playlist',
id?: number,
}>,
}Response Body
{
data: {
content?: {
countries: List<{
code?: string,
}>,
createdBy: {
id?: number,
},
dateCreated: number,
dateUpdated: number,
description: string,
guid: string,
image: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
instructors: List<{
id?: number,
name?: string,
}>,
keywords: List<string>,
name: string,
playlist: {
id?: number,
name?: string,
},
schedule: List<{
available?: {
end?: number,
live?: number,
start?: number,
},
contentGuid?: string,
duration: number,
guid?: string,
legacy: {
hlsUrl?: string,
id?: number,
liveStreamId?: number,
type?: 'reflect' | 'connect',
},
type?: 'live' | 'vod' | 'encore',
}>,
status: 'draft' | 'published',
studios: List<{
id?: number,
name?: string,
}>,
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,
},
},
createdBy?: {
id?: number,
},
dateCreated?: number,
dateUpdated?: number,
id?: number,
isFlagged?: bool,
name?: string,
tracks?: List<{
createdBy?: {
id?: number,
},
dateCreated?: number,
flag?: string,
playlist?: {
id?: number,
},
song?: {
id?: number,
},
trackOrder?: number,
}>,
},
}GET /content/library 
Search for content in the Library
Response Body
{
data: 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',
}>,
}POST /subscriptions/{id}/quote 
create a new subscription in stripe from shopify order, optionally applies a redemption code
Guard: loggedIn
Request Body
{
isFirstPeriodPrepaid: bool,
redemptionCode: string,
utm: {
campaign?: string,
content?: string,
medium?: string,
source?: string,
},
}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',
type?: 'connected' | 'disconnected',
},
frequency?: {
days?: number,
},
id?: number,
lineItems: List<{
text?: string,
}>,
name: string,
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
}>,
}POST /offers 
Create a new offer
Guard: admin
Request Body
{
delayBilling: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
image: {
data?: string,
filename?: string,
},
introductory: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
id?: number,
},
planNameOverride: string,
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
}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',
type?: 'connected' | 'disconnected',
},
frequency?: {
days?: number,
},
id?: number,
lineItems: List<{
text?: string,
}>,
name: string,
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
},
}GET /offers 
Get all offers
Response Body
{
data: {
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',
type?: 'connected' | 'disconnected',
},
frequency?: {
days?: number,
},
id?: number,
lineItems: List<{
text?: string,
}>,
name: string,
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
},
}GET /offers/{guid} 
Get a specific offer
Response Body
{
data: {
createdBy?: {
id?: number,
},
dateCreated?: number,
delayBilling?: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
guid?: string,
image?: {
default: string,
large: string,
medium: string,
small: string,
url?: string,
},
introductory?: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name?: string,
plan?: {
currency?: {
code?: string,
scale?: number,
symbol?: string,
},
family?: {
brands?: List<'echelon' | 'fitnation' | 'fitquest'>,
code?: 'premier' | 'select' | 'flex' | 'fitpass',
type?: 'connected' | 'disconnected',
},
frequency?: {
days?: number,
},
id?: number,
lineItems: List<{
text?: string,
}>,
name: string,
},
recurring?: {
price?: number,
stripePriceId?: string,
text?: string,
},
status?: 'draft' | 'published',
},
}PATCH /offers/{guid} 
Edit an offer
Guard: admin
Request Body
{
delayBilling: {
days?: number,
text?: string,
type?: 'trial' | 'bundle',
},
image: {
data?: string,
filename?: string,
},
introductory: {
days?: number,
price?: number,
stripeCouponId?: string,
text?: string,
},
name: string,
plan: {
id?: number,
},
planNameOverride: string,
recurring: {
price?: number,
stripePriceId?: string,
text?: string,
},
status: 'draft' | 'published',
}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',
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 /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,
},
}>,
}GET /users/{userId}/subscriptions/{id} 
Get a specific subscription.
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,
},
},
}