Nest Changelog

1.1.57

7/13/2022

1.2.0

7/18/2022

23 changed endpoints

POST /webhooks/subscription-created

Request Body
{
  billingCycleAnchor?: number,

dateCancelled?: number, - dateExpires?: number,

datePausedUntil?: number, - dateTrialEnds?: number,

initiatedBy?: { id?: number, }, internalNote?: string, - planAmount?: number, - planCurrency?: string, - planId?: number, - planInterval?: string, - planName?: string,

publicNote?: string, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other', message?: string, }, renewedAt: number, - shopifyCustomerId: string,

sourceId?: number, sourceName?: 'stripe' | 'ios' | 'android' | 'amazon',

status?: string, - stripeCustomerId?: string, - subscriptionCreatedAt?: number, - subscriptionOrderId?: string, - subscriptionPeriodEnd?: number, - subscriptionPeriodStart?: number, - subscriptionTrialEnd?: number, - subscriptionTrialStart?: number, }

POST /webhooks/subscription-created

Request Body
{
  billingCycleAnchor?: number,
+ createdAt?: number,
  dateCancelled?: number,

+ dateExpire?: number, datePausedUntil?: number,

+ dateStart?: number, + dateTrialEnd?: number, + dateTrialStart?: number, initiatedBy?: { id?: number, }, internalNote?: string,

+ orderId?: string, + plan?: { + 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, + }, + }, publicNote?: string, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other', message?: string, }, renewedAt: number,

+ shopifyCustomerId?: string, sourceId?: number, sourceName?: 'stripe' | 'ios' | 'android' | 'amazon', + sourceUserId?: string, status?: string,

}

POST /webhooks/subscription-deleted

Request Body
{
  billingCycleAnchor?: number,

dateCancelled?: number, - dateExpires?: number,

datePausedUntil?: number, - dateTrialEnds?: number,

initiatedBy?: { id?: number, }, internalNote?: string, - planAmount?: number, - planCurrency?: string, - planId?: number, - planInterval?: string, - planName?: string,

publicNote?: string, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other', message?: string, }, renewedAt: number, - shopifyCustomerId: string,

sourceId?: number, sourceName?: 'stripe' | 'ios' | 'android' | 'amazon',

status?: string, - stripeCustomerId?: string, - subscriptionCreatedAt?: number, - subscriptionOrderId?: string, - subscriptionPeriodEnd?: number, - subscriptionPeriodStart?: number, - subscriptionTrialEnd?: number, - subscriptionTrialStart?: number, }

POST /webhooks/subscription-deleted

Request Body
{
  billingCycleAnchor?: number,
+ createdAt?: number,
  dateCancelled?: number,

+ dateExpire?: number, datePausedUntil?: number,

+ dateStart?: number, + dateTrialEnd?: number, + dateTrialStart?: number, initiatedBy?: { id?: number, }, internalNote?: string,

+ orderId?: string, + plan?: { + 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, + }, + }, publicNote?: string, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other', message?: string, }, renewedAt: number,

+ shopifyCustomerId?: string, sourceId?: number, sourceName?: 'stripe' | 'ios' | 'android' | 'amazon', + sourceUserId?: string, status?: string,

}

POST /webhooks/subscription-updated

Request Body
{
  billingCycleAnchor?: number,

dateCancelled?: number, - dateExpires?: number,

datePausedUntil?: number, - dateTrialEnds?: number,

initiatedBy?: { id?: number, }, internalNote?: string, - planAmount?: number, - planCurrency?: string, - planId?: number, - planInterval?: string, - planName?: string,

publicNote?: string, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other', message?: string, }, renewedAt: number, - shopifyCustomerId: string,

sourceId?: number, sourceName?: 'stripe' | 'ios' | 'android' | 'amazon',

status?: string, - stripeCustomerId?: string, - subscriptionCreatedAt?: number, - subscriptionOrderId?: string, - subscriptionPeriodEnd?: number, - subscriptionPeriodStart?: number, - subscriptionTrialEnd?: number, - subscriptionTrialStart?: number, }

POST /webhooks/subscription-updated

Request Body
{
  billingCycleAnchor?: number,
+ createdAt?: number,
  dateCancelled?: number,

+ dateExpire?: number, datePausedUntil?: number,

+ dateStart?: number, + dateTrialEnd?: number, + dateTrialStart?: number, initiatedBy?: { id?: number, }, internalNote?: string,

+ orderId?: string, + plan?: { + 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, + }, + }, publicNote?: string, reason?: { code?: 'competitor' | 'healthIssues' | 'notMetExpectations' | 'pricing' | 'noLongerHaveEquipment' | 'busy' | 'other', message?: string, }, renewedAt: number,

+ shopifyCustomerId?: string, sourceId?: number, sourceName?: 'stripe' | 'ios' | 'android' | 'amazon', + sourceUserId?: string, status?: string,

}

GET /auth/{sessionGuid}

Refresh the token

Guard: none

GET /auth/{sessionGuid}

Refresh the token

Guard: loggedIn

DELETE /auth/{sessionGuid}

Sign out

Guard: none

DELETE /auth/{sessionGuid}

Sign out

Guard: loggedIn

GET /instructors

Get a list of instructors

Guard: none

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 /instructors

Get a list of instructors

Guard: loggedIn

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,
+   status?: string,
+   studio?: {
+     id?: number,
+   },
    updatedBy?: {
      id?: number,
    },
    user?: {
      id?: number,
    },
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

POST /instructors

Create a new instructor

Guard: none

Request Body
{
  bio?: string,
  flags?: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>,
  name?: string,

user?: { id?: number, }, }
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, }, }, }

POST /instructors

Create a new instructor

Guard: admin

