Nest Changelog
1.1.5
2/15/2022
1.1.6
2/18/2022
16 changed endpoints Collapse 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/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,
- },
}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 Collapse 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',
  },
}