Nest Changelog

1.1.4

2/9/2022

1.1.5

2/15/2022

15 changed endpoints

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

+ 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<{
-       dateAvailable?: 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<{

+ 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<{
-       dateAvailable?: 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<{

+ 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/{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<{
-       dateAvailable?: 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<{

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

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

+ 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 /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<{
-     dateAvailable?: 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<{

+ 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<{
-     dateAvailable?: 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<{

+ 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<{
-     dateAvailable?: 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<{

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

Get a subscription history by subscription ID

Response Body
{
  data: List<{
    action?: 'paused' | 'planChanged' | 'created' | 'canceled' | 'discounted',
    dateOccurred?: number,

initiatedBy?: { id?: number, }, - reason: string, - source: 'stripe.com' | 'admin.echelonfit.com' | 'falcon1.echelonfit.com' | 'member.echelonfit.com' | 'stag.member.echelonfit.com',

subscription?: { id?: number, }, user?: { id?: number, }, }>, }

GET /subscriptions/{id}/history

Get a subscription history by subscription ID

Response Body
{
  data: List<{
    action?: 'paused' | 'planChanged' | 'created' | 'canceled' | 'discounted',
    dateOccurred?: number,
+   guid?: string,
    initiatedBy?: {
      id?: number,
    },

+ payload: record, + rawJson: record, + reason?: string, + source?: 'stripe.com' | 'admin.echelonfit.com' | 'falcon1.echelonfit.com' | 'member.echelonfit.com' | 'stag.member.echelonfit.com', subscription?: { id?: number, }, user?: { id?: number, }, }>, }

POST /subscriptions/{id}/history

Create Subscription History

Request Body
{
  action?: 'paused' | 'planChanged' | 'created' | 'canceled' | 'discounted',
- dateOccurred?: number,
  initiatedBy?: {
    id?: number,
  },
  payload: record,
  rawJson: record,
  reason: string,
  source: 'stripe.com' | 'admin.echelonfit.com' | 'falcon1.echelonfit.com' | 'member.echelonfit.com' | 'stag.member.echelonfit.com',
  subscription?: {
    id?: number,
  },
  user?: {
    id?: number,
  },
}
Response Body
{
  data: {
    action?: 'paused' | 'planChanged' | 'created' | 'canceled' | 'discounted',
    dateOccurred?: number,

initiatedBy?: { id?: number, }, - reason: string, - source: 'stripe.com' | 'admin.echelonfit.com' | 'falcon1.echelonfit.com' | 'member.echelonfit.com' | 'stag.member.echelonfit.com',

subscription?: { id?: number, }, user?: { id?: number, }, }, }

POST /subscriptions/{id}/history

Create Subscription History

Request Body
{
  action?: 'paused' | 'planChanged' | 'created' | 'canceled' | 'discounted',

initiatedBy?: { id?: number, }, payload: record, rawJson: record, reason: string, source: 'stripe.com' | 'admin.echelonfit.com' | 'falcon1.echelonfit.com' | 'member.echelonfit.com' | 'stag.member.echelonfit.com', subscription?: { id?: number, }, user?: { id?: number, }, }
Response Body
{
  data: {
    action?: 'paused' | 'planChanged' | 'created' | 'canceled' | 'discounted',
    dateOccurred?: number,
+   guid?: string,
    initiatedBy?: {
      id?: number,
    },

+ payload: record, + rawJson: record, + reason?: string, + source?: 'stripe.com' | 'admin.echelonfit.com' | 'falcon1.echelonfit.com' | 'member.echelonfit.com' | 'stag.member.echelonfit.com', subscription?: { id?: number, }, user?: { id?: number, }, }, }

GET /retailers

Get a list of retailers

Guard: none

GET /retailers

Get a list of retailers

Guard: loggedIn

GET /equipment/models

Get a list of all available Equipment

Response Body
{
  data: List<{

dateAvailable?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string,

plans?: List<{ id?: number, }>,

}>, }

GET /equipment/models

Get a list of all available Equipment

Response Body
{
  data: List<{
+   category: {
+     guid?: string,
+     name?: string,
+   },
    dateAvailable?: number,
    id?: number,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    name?: string,
+   pdf?: string,
    plans?: List<{
      id?: number,
    }>,
+   video?: string,
  }>,
}

GET /equipment/models/{id}

Get a specific model of equipment

Response Body
{
  data: {

dateAvailable?: number, id?: number, image?: { default: string, large: string, medium: string, small: string, url?: string, }, name?: string,

plans?: List<{ id?: number, }>,

}, }

GET /equipment/models/{id}

Get a specific model of equipment

Response Body
{
  data: {
+   category: {
+     guid?: string,
+     name?: string,
+   },
    dateAvailable?: number,
    id?: number,
    image?: {
      default: string,
      large: string,
      medium: string,
      small: string,
      url?: string,
    },
    name?: string,
+   pdf?: string,
    plans?: List<{
      id?: number,
    }>,
+   video?: string,
  },
}

GET /equipment/categories

Get all equipment categories.

Guard: none

GET /equipment/categories

Get all equipment categories.

Guard: loggedIn

POST /equipment/categories

Create a new category

Request Body
{
  contentTag?: string,
  image: {
    data?: string,
    filename?: string,
  },
  isActive?: bool,
  legacyContentTag?: string,
  name?: string,
  sortOrder: number,
- updatedBy?: {
-   id?: number,
- },
}

POST /equipment/categories

Create a new category

Request Body
{
  contentTag?: string,
  image: {
    data?: string,
    filename?: string,
  },
  isActive?: bool,
  legacyContentTag?: string,
  name?: string,
  sortOrder: number,

}
5 added endpoints
Added endpoints

GET /test/service

Test for and endpoint that only a service can access.

Guard: service

POST /users/{userId}/repair

Attempt to repair certain errors within a users account

Guard: admin

PUT /users/password/forgot

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

Request Body
{
  email?: string,
}
Response Body
{
  data: {
    token?: string,
  },
}

PUT /users/password/reset

Change the password using reset token

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

POST /auth/commercial

Authenticate a single commercial piece of equipment

Request Body
{
  Commercial Code?: string,
  name: string,
  password?: string,
}
Response Body
{
  data: {
    family?: List<{
      id?: number,
      image?: {
        default: string,
        large: string,
        medium: string,
        small: string,
        url?: string,
      },
      nickname?: string,
    }>,
    guid?: string,
    jwt?: string,
    mongoId?: string,
    plan?: {
      features?: record,
      id?: number,
      name?: string,
    },
    userId?: number,
  },
}
WORK IN PROGRESS