openapi: 3.0.0 info: title: Momence Public auth host API description: '' version: '2.0' contact: {} servers: - url: https://api.momence.com description: Production API security: - OAuth2: [] OAuth2ApiClient: [] tags: - name: host paths: /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/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. \n \nThis endpoint returns a list of host sales. \nThe default sorting mode is DESC (newest sales first), but you can also specify ASC (oldest sales first). \nFor 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. \n**Tip:** You can find the ID within the *ApiV2HostSessionBookingDto* object (`id` field) returned from the session booking list endpoint. \n**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. \n**Tip:** You can find the ID within the ApiV2HostSessionBookingDto object (`recurringBookingId` field) returned from the session booking list endpoint. \n**Note:** This endpoint cancels both recurring booking and individual bookings originating from the same. \nUser 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 \n \n| Error | Description |\n| --- | --- |\n| err-member-not-found | member not found |\n| err-member-not-assigned-to-host | member is not assigned to the host |\n| err-session-not-found | session not found |\n| err-session-not-provided-by-host | session not provided by the host |\n| err-customer-age-prevents-from-action | member is not eligible due to age restrictions |\n| err-missing-customer-date-of-birth | member is missing date of birth value |\n| err-missing-date-of-birth-setting | host is missing date of birth settings |\n| err-invalid-date-of-birth-value | member has invalid date of birth value |\n| 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 \n \n**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. \n \n| Error | Description |\n| --- | --- |\n| err-waitlist-not-allowed | session does not have waitlist enabled |\n| err-waitlist-full | session waitlist is full |\n| err-member-already-on-waitlist | member is already on the waitlist |\n| err-member-not-found | member not found |\n| err-member-not-assigned-to-host | member is not assigned to the host |\n| err-session-not-found | session not found |\n| err-session-not-provided-by-host | session not provided by the host |\n| err-customer-age-prevents-from-action | member is not eligible due to age restrictions |\n| err-missing-customer-date-of-birth | member is missing date of birth value |\n| err-missing-date-of-birth-setting | host is missing date of birth settings |\n| 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/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-01 00:00:00+00:00 to: 2026-01-30 00:00:00+00:00 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-01 00:00:00+00:00 to: 2026-01-30 00:00:00+00:00 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-01 00:00:00+00:00 to: 2026-01-30 00:00:00+00:00 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-01 00:00:00+00:00 to: 2026-01-30 00:00:00+00:00 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-01 00:00:00+00:00 to: 2026-01-30 00:00:00+00:00 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-01 23:31:06.515000+00:00 serviceDate: 2026-01-01 23:31:06.882000+00:00 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: [] components: schemas: 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 TemplateIdDto: type: object properties: templateId: type: integer required: - templateId 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 LocationIdDto: type: object properties: locationId: type: integer required: - locationId 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 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 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 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 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 TeacherIdDto: type: object properties: teacherId: type: integer required: - teacherId 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 SessionsCountDto: type: object properties: type: enum: - moreThan - lessThan - exactly type: string value: type: integer required: - type - value CustomDropdownFieldDto: type: object properties: fieldId: type: integer type: enum: - equalsTo - isEmpty - isNotEmpty type: string value: type: string nullable: true required: - fieldId - type TotalsDto: type: object properties: amountReceivable: type: number amountPayable: type: number balance: type: number required: - amountReceivable - amountPayable - balance 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' 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 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 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 HostSaleAppointmentDto: type: object properties: id: type: integer example: 3 name: type: string example: Stretching with John required: - id - name HostSaleMemberDto: type: object properties: id: type: integer example: 1 firstName: type: string example: John lastName: type: string example: Doe required: - id - firstName - lastName 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 HostSaleProductVariantDto: type: object properties: id: type: integer example: 3 name: type: string example: M required: - id - name CustomBooleanFieldDto: type: object properties: fieldId: type: integer value: type: string required: - fieldId - value 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 PaginatedResponseDto: type: object properties: pagination: $ref: '#/components/schemas/PaginatedResponseDataDto' required: - pagination 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 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 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 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 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 HostSessionWaitlistBookingResponseDto: type: object properties: waitlistBookingId: type: integer example: 1 required: - waitlistBookingId HostFreeSessionBookingRequestDto: type: object properties: memberId: type: integer example: 1 createRecurringBooking: type: boolean example: true required: - memberId HostSessionBookingCancelRequestDto: type: object properties: refund: type: boolean disableNotifications: type: boolean isLateCancellation: type: boolean required: - refund - disableNotifications - isLateCancellation 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 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 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 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 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 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 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 ApiV2AppointmentReservationBoardDto: type: object properties: id: type: integer example: 1 name: type: string example: Yoga Private Appointments required: - id - name 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 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 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 HostMemberUpdatePhoneNumberRequestDto: type: object properties: phoneNumber: type: string required: - phoneNumber 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 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 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 FranchiseGiftCardReconciliationItemDto: type: object properties: hostName: type: string totals: $ref: '#/components/schemas/TotalsDto' paymentTransactionItems: type: array items: $ref: '#/components/schemas/PaymentTransactionItemDto' required: - hostName - totals - paymentTransactionItems 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 MemberLocationDto: type: object properties: id: type: integer example: 1 name: type: string example: Main Studio required: - id - name 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 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 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 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 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 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 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 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 HostSessionWaitlistBookingRequestDto: type: object properties: memberId: type: integer example: 1 useBoughtMembershipIds: example: - 2 type: array items: type: integer required: - memberId HostFreeSessionBookingResponseDto: type: object properties: sessionBookingId: type: integer example: 1 sessionRecurringBookingId: type: integer example: 2 required: - sessionBookingId 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 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 HostSessionRecurringBookingCancelRequestDto: type: object properties: afterSessionId: type: integer example: 123456 HostMemberUpdateEmailRequestDto: type: object properties: email: type: string required: - email 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 SessionIdDto: type: object properties: sessionId: type: integer required: - sessionId HostSalePaymentTransactionDto: type: object properties: items: type: array items: $ref: '#/components/schemas/HostSalePaymentTransactionItemDto' required: - items 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 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 MembershipIdDto: type: object properties: membershipId: type: integer required: - membershipId ApiV2HostCreateReportRunRequestDto: type: object properties: parameters: oneOf: - $ref: '#/components/schemas/ApiV2HostReportRunTotalSalesReportRunParametersDto' - $ref: '#/components/schemas/ApiV2HostReportRunFranchiseGiftCardReconciliationReportRunParametersDto' required: - parameters 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 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 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 ApiV2HostReportRunFranchiseGiftCardReconciliationReportRunDataDto: type: object properties: items: type: array items: $ref: '#/components/schemas/FranchiseGiftCardReconciliationItemDto' reportType: type: string enum: - franchise-gift-card-reconciliation required: - items - reportType 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 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 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 ApiV2BoughtMembershipDeclinedRenewalDto: type: object properties: declinedAt: type: string format: date-time cardLast4: type: string nullable: true required: - declinedAt - cardLast4 AppointmentServiceIdDto: type: object properties: appointmentServiceId: type: integer required: - appointmentServiceId 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 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 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 HomeLocationDto: type: object properties: locationId: type: integer nullable: true required: - locationId 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 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 CustomTextFieldDto: type: object properties: fieldId: type: integer type: enum: - includes - equalsTo - isEmpty - isNotEmpty type: string value: type: string required: - fieldId - type 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 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 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 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 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 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 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 ApiV2HostMemberCreateResponseDto: type: object properties: memberId: type: integer required: - memberId SessionSeriesIdDto: type: object properties: seriesId: type: integer required: - seriesId FutureBookingsCountDto: type: object properties: type: enum: - moreThan - lessThan - exactly type: string value: type: integer required: - type - value 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 HostSaleOpenAreaDto: type: object properties: id: type: integer example: 3 name: type: string example: Gym A required: - id - name 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 BasicEntityIdentifierDto: type: object properties: id: type: integer name: type: string required: - id - name HostMemberUpdateNameRequestDto: type: object properties: firstName: type: string minLength: 1 maxLength: 100 lastName: type: string minLength: 1 maxLength: 100 required: - firstName - lastName 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 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 CustomerRankingsDto: type: object properties: customerRankingId: type: integer customerHaveRanking: enum: - have - not-have type: string required: - customerRankingId HostSaleProductDto: type: object properties: id: type: integer example: 3 name: type: string example: T-Shirt required: - id - name 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 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 ApiV2HostCreateReportRunResponseDto: type: object properties: id: type: integer required: - id ApiV2AppointmentReservationServiceDto: type: object properties: id: type: integer example: 1 name: type: string example: Couple Massage required: - id - name 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 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' 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