Request Body
{
  bio?: string,
  flags?: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>,
  name?: string,
+ status?: string,
+ studio?: {
+   id?: number,
+ },
  user?: {
    id?: number,
  },
}
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,
+   status?: string,
+   studio?: {
+     id?: number,
+   },
    updatedBy?: {
      id?: number,
    },
    user?: {
      id?: number,
    },
  },
}

GET /instructors/{id}

Get a specific instructor

Guard: none

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/{id}

Get a specific instructor

Guard: loggedIn

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,
+   status?: string,
+   studio?: {
+     id?: number,
+   },
    updatedBy?: {
      id?: number,
    },
    user?: {
      id?: number,
    },
  },
}

PATCH /instructors/{id}

Update an existing instructor

Request Body
{
  bio: string,
  flags: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>,
  name: string,

user: { id?: number, }, }
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, }, }, }

PATCH /instructors/{id}

Update an existing instructor

Request Body
{
  bio: string,
  flags: List<'connect' | 'reflect' | 'fitnation' | 'celebrity'>,
  name: string,
+ status: string,
+ studio: {
+   id?: number,
+ },
  user: {
    id?: number,
  },
}
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,
+   status?: string,
+   studio?: {
+     id?: number,
+   },
    updatedBy?: {
      id?: number,
    },
    user?: {
      id?: number,
    },
  },
}

POST /firmware

Create Firmware Update

Guard: none

POST /firmware

Create Firmware Update

Guard: admin

GET /firmware/{id}

Get Firmware Update by ID

Guard: none

GET /firmware/{id}

Get Firmware Update by ID

Guard: admin

PUT /firmware/{id}

Update Firmware Update

Guard: none

PUT /firmware/{id}

Update Firmware Update

Guard: admin

PATCH /firmware/{id}

Update Firmware Update

Guard: none

PATCH /firmware/{id}

Update Firmware Update

Guard: admin

DELETE /firmware/{id}

Delete Firmware Update

Guard: none

DELETE /firmware/{id}

Delete Firmware Update

Guard: admin

GET /brightback/{userId}/{subId}

Get URL for user cancel/save workflow.

Guard: none

GET /brightback/{userId}/{subId}

Get URL for user cancel/save workflow.

Guard: selfOrAdmin

PUT /content/tags/{value}

Create a New Tag

Guard: none

PUT /content/tags/{value}

Create a New Tag

Guard: admin

PATCH /content/tags/{value}

Edit a tag

Guard: none

PATCH /content/tags/{value}

Edit a tag

Guard: admin

PUT /workouts/{workoutGuid}

Updates a user workout

Guard: none

PUT /workouts/{workoutGuid}

Updates a user workout

Guard: admin

GET /collections

List collections

Response Body
{
  data: List<{
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,
-   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,
    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,
    }>,
    totalCount?: number,
    type?: 'generic' | 'series' | 'challenge' | 'program',
    updatedBy?: {
      id?: number,
    },
    visibility?: 'public' | 'unlisted' | 'private' | 'trash',
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

GET /collections

List collections

Response Body
{
  data: List<{
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,

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

POST /collections

Create a new Collection

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,
    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,
    }>,
    totalCount?: number,
    type?: 'generic' | 'series' | 'challenge' | 'program',
    updatedBy?: {
      id?: number,
    },
    visibility?: 'public' | 'unlisted' | 'private' | 'trash',
  },
}

POST /collections

Create a new Collection

Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,

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

GET /collections/{guid}

Get a collection by guid

Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,
-   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,
    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,
    }>,
    totalCount?: number,
    type?: 'generic' | 'series' | 'challenge' | 'program',
    updatedBy?: {
      id?: number,
    },
    visibility?: 'public' | 'unlisted' | 'private' | 'trash',
  },
}

GET /collections/{guid}

Get a collection by guid

Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,

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

PATCH /collections/{guid}

Update a Collection

Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,
-   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,
    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,
    }>,
    totalCount?: number,
    type?: 'generic' | 'series' | 'challenge' | 'program',
    updatedBy?: {
      id?: number,
    },
    visibility?: 'public' | 'unlisted' | 'private' | 'trash',
  },
}

PATCH /collections/{guid}

Update a Collection

Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,

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

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

Add a schedule item to a collection

Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,
-   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,
    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,
    }>,
    totalCount?: number,
    type?: 'generic' | 'series' | 'challenge' | 'program',
    updatedBy?: {
      id?: number,
    },
    visibility?: 'public' | 'unlisted' | 'private' | 'trash',
  },
}

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

Add a schedule item to a collection

Response Body
{
  data: {
    available?: {
      end?: number,
      start?: number,
    },
    badge?: {
      guid?: string,
    },
    cardImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    coverImage?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    durationDays?: number,
    episodeWord?: string,
    guid?: string,
    name?: string,

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

GET /collections/{guid}/schedule

Get schedules inside of a Collection

Guard: loggedIn

Response Body
{
  data: List<{
    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,
    }>,
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total: {
      pages?: number,
      rows?: number,
    },
  },
}

GET /test/guards/loggedIn

Internal testing endpoint. Do not use.

Guard: loggedIn

GET /test/guards/instructor

Internal testing endpoint. Do not use.

Guard: instructor

GET /test/guards/producer

Internal testing endpoint. Do not use.

Guard: producer

GET /test/guards/admin

Internal testing endpoint. Do not use.

Guard: admin

GET /test/guards/service

Internal testing endpoint. Do not use.

Guard: service

GET /test/guards/webhook

Internal testing endpoint. Do not use.

Guard: webhook

GET /test/guards/instructorOrAdmin

Internal testing endpoint. Do not use.

Guard: admin, instructor

GET /test/guards/selfOrAdmin

Internal testing endpoint. Do not use.

Guard: selfOrAdmin

WORK IN PROGRESS