Nest Changelog

1.40.0 PRE

9/6/2023

1.40.1

9/6/2023

7 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,
    },
    birthdate: string,
    createdBy?: {
      id?: number,
    },
    dateActivated?: number,
    dateCreated?: number,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { metricValue?: number, text?: string, units?: 'lb' | 'kg', value?: number, }, }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: 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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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>,
+   streaks?: {
+     current?: number,
+     longest?: number,
+   },
    stripe?: {
      customerId?: string,
    },
    tagline?: string,
    updatedBy?: {
      id?: number,
    },
    weight?: {
      metricValue?: number,
      text?: string,
      units?: 'lb' | 'kg',
      value?: number,
    },
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total?: {
      pages?: number,
      rows?: number,
    },
  },
}

POST /users

Request Body
{
  billingAddress: {
    city: string,
    country: {
      code?: string,
    },
    postalCode: string,
    region: {
      code?: string,
    },
    streetLine1: string,
    streetLine2: string,
  },
  birthdate: string,
  captcha: {
    token?: string,
  },
  commercial: {
    code?: string,
  },
  dateTosAccepted: number,
  dealer: {
    id?: number,
  },
  email?: string,
  firstName: string,
  forcePasswordChange: bool,
  gender: {
    value?: 'm' | 'f' | 'o',
  },
  height: {
    units?: 'in' | 'cm',
    value?: number,
  },
  image: {
    colors?: {
      background?: {
        hex?: string,
      },
      foreground?: {
        hex?: string,
      },
    },
    default: string,
    initials?: string,
    isPlaceholder?: bool,
    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,
    },
    serialNumber: string,
  }>,
  roles: List<string>,

tagline: 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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { metricValue?: number, 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,
  captcha: {
    token?: string,
  },
  commercial: {
    code?: string,
  },
  dateTosAccepted: number,
  dealer: {
    id?: number,
  },
  email?: string,
  firstName: string,
  forcePasswordChange: bool,
  gender: {
    value?: 'm' | 'f' | 'o',
  },
  height: {
    units?: 'in' | 'cm',
    value?: number,
  },
  image: {
    colors?: {
      background?: {
        hex?: string,
      },
      foreground?: {
        hex?: string,
      },
    },
    default: string,
    initials?: string,
    isPlaceholder?: bool,
    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,
    },
    serialNumber: string,
  }>,
  roles: List<string>,
+ streaks: {
+   current?: number,
+   longest?: number,
+ },
  tagline: 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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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>,
+   streaks?: {
+     current?: number,
+     longest?: number,
+   },
    stripe?: {
      customerId?: string,
    },
    tagline?: string,
    updatedBy?: {
      id?: number,
    },
    weight?: {
      metricValue?: number,
      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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { metricValue?: number, 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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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>,
+   streaks?: {
+     current?: number,
+     longest?: number,
+   },
    stripe?: {
      customerId?: string,
    },
    tagline?: string,
    updatedBy?: {
      id?: number,
    },
    weight?: {
      metricValue?: number,
      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,
  dateTosAccepted: number,
  dealer: {
    id?: number,
  },
  email: string,
  firstName: string,
  forcePasswordChange: bool,
  gender: {
    value?: 'm' | 'f' | 'o',
  },
  height: {
    units?: 'in' | 'cm',
    value?: number,
  },
  image: {
    colors?: {
      background?: {
        hex?: string,
      },
      foreground?: {
        hex?: string,
      },
    },
    default: string,
    initials?: string,
    isPlaceholder?: bool,
    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,
    },
    serialNumber: string,
  }>,
  roles: List<string>,

tagline: 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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { metricValue?: number, 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,
  dateTosAccepted: number,
  dealer: {
    id?: number,
  },
  email: string,
  firstName: string,
  forcePasswordChange: bool,
  gender: {
    value?: 'm' | 'f' | 'o',
  },
  height: {
    units?: 'in' | 'cm',
    value?: number,
  },
  image: {
    colors?: {
      background?: {
        hex?: string,
      },
      foreground?: {
        hex?: string,
      },
    },
    default: string,
    initials?: string,
    isPlaceholder?: bool,
    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,
    },
    serialNumber: string,
  }>,
  roles: List<string>,
+ streaks: {
+   current?: number,
+   longest?: number,
+ },
  tagline: 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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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>,
+   streaks?: {
+     current?: number,
+     longest?: number,
+   },
    stripe?: {
      customerId?: string,
    },
    tagline?: string,
    updatedBy?: {
      id?: number,
    },
    weight?: {
      metricValue?: number,
      text?: string,
      units?: 'lb' | 'kg',
      value?: number,
    },
  },
}

