Nest Changelog

1.1.50

6/6/2022

1.1.51

6/13/2022

16 changed endpoints

GET /songs/{id}/playlists

Get all playlists that contain this song

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
-     type?: 'live' | 'vod' | 'encore',

}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

GET /songs/{id}/playlists

Get all playlists that contain this song

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

GET /playlists

Get a list of playlists

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
-     type?: 'live' | 'vod' | 'encore',

}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

GET /playlists

Get a list of playlists

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

POST /playlists

Create a new playlist

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
-     type?: 'live' | 'vod' | 'encore',

}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

POST /playlists

Create a new playlist

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

GET /playlists/{playlist}

Get a single playlist by ID

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
-     type?: 'live' | 'vod' | 'encore',

}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tracks?: List<{ dateCreated?: number, flag?: string, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags: record, }, trackOrder?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

GET /playlists/{playlist}

Get a single playlist by ID

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tracks?: List<{ dateCreated?: number, flag?: string, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags: record, }, trackOrder?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

PATCH /playlists/{id}

Update an existing playlist

Request Body
{
  countries: List<{
    code?: string,
  }>,
  createdBy: {
    id?: number,
  },
  dateCreated: number,
  dateUpdated: number,
  id: number,
  instructors: List<{
    id?: number,
    name?: string,
    precedence?: number,
  }>,
  isFlagged: bool,
  name: string,
  schedule: List<{
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    content?: {
      guid?: string,
    },
    guid?: string,
    legacy: {
      hlsUrl?: string,
      id?: number,
      liveStreamId?: number,
      type?: 'reflect' | 'connect',
    },
-   type?: 'live' | 'vod' | 'encore',

}>, studios: List<{ id?: number, name?: string, precedence?: number, }>, videoLength: { id?: number, name?: string, }, }
Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
-     type?: 'live' | 'vod' | 'encore',

}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

PATCH /playlists/{id}

Update an existing playlist

Request Body
{
  countries: List<{
    code?: string,
  }>,
  createdBy: {
    id?: number,
  },
  dateCreated: number,
  dateUpdated: number,
  id: number,
  instructors: List<{
    id?: number,
    name?: string,
    precedence?: number,
  }>,
  isFlagged: bool,
  name: string,
  schedule: List<{
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    content?: {
      guid?: string,
    },
    guid?: string,
    legacy: {
      hlsUrl?: string,
      id?: number,
      liveStreamId?: number,
      type?: 'reflect' | 'connect',
    },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios: List<{ id?: number, name?: string, precedence?: number, }>, videoLength: { id?: number, name?: string, }, }
Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

POST /playlists/{playlist}/import

Import all songs from a playlist to another playlist

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },
-     type?: 'live' | 'vod' | 'encore',

}>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tracks?: List<{ dateCreated?: number, flag?: string, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags: record, }, trackOrder?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

POST /playlists/{playlist}/import

Import all songs from a playlist to another playlist

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    id?: number,
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    isFlagged?: bool,
    name?: string,
    schedule?: List<{
      available?: {
        end?: number,
        live?: number,
        start?: number,
      },
      content?: {
        guid?: string,
      },
      guid?: string,
      legacy: {
        hlsUrl?: string,
        id?: number,
        liveStreamId?: number,
        type?: 'reflect' | 'connect',
      },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, studios?: List<{ id?: number, name?: string, precedence?: number, }>, tracks?: List<{ dateCreated?: number, flag?: string, song?: { album?: { id?: number, name?: string, }, artists?: List<{ id?: number, name?: string, }>, copyright: record, coverArtUrl?: string, duration?: { seconds: number, text: string, }, genres?: List<string>, id?: number, isExplicit?: bool, isrc?: string, label?: { id?: number, name?: string, }, labelOwner?: { id?: number, name?: string, }, labelRights: record, name?: string, publisherRights?: List<string>, releaseDate?: number, searchFlags: record, }, trackOrder?: number, }>, videoLength?: { id?: number, name?: string, }, }, }

GET /content/library

Search for content in the Library

Response Body
{
  data: {
    aggregations?: List<{
      buckets?: List<{

      }>,
      key?: string,
    }>,
    count?: number,
    pagination?: {
      skip?: number,
      take?: number,
    },
    results?: List<{
      countries?: List<{
        code?: string,
      }>,
      dateLive?: number,
      description?: string,
      guid?: string,
      image?: string,
      instructors?: List<string>,
      length?: number,
      name?: string,
      studios?: List<string>,
      tags?: List<{
        text?: string,
        type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
        value?: string,
      }>,
-     type?: 'live' | 'vod' | 'encore',

}>, }, }

