openapi: 3.0.0 paths: /api/v2/auth/authorize: get: operationId: ApiV2AuthController_authorize summary: OAuth2 authorize parameters: - name: client_id required: false in: query schema: type: string - name: redirect_uri required: false in: query schema: type: string - name: prompt required: false in: query description: |- Indicates possible user prompts: - login (default): show Sign In screen; if a user is logged in, they are logged out first - sign-up: show Sign Up screen; if a user is logged in, they are logged out first - none: no prompt, throw when user isn't logged in x-enumNames: - LOGIN - SIGN_UP - NONE schema: enum: - login - sign-up - none type: string - name: scope required: false in: query x-enumNames: - PUBLIC_API_V2 schema: enum: - public-api-v2 type: string - name: response_type required: false in: query x-enumNames: - CODE schema: enum: - code type: string - name: state required: false in: query schema: type: string responses: '200': description: '' tags: - auth security: - OAuth2ApiClient: [] /api/v2/auth/token: post: operationId: ApiV2AuthController_token summary: OAuth2 token description: Obtain a new access token parameters: [] requestBody: required: true content: application/x-www-form-urlencoded: schema: oneOf: - $ref: '#/components/schemas/AuthTokenPasswordRequestDto' - $ref: '#/components/schemas/AuthTokenRefreshTokenRequestDto' - $ref: '#/components/schemas/AuthTokenAuthorizationCodeRequestDto' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/AuthTokenDto' tags: - auth security: - OAuth2ApiClient: [] /api/v2/auth/profile: get: operationId: ApiV2AuthController_profile summary: Get logged user data description: Get info about currently logged user parameters: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/AuthProfileDto' description: '' tags: - auth /api/v2/auth/logout: post: operationId: ApiV2AuthController_logout summary: Logout description: Invalidate provided access token parameters: [] responses: '201': description: '' tags: - auth /api/v2/host/appointments/reservations: get: operationId: ApiV2HostAppointmentsController_getHostAppointmentReservations summary: Get all appointment reservations parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 200 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - startsAt type: string - name: startAfter required: false in: query schema: type: string - name: startBefore required: false in: query schema: type: string - name: endAfter required: false in: query schema: type: string - name: endBefore required: false in: query schema: type: string - name: includeCancelled required: false in: query schema: type: boolean - name: includeCancelledAttendees required: false in: query schema: type: boolean - name: isPaid required: false in: query schema: type: boolean responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: >- #/components/schemas/ApiV2HostAppointmentReservationDto description: '' tags: - host security: - OAuth2: [] /api/v2/host/checkout/compatible-memberships: post: operationId: ApiV2HostCheckoutController_postCompatibleMemberships summary: Get compatible memberships for checkout cart description: > This endpoint will return list of bought memberships of the specified member potentially compatible with the given checkout cart. **NOTE**: The endpoint also returns memberships that are incompatible which is indicated by the incompatibility field. This is so you can present user with a reason why the membership is not usable in this case. | Incompatibility | Description | | --- | --- | | session-membership-excluded | session is not included in specified membership | | session-bought-membership-will-expire | bought membership will expire before the session start and it's not scheduled to renew | | session-bought-membership-pack-will-expire | pack will expire before the session starts | | session-bought-membership-already-used | bought membership was already used for this session and it's not allowed to use it multiple times | | session-bought-membership-usage-limit-reached | subscription has reached its usage limit for the renewal period that's aligned with session | | session-bought-membership-usage-limit-reached-for-semester-or-course | subscription has reached its usage limit for the renewal period or periods that're aligned with the whole semester or course | | session-bought-membership-daily-limit-reached | bought membership was already used today and is limited to one use per day | | session-bought-membership-no-event-credits-left | no event credits are left in the pack | | session-bought-membership-no-money-credits-left | no money credits are left in the pack | | session-bought-membership-on-demand | bought membership is only usable for on-demand content, not classes | | session-bought-membership-starts-later | bought membership starts being valid after the session start | | session-bought-membership-invalid-type | bought membership is not usable for this | | session-bought-membership-disabled | membership linked with the bought membership was disabled and thus it can't be used | | session-bought-membership-frozen | bought membership is frozen when the session happens | | session-subscription-ticket-limit | subscription is limited to one ticket | | unknown | unknown reason | parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HostCheckoutCompatibleMembershipsRequestDto' responses: '200': content: application/json: schema: $ref: >- #/components/schemas/HostCheckoutCompatibleMembershipsResponseDto description: '' tags: - host-checkout security: - OAuth2: [] /api/v2/host/checkout/prices: post: operationId: ApiV2HostCheckoutController_postPrices summary: Get prices for checkout description: >- This endpoint should be used before calling checkout to fetch correct prices for every item. parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HostCheckoutPricesRequestDto' responses: '200': content: application/json: schema: $ref: '#/components/schemas/HostCheckoutPricesResponseDto' description: '' tags: - host-checkout security: - OAuth2: [] /api/v2/host/checkout: post: operationId: ApiV2HostCheckoutController_post summary: Perform checkout description: > Perform payment for specified items in the checkout cart on behalf of the specified member. The endpoint will return list of purchased items. The checkout endpoint will reject any request that doesn't contain correct prices even when you're using memberships to pay. **NOTE**: Currently the endpoint only supports buying sessions with membership payment method. **NOTE:** You should call `/prices` endpoint to fetch correct prices for every item in the cart before calling this endpoint **NOTE:** You should call `/compatible-memberships` endpoint to fetch list of bought memberships that are potentially compatible with the cart before calling this endpoint | Error | Description | | --- | --- | | err-no-payment-methods | request doesn't contain any payment methods | | err-no-items | request doesn't contain any items | | err-too-many-items | request contain more than 1 items | | err-combined-payment-methods | request contains multiple payment method types in single request | | err-cannot-pay-for-membership-with-membership | request is attempting to buy membership with membership | | err-multiple-membership-types | request is combining different membership types in payment methods | | err-multiple-subscriptions | request contains more than 1 subscription payment methods | | err-saved-card-not-found | request contains invalid saved card payment method | | err-cart-validation-failed | general error when validating cart | | err-payment-failed | error occurred during payment processing | | err-duplicate-membership-payment-methods | request contains single bought membership multiple times | | err-invalid-membership-payment-method | request contains invalid membership payment method | | err-incompatible-membership | request contains membership that's incompatible with the checkout cart | | err-unsupported-payment-methods | request contains invalid payment methods | | err-session-has-invalid-state | request contains session with status that prevent sale | | err-session-has-passed | request contains session that has already passed | | err-session-sales-ended | request contains session that has ended sales | | err-session-dropins-not-allowed | request contains session that does not allow dropins | | err-session-is-full | request contains session that's full | | err-session-purchase-limit-reached | request contains session that member has already booked and host doesn't allow that | | err-session-access-restricted | request contains session that requires specific tag to book | | err-duplicate-item-ids | request contains single item id multiple times | | err-duplicate-payment-method-ids | request contains single payment method id multiple times | | err-unsupported-item-type | request contains unsupported item type | | err-missing-customer-date-of-birth | customer has no birthday information, but it's required | | err-customer-age-prevents-from-action | customer is not eligible for the action due to age restriction | | err-invalid-custom-payment-method | request contains invalid custom payment method id | parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HostCheckoutRequestDto' examples: buySessionUsingSubscription: summary: Buy session using subscription value: memberId: 12345 items: - id: '1' type: session sessionId: 15525 attemptedPriceInCurrency: '10.5' paymentMethods: - id: '1' type: membership boughtMembershipId: 25568 buySessionUsingSavedPaymentMethod: summary: Buy session using member's saved payment method value: memberId: 12345 items: - id: '1' type: session sessionId: 15525 attemptedPriceInCurrency: '10.5' paymentMethods: - id: '1' type: saved_payment_method savedPaymentMethodId: 5155 buyMembershipUsingSavedPaymentMethod: summary: Buy membership using member's saved payment method value: memberId: 12345 items: - id: '1' type: subscription membershipId: 789 attemptedPriceInCurrency: '49.99' paymentMethods: - id: '1' type: saved_payment_method savedPaymentMethodId: 5155 responses: '200': content: application/json: schema: $ref: '#/components/schemas/HostCheckoutResponseDto' description: '' '400': description: '' content: application/json: schema: $ref: '#/components/schemas/HostCheckoutErrorResponseDto' tags: - host-checkout security: - OAuth2: [] /api/v2/host/members/{memberId}/appointments: get: operationId: ApiV2HostMembersAppointmentsController_getAppointmentReservations summary: Get appointments by a specific member parameters: - name: memberId required: true in: path schema: type: number - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 200 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - startsAt type: string - name: startAfter required: false in: query schema: type: string - name: startBefore required: false in: query schema: type: string - name: endAfter required: false in: query schema: type: string - name: endBefore required: false in: query schema: type: string - name: includeCancelled required: false in: query schema: type: boolean responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: >- #/components/schemas/HostMemberAppointmentReservationDto description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}/bought-memberships/active: get: operationId: ApiV2HostMembersBoughtMembershipsController_list summary: Get all active subscriptions and packs of a specific member parameters: - name: memberId required: true in: path schema: type: number - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 200 example: 10 type: integer - name: includeFrozen required: false in: query schema: type: boolean responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/ApiV2HostBoughtMembershipsDto' description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}/bought-memberships/{boughtMembershipId}/credits: put: operationId: ApiV2HostMembersBoughtMembershipsController_updateClassCredits summary: >- Update credits of package-events or package-money bought membership for a specific member parameters: - name: memberId required: true in: path schema: type: number - name: boughtMembershipId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: >- #/components/schemas/ApiV2HostMemberBoughtMembershipsUpdateClassCreditsRequestDto responses: '200': content: application/json: schema: $ref: >- #/components/schemas/ApiV2HostMemberBoughtMembershipsUpdateClassCreditsResponseDto description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}/bought-memberships/{boughtMembershipId}/membership-freeze: put: operationId: ApiV2HostMembersBoughtMembershipsController_freezeMembership summary: Freeze bought membership immediately or schedule freeze/unfreeze parameters: - name: memberId required: true in: path schema: type: number - name: boughtMembershipId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiV2BoughtMembershipFreezeRequestDto' responses: '200': description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}/bought-memberships/{boughtMembershipId}/membership-schedule-freeze: put: operationId: ApiV2HostMembersBoughtMembershipsController_scheduleMembershipFreeze summary: Schedule bought membership freeze parameters: - name: memberId required: true in: path schema: type: number - name: boughtMembershipId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: >- #/components/schemas/ApiV2BoughtMembershipScheduleFreezeRequestDto responses: '200': description: '' tags: - host security: - OAuth2: [] delete: operationId: ApiV2HostMembersBoughtMembershipsController_removeMembershipFreeze summary: Unfreeze bought membership or remove scheduled freeze parameters: - name: memberId required: true in: path schema: type: number - name: boughtMembershipId required: true in: path schema: type: number responses: '200': description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}/bought-memberships/{boughtMembershipId}/membership-schedule-unfreeze: put: operationId: ApiV2HostMembersBoughtMembershipsController_scheduleMembershipUnfreeze summary: Schedule bought membership unfreeze parameters: - name: memberId required: true in: path schema: type: number - name: boughtMembershipId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: >- #/components/schemas/ApiV2BoughtMembershipScheduleUnfreezeRequestDto responses: '200': description: '' tags: - host security: - OAuth2: [] delete: operationId: ApiV2HostMembersBoughtMembershipsController_removeMembershipUnfreeze summary: Remove bought membership scheduled unfreeze parameters: - name: memberId required: true in: path schema: type: number - name: boughtMembershipId required: true in: path schema: type: number responses: '200': description: '' tags: - host security: - OAuth2: [] /api/v2/host/members: get: operationId: ApiV2HostMembersController_list summary: Get members parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 100 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - lastSeenAt - firstSeenAt - firstName - lastName - email type: string - name: query required: false in: query description: Search customers by query schema: type: string - name: filterPreset required: false in: query schema: enum: - with-active-membership type: string - name: staticSegmentId required: false in: query description: Filter customers by static segment ID schema: type: integer responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/HostMemberDto' description: '' tags: - host security: - OAuth2: [] post: operationId: ApiV2HostMembersController_create summary: Add member parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiV2HostMemberCreateRequestDto' responses: '200': content: application/json: schema: $ref: '#/components/schemas/ApiV2HostMemberCreateResponseDto' description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/list: post: operationId: ApiV2HostMembersController_listPost summary: Get members (with filters) parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiV2HostMembersListRequestWithFilterDto' responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/HostMemberDto' description: '' '201': description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}: get: operationId: ApiV2HostMembersController_get summary: Get member parameters: - name: memberId required: true in: path schema: type: number responses: '200': content: application/json: schema: $ref: '#/components/schemas/HostMemberDto' description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}/name: put: operationId: ApiV2HostMembersController_updateName summary: Update member name parameters: - name: memberId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HostMemberUpdateNameRequestDto' responses: '200': description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}/phone-number: put: operationId: ApiV2HostMembersController_updatePhoneNumber summary: Update member phone number parameters: - name: memberId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HostMemberUpdatePhoneNumberRequestDto' responses: '200': description: '' tags: - host security: - OAuth2: [] delete: operationId: ApiV2HostMembersController_deleteMemberPhoneNumber summary: Delete all phone number records for a member parameters: - name: memberId required: true in: path schema: type: number responses: '200': description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}/email: put: operationId: ApiV2HostMembersController_updateEmail summary: Update member e-mail parameters: - name: memberId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HostMemberUpdateEmailRequestDto' responses: '200': description: '' tags: - host security: - OAuth2: [] /api/v2/host/memberships: get: operationId: ApiV2HostMembershipsController_list summary: Get available host memberships parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 200 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - name - orderNumber type: string - name: includeDisabled required: false in: query schema: type: boolean - name: onlyFeatured required: false in: query schema: type: boolean - name: compatibleWithSessionId required: false in: query schema: type: integer - name: compatibleWithAppointmentId required: false in: query schema: type: integer responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/ApiV2HostMembershipDto' description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}/notes: get: operationId: ApiV2HostMembersNotesController_list summary: Get notes for a specific member parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 100 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - createdAt - modifiedAt type: string - name: memberId required: true in: path schema: type: number responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/HostMemberNoteDto' description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}/sessions: get: operationId: ApiV2HostMembersSessionBookingsController_list summary: Get session bookings by a specific member parameters: - name: memberId required: true in: path schema: type: number - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 100 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - startsAt type: string - name: startAfter required: false in: query schema: type: string - name: startBefore required: false in: query schema: type: string - name: endAfter required: false in: query schema: type: string - name: endBefore required: false in: query schema: type: string - name: includeCancelled required: false in: query schema: type: boolean responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/HostMemberSessionBookingDto' description: '' tags: - host security: - OAuth2: [] /api/v2/host/members/{memberId}/tags/{tagId}: post: operationId: ApiV2HostMemberTagsController_assign summary: Assign a tag to a member parameters: - name: memberId required: true in: path schema: type: number - name: tagId required: true in: path schema: type: number responses: '201': description: '' tags: - host security: - OAuth2: [] delete: operationId: ApiV2HostMemberTagsController_unassign summary: Unassign a tag from a member parameters: - name: memberId required: true in: path schema: type: number - name: tagId required: true in: path schema: type: number responses: '200': description: '' tags: - host security: - OAuth2: [] /api/v2/host/sales: get: operationId: ApiV2HostSalesController_list summary: Get sales description: >- **Note:** This is an experimental feature, please contact support if you want to utilize this endpoint. This endpoint returns a list of host sales. The default sorting mode is DESC (newest sales first), but you can also specify ASC (oldest sales first). For session and appointment sales, additional meta data is returned in the response. parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: type: string responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/HostSaleDto' description: '' tags: - host security: - OAuth2: [] /api/v2/host/session-bookings/{bookingId}/check-in: post: operationId: ApiV2HostSessionBookingCheckInController_addSessionBookingCheckIn summary: Mark session booking as checked-in parameters: - name: bookingId required: true in: path schema: type: number responses: '200': description: '' tags: - host security: - OAuth2: [] delete: operationId: ApiV2HostSessionBookingCheckInController_removeSessionBookingCheckIn summary: Mark session booking as not checked-in parameters: - name: bookingId required: true in: path schema: type: number responses: '200': description: '' tags: - host security: - OAuth2: [] /api/v2/host/session-bookings/{bookingId}: delete: operationId: ApiV2HostSessionBookingController_cancelSessionBooking summary: Cancel session booking description: >- Cancel a single session booking identified by its ID. **Tip:** You can find the ID within the *ApiV2HostSessionBookingDto* object (`id` field) returned from the session booking list endpoint. **Note:** This endpoint does not cancel or impact any recurring bookings. There is a separate endpoint for canceling those. parameters: - name: bookingId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HostSessionBookingCancelRequestDto' responses: '200': description: '' tags: - host security: - OAuth2: [] /api/v2/host/session-recurring-bookings/{bookingId}: delete: operationId: ApiV2HostSessionRecurringBookingController_cancelRecurringSessionBooking summary: Cancel recurring session booking description: >- Cancel recurring session booking identified by its ID and related session bookings. **Tip:** You can find the ID within the ApiV2HostSessionBookingDto object (`recurringBookingId` field) returned from the session booking list endpoint. **Note:** This endpoint cancels both recurring booking and individual bookings originating from the same. User can provide more specific filters to specify which bookings will be cancelled. parameters: - name: bookingId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HostSessionRecurringBookingCancelRequestDto' responses: '200': description: '' tags: - host security: - OAuth2: [] /api/v2/host/sessions: get: operationId: ApiV2HostSessionsController_getSessions summary: Returns a list of sessions parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 200 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - name - startsAt - endsAt type: string - name: includeCancelled required: false in: query description: also include cancelled sessions schema: type: boolean - name: types required: false in: query description: only return specified session types schema: type: array items: type: string enum: - private - special-event - special-event-new - retreat - fitness - course - course-class - semester - recital - name: teacherId required: false in: query schema: type: integer - name: locationId required: false in: query schema: type: integer - name: startAfter required: false in: query schema: type: string - name: startBefore required: false in: query schema: type: string - name: endAfter required: false in: query schema: type: string - name: endBefore required: false in: query schema: type: string responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/HostSessionDto' description: '' tags: - host security: - OAuth2: [] /api/v2/host/sessions/{sessionId}: get: operationId: ApiV2HostSessionsController_getSession summary: Returns a session detail parameters: - name: sessionId required: true in: path schema: type: number responses: '200': content: application/json: schema: $ref: '#/components/schemas/HostSessionDetailDto' description: '' tags: - host security: - OAuth2: [] /api/v2/host/sessions/{sessionId}/bookings: get: operationId: ApiV2HostSessionsController_getSessionBookings summary: Returns a list of session bookings parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 100 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - createdAt - firstName - lastName type: string - name: includeCancelled required: false in: query description: also include cancelled bookings schema: type: boolean - name: sessionId required: true in: path schema: type: number responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/HostSessionBookingDto' description: '' tags: - host security: - OAuth2: [] /api/v2/host/sessions/{sessionId}/bookings/free: post: operationId: ApiV2HostSessionsController_addToSessionForFree summary: Add a member to a session for free description: >- This endpoint allows staff user to add a member to a session for free | Error | Description | | --- | --- | | err-member-not-found | member not found | | err-member-not-assigned-to-host | member is not assigned to the host | | err-session-not-found | session not found | | err-session-not-provided-by-host | session not provided by the host | | err-customer-age-prevents-from-action | member is not eligible due to age restrictions | | err-missing-customer-date-of-birth | member is missing date of birth value | | err-missing-date-of-birth-setting | host is missing date of birth settings | | err-invalid-date-of-birth-value | member has invalid date of birth value | | err-session-not-recurring | session is not a recurring session | parameters: - name: sessionId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HostFreeSessionBookingRequestDto' responses: '200': content: application/json: schema: $ref: '#/components/schemas/HostFreeSessionBookingResponseDto' description: '' '400': description: '' content: application/json: schema: $ref: '#/components/schemas/HostFreeSessionBookingErrorResponseDto' tags: - host security: - OAuth2: [] /api/v2/host/sessions/{sessionId}/waitlist/bookings: post: operationId: ApiV2HostSessionsController_addToWaitlist summary: Add a member to a session waitlist description: >- This endpoint allows staff user to add a member to a session waitlist **NOTE**: You can use the optional `useBoughtMembershipIds` field to provide a list of bought memberships that should be attempted to use during booking from the waitlist. If you don't provide anything here the best matching membership will be used automatically. | Error | Description | | --- | --- | | err-waitlist-not-allowed | session does not have waitlist enabled | | err-waitlist-full | session waitlist is full | | err-member-already-on-waitlist | member is already on the waitlist | | err-member-not-found | member not found | | err-member-not-assigned-to-host | member is not assigned to the host | | err-session-not-found | session not found | | err-session-not-provided-by-host | session not provided by the host | | err-customer-age-prevents-from-action | member is not eligible due to age restrictions | | err-missing-customer-date-of-birth | member is missing date of birth value | | err-missing-date-of-birth-setting | host is missing date of birth settings | | err-invalid-date-of-birth-value | member has invalid date of birth value | parameters: - name: sessionId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HostSessionWaitlistBookingRequestDto' responses: '200': content: application/json: schema: $ref: '#/components/schemas/HostSessionWaitlistBookingResponseDto' description: '' '400': description: '' content: application/json: schema: $ref: >- #/components/schemas/HostSessionWaitlistBookingErrorResponseDto tags: - host security: - OAuth2: [] /api/v2/host/tags: get: operationId: ApiV2HostTagsController_list summary: List available tags parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 100 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - name type: string responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/HostTagDto' description: '' tags: - host security: - OAuth2: [] /api/v2/member-addresses: get: operationId: ApiV2MemberAddressesController_list summary: Get member addresses parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: example: createdAt enum: - createdAt type: string responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/ApiV2MemberAddressDto' examples: addresses: summary: Member addresses value: pagination: page: 0 pageSize: 10 totalCount: 1 payload: - id: 5 address: 153 Hunters Drive city: New York country: US zipcode: '8513' createdAt: 2021-01-01T00:00:00.000Z description: '' tags: - member-addresses security: - OAuth2: [] post: operationId: ApiV2MemberAddressesController_create summary: Create member address parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiV2MemberAddressRequestDto' responses: '200': content: application/json: schema: $ref: '#/components/schemas/ApiV2MemberAddressDto' examples: addresses: summary: Member address value: id: 5 address: 153 Hunters Drive city: New York country: US zipcode: '8513' createdAt: 2021-01-01T00:00:00.000Z description: '' tags: - member-addresses security: - OAuth2: [] /api/v2/member-addresses/{memberAddressId}: get: operationId: ApiV2MemberAddressesController_get summary: Get member address parameters: - name: memberAddressId required: true in: path schema: type: number responses: '200': content: application/json: schema: $ref: '#/components/schemas/ApiV2MemberAddressDto' examples: addresses: summary: Member address value: id: 5 address: 153 Hunters Drive city: New York country: US zipcode: '8513' createdAt: 2021-01-01T00:00:00.000Z description: '' tags: - member-addresses security: - OAuth2: [] put: operationId: ApiV2MemberAddressesController_update summary: Update member address parameters: - name: memberAddressId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiV2MemberAddressRequestDto' responses: '200': content: application/json: schema: $ref: '#/components/schemas/ApiV2MemberAddressDto' examples: addresses: summary: Member address value: id: 5 address: 153 Hunters Drive city: New York country: US zipcode: '8513' createdAt: 2021-01-01T00:00:00.000Z description: '' tags: - member-addresses security: - OAuth2: [] delete: operationId: ApiV2MemberAddressesController_delete summary: Delete member address parameters: - name: memberAddressId required: true in: path schema: type: number responses: '200': description: '' tags: - member-addresses security: - OAuth2: [] /api/v2/member/bought-memberships/active: get: operationId: ApiV2MemberBoughtMembershipsController_list summary: Get member active memberships parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 200 example: 10 type: integer - name: includeFrozen required: false in: query schema: type: boolean responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/MemberBoughtMembershipsDto' description: '' tags: - member security: - OAuth2: [] /api/v2/member/bought-memberships/{boughtMembershipId}/membership-freeze: put: operationId: ApiV2MemberBoughtMembershipsController_freezeMembership summary: Freeze bought membership immediately or schedule freeze/unfreeze parameters: - name: boughtMembershipId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiV2BoughtMembershipFreezeRequestDto' responses: '200': description: '' tags: - member security: - OAuth2: [] /api/v2/member/bought-memberships/{boughtMembershipId}/membership-schedule-freeze: put: operationId: ApiV2MemberBoughtMembershipsController_scheduleMembershipFreeze summary: Schedule bought membership freeze parameters: - name: boughtMembershipId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: >- #/components/schemas/ApiV2BoughtMembershipScheduleFreezeRequestDto responses: '200': description: '' tags: - member security: - OAuth2: [] delete: operationId: ApiV2MemberBoughtMembershipsController_removeMembershipFreeze summary: Unfreeze bought membership or remove scheduled freeze parameters: - name: boughtMembershipId required: true in: path schema: type: number responses: '200': description: '' tags: - member security: - OAuth2: [] /api/v2/member/bought-memberships/{boughtMembershipId}/membership-schedule-unfreeze: put: operationId: ApiV2MemberBoughtMembershipsController_scheduleMembershipUnfreeze summary: Schedule bought membership unfreeze parameters: - name: boughtMembershipId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: >- #/components/schemas/ApiV2BoughtMembershipScheduleUnfreezeRequestDto responses: '200': description: '' tags: - member security: - OAuth2: [] delete: operationId: ApiV2MemberBoughtMembershipsController_removeMembershipUnfreeze summary: Remove bought membership scheduled unfreeze parameters: - name: boughtMembershipId required: true in: path schema: type: number responses: '200': description: '' tags: - member security: - OAuth2: [] /api/v2/member/checkout/compatible-memberships: post: operationId: ApiV2MemberCheckoutController_postCompatibleMemberships summary: Get compatible memberships description: > This endpoint will return list of bought memberships potentially compatible with specified checkout cart. **NOTE**: The endpoint also returns memberships that are incompatible which is indicated by the incompatibility field. This is so you can present user with a reason why the membership is not usable in this case. | Incompatibility | Description | | --- | --- | | session-membership-excluded | session is not included in specified membership | | session-bought-membership-will-expire | bought membership will expire before the session start and it's not scheduled to renew | | session-bought-membership-pack-will-expire | pack will expire before the session starts | | session-bought-membership-already-used | bought membership was already used for this session and it's not allowed to use it multiple times | | session-bought-membership-usage-limit-reached | subscription has reached its usage limit for the renewal period that's aligned with session | | session-bought-membership-usage-limit-reached-for-semester-or-course | subscription has reached its usage limit for the renewal period or periods that're aligned with the whole semester or course | | session-bought-membership-daily-limit-reached | bought membership was already used today and is limited to one use per day | | session-bought-membership-no-event-credits-left | no event credits are left in the pack | | session-bought-membership-no-money-credits-left | no money credits are left in the pack | | session-bought-membership-on-demand | bought membership is only usable for on-demand content, not classes | | session-bought-membership-starts-later | bought membership starts being valid after the session start | | session-bought-membership-invalid-type | bought membership is not usable for this | | session-bought-membership-disabled | membership linked with the bought membership was disabled and thus it can't be used | | session-bought-membership-frozen | bought membership is frozen when the session happens | | session-subscription-ticket-limit | subscription is limited to one ticket | | unknown | unknown reason | parameters: [] requestBody: required: true content: application/json: schema: $ref: >- #/components/schemas/MemberCheckoutCompatibleMembershipsRequestDto responses: '200': content: application/json: schema: $ref: '#/components/schemas/MemberCheckoutCompatibleMembershipsDto' description: '' tags: - member-checkout security: - OAuth2: [] /api/v2/member/checkout/prices: post: operationId: ApiV2MemberCheckoutController_postPrices summary: Get prices description: >- This endpoint should be used before calling checkout to fetch correct prices for every item. The checkout endpoint will reject any request that doesn't contain correct prices even when you're using memberships to pay. parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MemberCheckoutPricesRequestDto' responses: '200': content: application/json: schema: $ref: '#/components/schemas/MemberCheckoutPricesResponseDto' description: '' tags: - member-checkout security: - OAuth2: [] /api/v2/member/checkout: post: operationId: ApiV2MemberCheckoutController_post summary: Perform checkout description: > Perform payment for specified items in the checkout cart. The endpoint will return list of purchased items. **NOTE**: Currently the endpoint only supports buying sessions with membership payment method. **NOTE:** You should call `/prices` endpoint to fetch correct prices for every item in the cart before calling this endpoint **NOTE:** You should call `/compatible-memberships` endpoint to fetch list of bought memberships that are potentially compatible with the cart before calling this endpoint | Error | Description | | --- | --- | | err-no-payment-methods | request doesn't contain any payment methods | | err-no-items | request doesn't contain any items | | err-too-many-items | request contain more than 1 items | | err-combined-payment-methods | request contains multiple payment method types in single request | | err-cannot-pay-for-membership-with-membership | request is attempting to buy membership with membership | | err-multiple-membership-types | request is combining different membership types in payment methods | | err-multiple-subscriptions | request contains more than 1 subscription payment methods | | err-saved-card-not-found | request contains invalid saved card payment method | | err-cart-validation-failed | general error when validating cart | | err-payment-failed | error occurred during payment processing | | err-duplicate-membership-payment-methods | request contains single bought membership multiple times | | err-invalid-membership-payment-method | request contains invalid membership payment method | | err-incompatible-membership | request contains membership that's incompatible with the checkout cart | | err-unsupported-payment-methods | request contains invalid payment methods | | err-session-has-invalid-state | request contains session with status that prevent sale | | err-session-has-passed | request contains session that has already passed | | err-session-sales-ended | request contains session that has ended sales | | err-session-dropins-not-allowed | request contains session that does not allow dropins | | err-session-is-full | request contains session that's full | | err-session-purchase-limit-reached | request contains session that member has already booked and host doesn't allow that | | err-session-access-restricted | request contains session that requires specific tag to book | | err-duplicate-item-ids | request contains single item id multiple times | | err-duplicate-payment-method-ids | request contains single payment method id multiple times | | err-unsupported-item-type | request contains unsupported item type | | err-missing-customer-date-of-birth | customer has no birthday information, but it's required | | err-customer-age-prevents-from-action | customer is not eligible for the action due to age restriction | parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MemberCheckoutRequestDto' examples: buySessionUsingSubscription: summary: Buy session using subscription value: items: - id: '1' type: session sessionId: 15525 attemptedPriceInCurrency: '10.5' paymentMethods: - id: '1' type: membership boughtMembershipId: 25568 buySessionUsingSavedPaymentMethod: summary: Buy session using saved payment method value: items: - id: '1' type: session sessionId: 15525 attemptedPriceInCurrency: '10.5' paymentMethods: - id: '1' type: saved_payment_method savedPaymentMethodId: 5155 buySessionUsingMultiplePackages: summary: Buy session using multiple packages value: items: - id: '1' type: session sessionId: 15525 attemptedPriceInCurrency: '10.5' paymentMethods: - id: '1' type: membership boughtMembershipId: 25568 - id: '2' type: membership boughtMembershipId: 25548 responses: '200': content: application/json: schema: $ref: '#/components/schemas/MemberCheckoutResponseDto' description: '' '400': description: '' content: application/json: schema: $ref: '#/components/schemas/MemberCheckoutErrorResponseDto' tags: - member-checkout security: - OAuth2: [] /api/v2/member: get: operationId: ApiV2MemberController_get summary: Get member info description: Returns general info for the current member parameters: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/MemberInfoDto' description: '' tags: - member security: - OAuth2: [] put: operationId: ApiV2MemberController_update summary: Update member info description: >- Changes some user detail, use `/email` endpoint to change email, use `/phone-number` endpoint to change phone number parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiV2MemberUpdateRequestDto' responses: '200': description: '' tags: - member security: - OAuth2: [] /api/v2/member/visits: get: operationId: ApiV2MemberController_getVisits summary: Get member visits description: Returns visits counts for the current member parameters: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/MemberVisitsDto' description: '' tags: - member security: - OAuth2: [] /api/v2/member/email: put: operationId: ApiV2MemberController_updateEmail summary: Update member email description: Changes user email parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiV2MemberUpdateEmailRequestDto' responses: '200': description: '' tags: - member security: - OAuth2: [] /api/v2/member/phone-number: put: operationId: ApiV2MemberController_updatePhoneNumber summary: Update member phone number description: Changes user phone number parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiV2MemberUpdatePhoneNumberRequestDto' responses: '200': description: '' tags: - member security: - OAuth2: [] delete: operationId: ApiV2MemberController_deletePhoneNumber summary: Delete all phone number records for a member parameters: [] responses: '200': description: '' tags: - member security: - OAuth2: [] /api/v2/member/password-reset-email: post: operationId: ApiV2MemberController_requestPasswordResetEmail summary: Request member password reset description: Requests a new password reset email to be sent to the user parameters: [] responses: '201': description: '' tags: - member security: - OAuth2: [] /api/v2/member/host/locations: get: operationId: ApiV2MemberHostLocationsController_list summary: Get available host locations parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 200 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - name type: string responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/MemberHostLocationDto' description: '' tags: - member-host security: - OAuth2: [] /api/v2/member/host/memberships: get: operationId: ApiV2MemberHostMembershipsController_list summary: Get available host memberships parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 200 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - name - orderNumber type: string - name: includeDisabled required: false in: query schema: type: boolean - name: onlyFeatured required: false in: query schema: type: boolean - name: compatibleWithSessionId required: false in: query schema: type: integer - name: compatibleWithAppointmentId required: false in: query schema: type: integer responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/MemberHostMembershipDto' description: '' tags: - member-host security: - OAuth2: [] /api/v2/member/host/sessions: get: operationId: ApiV2MemberHostSessionsController_list summary: Get available host sessions parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 maximum: 200 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: enum: - name - startsAt - endsAt type: string - name: includeCancelled required: false in: query description: also include cancelled sessions schema: type: boolean - name: types required: false in: query description: only return specified session types schema: type: array items: type: string enum: - private - special-event - special-event-new - retreat - fitness - course - course-class - semester - recital - name: teacherId required: false in: query schema: type: integer - name: locationId required: false in: query schema: type: integer - name: startAfter required: false in: query schema: type: string - name: startBefore required: false in: query schema: type: string - name: endAfter required: false in: query schema: type: string - name: endBefore required: false in: query schema: type: string responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/MemberHostSessionDto' description: '' tags: - member-host /api/v2/member/host/signable-documents: get: operationId: ApiV2MemberHostSignableDocumentsController_list summary: >- Returns signable documents (waivers, privacy policy, contracts...) with signature status parameters: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/MemberSignableDocumentsResponseDto' description: '' tags: - member-host security: - OAuth2: [] /api/v2/member/host/signable-documents/sign: put: operationId: ApiV2MemberHostSignableDocumentsController_sign summary: >- Signs one or multiple signable documents (waivers, privacy policy, contracts...) using one signature parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MemberSignDocumentRequestDto' responses: '200': description: '' tags: - member-host security: - OAuth2: [] /api/v2/member/saved-payment-methods: get: operationId: ApiV2MemberSavedPaymentMethodsController_get summary: Get saved member payment methods parameters: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ApiV2MemberSavedPaymentMethodsResponseDto' description: '' tags: - member security: - OAuth2: [] post: operationId: ApiV2MemberSavedPaymentMethodsController_post summary: Add member saved payment method description: >- This endpoint returns a temporary pre-authenticated URL that allows user to add a payment method. Redirect user to that URL, which will allow them to add a payment method using a Momence-hosted app. The URL will be valid for 3600 seconds. After the user finishes adding the payment method, they will get redirected to the URL provided. parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiV2MemberManagePaymentMethodsRequestDto' responses: '200': content: application/json: schema: $ref: >- #/components/schemas/ApiV2MemberManagePaymentMethodsResponseDto description: '' tags: - member security: - OAuth2: [] /api/v2/member/saved-payment-methods/{savedPaymentMethodId}: delete: operationId: ApiV2MemberSavedPaymentMethodsController_delete summary: Remove member saved payment method description: >- This endpoint allows members to remove their saved payment method. | Error | Description | | --- | --- | | err-active-non-cancellable-subscription | member has an active non-cancellable subscription which prevent the last payment method from being deleted | | err-no-payment-method-found | the specified payment method does not exist | parameters: - name: savedPaymentMethodId required: true in: path schema: type: number responses: '200': description: '' '400': description: '' content: application/json: schema: $ref: >- #/components/schemas/MemberDeleteSavedPaymentMethodErrorResponseDto tags: - member security: - OAuth2: [] /api/v2/member/sessions: get: operationId: ApiV2MemberSessionBookingsController_list summary: Get member bookings description: Returns list of sessions current user is signed up for parameters: - name: page required: true in: query description: Starts at 0 schema: minimum: 0 example: 0 type: integer - name: pageSize required: true in: query schema: minimum: 1 example: 10 type: integer - name: sortOrder required: false in: query schema: enum: - ASC - DESC type: string - name: sortBy required: false in: query description: Field to sort by schema: type: string - name: startAfter required: false in: query schema: type: string - name: endAfter required: false in: query schema: type: string responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponseDto' - required: - payload properties: payload: type: array items: $ref: '#/components/schemas/MemberSessionBookingDto' description: '' tags: - member-sessions security: - OAuth2: [] /api/v2/member/sessions/{sessionBookingId}: delete: operationId: ApiV2MemberSessionBookingsController_cancel summary: Cancel member booking description: Cancels session booking parameters: - name: sessionBookingId required: true in: path schema: type: number responses: '200': description: '' tags: - member-sessions security: - OAuth2: [] /api/v2/host/reports: post: operationId: ApiV2HostReportRunsController_createReportRun summary: Initiate report generation description: >- Initiates generation of a report. Use "Retrieve a report" endpoint to retrieve the report data once the generation is completed. **Rate limit:** 100 req / 1 d parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiV2HostCreateReportRunRequestDto' examples: createTotalSalesReport: summary: Create Total Sales report value: parameters: reportType: total-sales hostId: 745 dateRange: from: 2026-01-01T00:00:00.000Z to: 2026-01-30T00:00:00.000Z includeRefunds: true saleTypes: - membership createFranchiseGiftCardReconciliationReport: summary: Create Franchise Gift Card Reconciliation report value: parameters: reportType: franchise-gift-card-reconciliation hostId: 745 dateRange: from: 2026-01-01T00:00:00.000Z to: 2026-01-30T00:00:00.000Z responses: '200': content: application/json: schema: $ref: '#/components/schemas/ApiV2HostCreateReportRunResponseDto' description: '' '201': description: '' content: application/json: schema: $ref: '#/components/schemas/ApiV2HostCreateReportRunResponseDto' tags: - host security: - OAuth2: [] /api/v2/host/reports/{reportRunId}: get: operationId: ApiV2HostReportRunsController_getReportRun summary: Retrieve a report description: '**Rate limit:** 1000 req / 1 d' parameters: - name: reportRunId required: true in: path schema: type: number responses: '200': content: application/json: schema: $ref: '#/components/schemas/ApiV2HostGetReportRunResponseDto' examples: getReportRunTotalSalesRunning: summary: Get running Total Sales report value: id: 1 status: running parameters: reportType: total-sales hostId: 745 dateRange: from: 2026-01-01T00:00:00.000Z to: 2026-01-30T00:00:00.000Z includeRefunds: true saleTypes: - membership data: null getReportRunTotalSalesCompletedEmptyItems: summary: Get completed Total Sales report (empty items) value: id: 1 status: completed parameters: reportType: total-sales hostId: 745 dateRange: from: 2026-01-01T00:00:00.000Z to: 2026-01-30T00:00:00.000Z includeRefunds: true saleTypes: - membership data: reportType: total-sales items: [] getReportRunTotalSalesCompletedNonEmptyItems: summary: Get completed Total Sales report (non-empty items) value: id: 1 status: completed parameters: reportType: total-sales hostId: 745 dateRange: from: 2026-01-01T00:00:00.000Z to: 2026-01-30T00:00:00.000Z includeRefunds: true saleTypes: - membership data: reportType: total-sales items: - memberId: 10000001 customerName: Customer Name customerEmail: customer@example.com payingCustomerName: Customer Name payingCustomerEmail: customer@example.com payingMemberId: 10000001 saleItemId: 20000001 paymentCategory: subscription membershipType: subscription paymentDate: 2026-01-01T23:31:06.515Z serviceDate: 2026-01-01T23:31:06.882Z paymentValue: 359 paidInMoneyCredits: 359 paymentVat: 60 paymentItem: Gold Unlimited Membership paymentStatus: succeeded paymentMethod: package-money paymentTransactionId: 30000001 stripeToken: package-money currency: null refunded: 0 soldBy: staff@example.com location: null transactionItems: - paymentTransactionItemId: 40000001 paymentTransactionId: 30000001 membershipType: package-money membershipName: null paymentMethod: membership paidInCurrency: 0 paidInMoneyCredits: 359 vatAmountInCurrency: 60 homeLocation: Location XXXXX note: null saleReference: Receipt-YYYY-XXX paymentMethodWeight: 1 saleItemId: 20000001 saleReference: Receipt-YYYY-XXX details: boughtMembershipId: 50000001 membershipId: 60000001 membershipType: subscription description: '' tags: - host security: - OAuth2: [] info: title: Momence Public description: '' version: '2.0' contact: {} tags: [] servers: - url: https://api.momence.com description: Production API components: schemas: AuthTokenPasswordRequestDto: type: object properties: grant_type: type: string enum: - password username: type: string password: type: string required: - grant_type - username - password AuthTokenRefreshTokenRequestDto: type: object properties: grant_type: type: string enum: - refresh_token refresh_token: type: string required: - grant_type - refresh_token AuthTokenAuthorizationCodeRequestDto: type: object properties: grant_type: type: string enum: - authorization_code code: type: string redirect_uri: type: string required: - grant_type - code - redirect_uri AuthTokenDto: type: object properties: accessToken: type: string access_token: type: string accessTokenExpiresAt: type: string format: date-time refreshToken: type: string refresh_token: type: string refreshTokenExpiresAt: type: string format: date-time required: - accessToken - access_token - accessTokenExpiresAt - refreshToken - refresh_token - refreshTokenExpiresAt AuthProfileDto: type: object properties: userId: type: integer example: 1 memberId: type: integer nullable: true example: 1 email: type: string example: john.doe@example.com firstName: type: string example: John lastName: type: string example: Doe required: - userId - memberId - email - firstName - lastName PaginatedResponseDataDto: type: object properties: page: type: integer example: 0 minimum: 0 pageSize: type: integer example: 10 minimum: 1 totalCount: type: integer example: 1 sortBy: type: string sortOrder: type: string enum: - ASC - DESC required: - page - pageSize - totalCount PaginatedResponseDto: type: object properties: pagination: $ref: '#/components/schemas/PaginatedResponseDataDto' required: - pagination ApiV2AppointmentReservationBoardDto: type: object properties: id: type: integer example: 1 name: type: string example: Yoga Private Appointments required: - id - name ApiV2AppointmentReservationServiceDto: type: object properties: id: type: integer example: 1 name: type: string example: Couple Massage required: - id - name BasicEntityIdentifierDto: type: object properties: id: type: integer name: type: string required: - id - name MemberTeacherDto: type: object properties: id: type: integer example: 1 firstName: type: string example: John lastName: type: string example: Doe pictureUrl: type: string nullable: true example: https://example.com/picture.jpg required: - id - firstName - lastName - pictureUrl MemberLocationDto: type: object properties: id: type: integer example: 1 name: type: string example: Main Studio required: - id - name ApiV2HostAppointmentReservationAttendeeDto: type: object properties: attendanceStatus: enum: - checkedIn - cancelled - booked type: string example: checkedIn x-enumNames: - CHECKED_IN - CANCELLED - BOOKED bookedAt: type: string isPaid: type: boolean isDepositPaid: type: boolean checkedInAt: type: string nullable: true isLateCancelled: type: boolean cancelledAt: type: string nullable: true id: type: integer memberId: type: integer firstName: type: string nullable: true lastName: type: string nullable: true required: - attendanceStatus - bookedAt - isPaid - isDepositPaid - checkedInAt - isLateCancelled - cancelledAt - id - memberId - firstName - lastName ApiV2HostAppointmentReservationDto: type: object properties: id: type: integer createdAt: type: string cancelledAt: type: string nullable: true startsAt: type: string endsAt: type: string durationInMinutes: type: number priceInCurrency: type: number depositInCurrency: type: string nullable: true isDepositPaid: type: boolean currency: type: string isPaid: type: boolean capacity: type: integer nullable: true example: 10 minimum: 1 board: $ref: '#/components/schemas/ApiV2AppointmentReservationBoardDto' service: $ref: '#/components/schemas/ApiV2AppointmentReservationServiceDto' serviceVariant: nullable: true allOf: - $ref: '#/components/schemas/BasicEntityIdentifierDto' teacher: nullable: true allOf: - $ref: '#/components/schemas/MemberTeacherDto' additionalTeacher: nullable: true allOf: - $ref: '#/components/schemas/MemberTeacherDto' isInPerson: type: boolean example: false inPersonLocation: nullable: true allOf: - $ref: '#/components/schemas/MemberLocationDto' onlineStreamUrl: type: string nullable: true example: https://example.com/online-stream onlineStreamPassword: type: string nullable: true example: password123 appointmentAttendees: type: array items: $ref: '#/components/schemas/ApiV2HostAppointmentReservationAttendeeDto' required: - id - createdAt - cancelledAt - startsAt - endsAt - durationInMinutes - priceInCurrency - depositInCurrency - isDepositPaid - currency - isPaid - capacity - board - service - serviceVariant - teacher - additionalTeacher - isInPerson - inPersonLocation - onlineStreamUrl - onlineStreamPassword - appointmentAttendees HostMembershipBasicDto: type: object properties: id: type: integer example: 5 name: type: string example: Monthly Membership description: type: string nullable: true example: Monthly membership with unlimited access to all classes. type: enum: - subscription - on-demand-subscription - package-events - package-money - patron type: string example: subscription x-enumNames: - Subscription - OnDemandSubscription - PackageEvents - PackageMoney - Patron locationId: type: integer nullable: true example: null disabled: type: boolean description: Indicates that the membership was disabled example: false autoRenewing: type: boolean description: Indicates that membership renews after specific interval example: true minimumAutoRenews: type: integer nullable: true description: >- How many times membership has to renew before user can cancel renewal example: null eventCredits: type: integer nullable: true description: >- For PACKAGE_EVENTS memberships, defines how many event credits are included example: null moneyCredits: type: number nullable: true description: For PACKAGE_MONEY memberships, defines how much money is included example: null duration: type: integer nullable: true description: >- For SUBSCRIPTION this is auto renew duration, for PACKAGE_* this is expiration time example: 1 durationUnit: nullable: true enum: - days - months - years type: string example: months x-enumNames: - DAYS - MONTHS - YEARS isActivatedOnFirstUse: type: boolean description: >- If set to false, membership is activated upon purchase. When set to true, membership is activated at the moment of the first purchase. When the purchase is for booking in the future, the activation date is set to the booking date. example: false activationDeadlineInDays: type: integer nullable: true description: >- Only applicable when isActivatedOnFirstUse=true. If set, the member must activate the membership within this many days of purchase or it expires automatically. example: 21 hasFreeTrial: type: boolean example: false freeTrialDurationInDays: type: integer example: 7 contractAgreement: type: string nullable: true example: Contract agreement text order: type: integer example: 1 isIntroOffer: type: boolean example: false usageLimitForSessions: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Maximum number of sessions customer can book with this membership during one renewal period, not used when combinedUsageLimitEnabled=true example: 5 usageLimitForAppointments: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Maximum number of appointments customer can book with this membership during one renewal period, not used when combinedUsageLimitEnabled=true example: 2 combinedUsageLimitEnabled: type: boolean description: >- Only applicable for SUBSCRIPTION. The usage limits of the memberships are applied to sum of both bookings and appointments. example: false combinedUsageLimit: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Combined maximum number of bookings and appointments customer can book with this membership during one renewal period, only used when combinedUsageLimitEnabled=true example: null usageLimitRenewalEnabled: type: boolean description: >- Only applicable for SUBSCRIPTION. Calculate usage limits differently to renewal duration. example: false usageLimitRenewalDuration: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Interval for which the usage limits are calculated, only used when usageLimitRenewalEnabled=true example: null usageLimitRenewalDurationUnit: nullable: true enum: - days - months - years type: string description: >- Only applicable for SUBSCRIPTION. Interval for which the usage limits are calculated, only used when usageLimitRenewalEnabled=true example: null x-enumNames: - DAYS - MONTHS - YEARS usageLimitRolloverEnabled: type: boolean description: >- Only applicable for SUBSCRIPTION. When true and customer doesn't use reach their usage limits, the rest is transferred to the customer according to usageLimitRolloverMode example: false usageLimitRolloverMode: nullable: true enum: - next-renewal - event-credits type: string description: >- Only applicable for SUBSCRIPTION. How should extra usage limits be transferred to customer, either as package or as addition to next renewal period. Only used when usageLimitRolloverEnabled=true example: null x-enumNames: - NEXT_RENEWAL - EVENT_CREDITS usageLimitRolloverExpirationDuration: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. When should the extra limits / package expire after rolling over. Only used when usageLimitRolloverEnabled=true example: null usageLimitRolloverExpirationDurationUnit: nullable: true enum: - days - months - years type: string description: >- Only applicable for SUBSCRIPTION. When should the extra limits / package expire after rolling over. Only used when usageLimitRolloverEnabled=true example: null x-enumNames: - DAYS - MONTHS - YEARS required: - id - name - description - type - locationId - disabled - autoRenewing - minimumAutoRenews - eventCredits - moneyCredits - duration - durationUnit - isActivatedOnFirstUse - activationDeadlineInDays - hasFreeTrial - freeTrialDurationInDays - contractAgreement - order - isIntroOffer - usageLimitForSessions - usageLimitForAppointments - combinedUsageLimitEnabled - combinedUsageLimit - usageLimitRenewalEnabled - usageLimitRenewalDuration - usageLimitRenewalDurationUnit - usageLimitRolloverEnabled - usageLimitRolloverMode - usageLimitRolloverExpirationDuration - usageLimitRolloverExpirationDurationUnit HostCheckoutCompatibleBoughtMembershipDto: type: object properties: id: type: integer example: 1 type: enum: - subscription - on-demand-subscription - package-events - package-money - patron type: string example: subscription x-enumNames: - Subscription - OnDemandSubscription - PackageEvents - PackageMoney - Patron startDate: type: string nullable: true description: start date of the bought membership example: '2021-01-01T00:00:00Z' format: date-time endDate: type: string nullable: true description: expiration date of the bought membership example: '2021-02-01T00:00:00Z' format: date-time eventCreditsLeft: type: number nullable: true description: number of event credits left, valid for PACKAGE_EVENTS example: null eventCreditsTotal: type: number nullable: true description: >- number of event credits originally included in the package, valid for PACKAGE_EVENTS example: null moneyCreditsLeft: type: number nullable: true description: number of money credits left, valid for PACKAGE_MONEY example: null moneyCreditsTotal: type: number nullable: true description: >- number of money credits originally included in the package, valid for PACKAGE_MONEY example: null membership: nullable: true description: >- info about origin membership, it's possible the bought membership has no origin membership allOf: - $ref: '#/components/schemas/HostMembershipBasicDto' required: - id - type - startDate - endDate - eventCreditsLeft - eventCreditsTotal - moneyCreditsLeft - moneyCreditsTotal - membership HostCheckoutCompatibleMembershipDto: type: object properties: boughtMembership: $ref: '#/components/schemas/HostCheckoutCompatibleBoughtMembershipDto' incompatibility: enum: - session-membership-excluded - session-bought-membership-will-expire - session-bought-membership-pack-will-expire - session-bought-membership-already-used - session-bought-membership-usage-limit-reached - >- session-bought-membership-usage-limit-reached-for-semester-or-course - session-bought-membership-daily-limit-reached - session-bought-membership-no-event-credits-left - session-bought-membership-no-money-credits-left - session-bought-membership-on-demand - session-bought-membership-starts-later - session-bought-membership-invalid-type - session-bought-membership-disabled - session-bought-membership-frozen - session-subscription-ticket-limit - unknown type: string x-enumNames: - SESSION_MEMBERSHIP_EXCLUDED - SESSION_BOUGHT_MEMBERSHIP_WILL_EXPIRE - SESSION_BOUGHT_MEMBERSHIP_PACK_WILL_EXPIRE - SESSION_BOUGHT_MEMBERSHIP_ALREADY_USED - SESSION_BOUGHT_MEMBERSHIP_USAGE_LIMIT_REACHED - >- SESSION_BOUGHT_MEMBERSHIP_USAGE_LIMIT_REACHED_FOR_SEMESTER_OR_COURSE - SESSION_BOUGHT_MEMBERSHIP_DAILY_LIMIT_REACHED - SESSION_BOUGHT_MEMBERSHIP_NO_EVENT_CREDITS_LEFT - SESSION_BOUGHT_MEMBERSHIP_NO_MONEY_CREDITS_LEFT - SESSION_BOUGHT_MEMBERSHIP_ON_DEMAND - SESSION_BOUGHT_MEMBERSHIP_STARTS_LATER - SESSION_BOUGHT_MEMBERSHIP_INVALID_TYPE - SESSION_BOUGHT_MEMBERSHIP_DISABLED - SESSION_BOUGHT_MEMBERSHIP_FROZEN - SESSION_BOUGHT_MEMBERSHIP_TICKET_LIMIT - UNKNOWN required: - boughtMembership HostCheckoutCompatibleMembershipsResponseDto: type: object properties: items: type: array items: $ref: '#/components/schemas/HostCheckoutCompatibleMembershipDto' required: - items HostCheckoutCompatibleMembershipsRequestDto: type: object properties: memberId: type: integer description: ID of the member to perform the checkout for items: type: array items: oneOf: - $ref: '#/components/schemas/HostCheckoutMembershipItemDto' - $ref: '#/components/schemas/HostCheckoutSessionItemDto' homeLocationId: type: integer required: - memberId - items HostCheckoutMembershipItemDto: type: object properties: id: type: string type: type: string enum: - subscription membershipId: type: integer required: - id - type - membershipId HostCheckoutSessionItemDto: type: object properties: id: type: string type: type: string enum: - session sessionId: type: integer appliedPriceRuleIds: type: array items: type: integer required: - id - type - sessionId HostCheckoutPricesItemDto: type: object properties: id: type: string priceInCurrencyWithTax: type: string priceInCurrencyWithoutTax: type: string taxInCurrency: type: string required: - id - priceInCurrencyWithTax - priceInCurrencyWithoutTax - taxInCurrency HostCheckoutPricesResponseDto: type: object properties: totalInCurrency: type: string itemsWithPrices: type: array items: $ref: '#/components/schemas/HostCheckoutPricesItemDto' required: - totalInCurrency - itemsWithPrices HostCheckoutPricesRequestDto: type: object properties: memberId: type: integer description: ID of the member to perform the checkout for items: type: array items: oneOf: - $ref: '#/components/schemas/HostCheckoutMembershipItemDto' - $ref: '#/components/schemas/HostCheckoutSessionItemDto' homeLocationId: type: integer paymentMethods: type: array items: oneOf: - $ref: '#/components/schemas/HostCheckoutPaymentMethodMembershipDto' - $ref: '#/components/schemas/HostCheckoutPaymentMethodSavedDto' - $ref: '#/components/schemas/HostCheckoutPaymentMethodCustomDto' - $ref: '#/components/schemas/HostCheckoutPaymentMethodFreeDto' required: - memberId - items - paymentMethods HostCheckoutResponseDto: type: object properties: purchasedItems: type: array items: oneOf: - $ref: '#/components/schemas/HostCheckoutPurchasedSessionDto' - $ref: '#/components/schemas/HostCheckoutPurchasedMembershipDto' - $ref: '#/components/schemas/HostCheckoutPurchasedAppointmentDto' - $ref: '#/components/schemas/HostCheckoutPurchasedProductDto' - $ref: '#/components/schemas/HostCheckoutPurchasedGiftCardDto' - $ref: '#/components/schemas/HostCheckoutPurchasedMoneyCreditsDto' - $ref: '#/components/schemas/HostCheckoutPurchasedEventCreditsDto' required: - purchasedItems HostCheckoutMembershipItemWithPriceDto: type: object properties: id: type: string type: type: string enum: - subscription membershipId: type: integer attemptedPriceInCurrency: type: string required: - id - type - membershipId - attemptedPriceInCurrency HostCheckoutSessionItemWithPriceDto: type: object properties: id: type: string type: type: string enum: - session sessionId: type: integer appliedPriceRuleIds: type: array items: type: integer attemptedPriceInCurrency: type: string required: - id - type - sessionId - attemptedPriceInCurrency HostCheckoutPaymentMethodMembershipDto: type: object properties: id: type: string type: type: string enum: - membership boughtMembershipId: type: integer required: - id - type - boughtMembershipId HostCheckoutPaymentMethodSavedDto: type: object properties: id: type: string type: type: string enum: - saved_payment_method savedPaymentMethodId: type: integer required: - id - type - savedPaymentMethodId HostCheckoutPaymentMethodCustomDto: type: object properties: id: type: string type: type: string enum: - custom customPaymentMethodId: type: integer note: type: string description: This field may be required, depends on your payment settings required: - id - type - customPaymentMethodId HostCheckoutPaymentMethodFreeDto: type: object properties: id: type: string type: type: string enum: - free required: - id - type HostCheckoutPurchasedSessionDto: type: object properties: type: type: string enum: - session sessionBookingId: type: integer required: - type - sessionBookingId HostCheckoutPurchasedMembershipDto: type: object properties: type: type: string enum: - membership boughtMembershipId: type: integer required: - type - boughtMembershipId HostCheckoutPurchasedAppointmentDto: type: object properties: type: type: string enum: - appointment appointmentTransactionId: type: integer required: - type - appointmentTransactionId HostCheckoutPurchasedProductDto: type: object properties: type: type: string enum: - product productOrderId: type: integer required: - type - productOrderId HostCheckoutPurchasedGiftCardDto: type: object properties: type: type: string enum: - gift-card giftCardId: type: integer required: - type - giftCardId HostCheckoutPurchasedMoneyCreditsDto: type: object properties: type: type: string enum: - money-credit numberOfMoneyCredits: type: number required: - type - numberOfMoneyCredits HostCheckoutPurchasedEventCreditsDto: type: object properties: type: type: string enum: - event-credit numberOfEventCredits: type: number required: - type - numberOfEventCredits HostCheckoutRequestDto: type: object properties: memberId: type: integer description: ID of the member to perform the checkout for items: type: array items: oneOf: - $ref: '#/components/schemas/HostCheckoutMembershipItemWithPriceDto' - $ref: '#/components/schemas/HostCheckoutSessionItemWithPriceDto' homeLocationId: type: integer paymentMethods: type: array items: oneOf: - $ref: '#/components/schemas/HostCheckoutPaymentMethodMembershipDto' - $ref: '#/components/schemas/HostCheckoutPaymentMethodSavedDto' - $ref: '#/components/schemas/HostCheckoutPaymentMethodCustomDto' - $ref: '#/components/schemas/HostCheckoutPaymentMethodFreeDto' required: - memberId - items - paymentMethods HostCheckoutErrorResponseDto: type: object properties: type: enum: - err-no-payment-methods - err-no-items - err-too-many-items - err-combined-payment-methods - err-cannot-pay-for-membership-with-membership - err-multiple-membership-types - err-multiple-subscriptions - err-saved-card-not-found - err-cart-validation-failed - err-payment-failed - err-duplicate-membership-payment-methods - err-invalid-membership-payment-method - err-incompatible-membership - err-unsupported-payment-methods - err-session-has-invalid-state - err-session-has-passed - err-session-sales-ended - err-session-dropins-not-allowed - err-session-is-full - err-session-purchase-limit-reached - err-session-access-restricted - err-duplicate-item-ids - err-duplicate-payment-method-ids - err-unsupported-item-type - err-missing-customer-date-of-birth - err-customer-age-prevents-from-action - err-invalid-custom-payment-method type: string x-enumNames: - ERR_NO_PAYMENT_METHODS - ERR_NO_ITEMS - ERR_TOO_MANY_ITEMS - ERR_COMBINED_PAYMENT_METHODS - ERR_CANNOT_PAY_FOR_MEMBERSHIP_WITH_MEMBERSHIP - ERR_MULTIPLE_MEMBERSHIP_TYPES - ERR_MULTIPLE_SUBSCRIPTIONS - ERR_SAVED_CARD_NOT_FOUND - ERR_CART_VALIDATION_FAILED - ERR_PAYMENT_FAILED - ERR_DUPLICATE_MEMBERSHIP_PAYMENT_METHODS - ERR_INVALID_MEMBERSHIP_PAYMENT_METHOD - ERR_INCOMPATIBLE_MEMBERSHIP - ERR_UNSUPPORTED_PAYMENT_METHODS - ERR_SESSION_HAS_INVALID_STATE - ERR_SESSION_HAS_PASSED - ERR_SESSION_SALES_ENDED - ERR_SESSION_DROPINS_NOT_ALLOWED - ERR_SESSION_IS_FULL - ERR_SESSION_PURCHASE_LIMIT_REACHED - ERR_SESSION_ACCESS_RESTRICTED - ERR_DUPLICATE_ITEM_IDS - ERR_DUPLICATE_PAYMENT_METHOD_IDS - ERR_UNSUPPORTED_ITEM_TYPE - ERR_MISSING_CUSTOMER_DATE_OF_BIRTH - ERR_CUSTOMER_IS_NOT_ELIGIBLE_DUE_TO_AGE_RESTRICTION - ERR_INVALID_CUSTOM_PAYMENT_METHOD message: type: string required: - type - message MemberAppointmentMemberDto: type: object properties: attendanceStatus: enum: - checkedIn - cancelled - booked type: string example: checkedIn x-enumNames: - CHECKED_IN - CANCELLED - BOOKED bookedAt: type: string isPaid: type: boolean isDepositPaid: type: boolean checkedInAt: type: string nullable: true isLateCancelled: type: boolean cancelledAt: type: string nullable: true id: type: integer firstName: type: string nullable: true lastName: type: string nullable: true required: - attendanceStatus - bookedAt - isPaid - isDepositPaid - checkedInAt - isLateCancelled - cancelledAt - id - firstName - lastName HostMemberAppointmentReservationDto: type: object properties: id: type: integer createdAt: type: string cancelledAt: type: string nullable: true startsAt: type: string endsAt: type: string durationInMinutes: type: number priceInCurrency: type: number depositInCurrency: type: string nullable: true isDepositPaid: type: boolean currency: type: string isPaid: type: boolean capacity: type: integer nullable: true example: 10 minimum: 1 board: $ref: '#/components/schemas/ApiV2AppointmentReservationBoardDto' service: $ref: '#/components/schemas/ApiV2AppointmentReservationServiceDto' serviceVariant: nullable: true allOf: - $ref: '#/components/schemas/BasicEntityIdentifierDto' teacher: nullable: true allOf: - $ref: '#/components/schemas/MemberTeacherDto' additionalTeacher: nullable: true allOf: - $ref: '#/components/schemas/MemberTeacherDto' isInPerson: type: boolean example: false inPersonLocation: nullable: true allOf: - $ref: '#/components/schemas/MemberLocationDto' onlineStreamUrl: type: string nullable: true example: https://example.com/online-stream onlineStreamPassword: type: string nullable: true example: password123 member: $ref: '#/components/schemas/MemberAppointmentMemberDto' required: - id - createdAt - cancelledAt - startsAt - endsAt - durationInMinutes - priceInCurrency - depositInCurrency - isDepositPaid - currency - isPaid - capacity - board - service - serviceVariant - teacher - additionalTeacher - isInPerson - inPersonLocation - onlineStreamUrl - onlineStreamPassword - member ApiV2BoughtMembershipFreezeDto: type: object properties: freezedAt: type: string nullable: true format: date-time unfreezedScheduledAt: type: string nullable: true format: date-time unfrozenAt: type: string nullable: true format: date-time remainingFreezedMinutes: type: integer nullable: true scheduledFreezeAt: type: string nullable: true format: date-time required: - freezedAt - unfreezedScheduledAt - unfrozenAt - remainingFreezedMinutes - scheduledFreezeAt ApiV2BoughtMembershipDeclinedRenewalDto: type: object properties: declinedAt: type: string format: date-time cardLast4: type: string nullable: true required: - declinedAt - cardLast4 ApiV2HostBoughtMembershipsDto: type: object properties: id: type: integer example: 1 type: enum: - subscription - on-demand-subscription - package-events - package-money - patron type: string example: subscription x-enumNames: - Subscription - OnDemandSubscription - PackageEvents - PackageMoney - Patron startDate: type: string nullable: true description: start date of the bought membership example: '2021-01-01T00:00:00Z' format: date-time endDate: type: string nullable: true description: expiration date of the bought membership example: '2021-02-01T00:00:00Z' format: date-time isFrozen: type: boolean eventCreditsLeft: type: number nullable: true description: number of event credits left, valid for PACKAGE_EVENTS example: null eventCreditsTotal: type: number nullable: true description: >- number of event credits originally included in the package, valid for PACKAGE_EVENTS example: null moneyCreditsLeft: type: number nullable: true description: number of money credits left, valid for PACKAGE_MONEY example: null moneyCreditsTotal: type: number nullable: true description: >- number of money credits originally included in the package, valid for PACKAGE_MONEY example: null usageLimitForSessions: type: number nullable: true description: >- Non-null value indicates the membership has limit to number of session bookings, only valid for SUBSCRIPTION example: 5 usageLimitForAppointments: type: number nullable: true description: >- Non-null value indicates the membership has limit to number of appointments booked, only valid for SUBSCRIPTION example: 3 combinedUsageLimit: type: number nullable: true description: >- Non-null value indicates the membership has combined limits for session and appointment bookings, only valid for SUBSCRIPTION example: null usedSessions: type: number nullable: true description: only valid for SUBSCRIPTION with session-only usage limits example: 1 usedAppointments: type: number nullable: true description: only valid for SUBSCRIPTION with appointment-only usage limits example: 2 combinedUsage: type: number nullable: true description: only valid for SUBSCRIPTION with combined usage limits example: null usageLimitStartDate: type: string nullable: true description: >- date range for which the current usage is calculated for, only valid for SUBSCRIPTION with usage limits example: null format: date-time usageLimitEndDate: type: string nullable: true description: >- date range for which the current usage is calculated for, only valid for SUBSCRIPTION with usage limits example: null format: date-time membership: nullable: true description: >- info about origin membership, it's possible the bought membership has no origin membership allOf: - $ref: '#/components/schemas/HostMembershipBasicDto' freeze: nullable: true description: >- freeze details, if the membership is frozen or scheduled to freeze/unfreeze allOf: - $ref: '#/components/schemas/ApiV2BoughtMembershipFreezeDto' declinedRenewal: nullable: true description: latest failed renewal payment details for this membership, if any allOf: - $ref: '#/components/schemas/ApiV2BoughtMembershipDeclinedRenewalDto' required: - id - type - startDate - endDate - isFrozen - eventCreditsLeft - eventCreditsTotal - moneyCreditsLeft - moneyCreditsTotal - usageLimitForSessions - usageLimitForAppointments - combinedUsageLimit - usedSessions - usedAppointments - combinedUsage - usageLimitStartDate - usageLimitEndDate - membership - freeze - declinedRenewal ApiV2HostMemberBoughtMembershipsUpdateClassCreditsResponseDto: type: object properties: eventCreditsLeft: type: number description: Updated number of event credits left, valid for PACKAGE_EVENTS example: 5.5 moneyCreditsLeft: type: number description: Updated number of money credits left, valid for PACKAGE_MONEY example: 99.99 ApiV2HostMemberBoughtMembershipsUpdateClassCreditsRequestDto: type: object properties: eventCreditsLeft: type: number description: >- Set number of event credits left, valid only for PACKAGE_EVENTS bought membership example: 5.5 minimum: 0 moneyCreditsLeft: type: number description: >- Set number of money credits left, valid only for PACKAGE_MONEY bought membership example: 99.99 minimum: 0 ApiV2BoughtMembershipFreezeRequestDto: type: object properties: freezeType: enum: - not_set - now - scheduled - before_renewal type: string x-enumNames: - NOT_SET - NOW - SCHEDULED - BEFORE_RENEWAL freezeAt: type: string nullable: true format: date-time unfreezeType: enum: - not_set - scheduled type: string x-enumNames: - NOT_SET - SCHEDULED unfreezeAt: type: string nullable: true format: date-time reason: type: string nullable: true required: - freezeType - freezeAt - unfreezeType - unfreezeAt ApiV2BoughtMembershipScheduleFreezeRequestDto: type: object properties: freezeType: enum: - not_set - now - scheduled - before_renewal type: string x-enumNames: - NOT_SET - NOW - SCHEDULED - BEFORE_RENEWAL freezeAt: type: string nullable: true format: date-time required: - freezeType - freezeAt ApiV2BoughtMembershipScheduleUnfreezeRequestDto: type: object properties: unfreezeType: enum: - not_set - scheduled type: string x-enumNames: - NOT_SET - SCHEDULED unfreezeAt: type: string nullable: true format: date-time required: - unfreezeType - unfreezeAt MemberVisitsDto: type: object properties: appointments: type: integer description: All the appointments the customer has booked appointmentsVisits: type: integer description: All the appointments the customer has booked and checked into bookings: type: integer description: All the session bookings the customer has booked bookingsVisits: type: integer description: All the session bookings the customer has booked and checked into openAreaVisits: type: integer description: All visits of open areas for customer total: type: integer description: Combined count of appointments + bookings totalVisits: type: integer description: Combined count of appointmentsVisits + bookingsVisits required: - appointments - appointmentsVisits - bookings - bookingsVisits - openAreaVisits - total - totalVisits HostMemberCustomerFieldDto: type: object properties: id: type: integer description: ID of the customer field example: 5 label: type: string description: label of the customer field example: Date of Birth type: enum: - text - number - date - date-time - dropdown - boolean - date-of-birth type: string description: type of the customer field example: date-of-birth x-enumNames: - Text - Number - Date - DateTime - Dropdown - Boolean - DateOfBirth value: type: string description: value set for the member for this customer field example: '1990-01-01' required: - id - label - type - value HostTagDto: type: object properties: id: type: integer example: 1 name: type: string example: VIP isCustomerBadge: type: boolean example: false badgeLabel: type: string nullable: true example: VIP badgeColor: type: string nullable: true example: '#fe0000' corporateTagId: type: integer nullable: true example: 1 required: - id - name - isCustomerBadge - badgeLabel - badgeColor - corporateTagId HostMemberDto: type: object properties: id: type: integer example: 5 firstName: type: string example: John lastName: type: string example: Doe email: type: string example: john.doe@mail.example.com phoneNumber: type: string nullable: true example: '1234567890' pictureUrl: type: string nullable: true example: https://example.com/picture.jpg firstSeen: type: string example: '2021-01-01T00:00:00Z' format: date-time lastSeen: type: string example: '2021-01-01T00:00:00Z' format: date-time visits: $ref: '#/components/schemas/MemberVisitsDto' customerFields: type: array items: $ref: '#/components/schemas/HostMemberCustomerFieldDto' customerTags: type: array items: $ref: '#/components/schemas/HostTagDto' required: - id - firstName - lastName - email - phoneNumber - pictureUrl - firstSeen - lastSeen - visits - customerFields - customerTags LastContactedDto: type: object properties: type: enum: - fixed - flexible type: string startDate: type: string nullable: true endDate: type: string nullable: true days: type: integer required: - type SessionsCountDto: type: object properties: type: enum: - moreThan - lessThan - exactly type: string value: type: integer required: - type - value MembershipIdDto: type: object properties: membershipId: type: integer required: - membershipId TeacherIdDto: type: object properties: teacherId: type: integer required: - teacherId SessionIdDto: type: object properties: sessionId: type: integer required: - sessionId TemplateIdDto: type: object properties: templateId: type: integer required: - templateId SessionSeriesIdDto: type: object properties: seriesId: type: integer required: - seriesId LocationIdDto: type: object properties: locationId: type: integer required: - locationId AppointmentServiceIdDto: type: object properties: appointmentServiceId: type: integer required: - appointmentServiceId VisitsQualifiersDto: type: object properties: membershipIds: type: array items: $ref: '#/components/schemas/MembershipIdDto' teacherIds: type: array items: $ref: '#/components/schemas/TeacherIdDto' sessionIds: type: array items: $ref: '#/components/schemas/SessionIdDto' templateIds: type: array items: $ref: '#/components/schemas/TemplateIdDto' sessionSeriesIds: type: array items: $ref: '#/components/schemas/SessionSeriesIdDto' locationIds: type: array items: $ref: '#/components/schemas/LocationIdDto' sessionType: enum: - private - special-event - special-event-new - retreat - fitness - course - course-class - semester - recital type: string appointmentServiceIds: type: array items: $ref: '#/components/schemas/AppointmentServiceIdDto' VisitsDto: type: object properties: count: $ref: '#/components/schemas/SessionsCountDto' startDate: type: string nullable: true endDate: type: string nullable: true dateType: enum: - fixed - flexible type: string timeUnitNumber: type: integer qualifiers: $ref: '#/components/schemas/VisitsQualifiersDto' required: - count AddressDto: type: object properties: address: type: string city: type: string country: type: string zipcode: type: string FutureBookingsCountDto: type: object properties: type: enum: - moreThan - lessThan - exactly type: string value: type: integer required: - type - value FutureBookingsDto: type: object properties: count: $ref: '#/components/schemas/FutureBookingsCountDto' dateType: enum: - fixed - flexible type: string startDate: type: string nullable: true endDate: type: string nullable: true timeUnit: enum: - days - weeks - months type: string timeUnitNumber: type: integer required: - count MembershipFilterDto: type: object properties: membershipState: enum: - active - not-active - cancelled - expired - none type: string membershipId: type: integer nullable: true membershipIds: type: array items: type: integer required: - membershipState CustomerAgeDto: type: object properties: fieldId: type: integer type: enum: - after - before - 'on' - between - isEmpty - isNotEmpty type: string value: type: integer value2: type: integer required: - fieldId - type CustomDateFieldDto: type: object properties: fieldId: type: integer type: enum: - after - before - 'on' - between - isEmpty - isNotEmpty type: string value: type: string value2: type: string yearExcluded: type: boolean required: - fieldId - type CustomNumberFieldDto: type: object properties: fieldId: type: integer type: enum: - largerThan - smallerThan - equalsTo - isEmpty - isNotEmpty type: string value: type: integer nullable: true required: - fieldId - type - value CustomTextFieldDto: type: object properties: fieldId: type: integer type: enum: - includes - equalsTo - isEmpty - isNotEmpty type: string value: type: string required: - fieldId - type CustomDropdownFieldDto: type: object properties: fieldId: type: integer type: enum: - equalsTo - isEmpty - isNotEmpty type: string value: type: string nullable: true required: - fieldId - type CustomBooleanFieldDto: type: object properties: fieldId: type: integer value: type: string required: - fieldId - value CustomFieldsDto: type: object properties: date: type: array items: $ref: '#/components/schemas/CustomDateFieldDto' number: type: array items: $ref: '#/components/schemas/CustomNumberFieldDto' text: type: array items: $ref: '#/components/schemas/CustomTextFieldDto' dropdown: type: array items: $ref: '#/components/schemas/CustomDropdownFieldDto' boolean: type: array items: $ref: '#/components/schemas/CustomBooleanFieldDto' CustomerTagsDto: type: object properties: type: nullable: true enum: - and - or type: string tags: type: array items: type: integer customerHaveTag: enum: - have - not-have type: string required: - type - tags HomeLocationDto: type: object properties: locationId: type: integer nullable: true required: - locationId CustomerRankingsDto: type: object properties: customerRankingId: type: integer customerHaveRanking: enum: - have - not-have type: string required: - customerRankingId HostCustomersListFilterDto: type: object properties: type: enum: - and - or type: string joinedSince: type: string lastContacted: $ref: '#/components/schemas/LastContactedDto' visits: $ref: '#/components/schemas/VisitsDto' address: $ref: '#/components/schemas/AddressDto' futureBookings: $ref: '#/components/schemas/FutureBookingsDto' memberships: type: array items: $ref: '#/components/schemas/MembershipFilterDto' customerAge: $ref: '#/components/schemas/CustomerAgeDto' customFields: $ref: '#/components/schemas/CustomFieldsDto' customerTags: $ref: '#/components/schemas/CustomerTagsDto' homeLocations: type: array items: $ref: '#/components/schemas/HomeLocationDto' parentsChildren: type: array items: type: string enum: - parents - children - non-children customerRankings: $ref: '#/components/schemas/CustomerRankingsDto' required: - type ApiV2HostMembersListRequestWithFilterDto: type: object properties: page: type: integer description: Starts at 0 example: 0 minimum: 0 pageSize: type: integer example: 10 minimum: 1 maximum: 100 sortOrder: type: string enum: - ASC - DESC sortBy: type: string description: Field to sort by enum: - lastSeenAt - firstSeenAt - firstName - lastName - email query: type: string description: Search customers by query filterPreset: type: string enum: - with-active-membership staticSegmentId: type: integer description: Filter customers by static segment ID filter: $ref: '#/components/schemas/HostCustomersListFilterDto' required: - page - pageSize ApiV2HostMemberCreateResponseDto: type: object properties: memberId: type: integer required: - memberId ApiV2HostMemberCreateRequestDto: type: object properties: email: type: string minLength: 1 maxLength: 100 firstName: type: string minLength: 1 maxLength: 100 lastName: type: string minLength: 1 maxLength: 100 phoneNumber: type: string homeLocationId: type: integer required: - email - firstName - lastName HostMemberUpdateNameRequestDto: type: object properties: firstName: type: string minLength: 1 maxLength: 100 lastName: type: string minLength: 1 maxLength: 100 required: - firstName - lastName HostMemberUpdatePhoneNumberRequestDto: type: object properties: phoneNumber: type: string required: - phoneNumber HostMemberUpdateEmailRequestDto: type: object properties: email: type: string required: - email ApiV2HostMembershipDto: type: object properties: id: type: integer example: 5 name: type: string example: Monthly Membership description: type: string nullable: true example: Monthly membership with unlimited access to all classes. type: enum: - subscription - on-demand-subscription - package-events - package-money - patron type: string example: subscription x-enumNames: - Subscription - OnDemandSubscription - PackageEvents - PackageMoney - Patron locationId: type: integer nullable: true example: null disabled: type: boolean description: Indicates that the membership was disabled and shouldn't be shown example: false autoRenewing: type: boolean description: Indicates that membership renews after specific interval example: true minimumAutoRenews: type: integer nullable: true description: >- How many times membership has to renew before user can cancel renewal example: null eventCredits: type: integer nullable: true description: >- For PACKAGE_EVENTS memberships, defines how many event credits are included example: null moneyCredits: type: number nullable: true description: For PACKAGE_MONEY memberships, defines how much money is included example: null duration: type: integer nullable: true description: >- For SUBSCRIPTION this is auto renew duration, for PACKAGE_* this is expiration time example: 1 durationUnit: nullable: true enum: - days - months - years type: string example: months x-enumNames: - DAYS - MONTHS - YEARS isActivatedOnFirstUse: type: boolean description: >- If set to false, membership is activated upon purchase. When set to true, membership is activated at the moment of the first purchase. When the purchase is for booking in the future, the activation date is set to the booking date. example: false activationDeadlineInDays: type: integer nullable: true description: >- Only applicable when isActivatedOnFirstUse=true. If set, the member must activate the membership within this many days of purchase or it expires automatically. example: 21 hasFreeTrial: type: boolean example: false freeTrialDurationInDays: type: integer example: 7 contractAgreement: type: string nullable: true example: Contract agreement text order: type: integer example: 1 isIntroOffer: type: boolean example: false usageLimitForSessions: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Maximum number of sessions customer can book with this membership during one renewal period, not used when combinedUsageLimitEnabled=true example: 5 usageLimitForAppointments: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Maximum number of appointments customer can book with this membership during one renewal period, not used when combinedUsageLimitEnabled=true example: 2 combinedUsageLimitEnabled: type: boolean description: >- Only applicable for SUBSCRIPTION. The usage limits of the memberships are applied to sum of both bookings and appointments. example: false combinedUsageLimit: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Combined maximum number of bookings and appointments customer can book with this membership during one renewal period, only used when combinedUsageLimitEnabled=true example: null usageLimitRenewalEnabled: type: boolean description: >- Only applicable for SUBSCRIPTION. Calculate usage limits differently to renewal duration. example: false usageLimitRenewalDuration: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Interval for which the usage limits are calculated, only used when usageLimitRenewalEnabled=true example: null usageLimitRenewalDurationUnit: nullable: true enum: - days - months - years type: string description: >- Only applicable for SUBSCRIPTION. Interval for which the usage limits are calculated, only used when usageLimitRenewalEnabled=true example: null x-enumNames: - DAYS - MONTHS - YEARS usageLimitRolloverEnabled: type: boolean description: >- Only applicable for SUBSCRIPTION. When true and customer doesn't use reach their usage limits, the rest is transferred to the customer according to usageLimitRolloverMode example: false usageLimitRolloverMode: nullable: true enum: - next-renewal - event-credits type: string description: >- Only applicable for SUBSCRIPTION. How should extra usage limits be transferred to customer, either as package or as addition to next renewal period. Only used when usageLimitRolloverEnabled=true example: null x-enumNames: - NEXT_RENEWAL - EVENT_CREDITS usageLimitRolloverExpirationDuration: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. When should the extra limits / package expire after rolling over. Only used when usageLimitRolloverEnabled=true example: null usageLimitRolloverExpirationDurationUnit: nullable: true enum: - days - months - years type: string description: >- Only applicable for SUBSCRIPTION. When should the extra limits / package expire after rolling over. Only used when usageLimitRolloverEnabled=true example: null x-enumNames: - DAYS - MONTHS - YEARS startDate: type: string nullable: true description: Explicit start date for memberships that have specific duration example: '2022-01-01T00:00:00Z' format: date-time endDate: type: string nullable: true description: Explicit end date for memberships that have specific duration example: '2022-02-01T00:00:00Z' format: date-time featured: type: boolean description: Indicates that membership should be featured on checkout example: false priceType: enum: - fixed-price - dynamic type: string example: fixed-price x-enumNames: - FIXED - DYNAMIC price: type: number nullable: true description: Membership price for FIXED priceType example: 955 minimumPrice: type: number nullable: true description: Minimum membership price for DYNAMIC priceType example: null maximumPrice: type: number nullable: true description: Maximum membership price for DYNAMIC priceType example: null recommendedPrice: type: number nullable: true description: Recommended membership price for DYNAMIC priceType example: null priceIncludesTax: type: boolean description: Indicates if tax is already included in the price example: true taxRateInPercent: type: number nullable: true description: Tax rate in percents example: 20 freeTrialPrice: type: number description: Free trial price example: 199 tags: type: array items: $ref: '#/components/schemas/HostTagDto' required: - id - name - description - type - locationId - disabled - autoRenewing - minimumAutoRenews - eventCredits - moneyCredits - duration - durationUnit - isActivatedOnFirstUse - activationDeadlineInDays - hasFreeTrial - freeTrialDurationInDays - contractAgreement - order - isIntroOffer - usageLimitForSessions - usageLimitForAppointments - combinedUsageLimitEnabled - combinedUsageLimit - usageLimitRenewalEnabled - usageLimitRenewalDuration - usageLimitRenewalDurationUnit - usageLimitRolloverEnabled - usageLimitRolloverMode - usageLimitRolloverExpirationDuration - usageLimitRolloverExpirationDurationUnit - startDate - endDate - featured - priceType - price - minimumPrice - maximumPrice - recommendedPrice - priceIncludesTax - taxRateInPercent - freeTrialPrice - tags HostMemberNoteDto: type: object properties: id: type: integer example: 5 createdAt: type: string example: '2021-01-01T00:00:00Z' format: date-time modifiedAt: type: string example: '2021-01-01T00:00:00Z' format: date-time type: enum: - regular - soap type: string example: regular x-enumNames: - REGULAR - SOAP note: type: string description: note contents, can contain HTML example: Note contents, can contain HTML imageLink: type: string nullable: true customerNoteTemplateId: type: integer nullable: true example: 4 sessionBookingId: type: integer nullable: true example: 2 appointmentReservationId: type: integer nullable: true example: 1 productOrderId: type: integer nullable: true example: 5 boughtMembershipId: type: integer nullable: true example: 8 paymentTransactionId: type: integer nullable: true example: 9 lockedAt: type: string nullable: true example: '2021-01-01T00:00:00Z' format: date-time lockedByUserId: type: integer nullable: true example: 3 required: - id - createdAt - modifiedAt - type - note - imageLink - customerNoteTemplateId - sessionBookingId - appointmentReservationId - productOrderId - boughtMembershipId - paymentTransactionId - lockedAt - lockedByUserId MemberSessionBookingSessionDto: type: object properties: id: type: integer example: 1 name: type: string example: Stretching with John type: enum: - private - special-event - special-event-new - retreat - fitness - course - course-class - semester - recital type: string example: fitness x-enumNames: - PRIVATE - SPECIAL_EVENT - SPECIAL_EVENT_NEW - RETREAT - FITNESS - COURSE - COURSE_CLASS - SEMESTER - RECITAL description: type: string nullable: true example: >- Our program is designed to help you increase your flexibility and strength. startsAt: type: string example: '2021-08-01T10:00:00Z' format: date-time endsAt: type: string example: '2021-08-01T11:00:00Z' format: date-time durationInMinutes: type: integer example: 60 minimum: 0 capacity: type: integer nullable: true example: 10 minimum: 0 teacher: nullable: true allOf: - $ref: '#/components/schemas/MemberTeacherDto' isRecurring: type: boolean example: false isInPerson: type: boolean example: false inPersonLocation: nullable: true allOf: - $ref: '#/components/schemas/MemberLocationDto' onlineStreamUrl: type: string nullable: true example: https://example.com/online-stream onlineStreamPassword: type: string nullable: true example: password123 bannerImageUrl: type: string nullable: true example: https://example.com/banner.jpg hostPhotoUrl: type: string nullable: true example: https://example.com/host.jpg isLocationPrivate: type: boolean example: false required: - id - name - type - description - startsAt - endsAt - durationInMinutes - capacity - teacher - isRecurring - isInPerson - inPersonLocation - onlineStreamUrl - onlineStreamPassword - bannerImageUrl - hostPhotoUrl - isLocationPrivate HostMemberSessionBookingDto: type: object properties: id: type: integer createdAt: type: string format: date-time roomSpotId: type: integer nullable: true checkedIn: type: boolean cancelledAt: type: string nullable: true format: date-time session: $ref: '#/components/schemas/MemberSessionBookingSessionDto' required: - id - createdAt - roomSpotId - checkedIn - cancelledAt - session HostSaleMemberDto: type: object properties: id: type: integer example: 1 firstName: type: string example: John lastName: type: string example: Doe required: - id - firstName - lastName HostSaleSessionDto: type: object properties: id: type: integer example: 1 name: type: string example: Monday Morning Yoga startsAt: type: string example: '2021-01-01T00:00:00Z' format: date-time endsAt: type: string example: '2021-01-01T01:00:00Z' format: date-time required: - id - name - startsAt - endsAt HostSaleAppointmentDto: type: object properties: id: type: integer example: 3 name: type: string example: Stretching with John required: - id - name HostSaleProductDto: type: object properties: id: type: integer example: 3 name: type: string example: T-Shirt required: - id - name HostSaleProductVariantDto: type: object properties: id: type: integer example: 3 name: type: string example: M required: - id - name HostSaleOpenAreaDto: type: object properties: id: type: integer example: 3 name: type: string example: Gym A required: - id - name HostSaleItemDto: type: object properties: id: type: integer example: 1 saleItemId: type: integer example: 1 itemType: enum: - membership - session - appointment - product - video - course - gift-card - monthly-subscription - custom-member-payment-plan-installment - money-credit - event-credit - auto-attendance-penalty - auto-attendance-penalty-retry-fee - stripe-refund - refund - tips - appointment-deposit - tuition-installment - tuition-registration-fee - appointment-addon - open-area-visit - membership-freeze-fee - membership-renewal-retry-fee - membership-cancellation-fee - membership-transfer-fee - membership-joining-fee - session-addon type: string example: membership x-enumNames: - MEMBERSHIP - SESSION - APPOINTMENT - PRODUCT - VIDEO - COURSE - GIFT_CARD - MONTHLY_SUBSCRIPTION - CUSTOM_MEMBER_PAYMENT_PLAN_INSTALLMENT - MONEY_CREDIT - EVENT_CREDIT - AUTO_ATTENDANCE_PENALTY - AUTO_ATTENDANCE_PENALTY_RETRY_FEE - STRIPE_REFUND - REFUND - TIPS - APPOINTMENT_DEPOSIT - TUITION_INSTALLMENT - TUITION_REGISTRATION_FEE - APPOINTMENT_ADDON - OPEN_AREA_VISIT - MEMBERSHIP_FREEZE_FEE - MEMBERSHIP_RENEWAL_RETRY_FEE - MEMBERSHIP_CANCELLATION_FEE - MEMBERSHIP_TRANSFER_FEE - MEMBERSHIP_JOINING_FEE - SESSION_ADDON itemName: type: string example: Monthly Membership for Johns descriptiveItemName: type: string example: Monthly Membership for Johns payingMember: $ref: '#/components/schemas/HostSaleMemberDto' targetMember: $ref: '#/components/schemas/HostSaleMemberDto' session: $ref: '#/components/schemas/HostSaleSessionDto' appointment: $ref: '#/components/schemas/HostSaleAppointmentDto' product: $ref: '#/components/schemas/HostSaleProductDto' productVariant: $ref: '#/components/schemas/HostSaleProductVariantDto' openArea: $ref: '#/components/schemas/HostSaleOpenAreaDto' quantity: type: number example: 1 unitPriceExcludingTaxInCurrency: type: string example: '9.99' unitTaxAmountInCurrency: type: string example: '0.43' required: - id - saleItemId - itemType - itemName - descriptiveItemName - payingMember - targetMember - quantity - unitPriceExcludingTaxInCurrency - unitTaxAmountInCurrency HostSalePaymentTransactionItemDto: type: object properties: id: type: integer paymentMethodType: enum: - stripe - stripe-becs - stripe-nz-becs - stripe-revolut-pay - stripe-ideal - stripe-ideal-sepa-direct-debit - stripe-bancontact - stripe-bancontact-sepa-direct-debit - stripe-sepa-direct-debit - stripe-ach-direct-debit - stripe-acss-debit - stripe-bacs-direct-debit - stripe-refund - membership - cash - free - imported - custom - scheduled-stripe - paypal - xendit - classpass - gympass - gift-card - stripe-reader - pay-later - pay-at-start - money-credit-correction - money-credit-refund - event-credit-correction - event-credit-refund - tuition - urban-sports-club - my-clubs - referral-reward - referral-gift - campaign-sequence-action - reward-points-corrections - reward-points-earned - reward-points-spent - multiple-payment-methods - yappy - odin-card - odin-ach - odin-reader type: string example: custom x-enumNames: - STRIPE - STRIPE_AU_BECS - STRIPE_NZ_BECS - STRIPE_REVOLUT_PAY - STRIPE_IDEAL - STRIPE_IDEAL_SEPA_DIRECT_DEBIT - STRIPE_BANCONTACT - STRIPE_BANCONTACT_SEPA_DIRECT_DEBIT - STRIPE_SEPA_DIRECT_DEBIT - STRIPE_ACH_DIRECT_DEBIT - STRIPE_ACSS_DEBIT - STRIPE_BACS_DIRECT_DEBIT - STRIPE_REFUND - MEMBERSHIP - CASH - FREE - IMPORTED - CUSTOM - SCHEDULED_STRIPE - PAYPAL - XENDIT - CLASSPASS - GYMPASS - GIFT_CARD - STRIPE_READER - PAY_LATER - PAY_AT_START - MONEY_CREDIT_CORRECTION - MONEY_CREDIT_REFUND - EVENT_CREDIT_CORRECTION - EVENT_CREDIT_REFUND - TUITION - URBAN_SPORTS_CLUB - MY_CLUBS - REFERRAL_REWARD - REFERRAL_GIFT - CAMPAIGN_SEQUENCE_ACTION - REWARD_POINTS_CORRECTIONS - REWARD_POINTS_EARNED - REWARD_POINTS_SPENT - MULTIPLE_PAYMENT_METHODS - YAPPY - ODIN_CARD - ODIN_ACH - ODIN_READER paymentMethodName: type: string description: >- Additional name for the payment method used - for CUSTOM, it's custom payment method name, for MEMBERSHIP it's the membership name example: Custom payment method amountInCurrencyWithoutTax: type: string example: '9.99' taxAmountInCurrency: type: string example: '9.99' required: - id - paymentMethodType - amountInCurrencyWithoutTax - taxAmountInCurrency HostSalePaymentTransactionDto: type: object properties: items: type: array items: $ref: '#/components/schemas/HostSalePaymentTransactionItemDto' required: - items HostSaleDto: type: object properties: id: type: integer example: 1 saleDate: type: string example: '2021-01-01T00:00:00Z' format: date-time items: type: array items: $ref: '#/components/schemas/HostSaleItemDto' paymentTransaction: $ref: '#/components/schemas/HostSalePaymentTransactionDto' required: - id - saleDate - items - paymentTransaction MemberInfoDto: type: object properties: id: type: integer firstName: type: string example: John lastName: type: string example: Doe email: type: string example: john.doe@example.com phoneNumber: type: string nullable: true example: '1234567890' pictureUrl: type: string nullable: true example: https://example.com/picture.jpg required: - id - firstName - lastName - email - phoneNumber - pictureUrl HostSessionBookingDto: type: object properties: id: type: integer member: $ref: '#/components/schemas/MemberInfoDto' roomSpotId: type: integer nullable: true checkedIn: type: boolean ticketsBought: type: integer createdAt: type: string format: date-time isRecurring: type: boolean example: false recurringBookingId: type: integer nullable: true cancelledAt: type: string nullable: true format: date-time required: - id - member - roomSpotId - checkedIn - ticketsBought - createdAt - isRecurring - recurringBookingId - cancelledAt HostSessionBookingCancelRequestDto: type: object properties: refund: type: boolean disableNotifications: type: boolean isLateCancellation: type: boolean required: - refund - disableNotifications - isLateCancellation HostSessionRecurringBookingCancelRequestDto: type: object properties: afterSessionId: type: integer example: 123456 SessionTagDto: type: object properties: id: type: integer example: 1 name: type: string example: VIP isCustomerBadge: type: boolean example: false badgeLabel: type: string nullable: true example: VIP badgeColor: type: string nullable: true example: '#fe0000' required: - id - name - isCustomerBadge - badgeLabel - badgeColor HostSessionDto: type: object properties: id: type: integer example: 1 name: type: string example: Stretching with John type: enum: - private - special-event - special-event-new - retreat - fitness - course - course-class - semester - recital type: string example: fitness x-enumNames: - PRIVATE - SPECIAL_EVENT - SPECIAL_EVENT_NEW - RETREAT - FITNESS - COURSE - COURSE_CLASS - SEMESTER - RECITAL description: type: string nullable: true example: >- Our program is designed to help you increase your flexibility and strength. startsAt: type: string example: '2021-08-01T10:00:00Z' format: date-time endsAt: type: string example: '2021-08-01T11:00:00Z' format: date-time durationInMinutes: type: integer example: 60 minimum: 0 capacity: type: integer nullable: true example: 10 minimum: 0 bookingCount: type: integer example: 10 minimum: 0 teacher: nullable: true allOf: - $ref: '#/components/schemas/MemberTeacherDto' isRecurring: type: boolean example: false isCancelled: type: boolean example: false isInPerson: type: boolean example: false isDraft: type: boolean example: false inPersonLocation: nullable: true allOf: - $ref: '#/components/schemas/MemberLocationDto' onlineStreamUrl: type: string nullable: true example: https://example.com/online-stream onlineStreamPassword: type: string nullable: true example: password123 bannerImageUrl: type: string nullable: true example: https://example.com/banner.jpg hostPhotoUrl: type: string nullable: true example: https://example.com/host.jpg tags: type: array items: $ref: '#/components/schemas/SessionTagDto' required: - id - name - type - description - startsAt - endsAt - durationInMinutes - capacity - bookingCount - teacher - isRecurring - isCancelled - isInPerson - isDraft - inPersonLocation - onlineStreamUrl - onlineStreamPassword - bannerImageUrl - hostPhotoUrl HostTeacherDto: type: object properties: id: type: integer example: 1 firstName: type: string example: John lastName: type: string example: Doe pictureUrl: type: string nullable: true example: https://example.com/picture.jpg email: type: string nullable: true example: johndoe@teacher.com required: - id - firstName - lastName - pictureUrl - email HostSessionDetailDto: type: object properties: id: type: integer example: 1 name: type: string example: Monday Morning Yoga startsAt: type: string example: '2021-01-01T00:00:00Z' format: date-time endsAt: type: string example: '2021-01-01T01:00:00Z' format: date-time capacity: type: integer nullable: true example: 20 bookingCount: type: integer nullable: true example: 12 waitlistCapacity: type: integer nullable: true example: 20 waitlistBookingCount: type: integer nullable: true example: 20 teacher: nullable: true allOf: - $ref: '#/components/schemas/HostTeacherDto' originalTeacher: nullable: true allOf: - $ref: '#/components/schemas/HostTeacherDto' additionalTeachers: nullable: true type: array items: $ref: '#/components/schemas/HostTeacherDto' isRecurring: type: boolean example: false isCancelled: type: boolean example: false isInPerson: type: boolean example: false isDraft: type: boolean example: false inPersonLocation: nullable: true allOf: - $ref: '#/components/schemas/MemberLocationDto' zoomLink: type: string nullable: true example: https://zoom.us/j/1234567890 zoomMeetingId: type: string nullable: true example: '1234567890' zoomMeetingPassword: type: string nullable: true example: '065809' onlineStreamUrl: type: string nullable: true example: https://example.com/online-stream onlineStreamPassword: type: string nullable: true example: password123 tags: type: array items: $ref: '#/components/schemas/SessionTagDto' required: - id - name - startsAt - endsAt - capacity - bookingCount - waitlistCapacity - waitlistBookingCount - teacher - originalTeacher - additionalTeachers - isRecurring - isCancelled - isInPerson - isDraft - inPersonLocation - zoomLink - zoomMeetingId - zoomMeetingPassword - onlineStreamUrl - onlineStreamPassword HostFreeSessionBookingResponseDto: type: object properties: sessionBookingId: type: integer example: 1 sessionRecurringBookingId: type: integer example: 2 required: - sessionBookingId HostFreeSessionBookingRequestDto: type: object properties: memberId: type: integer example: 1 createRecurringBooking: type: boolean example: true required: - memberId HostFreeSessionBookingErrorResponseDto: type: object properties: type: type: string enum: - err-member-not-found - err-member-not-assigned-to-host - err-session-not-found - err-session-not-provided-by-host - err-customer-age-prevents-from-action - err-missing-customer-date-of-birth - err-missing-date-of-birth-setting - err-invalid-date-of-birth-value x-enumNames: - ERR_MEMBER_NOT_FOUND - ERR_MEMBER_NOT_ASSIGNED_TO_HOST - ERR_SESSION_NOT_FOUND - ERR_SESSION_NOT_PROVIDED_BY_HOST - ERR_CUSTOMER_AGE_PREVENTS_FROM_ACTION - ERR_MISSING_CUSTOMER_DATE_OF_BIRTH - ERR_MISSING_DATE_OF_BIRTH_SETTINGS - ERR_INVALID_DATE_OF_BIRTH_VALUE message: type: string required: - type - message HostSessionWaitlistBookingResponseDto: type: object properties: waitlistBookingId: type: integer example: 1 required: - waitlistBookingId HostSessionWaitlistBookingRequestDto: type: object properties: memberId: type: integer example: 1 useBoughtMembershipIds: example: - 2 type: array items: type: integer required: - memberId HostSessionWaitlistBookingErrorResponseDto: type: object properties: type: type: string enum: - err-member-not-found - err-member-not-assigned-to-host - err-session-not-found - err-session-not-provided-by-host - err-waitlist-not-allowed - err-waitlist-full - err-member-already-on-waitlist - err-customer-age-prevents-from-action - err-missing-customer-date-of-birth - err-missing-date-of-birth-setting - err-invalid-date-of-birth-value x-enumNames: - ERR_MEMBER_NOT_FOUND - ERR_MEMBER_NOT_ASSIGNED_TO_HOST - ERR_SESSION_NOT_FOUND - ERR_SESSION_NOT_PROVIDED_BY_HOST - ERR_WAITLIST_NOT_ALLOWED - ERR_WAITLIST_FULL - ERR_MEMBER_ALREADY_ON_WAITLIST - ERR_CUSTOMER_AGE_PREVENTS_FROM_ACTION - ERR_MISSING_CUSTOMER_DATE_OF_BIRTH - ERR_MISSING_DATE_OF_BIRTH_SETTINGS - ERR_INVALID_DATE_OF_BIRTH_VALUE message: type: string required: - type - message ApiV2MemberAddressDto: type: object properties: id: type: integer example: 1 address: type: string example: 153 Hunters Drive zipcode: type: string example: '8513' city: type: string example: New York country: type: string example: US createdAt: type: string example: '2021-09-22T00:00:00.000Z' format: date-time required: - id - address - zipcode - city - country - createdAt ApiV2MemberAddressRequestDto: type: object properties: address: type: string example: 153 Hunters Drive maxLength: 2048 zipcode: type: string example: '8513' maxLength: 255 city: type: string example: New York maxLength: 255 country: type: string example: US maxLength: 255 required: - address - zipcode - city - country MemberBoughtMembershipsDto: type: object properties: id: type: integer example: 1 type: enum: - subscription - on-demand-subscription - package-events - package-money - patron type: string example: subscription x-enumNames: - Subscription - OnDemandSubscription - PackageEvents - PackageMoney - Patron startDate: type: string nullable: true description: start date of the bought membership example: '2021-01-01T00:00:00Z' format: date-time endDate: type: string nullable: true description: expiration date of the bought membership example: '2021-02-01T00:00:00Z' format: date-time isFrozen: type: boolean eventCreditsLeft: type: number nullable: true description: number of event credits left, valid for PACKAGE_EVENTS example: null eventCreditsTotal: type: number nullable: true description: >- number of event credits originally included in the package, valid for PACKAGE_EVENTS example: null moneyCreditsLeft: type: number nullable: true description: number of money credits left, valid for PACKAGE_MONEY example: null moneyCreditsTotal: type: number nullable: true description: >- number of money credits originally included in the package, valid for PACKAGE_MONEY example: null usageLimitForSessions: type: number nullable: true description: >- Non-null value indicates the membership has limit to number of session bookings, only valid for SUBSCRIPTION example: 5 usageLimitForAppointments: type: number nullable: true description: >- Non-null value indicates the membership has limit to number of appointments booked, only valid for SUBSCRIPTION example: 3 combinedUsageLimit: type: number nullable: true description: >- Non-null value indicates the membership has combined limits for session and appointment bookings, only valid for SUBSCRIPTION example: null usedSessions: type: number nullable: true description: only valid for SUBSCRIPTION with session-only usage limits example: 1 usedAppointments: type: number nullable: true description: only valid for SUBSCRIPTION with appointment-only usage limits example: 2 combinedUsage: type: number nullable: true description: only valid for SUBSCRIPTION with combined usage limits example: null usageLimitStartDate: type: string nullable: true description: >- date range for which the current usage is calculated for, only valid for SUBSCRIPTION with usage limits example: null format: date-time usageLimitEndDate: type: string nullable: true description: >- date range for which the current usage is calculated for, only valid for SUBSCRIPTION with usage limits example: null format: date-time membership: nullable: true description: >- info about origin membership, it's possible the bought membership has no origin membership allOf: - $ref: '#/components/schemas/HostMembershipBasicDto' freeze: nullable: true description: >- freeze details, if the membership is frozen or scheduled to freeze/unfreeze allOf: - $ref: '#/components/schemas/ApiV2BoughtMembershipFreezeDto' declinedRenewal: nullable: true description: latest failed renewal payment details for this membership, if any allOf: - $ref: '#/components/schemas/ApiV2BoughtMembershipDeclinedRenewalDto' required: - id - type - startDate - endDate - isFrozen - eventCreditsLeft - eventCreditsTotal - moneyCreditsLeft - moneyCreditsTotal - usageLimitForSessions - usageLimitForAppointments - combinedUsageLimit - usedSessions - usedAppointments - combinedUsage - usageLimitStartDate - usageLimitEndDate - membership - freeze - declinedRenewal MemberCheckoutCompatibleBoughtMembershipDto: type: object properties: id: type: integer example: 1 type: enum: - subscription - on-demand-subscription - package-events - package-money - patron type: string example: subscription x-enumNames: - Subscription - OnDemandSubscription - PackageEvents - PackageMoney - Patron startDate: type: string nullable: true description: start date of the bought membership example: '2021-01-01T00:00:00Z' format: date-time endDate: type: string nullable: true description: expiration date of the bought membership example: '2021-02-01T00:00:00Z' format: date-time eventCreditsLeft: type: number nullable: true description: number of event credits left, valid for PACKAGE_EVENTS example: null eventCreditsTotal: type: number nullable: true description: >- number of event credits originally included in the package, valid for PACKAGE_EVENTS example: null moneyCreditsLeft: type: number nullable: true description: number of money credits left, valid for PACKAGE_MONEY example: null moneyCreditsTotal: type: number nullable: true description: >- number of money credits originally included in the package, valid for PACKAGE_MONEY example: null membership: nullable: true description: >- info about origin membership, it's possible the bought membership has no origin membership allOf: - $ref: '#/components/schemas/HostMembershipBasicDto' required: - id - type - startDate - endDate - eventCreditsLeft - eventCreditsTotal - moneyCreditsLeft - moneyCreditsTotal - membership MemberCheckoutCompatibleMembershipDto: type: object properties: boughtMembership: $ref: '#/components/schemas/MemberCheckoutCompatibleBoughtMembershipDto' incompatibility: enum: - session-membership-excluded - session-bought-membership-will-expire - session-bought-membership-pack-will-expire - session-bought-membership-already-used - session-bought-membership-usage-limit-reached - >- session-bought-membership-usage-limit-reached-for-semester-or-course - session-bought-membership-daily-limit-reached - session-bought-membership-no-event-credits-left - session-bought-membership-no-money-credits-left - session-bought-membership-on-demand - session-bought-membership-starts-later - session-bought-membership-invalid-type - session-bought-membership-disabled - session-bought-membership-frozen - session-subscription-ticket-limit - unknown type: string x-enumNames: - SESSION_MEMBERSHIP_EXCLUDED - SESSION_BOUGHT_MEMBERSHIP_WILL_EXPIRE - SESSION_BOUGHT_MEMBERSHIP_PACK_WILL_EXPIRE - SESSION_BOUGHT_MEMBERSHIP_ALREADY_USED - SESSION_BOUGHT_MEMBERSHIP_USAGE_LIMIT_REACHED - >- SESSION_BOUGHT_MEMBERSHIP_USAGE_LIMIT_REACHED_FOR_SEMESTER_OR_COURSE - SESSION_BOUGHT_MEMBERSHIP_DAILY_LIMIT_REACHED - SESSION_BOUGHT_MEMBERSHIP_NO_EVENT_CREDITS_LEFT - SESSION_BOUGHT_MEMBERSHIP_NO_MONEY_CREDITS_LEFT - SESSION_BOUGHT_MEMBERSHIP_ON_DEMAND - SESSION_BOUGHT_MEMBERSHIP_STARTS_LATER - SESSION_BOUGHT_MEMBERSHIP_INVALID_TYPE - SESSION_BOUGHT_MEMBERSHIP_DISABLED - SESSION_BOUGHT_MEMBERSHIP_FROZEN - SESSION_BOUGHT_MEMBERSHIP_TICKET_LIMIT - UNKNOWN required: - boughtMembership MemberCheckoutCompatibleMembershipsDto: type: object properties: items: type: array items: $ref: '#/components/schemas/MemberCheckoutCompatibleMembershipDto' required: - items MemberCheckoutCompatibleMembershipsRequestDto: type: object properties: items: type: array items: oneOf: - $ref: '#/components/schemas/MemberCheckoutMembershipItemDto' - $ref: '#/components/schemas/MemberCheckoutSessionItemDto' homeLocationId: type: integer required: - items MemberCheckoutMembershipItemDto: type: object properties: id: type: string type: type: string enum: - subscription membershipId: type: integer required: - id - type - membershipId MemberCheckoutSessionItemDto: type: object properties: id: type: string type: type: string enum: - session sessionId: type: integer appliedPriceRuleIds: type: array items: type: integer required: - id - type - sessionId MemberCheckoutPricesItemDto: type: object properties: id: type: string priceInCurrencyWithTax: type: string priceInCurrencyWithoutTax: type: string taxInCurrency: type: string required: - id - priceInCurrencyWithTax - priceInCurrencyWithoutTax - taxInCurrency MemberCheckoutPricesResponseDto: type: object properties: totalInCurrency: type: string itemsWithPrices: type: array items: $ref: '#/components/schemas/MemberCheckoutPricesItemDto' required: - totalInCurrency - itemsWithPrices MemberCheckoutPricesRequestDto: type: object properties: items: type: array items: oneOf: - $ref: '#/components/schemas/MemberCheckoutMembershipItemDto' - $ref: '#/components/schemas/MemberCheckoutSessionItemDto' homeLocationId: type: integer paymentMethods: type: array items: oneOf: - $ref: '#/components/schemas/MemberPaymentMethodMembershipDto' - $ref: '#/components/schemas/MemberPaymentMethodSavedPaymentMethodDto' required: - items - paymentMethods MemberCheckoutResponseDto: type: object properties: purchasedItems: type: array items: oneOf: - $ref: '#/components/schemas/MemberCheckoutPurchasedSessionDto' - $ref: '#/components/schemas/MemberCheckoutPurchasedMembershipDto' - $ref: '#/components/schemas/MemberCheckoutPurchasedAppointmentDto' - $ref: '#/components/schemas/MemberCheckoutPurchasedProductDto' - $ref: '#/components/schemas/MemberCheckoutPurchasedGiftCardDto' - $ref: '#/components/schemas/MemberCheckoutPurchasedMoneyCreditsDto' - $ref: '#/components/schemas/MemberCheckoutPurchasedEventCreditsDto' required: - purchasedItems MemberCheckoutMembershipItemWithPriceDto: type: object properties: id: type: string type: type: string enum: - subscription membershipId: type: integer attemptedPriceInCurrency: type: string required: - id - type - membershipId - attemptedPriceInCurrency MemberCheckoutSessionItemWithPriceDto: type: object properties: id: type: string type: type: string enum: - session sessionId: type: integer appliedPriceRuleIds: type: array items: type: integer attemptedPriceInCurrency: type: string required: - id - type - sessionId - attemptedPriceInCurrency MemberPaymentMethodMembershipDto: type: object properties: id: type: string type: type: string enum: - membership boughtMembershipId: type: integer required: - id - type - boughtMembershipId MemberPaymentMethodSavedPaymentMethodDto: type: object properties: id: type: string type: type: string enum: - saved_payment_method savedPaymentMethodId: type: integer required: - id - type - savedPaymentMethodId MemberCheckoutPurchasedSessionDto: type: object properties: type: type: string enum: - session sessionBookingId: type: integer required: - type - sessionBookingId MemberCheckoutPurchasedMembershipDto: type: object properties: type: type: string enum: - membership boughtMembershipId: type: integer required: - type - boughtMembershipId MemberCheckoutPurchasedAppointmentDto: type: object properties: type: type: string enum: - appointment appointmentTransactionId: type: integer required: - type - appointmentTransactionId MemberCheckoutPurchasedProductDto: type: object properties: type: type: string enum: - product productOrderId: type: integer required: - type - productOrderId MemberCheckoutPurchasedGiftCardDto: type: object properties: type: type: string enum: - gift-card giftCardId: type: integer required: - type - giftCardId MemberCheckoutPurchasedMoneyCreditsDto: type: object properties: type: type: string enum: - money-credit numberOfMoneyCredits: type: number required: - type - numberOfMoneyCredits MemberCheckoutPurchasedEventCreditsDto: type: object properties: type: type: string enum: - event-credit numberOfEventCredits: type: number required: - type - numberOfEventCredits MemberCheckoutRequestDto: type: object properties: items: type: array items: oneOf: - $ref: '#/components/schemas/MemberCheckoutMembershipItemWithPriceDto' - $ref: '#/components/schemas/MemberCheckoutSessionItemWithPriceDto' homeLocationId: type: integer paymentMethods: type: array items: oneOf: - $ref: '#/components/schemas/MemberPaymentMethodMembershipDto' - $ref: '#/components/schemas/MemberPaymentMethodSavedPaymentMethodDto' required: - items - paymentMethods MemberCheckoutErrorResponseDto: type: object properties: type: enum: - err-no-payment-methods - err-no-items - err-too-many-items - err-combined-payment-methods - err-cannot-pay-for-membership-with-membership - err-multiple-membership-types - err-multiple-subscriptions - err-saved-card-not-found - err-cart-validation-failed - err-payment-failed - err-duplicate-membership-payment-methods - err-invalid-membership-payment-method - err-incompatible-membership - err-unsupported-payment-methods - err-session-has-invalid-state - err-session-has-passed - err-session-sales-ended - err-session-dropins-not-allowed - err-session-is-full - err-session-purchase-limit-reached - err-session-access-restricted - err-duplicate-item-ids - err-duplicate-payment-method-ids - err-unsupported-item-type - err-missing-customer-date-of-birth - err-customer-age-prevents-from-action type: string x-enumNames: - ERR_NO_PAYMENT_METHODS - ERR_NO_ITEMS - ERR_TOO_MANY_ITEMS - ERR_COMBINED_PAYMENT_METHODS - ERR_CANNOT_PAY_FOR_MEMBERSHIP_WITH_MEMBERSHIP - ERR_MULTIPLE_MEMBERSHIP_TYPES - ERR_MULTIPLE_SUBSCRIPTIONS - ERR_SAVED_CARD_NOT_FOUND - ERR_CART_VALIDATION_FAILED - ERR_PAYMENT_FAILED - ERR_DUPLICATE_MEMBERSHIP_PAYMENT_METHODS - ERR_INVALID_MEMBERSHIP_PAYMENT_METHOD - ERR_INCOMPATIBLE_MEMBERSHIP - ERR_UNSUPPORTED_PAYMENT_METHODS - ERR_SESSION_HAS_INVALID_STATE - ERR_SESSION_HAS_PASSED - ERR_SESSION_SALES_ENDED - ERR_SESSION_DROPINS_NOT_ALLOWED - ERR_SESSION_IS_FULL - ERR_SESSION_PURCHASE_LIMIT_REACHED - ERR_SESSION_ACCESS_RESTRICTED - ERR_DUPLICATE_ITEM_IDS - ERR_DUPLICATE_PAYMENT_METHOD_IDS - ERR_UNSUPPORTED_ITEM_TYPE - ERR_MISSING_CUSTOMER_DATE_OF_BIRTH - ERR_CUSTOMER_IS_NOT_ELIGIBLE_DUE_TO_AGE_RESTRICTION message: type: string required: - type - message ApiV2MemberUpdateRequestDto: type: object properties: firstName: type: string example: John minLength: 1 maxLength: 100 lastName: type: string example: Doe minLength: 1 maxLength: 100 required: - firstName - lastName ApiV2MemberUpdateEmailRequestDto: type: object properties: email: type: string example: john.doe@example.com required: - email ApiV2MemberUpdatePhoneNumberRequestDto: type: object properties: phoneNumber: type: string example: '1234567890' required: - phoneNumber MemberHostLocationDto: type: object properties: id: type: integer example: 5 parentLocationId: type: integer nullable: true example: null name: type: string nullable: true example: Brooklyn Location timeZone: type: string nullable: true example: America/New_York fullAddress: type: string nullable: true description: Full location address example: 96 North Country Club Street, Brooklyn, NY 11233 address: type: string nullable: true example: 96 North Country Club Street city: type: string nullable: true example: Brooklyn countryCode: type: string nullable: true example: NY zipCode: type: string nullable: true example: '11233' latitude: type: number nullable: true example: 40.6453448 longitude: type: number nullable: true example: -74.0275687 isPhysical: type: boolean nullable: true example: true required: - id - parentLocationId - name - timeZone - fullAddress - address - city - countryCode - zipCode - latitude - longitude - isPhysical MemberHostMembershipDto: type: object properties: id: type: integer example: 5 name: type: string example: Monthly Membership description: type: string nullable: true example: Monthly membership with unlimited access to all classes. type: enum: - subscription - on-demand-subscription - package-events - package-money - patron type: string example: subscription x-enumNames: - Subscription - OnDemandSubscription - PackageEvents - PackageMoney - Patron locationId: type: integer nullable: true example: null disabled: type: boolean description: Indicates that the membership was disabled and shouldn't be shown example: false autoRenewing: type: boolean description: Indicates that membership renews after specific interval example: true minimumAutoRenews: type: integer nullable: true description: >- How many times membership has to renew before user can cancel renewal example: null eventCredits: type: integer nullable: true description: >- For PACKAGE_EVENTS memberships, defines how many event credits are included example: null moneyCredits: type: number nullable: true description: For PACKAGE_MONEY memberships, defines how much money is included example: null duration: type: integer nullable: true description: >- For SUBSCRIPTION this is auto renew duration, for PACKAGE_* this is expiration time example: 1 durationUnit: nullable: true enum: - days - months - years type: string example: months x-enumNames: - DAYS - MONTHS - YEARS isActivatedOnFirstUse: type: boolean description: >- If set to false, membership is activated upon purchase. When set to true, membership is activated at the moment of the first purchase. When the purchase is for booking in the future, the activation date is set to the booking date. example: false activationDeadlineInDays: type: integer nullable: true description: >- Only applicable when isActivatedOnFirstUse=true. If set, the member must activate the membership within this many days of purchase or it expires automatically. example: 21 hasFreeTrial: type: boolean example: false freeTrialDurationInDays: type: integer example: 7 contractAgreement: type: string nullable: true example: Contract agreement text order: type: integer example: 1 isIntroOffer: type: boolean example: false usageLimitForSessions: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Maximum number of sessions customer can book with this membership during one renewal period, not used when combinedUsageLimitEnabled=true example: 5 usageLimitForAppointments: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Maximum number of appointments customer can book with this membership during one renewal period, not used when combinedUsageLimitEnabled=true example: 2 combinedUsageLimitEnabled: type: boolean description: >- Only applicable for SUBSCRIPTION. The usage limits of the memberships are applied to sum of both bookings and appointments. example: false combinedUsageLimit: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Combined maximum number of bookings and appointments customer can book with this membership during one renewal period, only used when combinedUsageLimitEnabled=true example: null usageLimitRenewalEnabled: type: boolean description: >- Only applicable for SUBSCRIPTION. Calculate usage limits differently to renewal duration. example: false usageLimitRenewalDuration: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. Interval for which the usage limits are calculated, only used when usageLimitRenewalEnabled=true example: null usageLimitRenewalDurationUnit: nullable: true enum: - days - months - years type: string description: >- Only applicable for SUBSCRIPTION. Interval for which the usage limits are calculated, only used when usageLimitRenewalEnabled=true example: null x-enumNames: - DAYS - MONTHS - YEARS usageLimitRolloverEnabled: type: boolean description: >- Only applicable for SUBSCRIPTION. When true and customer doesn't use reach their usage limits, the rest is transferred to the customer according to usageLimitRolloverMode example: false usageLimitRolloverMode: nullable: true enum: - next-renewal - event-credits type: string description: >- Only applicable for SUBSCRIPTION. How should extra usage limits be transferred to customer, either as package or as addition to next renewal period. Only used when usageLimitRolloverEnabled=true example: null x-enumNames: - NEXT_RENEWAL - EVENT_CREDITS usageLimitRolloverExpirationDuration: type: number nullable: true description: >- Only applicable for SUBSCRIPTION. When should the extra limits / package expire after rolling over. Only used when usageLimitRolloverEnabled=true example: null usageLimitRolloverExpirationDurationUnit: nullable: true enum: - days - months - years type: string description: >- Only applicable for SUBSCRIPTION. When should the extra limits / package expire after rolling over. Only used when usageLimitRolloverEnabled=true example: null x-enumNames: - DAYS - MONTHS - YEARS startDate: type: string nullable: true description: Explicit start date for memberships that have specific duration example: '2022-01-01T00:00:00Z' format: date-time endDate: type: string nullable: true description: Explicit end date for memberships that have specific duration example: '2022-02-01T00:00:00Z' format: date-time featured: type: boolean description: Indicates that membership should be featured on checkout example: false priceType: enum: - fixed-price - dynamic type: string example: fixed-price x-enumNames: - FIXED - DYNAMIC price: type: number nullable: true description: In cents, membership price for FIXED priceType example: 955 minimumPrice: type: integer nullable: true description: In cents, minimum membership price for DYNAMIC priceType example: null maximumPrice: type: integer nullable: true description: In cents, maximum membership price for DYNAMIC priceType example: null recommendedPrice: type: integer nullable: true description: In cents, recommended membership price for DYNAMIC priceType example: null priceIncludesTax: type: boolean description: Indicates if tax is already included in the price example: true taxRateInPercent: type: number nullable: true description: Tax rate in percents example: 20 freeTrialPrice: type: integer description: in cents example: 199 tags: type: array items: $ref: '#/components/schemas/HostTagDto' required: - id - name - description - type - locationId - disabled - autoRenewing - minimumAutoRenews - eventCredits - moneyCredits - duration - durationUnit - isActivatedOnFirstUse - activationDeadlineInDays - hasFreeTrial - freeTrialDurationInDays - contractAgreement - order - isIntroOffer - usageLimitForSessions - usageLimitForAppointments - combinedUsageLimitEnabled - combinedUsageLimit - usageLimitRenewalEnabled - usageLimitRenewalDuration - usageLimitRenewalDurationUnit - usageLimitRolloverEnabled - usageLimitRolloverMode - usageLimitRolloverExpirationDuration - usageLimitRolloverExpirationDurationUnit - startDate - endDate - featured - priceType - price - minimumPrice - maximumPrice - recommendedPrice - priceIncludesTax - taxRateInPercent - freeTrialPrice - tags MemberHostSessionDto: type: object properties: id: type: integer example: 3 name: type: string example: Stretching with John type: enum: - private - special-event - special-event-new - retreat - fitness - course - course-class - semester - recital type: string example: fitness x-enumNames: - PRIVATE - SPECIAL_EVENT - SPECIAL_EVENT_NEW - RETREAT - FITNESS - COURSE - COURSE_CLASS - SEMESTER - RECITAL description: type: string nullable: true example: Our stretching class is a great way to start your day. startsAt: type: string example: '2021-01-01T05:00:00Z' format: date-time endsAt: type: string example: '2021-01-01T06:00:00Z' format: date-time durationInMinutes: type: integer example: 60 capacity: type: integer nullable: true description: Maximum session capacity, NULL means unlimited example: 10 minimum: 0 participants: type: integer description: How many bookings the session already has example: 1 waitlistEnabled: type: boolean example: true waitlistCapacity: type: integer nullable: true description: >- Maximum number of people on the waitlist if the waitlist is enabled. NULL means unlimited example: 5 salesCutoffInMinutes: type: number nullable: true description: How long before the session start the bookings sale stops example: 10 isCancelled: type: boolean example: false priceType: enum: - fixed-price - dynamic type: string example: fixed-price x-enumNames: - FIXED - DYNAMIC fixedTicketPrice: type: number example: 955 dynamicTicketPriceMin: type: number nullable: true example: null dynamicTicketPriceMax: type: number nullable: true example: null dynamicTicketFreeOptionEnabled: type: boolean nullable: true example: null teacher: nullable: true allOf: - $ref: '#/components/schemas/MemberTeacherDto' originalTeacher: nullable: true allOf: - $ref: '#/components/schemas/MemberTeacherDto' additionalTeachers: type: array items: $ref: '#/components/schemas/MemberTeacherDto' isRecurring: type: boolean example: false isInPerson: type: boolean example: false inPersonLocation: nullable: true allOf: - $ref: '#/components/schemas/MemberLocationDto' bannerImageUrl: type: string nullable: true example: https://example.com/image.jpg hostPhotoUrl: type: string nullable: true example: https://example.com/image.jpg onlineStreamUrl: type: string nullable: true example: https://example.com/online-stream onlineStreamPassword: type: string nullable: true example: password123 required: - id - name - type - description - startsAt - endsAt - durationInMinutes - capacity - participants - waitlistEnabled - waitlistCapacity - salesCutoffInMinutes - isCancelled - priceType - fixedTicketPrice - dynamicTicketPriceMin - dynamicTicketPriceMax - dynamicTicketFreeOptionEnabled - teacher - originalTeacher - additionalTeachers - isRecurring - isInPerson - inPersonLocation - bannerImageUrl - hostPhotoUrl - onlineStreamUrl - onlineStreamPassword HandwrittenElementPointDto: type: object properties: x: type: integer minimum: 0 'y': type: integer minimum: 0 required: - x - 'y' HandwrittenElementPathDto: type: object properties: points: type: array items: $ref: '#/components/schemas/HandwrittenElementPointDto' required: - points HandwrittenElementDto: type: object properties: paths: type: array items: $ref: '#/components/schemas/HandwrittenElementPathDto' required: - paths MemberSignableDocumentDto: type: object properties: predefinedWaiverType: enum: - waiver - membership-waiver - child-waiver - privacy-policy type: string x-enumNames: - CUSTOMER_WAIVER - MEMBERSHIP_TERMS_AND_CONDITIONS - CHILD_BOOKING_WAIVER - PRIVACY_POLICY customWaiverId: type: integer type: enum: - predefinedWaiver - customWaiver type: string x-enumNames: - PredefinedWaiver - CustomWaiver name: type: string nullable: true content: type: string nullable: true signedAt: type: string nullable: true format: date-time signatureStatus: enum: - signed - unsigned - signature-expired type: string x-enumNames: - SIGNED - UNSIGNED - SIGNATURE_EXPIRED simpleSignature: type: string handwrittenSignature: $ref: '#/components/schemas/HandwrittenElementDto' required: - type - name - content - signedAt - signatureStatus MemberSignableDocumentsResponseDto: type: object properties: documents: type: array items: $ref: '#/components/schemas/MemberSignableDocumentDto' required: - documents MemberSignDocumentRequestDto: type: object properties: customWaiverIdsToSign: description: Customer waiver IDs to sign, can be empty type: array items: type: integer predefinedWaiverTypesToSign: type: array items: enum: - waiver - membership-waiver - child-waiver - privacy-policy type: string x-enumNames: - CUSTOMER_WAIVER - MEMBERSHIP_TERMS_AND_CONDITIONS - CHILD_BOOKING_WAIVER - PRIVACY_POLICY description: Predefined waiver types to sign, can be empty simpleSignature: type: string description: >- This signature can be a customer name; useful for people who prefer typing instead of drawing their own signature by hand handwrittenSignature: description: >- This signature contains a representation of handwritten vector element (array of SVG paths), as produced by Konva allOf: - $ref: '#/components/schemas/HandwrittenElementDto' ApiV2MemberSavedPaymentMethodDto: type: object properties: id: type: integer example: 1 type: type: string enum: - card example: card x-enumNames: - CARD last4: type: string nullable: true description: Last 4 digits example: '4242' expiresAt: type: string nullable: true description: Expiration date in YYYY-MM-DD format example: '2022-12-31' required: - id - type - last4 - expiresAt ApiV2MemberSavedPaymentMethodsResponseDto: type: object properties: paymentMethods: type: array items: $ref: '#/components/schemas/ApiV2MemberSavedPaymentMethodDto' required: - paymentMethods ApiV2MemberManagePaymentMethodsResponseDto: type: object properties: addPaymentMethodPageUrl: type: string description: URL to redirect for adding a payment method required: - addPaymentMethodPageUrl ApiV2MemberManagePaymentMethodsRequestDto: type: object properties: redirectUrl: type: string description: URL to redirect after the add operation is completed redirectUrlOnCancel: type: string description: Optional URL to redirect on cancel required: - redirectUrl MemberDeleteSavedPaymentMethodErrorResponseDto: type: object properties: type: enum: - err-active-non-cancellable-subscription - err-no-payment-method-found type: string x-enumNames: - ERR_ACTIVE_NON_CANCELLABLE_SUBSCRIPTION - ERR_NO_PAYMENT_METHOD_FOUND message: type: string required: - type - message MemberSessionBookingDto: type: object properties: id: type: integer example: 1 createdAt: type: string example: '2021-08-01T10:00:00Z' format: date-time roomSpotId: type: integer nullable: true checkedIn: type: boolean cancelledAt: type: string nullable: true example: null format: date-time isRecurring: type: boolean example: false session: $ref: '#/components/schemas/MemberSessionBookingSessionDto' required: - id - createdAt - roomSpotId - checkedIn - cancelledAt - isRecurring - session DateRangeDto: type: object properties: from: type: string example: '2026-01-01T00:00:00Z' format: date-time to: type: string example: '2026-01-01T00:00:00Z' format: date-time required: - from - to ApiV2HostReportRunTotalSalesReportRunParametersDto: type: object properties: reportType: enum: - total-sales type: string x-enumNames: - TEACHER_PAYROLL - TEACHER_PAYROLL_UNLIMITED - ADDITIONAL_TEACHER_PAYROLL - COMBINED_TEACHER_PAYROLL - TOTAL_SALES - VIDEO_VIEWS - STAFF_TIME_TRACKING - SERVICE_SALES - SALES_BY_CATEGORY - SALES_BY_APPOINTMENT - APPOINTMENTS_PAYROLL - APPOINTMENTS_ATTENDANCE - RETENTION - PRODUCT_SALES - PRODUCT_INVENTORY - ON_DEMAND_SALES - MEMBERSHIP_SALES - DISCOUNT_CODE_SALES - CUSTOMER_LIST - CUSTOMER_FIELD_VALUES - CUSTOMER_BIRTHDAYS - COURSE_SALES - ATTENDANCE - DECLINED_RENEWALS - FAILED_DIRECT_DEBIT_PAYMENTS - UPCOMING_RENEWALS - MEMBERSHIP_RENEWALS - CARDS_EXPIRATION - PAYMENT_PLANS_PAYMENTS - PRODUCT_SALES_BY_PRODUCT - PRODUCT_SALES_BY_SUPPLIER - MEMBERSHIP_CANCELLATIONS - ADDITIONAL_BOOKINGS - TOTAL_BOOKINGS - NEW_VISITORS - NEW_MEMBERS - NEW_CUSTOMERS - PRODUCT_SALES_BY_CATEGORY - REFUNDS - OUTSTANDING_MONEY_CREDITS - OUTSTANDING_EVENT_CREDITS - MEMBERSHIP_STATS - AUTOSUBSTITUTE_RESPONSES - LATE_CANCELLATIONS - SALES_BY_TAGS - FROZEN_MEMBERSHIPS - STAFF_HOURS - TEACHERS_BY_PAYRATE - NO_SHOWS - APPOINTMENT_NO_SHOWS - SESSION_BOOKINGS - APPOINTMENT_BOOKINGS - UPCOMING_MEMBERSHIPS_EXPIRATION - MEMBERSHIPS_EXPIRATION - NOT_ACTIVATED_MEMBERSHIPS - UNPAID_BOOKINGS - FAILED_PAYMENT_PLAN_PAYMENTS - FAILED_TUITION_INSTALLMENT_PAYMENTS - NON_RETURNING_CUSTOMERS - NON_MEMBER_CUSTOMERS - MEMBER_CUSTOMERS - ACTIVE_MEMBERS - TOTAL_VISITS - MEMBER_KEY_SCAN_IDENTIFICATIONS - VISITS_OVERVIEW - RECURRING_EVENT_ATTENDANCE - INTRO_OFFERS_SALES - INTRO_OFFERS_UPCOMING_EXPIRATIONS - INTRO_OFFERS_EXPIRED - INTRO_OFFERS_CONVERSIONS - CUSTOMER_LEADS_CONVERSIONS - GIFT_CARD_SALES - UNSUBSCRIBED_CUSTOMERS_FROM_MARKETING_EMAILS - CUSTOMER_ATTENDANCE_ANALYSIS - STUDIO_GROW_KPI - CUSTOMER_REFERRAL_REWARDS - PAYROLL - CUSTOMER_LEADS_FIELD_VALUES - TIP - CUSTOMER_LEADS_KPI - CUSTOMER_LEADS_KPI_NMS - FACEBOOK_INSTAGRAM_ROI_CALCULATOR - GUEST_PASS_USAGE_SESSIONS - CUSTOMER_RANKINGS_MEMBERS - COMMISSIONS - FRANCHISE_FEES - APPOINTMENT_BOOKING_CANCELLATIONS - NEW_LEADS_AND_CUSTOMERS - APPOINTMENT_VISITORS_WITHOUT_UPCOMING_BOOKINGS - COURSE_QUIZ_SUBMISSIONS - APPOINTMENT_RESERVATIONS - BUSINESS_AT_GLANCE - DECLINED_PENALTY_CHARGES - APPOINTMENT_ADDONS - SPOTFILLERS - FRANCHISE_SALES - APPOINTMENT_SERVICE_AND_RETAIL_ANALYSIS_BY_EMPLOYEE - MOLONI_TRANSACTIONS - APPOINTMENTS_PRODUCTS_STAFF_PERFORMANCE - FRANCHISE_GIFT_CARD_RECONCILIATION - SESSION_OCCUPANCY - REVENUE_BREAKDOWN - OPEN_AREA_VISITS - SALES_BY_OPEN_AREA_VISIT - SESSION_ADDONS - MEMBERSHIP_RECONCILIATION - REWARDS_POINTS_MOVEMENTS - REWARDS_POINTS_BALANCES hostId: type: integer dateRange: $ref: '#/components/schemas/DateRangeDto' locationId: type: integer tagId: type: integer moneyCreditSalesFilter: enum: - noFilter - filterOutMoneyCreditSales - filterOutSalesPaidByMoneyCredits type: string x-enumNames: - NO_FILTER - FILTER_OUT_MONEY_CREDIT_SALES - FILTER_OUT_SALES_PAID_BY_MONEY_CREDITS includeRefunds: type: boolean saleTypes: type: array items: enum: - membership - session - appointment - product - video - course - gift-card - monthly-subscription - custom-member-payment-plan-installment - money-credit - event-credit - auto-attendance-penalty - auto-attendance-penalty-retry-fee - stripe-refund - refund - tips - appointment-deposit - tuition-installment - tuition-registration-fee - appointment-addon - open-area-visit - membership-freeze-fee - membership-cancellation-fee - membership-renewal-retry-fee - membership-transfer-fee - membership-joining-fee - session-addon type: string x-enumNames: - MEMBERSHIP - SESSION - APPOINTMENT - PRODUCT - VIDEO - COURSE - GIFT_CARD - MONTHLY_SUBSCRIPTION - CUSTOM_MEMBER_PAYMENT_PLAN_INSTALLMENT - MONEY_CREDIT - EVENT_CREDIT - AUTO_ATTENDANCE_PENALTY - AUTO_ATTENDANCE_PENALTY_RETRY_FEE - STRIPE_REFUND - REFUND - TIPS - APPOINTMENT_DEPOSIT - TUITION_INSTALLMENT - TUITION_REGISTRATION_FEE - APPOINTMENT_ADDON - OPEN_AREA_VISIT - MEMBERSHIP_FREEZE_FEE - MEMBERSHIP_CANCELLATION_FEE - MEMBERSHIP_RENEWAL_RETRY_FEE - MEMBERSHIP_TRANSFER_FEE - MEMBERSHIP_JOINING_FEE - SESSION_ADDON excludeGiftCardPaymentMethod: type: boolean excludeTransactionFeesInSaleValue: type: boolean required: - reportType - hostId - dateRange ApiV2HostReportRunFranchiseGiftCardReconciliationReportRunParametersDto: type: object properties: reportType: enum: - franchise-gift-card-reconciliation type: string x-enumNames: - TEACHER_PAYROLL - TEACHER_PAYROLL_UNLIMITED - ADDITIONAL_TEACHER_PAYROLL - COMBINED_TEACHER_PAYROLL - TOTAL_SALES - VIDEO_VIEWS - STAFF_TIME_TRACKING - SERVICE_SALES - SALES_BY_CATEGORY - SALES_BY_APPOINTMENT - APPOINTMENTS_PAYROLL - APPOINTMENTS_ATTENDANCE - RETENTION - PRODUCT_SALES - PRODUCT_INVENTORY - ON_DEMAND_SALES - MEMBERSHIP_SALES - DISCOUNT_CODE_SALES - CUSTOMER_LIST - CUSTOMER_FIELD_VALUES - CUSTOMER_BIRTHDAYS - COURSE_SALES - ATTENDANCE - DECLINED_RENEWALS - FAILED_DIRECT_DEBIT_PAYMENTS - UPCOMING_RENEWALS - MEMBERSHIP_RENEWALS - CARDS_EXPIRATION - PAYMENT_PLANS_PAYMENTS - PRODUCT_SALES_BY_PRODUCT - PRODUCT_SALES_BY_SUPPLIER - MEMBERSHIP_CANCELLATIONS - ADDITIONAL_BOOKINGS - TOTAL_BOOKINGS - NEW_VISITORS - NEW_MEMBERS - NEW_CUSTOMERS - PRODUCT_SALES_BY_CATEGORY - REFUNDS - OUTSTANDING_MONEY_CREDITS - OUTSTANDING_EVENT_CREDITS - MEMBERSHIP_STATS - AUTOSUBSTITUTE_RESPONSES - LATE_CANCELLATIONS - SALES_BY_TAGS - FROZEN_MEMBERSHIPS - STAFF_HOURS - TEACHERS_BY_PAYRATE - NO_SHOWS - APPOINTMENT_NO_SHOWS - SESSION_BOOKINGS - APPOINTMENT_BOOKINGS - UPCOMING_MEMBERSHIPS_EXPIRATION - MEMBERSHIPS_EXPIRATION - NOT_ACTIVATED_MEMBERSHIPS - UNPAID_BOOKINGS - FAILED_PAYMENT_PLAN_PAYMENTS - FAILED_TUITION_INSTALLMENT_PAYMENTS - NON_RETURNING_CUSTOMERS - NON_MEMBER_CUSTOMERS - MEMBER_CUSTOMERS - ACTIVE_MEMBERS - TOTAL_VISITS - MEMBER_KEY_SCAN_IDENTIFICATIONS - VISITS_OVERVIEW - RECURRING_EVENT_ATTENDANCE - INTRO_OFFERS_SALES - INTRO_OFFERS_UPCOMING_EXPIRATIONS - INTRO_OFFERS_EXPIRED - INTRO_OFFERS_CONVERSIONS - CUSTOMER_LEADS_CONVERSIONS - GIFT_CARD_SALES - UNSUBSCRIBED_CUSTOMERS_FROM_MARKETING_EMAILS - CUSTOMER_ATTENDANCE_ANALYSIS - STUDIO_GROW_KPI - CUSTOMER_REFERRAL_REWARDS - PAYROLL - CUSTOMER_LEADS_FIELD_VALUES - TIP - CUSTOMER_LEADS_KPI - CUSTOMER_LEADS_KPI_NMS - FACEBOOK_INSTAGRAM_ROI_CALCULATOR - GUEST_PASS_USAGE_SESSIONS - CUSTOMER_RANKINGS_MEMBERS - COMMISSIONS - FRANCHISE_FEES - APPOINTMENT_BOOKING_CANCELLATIONS - NEW_LEADS_AND_CUSTOMERS - APPOINTMENT_VISITORS_WITHOUT_UPCOMING_BOOKINGS - COURSE_QUIZ_SUBMISSIONS - APPOINTMENT_RESERVATIONS - BUSINESS_AT_GLANCE - DECLINED_PENALTY_CHARGES - APPOINTMENT_ADDONS - SPOTFILLERS - FRANCHISE_SALES - APPOINTMENT_SERVICE_AND_RETAIL_ANALYSIS_BY_EMPLOYEE - MOLONI_TRANSACTIONS - APPOINTMENTS_PRODUCTS_STAFF_PERFORMANCE - FRANCHISE_GIFT_CARD_RECONCILIATION - SESSION_OCCUPANCY - REVENUE_BREAKDOWN - OPEN_AREA_VISITS - SALES_BY_OPEN_AREA_VISIT - SESSION_ADDONS - MEMBERSHIP_RECONCILIATION - REWARDS_POINTS_MOVEMENTS - REWARDS_POINTS_BALANCES hostId: type: integer dateRange: $ref: '#/components/schemas/DateRangeDto' required: - reportType - hostId - dateRange ApiV2HostCreateReportRunResponseDto: type: object properties: id: type: integer required: - id ApiV2HostCreateReportRunRequestDto: type: object properties: parameters: oneOf: - $ref: >- #/components/schemas/ApiV2HostReportRunTotalSalesReportRunParametersDto - $ref: >- #/components/schemas/ApiV2HostReportRunFranchiseGiftCardReconciliationReportRunParametersDto required: - parameters ApiV2HostReportRunTotalSalesReportRunDataDto: type: object properties: items: type: array items: oneOf: - $ref: '#/components/schemas/ApiV2HostReportRunEventSaleItemDto' - $ref: '#/components/schemas/ApiV2HostReportRunMembershipSaleItemDto' - $ref: '#/components/schemas/ApiV2HostReportRunCourseSaleItemDto' - $ref: '#/components/schemas/ApiV2HostReportRunVideoSaleItemDto' - $ref: '#/components/schemas/ApiV2HostReportRunProductSaleItemDto' - $ref: >- #/components/schemas/ApiV2HostReportRunAutomatedPenaltyChargeDto - $ref: '#/components/schemas/ApiV2HostReportRunAppointmentSaleItemDto' - $ref: >- #/components/schemas/ApiV2HostReportRunAppointmentAddonSaleItemDto - $ref: >- #/components/schemas/ApiV2HostReportRunAppointmentDepositSaleItemDto - $ref: '#/components/schemas/ApiV2HostReportRunGiftCardSaleItemDto' - $ref: >- #/components/schemas/ApiV2HostReportRunPaymentPlanInstallmentSaleItemDto - $ref: '#/components/schemas/ApiV2HostReportRunTipTotalSaleItemDto' - $ref: >- #/components/schemas/ApiV2HostReportRunTuitionInstallmentSaleItemDto - $ref: >- #/components/schemas/ApiV2HostReportRunTuitionRegistrationFeeSaleItemDto - $ref: >- #/components/schemas/ApiV2HostReportRunMembershipRenewalRetryFeeSaleItemDto - $ref: >- #/components/schemas/ApiV2HostReportRunMembershipFreezeFeeSaleItemDto - $ref: >- #/components/schemas/ApiV2HostReportRunMembershipCancellationFeeSaleItemDto - $ref: '#/components/schemas/ApiV2HostReportRunRefundSaleItemDto' reportType: type: string enum: - total-sales required: - items - reportType TransactionItemDto: type: object properties: paymentTransactionItemId: type: integer nullable: true paymentTransactionId: type: integer nullable: true paymentMethod: type: string nullable: true paidInCurrency: type: number nullable: true paidInMoneyCredits: type: number nullable: true vatAmountInCurrency: type: number nullable: true membershipType: type: string nullable: true membershipName: type: string nullable: true homeLocation: type: string nullable: true note: type: string nullable: true saleReference: type: string nullable: true paymentMethodWeight: type: number nullable: true saleItemId: type: integer required: - paymentTransactionItemId - paymentTransactionId - paymentMethod - paidInCurrency - paidInMoneyCredits - vatAmountInCurrency - membershipType - membershipName - note - paymentMethodWeight - saleItemId ApiV2HostReportRunEventSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - event type: string x-enumNames: - EVENT eventType: enum: - private - special-event - special-event-new - retreat - fitness - course - course-class - semester - recital type: string x-enumNames: - PRIVATE - SPECIAL_EVENT - SPECIAL_EVENT_NEW - RETREAT - FITNESS - COURSE - COURSE_CLASS - SEMESTER - RECITAL eventIsSemesterClass: type: boolean details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - eventType - eventIsSemesterClass - details ApiV2HostReportRunMembershipSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - membership - pack - subscription type: string x-enumNames: - MEMBERSHIP - PACKAGE - SUBSCRIPTION membershipType: enum: - subscription - on-demand-subscription - package-events - package-money - patron type: string x-enumNames: - Subscription - OnDemandSubscription - PackageEvents - PackageMoney - Patron details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - membershipType - details ApiV2HostReportRunCourseSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - course type: string x-enumNames: - COURSE details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunVideoSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - on-demand type: string x-enumNames: - ON_DEMAND details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunProductSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - product type: string x-enumNames: - PRODUCT details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunAutomatedPenaltyChargeDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - automatic-penalty-charge type: string x-enumNames: - AUTOMATIC_PENALTY_CHARGE details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunAppointmentSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - appointment type: string x-enumNames: - APPOINTMENT details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunAppointmentAddonSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - appointment type: string x-enumNames: - APPOINTMENT details: type: object additionalProperties: true isAddonItem: type: number enum: - true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details - isAddonItem ApiV2HostReportRunAppointmentDepositSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - appointment type: string x-enumNames: - APPOINTMENT details: type: object additionalProperties: true isDepositItem: type: number enum: - true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details - isDepositItem ApiV2HostReportRunGiftCardSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - gift-card type: string x-enumNames: - GIFT_CARD details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunPaymentPlanInstallmentSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - payment-plan-installment type: string x-enumNames: - PAYMENT_PLAN_INSTALLMENT details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunTipTotalSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - tip type: string x-enumNames: - TIP required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory ApiV2HostReportRunTuitionInstallmentSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - tuition-installment type: string x-enumNames: - TUITION_INSTALLMENT details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunTuitionRegistrationFeeSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - tuition-registration-fee type: string x-enumNames: - TUITION_REGISTRATION_FEE details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunMembershipRenewalRetryFeeSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - membership-renewal-retry-fee type: string x-enumNames: - MEMBERSHIP_RENEWAL_RETRY_FEE details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunMembershipFreezeFeeSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - membership-freeze-fee type: string x-enumNames: - MEMBERSHIP_FREEZE_FEE details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunMembershipCancellationFeeSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - membership-cancellation-fee type: string x-enumNames: - MEMBERSHIP_CANCELLATION_FEE details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details ApiV2HostReportRunRefundSaleItemDto: type: object properties: memberId: type: integer nullable: true customerName: type: string customerEmail: type: string payingCustomerEmail: type: string payingCustomerName: type: string payingMemberId: type: integer saleItemId: type: integer paymentDate: type: string format: date-time serviceDate: type: string nullable: true format: date-time paymentValue: type: number nullable: true paidInMoneyCredits: type: number nullable: true paymentVat: type: number nullable: true paymentItem: type: string paymentMethod: type: string paymentStatus: nullable: true enum: - succeeded - failed - pending - voided - unpaid - incomplete type: string x-enumNames: - SUCCEEDED - FAILED - PENDING - VOIDED - UNPAID - INCOMPLETE paymentTransactionId: type: integer nullable: true refunded: type: number stripeToken: type: string nullable: true currency: type: string nullable: true customerSelectedLocation: type: string soldBy: type: string transactionItems: type: array items: $ref: '#/components/schemas/TransactionItemDto' location: type: string nullable: true saleReference: type: string nullable: true paymentCategory: enum: - refund type: string x-enumNames: - REFUND details: type: object additionalProperties: true required: - memberId - customerName - customerEmail - payingCustomerEmail - payingCustomerName - payingMemberId - saleItemId - paymentDate - serviceDate - paymentValue - paidInMoneyCredits - paymentVat - paymentItem - paymentMethod - paymentStatus - paymentTransactionId - refunded - stripeToken - currency - transactionItems - paymentCategory - details TotalsDto: type: object properties: amountReceivable: type: number amountPayable: type: number balance: type: number required: - amountReceivable - amountPayable - balance PaymentTransactionItemDto: type: object properties: id: type: integer createdAt: type: string format: date-time isAmountReceivable: type: boolean transactionHostName: type: string giftCardPurchaseHostName: type: string giftCardPurchaseHostId: type: integer giftCardCode: type: string paidInCurrency: type: number required: - id - createdAt - isAmountReceivable - transactionHostName - giftCardPurchaseHostName - giftCardPurchaseHostId - giftCardCode - paidInCurrency FranchiseGiftCardReconciliationItemDto: type: object properties: hostName: type: string totals: $ref: '#/components/schemas/TotalsDto' paymentTransactionItems: type: array items: $ref: '#/components/schemas/PaymentTransactionItemDto' required: - hostName - totals - paymentTransactionItems ApiV2HostReportRunFranchiseGiftCardReconciliationReportRunDataDto: type: object properties: items: type: array items: $ref: '#/components/schemas/FranchiseGiftCardReconciliationItemDto' reportType: type: string enum: - franchise-gift-card-reconciliation required: - items - reportType ApiV2HostGetReportRunResponseDto: type: object properties: parameters: oneOf: - $ref: >- #/components/schemas/ApiV2HostReportRunTotalSalesReportRunParametersDto - $ref: >- #/components/schemas/ApiV2HostReportRunFranchiseGiftCardReconciliationReportRunParametersDto data: oneOf: - $ref: >- #/components/schemas/ApiV2HostReportRunTotalSalesReportRunDataDto - $ref: >- #/components/schemas/ApiV2HostReportRunFranchiseGiftCardReconciliationReportRunDataDto id: type: integer status: enum: - queued - running - completed - failed type: string x-enumNames: - QUEUED - RUNNING - COMPLETED - FAILED required: - parameters - data - id - status securitySchemes: OAuth2: type: oauth2 flows: password: scopes: {} tokenUrl: /api/v2/auth/token authorizationCode: authorizationUrl: /api/v2/auth/authorize tokenUrl: /api/v2/auth/token scopes: {} OAuth2ApiClient: type: http scheme: basic description: Use your `client_id` as username and `client_secret` as password security: - OAuth2: [] OAuth2ApiClient: []