Nest Changelog

1.1.5

2/15/2022

1.1.6

2/18/2022

16 changed endpoints

GET /users

Get all users

Response Body
{
  data: List<{
    billingAddress?: {
      city?: string,
      country?: {
        code?: string,
        id?: number,
        name?: string,
      },
      postalCode?: string,
      region?: {
        code?: string,
        name?: string,
      },
      streetLine1?: string,
      streetLine2?: string,
    },

createdBy?: { id?: number, }, dateActivated?: number, - dateBirth: string, dateCreated?: number, dateUpdated?: number, email?: string, firstName?: string, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, 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,
        id?: number,
        name?: string,
      },
      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, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, 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,
  },
- dateBirth: string,

email?: string, firstName: string, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { default: string, 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, name?: string, }, serialNumber?: string, }>, roles: List<string>, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{
  data: {
    billingAddress?: {
      city?: string,
      country?: {
        code?: string,
        id?: number,
        name?: string,
      },
      postalCode?: string,
      region?: {
        code?: string,
        name?: string,
      },
      streetLine1?: string,
      streetLine2?: string,
    },

createdBy?: { id?: number, }, dateActivated?: number, - dateBirth: string, dateCreated?: number, dateUpdated?: number, email?: string, firstName?: string, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, 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, email?: string, firstName: string, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { default: string, 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, name?: string, }, serialNumber?: string, }>, roles: List<string>, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{
  data: {
    billingAddress?: {
      city?: string,
      country?: {
        code?: string,
        id?: number,
        name?: string,
      },
      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, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, 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,
        id?: number,
        name?: string,
      },
      postalCode?: string,
      region?: {
        code?: string,
        name?: string,
      },
      streetLine1?: string,
      streetLine2?: string,
    },

createdBy?: { id?: number, }, dateActivated?: number, - dateBirth: string, dateCreated?: number, dateUpdated?: number, email?: string, firstName?: string, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, 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,
        id?: number,
        name?: string,
      },
      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, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, 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,
  },
- dateBirth: string,

email: string, firstName: string, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { default: string, 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>, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{
  data: {
    billingAddress?: {
      city?: string,
      country?: {
        code?: string,
        id?: number,
        name?: string,
      },
      postalCode?: string,
      region?: {
        code?: string,
        name?: string,
      },
      streetLine1?: string,
      streetLine2?: string,
    },

createdBy?: { id?: number, }, dateActivated?: number, - dateBirth: string, dateCreated?: number, dateUpdated?: number, email?: string, firstName?: string, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, 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, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { default: string, 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>, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{
  data: {
    billingAddress?: {
      city?: string,
      country?: {
        code?: string,
        id?: number,
        name?: string,
      },
      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, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, 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,
        id?: number,
        name?: string,
      },
      postalCode?: string,
      region?: {
        code?: string,
        name?: string,
      },
      streetLine1?: string,
      streetLine2?: string,
    },

createdBy?: { id?: number, }, dateActivated?: number, - dateBirth: string, dateCreated?: number, dateUpdated?: number, email?: string, firstName?: string, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, 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,
        id?: number,
        name?: string,
      },
      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, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, }>, }

POST /users/{userId}/family

Request Body
{
  billingAddress: {
    city: string,
    country: {
      code?: string,
    },
    postalCode: string,
    region: {
      code?: string,
    },
    streetLine1: string,
    streetLine2: string,
  },
- dateBirth: string,

email?: string, firstName: string, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { default: string, 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, name?: string, }, serialNumber?: string, }>, roles: List<string>, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{
  data: {
    billingAddress?: {
      city?: string,
      country?: {
        code?: string,
        id?: number,
        name?: string,
      },
      postalCode?: string,
      region?: {
        code?: string,
        name?: string,
      },
      streetLine1?: string,
      streetLine2?: string,
    },

createdBy?: { id?: number, }, dateActivated?: number, - dateBirth: string, dateCreated?: number, dateUpdated?: number, email?: string, firstName?: string, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: 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, gender: { value?: 'm' | 'f' | 'o', }, height: { units?: 'in' | 'cm', value?: number, }, image: { default: string, 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, name?: string, }, serialNumber?: string, }>, roles: List<string>, weight: { units?: 'lb' | 'kg', value?: number, }, }
Response Body
{
  data: {
    billingAddress?: {
      city?: string,
      country?: {
        code?: string,
        id?: number,
        name?: string,
      },
      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, gender?: { text: string, value?: 'm' | 'f' | 'o', }, height?: { text?: string, units?: 'in' | 'cm', value?: number, }, id?: number, image?: { default: string, 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, }, updatedBy?: { id?: number, }, weight?: { text?: string, units?: 'lb' | 'kg', value?: number, }, }, }

PUT /users/password/forgot

Check that there is no password reset request within last 10 mins and generates a token for password reset

Guard: none

PUT /users/password/forgot

Check that there is no password reset request within last 10 mins and generates a token for password reset

Guard: service

PUT /users/password/reset

Change the password using reset token

Guard: none

Request Body
{
- billingAddress: {
-   city: string,
-   country: {
-     code?: string,
-   },
-   postalCode: string,
-   region: {
-     code?: string,
-   },
-   streetLine1: string,
-   streetLine2: string,
- },
- dateBirth: string,
  email?: string,
- firstName: string,
- gender: {
-   value?: 'm' | 'f' | 'o',
- },
- height: {
-   units?: 'in' | 'cm',
-   value?: number,
- },
- image: {
-   default: string,
-   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,
-     name?: string,
-   },
-   serialNumber?: string,
- }>,
- roles: List<string>,
  token?: string,
- weight: {
-   units?: 'lb' | 'kg',
-   value?: number,
- },
}

PUT /users/password/reset

Change the password using reset token

Guard: service

Request Body
{

email?: string,

password?: string,

token?: string,

}

GET /songs/{id}/playlists

Get all playlists that contain this song

Response Body
{
  data: List<{
    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<{
-       availability?: {

start?: number, }, type?: 'live' | 'vod' | 'encore', }>, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, }>, tags?: List<{

text?: string, - type?: 'category',

value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, name?: string, }>, }

GET /songs/{id}/playlists

Get all playlists that contain this song

Response Body
{
  data: List<{
    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, }, 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, name?: string, }>, }

GET /playlists

Get a list of playlists

Response Body
{
  data: List<{
    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<{
-       availability?: {

start?: number, }, type?: 'live' | 'vod' | 'encore', }>, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, }>, tags?: List<{

text?: string, - type?: 'category',

value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, name?: string, }>, }

GET /playlists

Get a list of playlists

Response Body
{
  data: List<{
    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, }, 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, name?: string, }>, }