GET /content/library

Search for content in the Library

Response Body
{
  data: {
    aggregations?: List<{
      buckets?: List<{

      }>,
      key?: string,
    }>,
    count?: number,
    pagination?: {
      skip?: number,
      take?: number,
    },
    results?: List<{
      countries?: List<{
        code?: string,
      }>,
      dateLive?: number,
      description?: string,
      guid?: string,
      image?: string,
      instructors?: List<string>,
      length?: number,
      name?: string,
      studios?: List<string>,
      tags?: List<{
        text?: string,
        type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
        value?: string,
      }>,

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }>, }, }

GET /content/items

Get list of content items

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    duration?: number,
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    name?: string,
    playlist?: {
      id?: number,
    },

sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }

GET /content/items

Get list of content items

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    duration?: number,
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    name?: string,
    playlist?: {
      id?: number,
    },
+   schedule?: List<{
+     available?: {
+       end?: number,
+       live?: number,
+       start?: number,
+     },
+     content?: {
+       guid?: string,
+     },
+     guid?: string,
+     legacy: {
+       hlsUrl?: string,
+       id?: number,
+       liveStreamId?: number,
+       type?: 'reflect' | 'connect',
+     },
+     type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
+   }>,
    sourceUrl?: string,
    status?: 'draft' | 'published',
    studios?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
      value?: string,
    }>,
    updatedBy?: {
      id?: number,
    },
    videoLength?: {
      id?: number,
      name?: string,
    },
    videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
  },
}

POST /content/items

Create a content item

Request Body
{
  countries?: List<{
    code?: string,
  }>,
  description?: string,
- image: string,

instructors?: List<{ id?: number, precedence?: number, }>, name?: string, playlist?: { id?: number, }, status?: 'draft' | 'published', studios?: List<{ id?: number, precedence?: number, }>, tags?: List<{ value?: string, }>, videoLength?: { id?: number, }, }
Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    duration?: number,
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    name?: string,
    playlist?: {
      id?: number,
    },

sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }

POST /content/items

Create a content item

Request Body
{
  countries?: List<{
    code?: string,
  }>,
  description?: string,

+ image: { + data?: string, + filename?: string, + }, instructors?: List<{ id?: number, precedence?: number, }>, name?: string, playlist?: { id?: number, }, status?: 'draft' | 'published', studios?: List<{ id?: number, precedence?: number, }>, tags?: List<{ value?: string, }>, videoLength?: { id?: number, }, }
Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    duration?: number,
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    name?: string,
    playlist?: {
      id?: number,
    },
+   schedule?: List<{
+     available?: {
+       end?: number,
+       live?: number,
+       start?: number,
+     },
+     content?: {
+       guid?: string,
+     },
+     guid?: string,
+     legacy: {
+       hlsUrl?: string,
+       id?: number,
+       liveStreamId?: number,
+       type?: 'reflect' | 'connect',
+     },
+     type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
+   }>,
    sourceUrl?: string,
    status?: 'draft' | 'published',
    studios?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
      value?: string,
    }>,
    updatedBy?: {
      id?: number,
    },
    videoLength?: {
      id?: number,
      name?: string,
    },
    videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
  },
}

GET /content/items/{guid}

Get a specific content item

Guard: none

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    duration?: number,
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    name?: string,
    playlist?: {
      id?: number,
    },

sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }

GET /content/items/{guid}

Get a specific content item

Guard: loggedIn

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    duration?: number,
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    name?: string,
    playlist?: {
      id?: number,
    },
+   schedule?: List<{
+     available?: {
+       end?: number,
+       live?: number,
+       start?: number,
+     },
+     content?: {
+       guid?: string,
+     },
+     guid?: string,
+     legacy: {
+       hlsUrl?: string,
+       id?: number,
+       liveStreamId?: number,
+       type?: 'reflect' | 'connect',
+     },
+     type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
+   }>,
    sourceUrl?: string,
    status?: 'draft' | 'published',
    studios?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
      value?: string,
    }>,
    updatedBy?: {
      id?: number,
    },
    videoLength?: {
      id?: number,
      name?: string,
    },
    videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
  },
}

PATCH /content/items/{guid}

Update a content item

Request Body
{
  countries: List<{
    code?: string,
  }>,
  description: string,
- image: string,

instructors: List<{ id?: number, precedence?: number, }>, name: string, playlist: { id?: number, }, status: 'draft' | 'published', studios: List<{ id?: number, precedence?: number, }>, tags: List<{ value?: string, }>, videoLength: { id?: number, }, }
Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    duration?: number,
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    name?: string,
    playlist?: {
      id?: number,
    },

sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }

PATCH /content/items/{guid}

Update a content item

Request Body
{
  countries: List<{
    code?: string,
  }>,
  description: string,

+ image: { + data?: string, + filename?: string, + }, instructors: List<{ id?: number, precedence?: number, }>, name: string, playlist: { id?: number, }, status: 'draft' | 'published', studios: List<{ id?: number, precedence?: number, }>, tags: List<{ value?: string, }>, videoLength: { id?: number, }, }
Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    duration?: number,
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    name?: string,
    playlist?: {
      id?: number,
    },
+   schedule?: List<{
+     available?: {
+       end?: number,
+       live?: number,
+       start?: number,
+     },
+     content?: {
+       guid?: string,
+     },
+     guid?: string,
+     legacy: {
+       hlsUrl?: string,
+       id?: number,
+       liveStreamId?: number,
+       type?: 'reflect' | 'connect',
+     },
+     type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
+   }>,
    sourceUrl?: string,
    status?: 'draft' | 'published',
    studios?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
      value?: string,
    }>,
    updatedBy?: {
      id?: number,
    },
    videoLength?: {
      id?: number,
      name?: string,
    },
    videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
  },
}

GET /content/recommendations

Get content recommended for this user.

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    duration?: number,
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    name?: string,
    playlist?: {
      id?: number,
    },

sourceUrl?: string, status?: 'draft' | 'published', studios?: List<{ id?: number, name?: string, precedence?: number, }>, tags?: List<{ image?: { default: string, large: string, medium: string, small: string, url?: string, }, text?: string, translations: record, type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level', value?: string, }>, updatedBy?: { id?: number, }, videoLength?: { id?: number, name?: string, }, videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted', }, }

GET /content/recommendations

Get content recommended for this user.

Response Body
{
  data: {
    countries?: List<{
      code?: string,
    }>,
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    dateUpdated?: number,
    description?: string,
    duration?: number,
    guid?: string,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    instructors?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    name?: string,
    playlist?: {
      id?: number,
    },
+   schedule?: List<{
+     available?: {
+       end?: number,
+       live?: number,
+       start?: number,
+     },
+     content?: {
+       guid?: string,
+     },
+     guid?: string,
+     legacy: {
+       hlsUrl?: string,
+       id?: number,
+       liveStreamId?: number,
+       type?: 'reflect' | 'connect',
+     },
+     type?: 'live' | 'vod' | 'encore' | 'rebroadcast',
+   }>,
    sourceUrl?: string,
    status?: 'draft' | 'published',
    studios?: List<{
      id?: number,
      name?: string,
      precedence?: number,
    }>,
    tags?: List<{
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      text?: string,
      translations: record,
      type?: 'category' | 'music' | 'language' | 'closedCaptions' | 'healthFocus' | 'modality' | 'equipment' | 'plan' | 'venue' | 'general' | 'level',
      value?: string,
    }>,
    updatedBy?: {
      id?: number,
    },
    videoLength?: {
      id?: number,
      name?: string,
    },
    videoStatus?: 'uninitiated' | 'uploadStarted' | 'uploadCompleted' | 'processingStarted' | 'processingCompleted',
  },
}

GET /content/schedule

Get list of scheduled content.

Guard: loggedIn

Response Body
{
  data: {
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    content?: {
      guid?: string,
    },
    guid?: string,
    legacy: {
      hlsUrl?: string,
      id?: number,
      liveStreamId?: number,
      type?: 'reflect' | 'connect',
    },
-   type?: 'live' | 'vod' | 'encore',

}, }

GET /content/schedule

Get list of scheduled content.

Guard: none

Response Body
{
  data: {
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    content?: {
      guid?: string,
    },
    guid?: string,
    legacy: {
      hlsUrl?: string,
      id?: number,
      liveStreamId?: number,
      type?: 'reflect' | 'connect',
    },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }, }

POST /content/schedule

Create a new schedule entry for a piece of content

Request Body
{
  available?: {
    end?: number,
    live?: number,
    start?: number,
  },
  content?: {
    guid?: string,
  },
  legacy: {
    hlsUrl?: string,
    id?: number,
    liveStreamId?: number,
    type?: 'reflect' | 'connect',
  },
- type?: 'live' | 'vod' | 'encore',

}
Response Body
{
  data: {
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    content?: {
      guid?: string,
    },
    guid?: string,
    legacy: {
      hlsUrl?: string,
      id?: number,
      liveStreamId?: number,
      type?: 'reflect' | 'connect',
    },
-   type?: 'live' | 'vod' | 'encore',

}, }