GET /users/findByEmail/{email}

Get a specific user by email

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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { metricValue?: number, text?: string, units?: 'lb' | 'kg', value?: number, }, }, }

GET /users/findByEmail/{email}

Get a specific user by email

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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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>,
+   streaks?: {
+     current?: number,
+     longest?: number,
+   },
    stripe?: {
      customerId?: string,
    },
    tagline?: string,
    updatedBy?: {
      id?: number,
    },
    weight?: {
      metricValue?: number,
      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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { metricValue?: number, text?: string, units?: 'lb' | 'kg', value?: number, }, }>, pagination: { page?: number, skip?: number, take?: number, total?: { pages?: number, rows?: 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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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>,
+   streaks?: {
+     current?: number,
+     longest?: number,
+   },
    stripe?: {
      customerId?: string,
    },
    tagline?: string,
    updatedBy?: {
      id?: number,
    },
    weight?: {
      metricValue?: number,
      text?: string,
      units?: 'lb' | 'kg',
      value?: number,
    },
  }>,
  pagination: {
    page?: number,
    skip?: number,
    take?: number,
    total?: {
      pages?: number,
      rows?: number,
    },
  },
}

POST /users/{userId}/family

Request Body
{
  billingAddress: {
    city: string,
    country: {
      code?: string,
    },
    postalCode: string,
    region: {
      code?: string,
    },
    streetLine1: string,
    streetLine2: string,
  },
  birthdate: string,
  captcha: {
    token?: string,
  },
  commercial: {
    code?: string,
  },
  dateTosAccepted: number,
  dealer: {
    id?: number,
  },
  email?: string,
  firstName: string,
  forcePasswordChange: bool,
  gender: {
    value?: 'm' | 'f' | 'o',
  },
  height: {
    units?: 'in' | 'cm',
    value?: number,
  },
  image: {
    colors?: {
      background?: {
        hex?: string,
      },
      foreground?: {
        hex?: string,
      },
    },
    default: string,
    initials?: string,
    isPlaceholder?: bool,
    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,
    },
    serialNumber: string,
  }>,
  roles: List<string>,

tagline: 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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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, }, tagline?: string, updatedBy?: { id?: number, }, weight?: { metricValue?: number, text?: string, units?: 'lb' | 'kg', value?: number, }, }, embedded: { jwt?: string, }, }

POST /users/{userId}/family

Request Body
{
  billingAddress: {
    city: string,
    country: {
      code?: string,
    },
    postalCode: string,
    region: {
      code?: string,
    },
    streetLine1: string,
    streetLine2: string,
  },
  birthdate: string,
  captcha: {
    token?: string,
  },
  commercial: {
    code?: string,
  },
  dateTosAccepted: number,
  dealer: {
    id?: number,
  },
  email?: string,
  firstName: string,
  forcePasswordChange: bool,
  gender: {
    value?: 'm' | 'f' | 'o',
  },
  height: {
    units?: 'in' | 'cm',
    value?: number,
  },
  image: {
    colors?: {
      background?: {
        hex?: string,
      },
      foreground?: {
        hex?: string,
      },
    },
    default: string,
    initials?: string,
    isPlaceholder?: bool,
    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,
    },
    serialNumber: string,
  }>,
  roles: List<string>,
+ streaks: {
+   current?: number,
+   longest?: number,
+ },
  tagline: 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,
    dateTosAccepted: number,
    dateUpdated?: number,
    dealer?: {
      id?: number,
    },
    email?: string,
    firstName?: string,
    forcePasswordChange?: bool,
    gender?: {
      text: string,
      value?: 'm' | 'f' | 'o',
    },
    height?: {
      metricValue?: number,
      text?: string,
      units?: 'in' | 'cm',
      value?: number,
    },
    id?: number,
    image?: {
      colors?: {
        background?: {
          hex?: string,
        },
        foreground?: {
          hex?: string,
        },
      },
      default: string,
      initials?: string,
      isPlaceholder?: bool,
      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>,
+   streaks?: {
+     current?: number,
+     longest?: number,
+   },
    stripe?: {
      customerId?: string,
    },
    tagline?: string,
    updatedBy?: {
      id?: number,
    },
    weight?: {
      metricValue?: number,
      text?: string,
      units?: 'lb' | 'kg',
      value?: number,
    },
  },
  embedded: {
    jwt?: string,
  },
}
Added endpoints

GET /webhooks/workouts/process/{userId}/streaks/{workoutGuid}

Internal use only. Process user streaks as a result of passed in workout

Guard: service

WORK IN PROGRESS