POST /playlists

Create a new playlist

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<{
-       availability?: {

start?: number, }, type?: 'live' | 'vod' | 'encore', }>, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, }>, tags?: List<{

text?: string, - type?: 'category',

value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, name?: string, }, }

POST /playlists

Create a new playlist

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, }, 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, name?: string, }, }

GET /playlists/{id}

Get a single playlist by ID

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<{
-       availability?: {

start?: number, }, type?: 'live' | 'vod' | 'encore', }>, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, }>, tags?: List<{

text?: string, - type?: 'category',

value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, name?: string, tracks?: List<{ dateCreated?: number, song?: { album?: { id?: number, name?: string, }, artist?: List<{ id?: number, name?: string, }>, coverArt?: { default: string, large: string, medium: string, small: string, url?: string, }, duration?: { seconds: number, text: string, }, genres?: List<{ id?: number, name?: string, }>, id?: number, isExplicit?: bool, isrcCode?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, licenseDetails?: { label: record, publisher: record, }, licensedIn?: List<string>, name?: string, yearPublished?: number, }, trackOrder?: number, }>, }, }

GET /playlists/{id}

Get a single playlist by ID

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, }, 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, name?: string, tracks?: List<{ dateCreated?: number, song?: { album?: { id?: number, name?: string, }, artist?: List<{ id?: number, name?: string, }>, coverArt?: { default: string, large: string, medium: string, small: string, url?: string, }, duration?: { seconds: number, text: string, }, genres?: List<{ id?: number, name?: string, }>, id?: number, isExplicit?: bool, isrcCode?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, licenseDetails?: { label: record, publisher: record, }, licensedIn?: List<string>, name?: string, yearPublished?: number, }, trackOrder?: number, }>, }, }

PATCH /playlists/{id}

Update an existing playlist

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<{
-       availability?: {

start?: number, }, type?: 'live' | 'vod' | 'encore', }>, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, }>, tags?: List<{

text?: string, - type?: 'category',

value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, }, createdBy?: { id?: number, }, dateCreated?: number, dateUpdated?: number, id?: number, name?: string, }, }

PATCH /playlists/{id}

Update an existing playlist

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, }, 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, name?: string, }, }

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,
    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<{
-     availability?: {

start?: number, }, type?: 'live' | 'vod' | 'encore', }>, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, }>, tags?: List<{

text?: string, - type?: 'category',

value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, }>, }

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

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,
    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<{
-     availability?: {

start?: number, }, type?: 'live' | 'vod' | 'encore', }>, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, }>, tags?: List<{

text?: string, - type?: 'category',

value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, }>, }

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

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,
    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<{
-     availability?: {

start?: number, }, type?: 'live' | 'vod' | 'encore', }>, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, }>, tags?: List<{

text?: string, - type?: 'category',

value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, }>, }

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,
    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, }, 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, }, }>, }
9 added endpoints
Added endpoints

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

GET /content/tags/{value}

Get one content tag by value.

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

PUT /content/tags/{value}

Create a New Tag

Request Body
{
  image: {
    url?: string,
  },
  translations: record,
  type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
}
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,
  },
}

PATCH /content/tags/{value}

Edit a tag

Request Body
{
  image: {
    url?: string,
  },
  translations: record,
  type: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
}
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/schedule

Get list of scheduled content.

Guard: loggedIn

Response Body
{
  data: 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',
  }>,
}

POST /content/schedule

Create a new schedule entry for a piece of content

Guard: admin

Request Body
{
  available?: {
    end?: number,
    live?: number,
    start?: number,
  },
  contentGuid?: string,
  duration: number,
  legacy: {
    hlsUrl?: string,
    id?: number,
    liveStreamId?: number,
    type?: 'reflect' | 'connect',
  },
  mediaPackageChannelName: string,
  type?: 'live' | 'vod' | 'encore',
}
Response Body
{
  data: {
    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',
  },
}

GET /content/schedule/{scheduleId}

Get a piece of scheduled content by its guid (not its content guid!).

Guard: loggedIn

Response Body
{
  data: 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',
  }>,
}

PATCH /content/schedule/{guid}

Create a new schedule entry for a piece of content

Guard: admin

Request Body
{
  available: {
    end?: number,
    live?: number,
    start?: number,
  },
  duration: number,
  legacy: {
    hlsUrl?: string,
    id?: number,
    liveStreamId?: number,
    type?: 'reflect' | 'connect',
  },
}
Response Body
{
  data: {
    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',
  },
}

DELETE /content/{schedule}/{guid}

Delete a scheduled entry

Guard: admin

WORK IN PROGRESS