POST /content/schedule

Create a new schedule entry for a piece of content

Request Body
{
  available?: {
    end?: number,
    live?: number,
    start?: number,
  },
  content?: {
    guid?: string,
  },
  legacy: {
    hlsUrl?: string,
    id?: number,
    liveStreamId?: number,
    type?: 'reflect' | 'connect',
  },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }
Response Body
{
  data: {
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    content?: {
      guid?: string,
    },
    guid?: string,
    legacy: {
      hlsUrl?: string,
      id?: number,
      liveStreamId?: number,
      type?: 'reflect' | 'connect',
    },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }, }

GET /content/schedule/{scheduleId}

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

Response Body
{
  data: {
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    content?: {
      guid?: string,
    },
    guid?: string,
    legacy: {
      hlsUrl?: string,
      id?: number,
      liveStreamId?: number,
      type?: 'reflect' | 'connect',
    },
-   type?: 'live' | 'vod' | 'encore',

}, }

GET /content/schedule/{scheduleId}

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

Response Body
{
  data: {
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    content?: {
      guid?: string,
    },
    guid?: string,
    legacy: {
      hlsUrl?: string,
      id?: number,
      liveStreamId?: number,
      type?: 'reflect' | 'connect',
    },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }, }

PATCH /content/schedule/{guid}

Edit a schedule entry for a piece of content

Response Body
{
  data: {
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    content?: {
      guid?: string,
    },
    guid?: string,
    legacy: {
      hlsUrl?: string,
      id?: number,
      liveStreamId?: number,
      type?: 'reflect' | 'connect',
    },
-   type?: 'live' | 'vod' | 'encore',

}, }

PATCH /content/schedule/{guid}

Edit a schedule entry for a piece of content

Response Body
{
  data: {
    available?: {
      end?: number,
      live?: number,
      start?: number,
    },
    content?: {
      guid?: string,
    },
    guid?: string,
    legacy: {
      hlsUrl?: string,
      id?: number,
      liveStreamId?: number,
      type?: 'reflect' | 'connect',
    },

+ type?: 'live' | 'vod' | 'encore' | 'rebroadcast', }, }
8 added endpoints
Added endpoints

GET /users/{userId}/account

Return the current state of the user’s account with payment status

Guard: selfOrAdmin

Response Body
{
  data: {
    dateCancelled?: number,
    dateExpires?: number,
    datePausedUntil?: number,
    nextInvoice?: {
      amount?: number,
      currency?: {
        code?: string,
        scale?: number,
        symbol?: string,
      },
      dateScheduled?: number,
    },
    status?: {
      status?: 'accepted' | 'blocked' | 'requested',
    },
    subscription?: {
      activation?: {
        isActivated?: bool,
      },
      billingProvider?: {
        accountId?: string,
        customerId?: string,
        name?: 'stripe' | 'ios' | 'android' | 'amazon',
        orderId?: string,
      },
      cancellation?: {
        dateCancelled?: number,
        feedback?: string,
        reason?: string,
      },
      createdBy?: {
        id?: number,
      },
      dateCreated?: number,
      dateUpdated?: number,
      id?: number,
      pause?: {
        dateEnd?: number,
        dateStart?: number,
        reason?: string,
      },
      plan?: {
        id?: number,
      },
      price?: {
        currency?: {
          code?: string,
          scale?: number,
          symbol?: string,
        },
        value?: number,
      },
      promotion?: {
        id?: number,
      },
      renewal?: 'auto' | 'paused' | 'cancelled' | 'failed',
      source?: {
        accountId?: string,
        lineItemId?: string,
        name?: 'shopify' | 'amazon' | 'ios' | 'android' | 'organic' | 'free',
        orderId?: string,
        productId?: string,
      },
      status?: 'pending' | 'trialing' | 'active' | 'expired',
      term?: {
        dateEnd?: number,
        dateStart?: number,
      },
      token?: string,
      trial?: {
        dateEnd?: number,
        dateStart?: number,
      },
      updatedBy?: {
        id?: number,
      },
      user?: {
        id?: number,
      },
      utm?: {
        campaign?: string,
        content?: string,
        medium?: string,
        source?: string,
      },
    },
  },
}

POST /users/{userId}/account/quote

Guard: selfOrAdmin

Request Body
{
  addOns: List<number>,
  internalNote: string,
  planId?: number,
  publicNote: string,
}
Response Body
{
  data: {
    charges?: {
      billedToday?: {
        discount?: number,
        subtotal?: number,
        total?: number,
      },
      credit?: {
        currentCredit?: number,
        futureCredit?: number,
      },
      recurring?: {
        dateStart?: number,
        frequencyDays?: number,
        price?: number,
      },
    },
    currency?: {
      code?: string,
      scale?: number,
      symbol?: 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,
      },
    },
  },
}

GET /playlists/{playlistId}/tracks

Get tracks from a given playlist

Guard: loggedIn

Response Body
{
  data: {
    dateCreated?: number,
    flag?: string,
    song?: {
      album?: {
        id?: number,
        name?: string,
      },
      artists?: List<{
        id?: number,
        name?: string,
      }>,
      copyright: record,
      coverArtUrl?: string,
      duration?: {
        seconds: number,
        text: string,
      },
      genres?: List<string>,
      id?: number,
      isExplicit?: bool,
      isrc?: string,
      label?: {
        id?: number,
        name?: string,
      },
      labelOwner?: {
        id?: number,
        name?: string,
      },
      labelRights: record,
      name?: string,
      publisherRights?: List<string>,
      releaseDate?: number,
      searchFlags: record,
    },
    trackOrder?: number,
  },
}

DELETE /playlists/{playlistId}/tracks

Remove all songs from this playlist

Guard: instructor

GET /playlists/{playlistId}/tracks/{songId}

Get song from a playlist

Guard: instructor

Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    flag?: string,
    playlist?: {
      id?: number,
    },
    song?: {
      id?: number,
    },
    trackOrder?: number,
  },
}

DELETE /playlists/{playlistId}/tracks/{songId}

Remove song from a playlist

Guard: instructor

Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    flag?: string,
    playlist?: {
      id?: number,
    },
    song?: {
      id?: number,
    },
    trackOrder?: number,
  },
}

PUT /playlists/{playlistId}/tracks/{songId}

Guard: instructor

Request Body
{
  flag?: string,
  trackOrder?: number,
}
Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    flag?: string,
    playlist?: {
      id?: number,
    },
    song?: {
      id?: number,
    },
    trackOrder?: number,
  },
}

PATCH /playlists/{playlistId}/tracks/{songId}

Guard: instructor

Request Body
{
  flag: string,
  trackOrder: number,
}
Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    flag?: string,
    playlist?: {
      id?: number,
    },
    song?: {
      id?: number,
    },
    trackOrder?: number,
  },
}
6 deleted endpoints

GET /playlists/{playlist}/tracks

Get tracks from a given playlist

Guard: loggedIn

Response Body
{
  data: {
    dateCreated?: number,
    flag?: string,
    song?: {
      album?: {
        id?: number,
        name?: string,
      },
      artists?: List<{
        id?: number,
        name?: string,
      }>,
      copyright: record,
      coverArtUrl?: string,
      duration?: {
        seconds: number,
        text: string,
      },
      genres?: List<string>,
      id?: number,
      isExplicit?: bool,
      isrc?: string,
      label?: {
        id?: number,
        name?: string,
      },
      labelOwner?: {
        id?: number,
        name?: string,
      },
      labelRights: record,
      name?: string,
      publisherRights?: List<string>,
      releaseDate?: number,
      searchFlags: record,
    },
    trackOrder?: number,
  },
}

DELETE /playlists/{playlist}/tracks

Remove all songs from this playlist

Guard: instructor

GET /playlists/{playlist}/tracks/{song}

Get song from a playlist

Guard: instructor

Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    flag?: string,
    playlist?: {
      id?: number,
    },
    song?: {
      id?: number,
    },
    trackOrder?: number,
  },
}

DELETE /playlists/{playlist}/tracks/{song}

Remove song from a playlist

Guard: instructor

Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    flag?: string,
    playlist?: {
      id?: number,
    },
    song?: {
      id?: number,
    },
    trackOrder?: number,
  },
}

PUT /playlists/{playlist}/tracks/{song}

Guard: instructor

Request Body
{
  flag?: string,
  trackOrder?: number,
}
Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    flag?: string,
    playlist?: {
      id?: number,
    },
    song?: {
      id?: number,
    },
    trackOrder?: number,
  },
}

PATCH /playlists/{playlist}/tracks/{song}

Guard: instructor

Request Body
{
  flag: string,
  trackOrder: number,
}
Response Body
{
  data: {
    createdBy?: {
      id?: number,
    },
    dateCreated?: number,
    flag?: string,
    playlist?: {
      id?: number,
    },
    song?: {
      id?: number,
    },
    trackOrder?: number,
  },
}
Deleted endpoints
WORK IN PROGRESS