import { QueryExtendedBookingRequest as QueryExtendedBookingRequest$1, QueryExtendedBookingResponse as QueryExtendedBookingResponse$1, QueryExtendedBookingsRequest as QueryExtendedBookingsRequest$1, QueryExtendedBookingsResponse as QueryExtendedBookingsResponse$1, CountExtendedBookingsRequest as CountExtendedBookingsRequest$1, CountExtendedBookingsResponse as CountExtendedBookingsResponse$1 } from './index.typings.mjs'; import '@wix/sdk-types'; /** Extended bookings. */ interface ExtendedBooking { /** Booking. */ booking?: Booking; /** * Information about the actions the customer can perform for the * booking. Available only when you've specified `withBookingAllowedActions` as * `true`. */ allowedActions?: AllowedActions; /** * Information about the attendance. Available only when passing * `withBookingAttendanceInfo` as `true`. */ attendance?: Attendance; /** * Information about the online conferencing details. Available only when passing * `withBookingConferencingDetails` as `true`. */ conferencingDetails?: ConferencingDetails; /** * Information about the booking's policy settings according to the relevant * booking policy snapshot. * * Available only when you've specified `withBookingPolicySettings` as `true`. */ bookingPolicySettings?: BookingPolicySettings; /** * Information about [booking fee](https://dev.wix.com/docs/api-reference/business-solutions/bookings/pricing/booking-fees/introduction) * statuses. Available only if you've specified * `withBookingFeeDetails` as `true`. * * Only details for fees that have already been applied to a booking are * returned. No details are provided for the following scenarios: * - Hypothetical fees related to a potential future cancellation by the customer. * - Scenarios where the booking has been canceled before the start of the earliest cancellation window that includes a penalty. * * To retrieve hypothetical booking fees, call [List Booking Fees By Booking Ids](https://dev.wix.com/docs/api-reference/business-solutions/bookings/pricing/booking-fees/list-booking-fees-by-booking-ids) * instead. */ bookingFeeDetails?: BookingFeeDetails; /** * Information about the booking order. * Available only when specified `withEcomOrder` as `true`. * * For a monthly-subscription booking (each billing cycle has its own order), this is the order for the * booking's current billing cycle, the one whose cycle matches `subscriptionInfo.currentCycle`. * For all other bookings, it's the booking's single order. * * Learn more about [eCommerce orders](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction). */ order?: Order; /** * Information about the booking waiver. * Available only when specified `withWaiver` as `true`. */ waiver?: Waiver; /** * Information about the booking order transactions. * Available only when specified `withEcomTransactions` as `true`. */ transactions?: OrderTransactions; /** * Information about the booking form submission. * Available only when specified `withFormSubmissions` as `true`. * @maxSize 100 */ formSubmissions?: FormSubmission[]; /** * Subscription payment info. Populated for course bookings with subscription pricing only. * * Available only when `withEcomOrder` is `true`. */ subscriptionInfo?: SubscriptionInfo; /** * Event notes associated with the booking's event. * Available only when specified `withEventNotes` as `true`. * * You must have the `CALENDAR.EVENT_READ_PI` permission scope * when passing `true`. * @internal */ eventNotes?: string | null; /** * Deferred charge info. Available only when `withDeferredCharge` is `true`. * @internal */ deferredChargeInfo?: DeferredChargeInfo; } declare enum DeferredChargeStatus { /** Charge is scheduled and waiting to be initiated. */ PENDING = "PENDING", /** Charge has been submitted to the payment provider. */ INITIATED = "INITIATED", /** Charge was successfully collected. */ CHARGED = "CHARGED", /** Charge was declined by the payment provider. */ DECLINED = "DECLINED", /** A retry is scheduled after a transient decline. */ RETRYING = "RETRYING", /** Charge was skipped (e.g., booking has no payment method on file). */ SKIPPED = "SKIPPED", /** Charge was canceled before collection. */ CANCELED = "CANCELED", /** Charge was permanently abandoned after exhausting all retries. */ ABANDONED = "ABANDONED" } /** @enumType */ type DeferredChargeStatusWithLiterals = DeferredChargeStatus | 'PENDING' | 'INITIATED' | 'CHARGED' | 'DECLINED' | 'RETRYING' | 'SKIPPED' | 'CANCELED' | 'ABANDONED'; declare enum DeferredChargeDeclineReason { /** The payment method had insufficient funds. */ INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS", /** The payment method has expired. */ EXPIRED = "EXPIRED", /** The charge attempt failed for a general reason. */ CHARGE_FAILED = "CHARGE_FAILED", /** The charge failed for another reason. */ OTHER = "OTHER" } /** @enumType */ type DeferredChargeDeclineReasonWithLiterals = DeferredChargeDeclineReason | 'INSUFFICIENT_FUNDS' | 'EXPIRED' | 'CHARGE_FAILED' | 'OTHER'; declare enum AttendanceStatus { /** There is no available attendance information. */ NOT_SET = "NOT_SET", /** At least a single participant attended the session. */ ATTENDED = "ATTENDED", /** No participants attended the session. */ NOT_ATTENDED = "NOT_ATTENDED" } /** @enumType */ type AttendanceStatusWithLiterals = AttendanceStatus | 'NOT_SET' | 'ATTENDED' | 'NOT_ATTENDED'; /** An entity representing a scheduled appointment, class session, or course. */ interface Booking extends BookingParticipantsInfoOneOf { /** * Total number of participants. * When creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction). * @min 1 */ totalParticipants?: number; /** * Information about the booked service choices and participant count for each choice. * When creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction). * * For example, use this for a spa package booking that includes different service levels: * - 2 participants chose "Standard Package". * - 1 participant chose "VIP Package". */ participantsChoices?: ParticipantChoices; /** * Booking ID. * @format GUID * @readonly */ id?: string | null; /** * An object describing the bookable entity - either a specific time slot or a recurring schedule. * * The structure depends on the type of service being booked: * * __For appointment services__: Use `slot` to book a specific time slot with a * service provider. Appointments are typically one-time sessions at a specific date and time. * * __For class services__: Use `slot` to book a specific class session. Classes * are individual sessions that can have multiple participants. * * __For course services__: Use `schedule` to book an entire course consisting of * multiple sessions over time. Courses are recurring, multi-session offerings. * * Choose the appropriate field based on your service type and booking requirements. */ bookedEntity?: BookedEntity; /** * Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction) * making the booking. */ contactDetails?: ContactDetails; /** * Additional custom fields submitted with the booking form. * Deprecated due to Bookings integrating with Wix Forms. * You can call Wix Forms' [Get Submission](https://dev.wix.com/docs/api-reference/crm/forms/form-submissions/get-submission) specifying `formSubmissionId` as the `id` to get the submitted booking form data. * Read more about the [Bookings Forms integration](https://dev.wix.com/docs/api-reference/business-solutions/bookings/wix-forms-integration). * @deprecated Additional custom fields submitted with the booking form. * Deprecated due to Bookings integrating with Wix Forms. * You can call Wix Forms' [Get Submission](https://dev.wix.com/docs/api-reference/crm/forms/form-submissions/get-submission) specifying `formSubmissionId` as the `id` to get the submitted booking form data. * Read more about the [Bookings Forms integration](https://dev.wix.com/docs/api-reference/business-solutions/bookings/wix-forms-integration). * @replacedBy form_submission_id * @targetRemovalDate 2026-03-31 */ additionalFields?: CustomFormField[]; /** * Number of participants. * @internal * @min 1 */ numberOfParticipants?: number | null; /** * Internal business note. * @internal * @deprecated Internal business note. * @targetRemovalDate 2026-03-31 */ internalBusinessNote?: string | null; /** * Booking status. A booking is automatically confirmed if the service allows it * and an eCommerce order is created. It is automatically declined if there is a * double booking and the customer hasn't paid or is eligible for an automatic * refund. Currently, only payments with pricing plans are automatically refundable. */ status?: BookingStatusWithLiterals; /** * The payment status of the booking. This field automatically syncs with the * `paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction) * when customers use Wix eCommerce checkout. * * ### Integration patterns * * __When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status. * Do not manually update this field. * * __When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state. * * __For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription. * * All payment statuses are supported for every booking `status`. */ paymentStatus?: PaymentStatusWithLiterals; /** * Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`. * * When the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required. * Otherwise, the Create Booking call fails. * For custom checkouts, you don't have to specify this field. */ selectedPaymentOption?: SelectedPaymentOptionWithLiterals; /** * Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format. * @readonly */ createdDate?: Date | null; /** External user ID that you can provide. */ externalUserId?: string | null; /** * Platform and app that created the booking. * @internal */ bookingSource?: BookingSource; /** * The last notification used by Cancel, Confirm, Decline, or Reschedule Booking. * @internal * @deprecated The last notification used by Cancel, Confirm, Decline, or Reschedule Booking. * @targetRemovalDate 2026-03-31 */ participantNotification?: ParticipantNotification; /** * When `true`, an SMS reminder is sent to the phone number specified in * `contactDetails` 24 hours before the session starts. * @internal * @deprecated When `true`, an SMS reminder is sent to the phone number specified in * `contactDetails` 24 hours before the session starts. * @targetRemovalDate 2026-03-31 */ sendSmsReminder?: boolean | null; /** * Revision number to be used when updating, rescheduling, or cancelling the booking. * Increments by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking. */ revision?: string | null; /** * ID of the creator of the booking. * If `appId` and another ID are present, the other ID takes precedence. * @readonly */ createdBy?: IdentificationData; /** * The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format. * For a slot, this is the start date of the slot. For a schedule, this is the start date of the first session. * @readonly */ startDate?: Date | null; /** * The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format. * For a slot, this is the end date of the slot. For a schedule, this is the end date of the last session. * @readonly */ endDate?: Date | null; /** * Settings that modify the standard booking flow. * Use these settings to override default business rules and policies when needed. * Make sure the call's [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) has the required permissions. * @internal */ flowControlSettings?: FlowControlSettings; /** * Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format. * @readonly */ updatedDate?: Date | null; /** * Custom field data for this object. * Extended fields must be configured in the app dashboard before they can be accessed with API calls. */ extendedFields?: ExtendedFields; /** * Whether this booking overlaps with another confirmed booking. Returned * only if set to `true`. * @readonly */ doubleBooked?: boolean | null; /** * Whether this booking availability should be checked with v1 or v2. * @internal */ v2Availability?: boolean | null; /** * Multi-service booking info of which the booking is part of. * @readonly */ multiServiceBookingInfo?: MultiServiceBookingInfo; /** * The date this booking was canceled in `YYYY-MM-DDThh:mm:ss.sssZ` format. * @internal * @readonly */ canceledDate?: Date | null; /** * Whether this booking availability should be checked with v1 or v2. * @internal */ v2AvailabilityProxy?: boolean | null; /** * Indicates booking language. If empty, the booking was made using the main language. * @internal * @format LANGUAGE_TAG */ language?: string | null; /** * ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction) * associated with this booking. * @format GUID */ formSubmissionId?: string | null; /** * ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object) * associated with this booking. The value depends on how the * booking was created: * - For bookings created with Create Booking or Bulk Create Booking, `formId` * is identical to ID of the booking form that's associated with the relevant * service. * - For bookings created via Create Multi Service Booking, `formId` is set to * `00000000-0000-0000-0000-000000000000` (the default booking form ID). * @format GUID * @readonly */ formId?: string | null; /** * List of [add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) associated with the booking. * @maxSize 21 */ bookedAddOns?: BookedAddOn[]; /** * ID of the app that's associated with the booking. * Inherited from the `appId` of the service associated with the booking. * Bookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID. * For bookings from Wix apps, the following values apply: * - Wix Bookings: `"13d21c63-b5ec-5912-8397-c3a5ddb27a97"` * - Wix Services: `"cc552162-24a4-45e0-9695-230c4931ef40"` * - Wix Meetings: `"6646a75c-2027-4f49-976c-58f3d713ed0f"` * [Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix). * * @format GUID * @readonly */ appId?: string | null; /** * ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources. * This read-only field is automatically populated during booking creation by checking these sources in order: * 1. The caller's App ID from the request identity context (external app or server identity). * 2. The booking's `appId` field (inherited from the service's `appId`). * 3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback. * * @format GUID * @readonly */ createdByAppId?: string | null; /** * Whether the customer chooses to pay only the deposit amount upfront. * * - `true`: The customer pays only the deposit amount upfront. * - `false`: The customer pays the full price upfront. * * Used only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set. * * When the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`. * When the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`. */ depositSelected?: boolean | null; /** * Whether the customer chose to pay the full subscription price upfront instead of recurring payments. * * Used only when the service's subscription payment has `fullUpfrontPayment.supported` set to `true`. * * Default: Not set (customer pays via recurring subscription). * @internal */ subscriptionUpfrontPaymentSelected?: boolean | null; /** * Whether the booking is scheduled to be canceled at the end of the current * billing period. * * Applies only to bookings paid through a monthly subscription (course bookings). * The booking remains `CONFIRMED` until the cancellation is finalized at period * end. The effective date is available through Query Extended Bookings. * @internal * @readonly */ cancellationScheduled?: boolean | null; /** * ID of the recurring booking group this booking belongs to. * * A recurring booking group is a set of independent bookings you link together * by supplying the same GUID in this field when calling `CreateBooking` or * `BulkCreateBooking`. All bookings in the group correspond to calendar events * that share the same [schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction). * * This field is always empty for course bookings, which don't support recurring booking groups. * * To cancel all bookings in the series, pass this ID to * `BulkCancelBooking` via `RecurringCancellation.recurringGroupId`. * @internal * @format GUID */ recurringGroupId?: string | null; /** * Whether this booking was made on behalf of another person by a logged-in member. * * When `true`, the booking's contact details refer to the person the booking is for — * typically sourced from the booking form's contact fields — rather than the * logged-in member or the eCommerce order's buyer. * * Default: `false`. * @internal */ bookedForSomeoneElse?: boolean | null; /** * Start of the booking adjusted to the requested timezone. * When `timeZone` is specified in the read request, the value is converted to that timezone. * Otherwise, the slot or schedule timezone is used. * See also `startDate` and `endDate`. * @internal * @readonly */ adjustedStart?: ZonedDate; /** * End of the booking adjusted to the requested timezone. * When `timeZone` is specified in the read request, the value is converted to that timezone. * Otherwise, the slot or schedule timezone is used. * See also `startDate` and `endDate`. * @internal * @readonly */ adjustedEnd?: ZonedDate; } /** @oneof */ interface BookingParticipantsInfoOneOf { /** * Total number of participants. * When creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction). * @min 1 */ totalParticipants?: number; /** * Information about the booked service choices and participant count for each choice. * When creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction). * * For example, use this for a spa package booking that includes different service levels: * - 2 participants chose "Standard Package". * - 1 participant chose "VIP Package". */ participantsChoices?: ParticipantChoices; } /** * Type of multi-service booking. * Defines how individual bookings within a multi-service package are scheduled relative to each other. */ declare enum MultiServiceBookingType { /** * Bookings must be scheduled back-to-back. * Each booking starts when the previous one ends, with no gaps between them. */ SEQUENTIAL_BOOKINGS = "SEQUENTIAL_BOOKINGS", /** * Bookings can be scheduled separately. * Each booking can be at different times, not necessarily consecutive. * Not currently supported. */ SEPARATE_BOOKINGS = "SEPARATE_BOOKINGS", /** * Bookings occur at the same time. * All bookings in the package are scheduled for the same time slot. * Not currently supported. */ PARALLEL_BOOKINGS = "PARALLEL_BOOKINGS" } /** @enumType */ type MultiServiceBookingTypeWithLiterals = MultiServiceBookingType | 'SEQUENTIAL_BOOKINGS' | 'SEPARATE_BOOKINGS' | 'PARALLEL_BOOKINGS'; interface BookedEntity extends BookedEntityItemOneOf { /** * [Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability). * * Specify `slot` when creating bookings for: * - __Appointment-based services__: Individual sessions with service providers (consultations, treatments). * Wix Bookings creates a new session when the booking is confirmed. * - __Class services__: Group sessions at specific times (fitness classes, workshops). * Wix Bookings links the booking to an existing scheduled session. * * For course services, specify `schedule` instead of `slot`. */ slot?: BookedSlot; /** * [Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction). * * Specify `schedule` when creating bookings for: * - __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs). * Wix Bookings enrolls participants in all sessions defined by the course schedule. */ schedule?: BookedSchedule; /** * Session title at the time of booking. If there is no pre-existing session, * for example for appointment-based services, Wix Bookings sets `title` to the service name. * @readonly * @maxLength 6000 */ title?: string | null; /** * If the user made the booking in a secondary language, this field contains the translated title. * @internal * @readonly * @maxLength 400 */ titleTranslated?: string | null; /** * List of tags for the booking. * * - "INDIVIDUAL": For bookings of appointment-based services. Including when the appointment is for a group of participants. * - "GROUP": For bookings of individual class sessions. * - "COURSE": For course bookings. */ tags?: string[] | null; } /** @oneof */ interface BookedEntityItemOneOf { /** * [Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability). * * Specify `slot` when creating bookings for: * - __Appointment-based services__: Individual sessions with service providers (consultations, treatments). * Wix Bookings creates a new session when the booking is confirmed. * - __Class services__: Group sessions at specific times (fitness classes, workshops). * Wix Bookings links the booking to an existing scheduled session. * * For course services, specify `schedule` instead of `slot`. */ slot?: BookedSlot; /** * [Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction). * * Specify `schedule` when creating bookings for: * - __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs). * Wix Bookings enrolls participants in all sessions defined by the course schedule. */ schedule?: BookedSchedule; } interface BookedSlot { /** * Session ID. For class bookings, this is the ID of the existing session. * For appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed. * * __Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction). * You can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings. * @deprecated Session ID. For class bookings, this is the ID of the existing session. * For appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed. * * __Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction). * You can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings. * @replacedBy event_id * @targetRemovalDate 2026-03-31 */ sessionId?: string | null; /** Service ID. */ serviceId?: string; /** Schedule ID. */ scheduleId?: string; /** * ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction). * Available for both appointment and class bookings, not available for course bookings. * For appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`. * For class bookings, Wix Bookings automatically populates `eventId` upon booking creation. * @minLength 36 * @maxLength 250 */ eventId?: string | null; /** The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`. */ startDate?: string | null; /** The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`. */ endDate?: string | null; /** * Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database). * For example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future. */ timezone?: string | null; /** * [Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking. * For example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service. */ resource?: BookedResource; /** Location where the session takes place. */ location?: Location; /** * Phone call options for the service. * @internal * @readonly */ phoneCall?: PhoneCall; /** * [Non-primary resources](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking. * For example, a room, equipment, or an additional staff member. * @internal */ additionalResources?: BookedResource[]; /** * Information about how the customer has selected resources for the booking. * Each resource type may have a different selection method. * Check `resource` for resource details. * @maxSize 3 */ resourceSelections?: ResourceSelection[]; /** * Whether the booked slot spans one or more full days. * For class bookings, this value is synced from the linked calendar event. * For appointment bookings, this value is derived from the availability slot at booking creation or reschedule time. * * When `true`, `startDate` is set to `00:00:00` of the first day and `endDate` is set to `00:00:00` of the day after the last day (exclusive). Midnight boundaries are interpreted in the slot's `timezone`. * * Default: `false` */ allDay?: boolean | null; /** * Duration unit type for the booking. Populated only for bookings of [services](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/service-object) configured with a duration range, such as hourly or daily duration-range services. Use together with `durationUnitCount` to determine the booked duration. * * Returned only when the service has a `schedule.availabilityConstraints.durationRange`. * @readonly */ durationUnitType?: DurationUnitTypeWithLiterals; /** * Number of booked duration units. Populated only for bookings of [services](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/service-object) configured with a duration range. * The meaning depends on `durationUnitType`: * - `HOUR`: Duration in minutes. For example, `120` for a 2-hour booking. * - `DAY`: Duration in days. For example, `3` for a 3-day booking. * * Returned only when the service has a `schedule.availabilityConstraints.durationRange`. * @min 1 * @max 1440 * @readonly */ durationUnitCount?: number | null; } interface BookedResource { /** * ID of the booking's primary resource. * @format GUID */ id?: string; /** * Resource's name at the time of booking. * @maxLength 40 */ name?: string | null; /** * Resource's name translated to the language the booking was made in. * @internal * @readonly * @maxLength 40 */ nameTranslated?: string | null; /** * Resource's email at the time of booking. * @maxLength 500 */ email?: string | null; /** * ID of the schedule belonging to the booking's primary resource. * @format GUID */ scheduleId?: string | null; /** * Whether the customer specifically requested the resource or whether Wix Bookings randomly assigned a resource to the booking. * * - `true`: The customer specifically requested the resource. * - `false`: Wix Bookings randomly assigned a resource of the relevant type to the booking. * @internal * @readonly */ explicitlyRequested?: boolean | null; /** * ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction) associated with this resource. * For example, `"1cd44cf8-756f-41c3-bd90-3e2ffcaf1155"` for a staff member resource type. * @format GUID * @readonly */ type?: string | null; /** * Specifies whether the resource's calendar is blocked for the duration of the booking. * * Supported values: * + `OPAQUE`: The schedule is blocked during the booking, preventing other bookings involving the same resource from being scheduled at the same time. * + `TRANSPARENT`: The schedule remains open during the booking, allowing other bookings to be scheduled concurrently. * * When not set or `UNKNOWN_TRANSPARENCY`, behaves as `OPAQUE`. * @internal */ transparency?: ResourceTransparencyWithLiterals; } declare enum ResourceTransparency { OPAQUE = "OPAQUE", TRANSPARENT = "TRANSPARENT" } /** @enumType */ type ResourceTransparencyWithLiterals = ResourceTransparency | 'OPAQUE' | 'TRANSPARENT'; interface Location { /** * Business location ID. Available only for locations that are business locations, * meaning the `location_type` is `"OWNER_BUSINESS"`. * @format GUID */ id?: string | null; /** Location name. */ name?: string | null; /** The full address of this location. */ formattedAddress?: string | null; /** * The full translated address of this location. * @maxLength 512 */ formattedAddressTranslated?: string | null; /** Location type. */ locationType?: LocationTypeWithLiterals; } declare enum LocationType { /** Undefined location type. */ UNDEFINED = "UNDEFINED", /** The business address, as set in the site’s general settings. */ OWNER_BUSINESS = "OWNER_BUSINESS", /** The address as set when creating the service. */ OWNER_CUSTOM = "OWNER_CUSTOM", /** The address as set for the individual session. */ CUSTOM = "CUSTOM" } /** @enumType */ type LocationTypeWithLiterals = LocationType | 'UNDEFINED' | 'OWNER_BUSINESS' | 'OWNER_CUSTOM' | 'CUSTOM'; /** TODO: should we import it from services-2? */ interface PhoneCall { /** Whether the service is delivered via phone call. */ enabled?: boolean | null; } interface ResourceSelection { /** * ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction). * @format GUID */ resourceTypeId?: string | null; /** Information about how the customer has selected the resource for this resource type. */ selectionMethod?: SelectionMethodWithLiterals; /** * Gender the customer narrowed "any available resource" to, for a staff member resource type. * * Populated only when `selectionMethod` is `ANY_RESOURCE`, the resource type is the staff member resource type, and the business allows customers to narrow "any available" by gender. * * Omit the field for a plain "any available staff member" with no gender narrowing. * * Requires `genderPubliclyAccessible` to be enabled in the business's [staff member settings](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-member-settings/introduction). Creating a booking with this field fails when it's disabled. */ requestedGender?: RequestedGenderValue; } declare enum SelectionMethod { /** The customer explicitly chose a particular resource. */ SPECIFIC_RESOURCE = "SPECIFIC_RESOURCE", /** The customer explicitly chose "any available resource" for this resource type. */ ANY_RESOURCE = "ANY_RESOURCE", /** The customer wasn't offered a resource selection or agreement option for this resource type. */ NO_SELECTION = "NO_SELECTION" } /** @enumType */ type SelectionMethodWithLiterals = SelectionMethod | 'SPECIFIC_RESOURCE' | 'ANY_RESOURCE' | 'NO_SELECTION'; /** Gender a customer requested when narrowing "any available staff member" to a gender. */ interface RequestedGenderValue { /** Requested gender. */ gender?: RequestedGenderWithLiterals; } declare enum RequestedGender { /** The customer requested any available male staff member. */ ANY_MALE = "ANY_MALE", /** The customer requested any available female staff member. */ ANY_FEMALE = "ANY_FEMALE" } /** @enumType */ type RequestedGenderWithLiterals = RequestedGender | 'ANY_MALE' | 'ANY_FEMALE'; declare enum DurationUnitType { /** Hourly duration. When `durationUnitType` is `HOUR`, `durationUnitCount` represents the booked duration in minutes. */ HOUR = "HOUR", /** Daily duration. When `durationUnitType` is `DAY`, `durationUnitCount` represents the booked duration in days. */ DAY = "DAY" } /** @enumType */ type DurationUnitTypeWithLiterals = DurationUnitType | 'HOUR' | 'DAY'; interface BookedSchedule { /** [Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction). */ scheduleId?: string; /** * Booked service ID. * @format GUID */ serviceId?: string | null; /** * [Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place. * @readonly */ location?: Location; /** * Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database). * For example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future. */ timezone?: string | null; /** * Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`. * @readonly */ firstSessionStart?: string | null; /** * End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`. * @readonly */ lastSessionEnd?: string | null; } interface ContactDetails { /** * Contact ID. * @format GUID */ contactId?: string | null; /** * Contact's first name. When populated from a standard booking form, this * property corresponds to the `name` field. */ firstName?: string | null; /** Contact's last name. */ lastName?: string | null; /** * Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object) * with this email exist, a new contact is created. * Used to validate coupon usage limitations per contact. If not specified, * the coupon usage limitation will not be enforced. (Coupon usage limitation * validation is not supported yet). * @format EMAIL */ email?: string | null; /** Contact's phone number. */ phone?: string | null; /** Contact's full address. */ fullAddress?: Address; /** * Contact's time zone. * @deprecated Contact's time zone. * @targetRemovalDate 2026-03-31 */ timeZone?: string | null; /** * Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) * format. * @format COUNTRY */ countryCode?: string | null; } /** Physical address */ interface Address extends AddressStreetOneOf { /** Street name, number and apartment number. */ streetAddress?: StreetAddress; /** Main address line, usually street and number, as free text. */ addressLine?: string | null; /** * Country code. * @format COUNTRY */ country?: string | null; /** Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2). */ subdivision?: string | null; /** City name. */ city?: string | null; /** Zip/postal code. */ postalCode?: string | null; /** Free text providing more detailed address info. Usually contains Apt, Suite, and Floor. */ addressLine2?: string | null; /** A string containing the full address of this location. */ formattedAddress?: string | null; /** Free text to help find the address. */ hint?: string | null; /** Coordinates of the physical address. */ geocode?: AddressLocation; /** Country full name. */ countryFullname?: string | null; /** Multi-level subdivisions from top to bottom. */ subdivisions?: Subdivision[]; } /** @oneof */ interface AddressStreetOneOf { /** Street name, number and apartment number. */ streetAddress?: StreetAddress; /** Main address line, usually street and number, as free text. */ addressLine?: string | null; } interface StreetAddress { /** Street number. */ number?: string; /** Street name. */ name?: string; /** Apartment number. */ apt?: string; } interface AddressLocation { /** Address latitude. */ latitude?: number | null; /** Address longitude. */ longitude?: number | null; } interface Subdivision { /** Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2). */ code?: string; /** Subdivision full name. */ name?: string; } interface CustomFormField { /** * ID of the form field as defined in the form. * @format GUID */ id?: string; /** Value that was submitted for this field. */ value?: string | null; /** * Form field's label at the time of submission. * @readonly */ label?: string | null; valueType?: ValueTypeWithLiterals; } declare enum ValueType { /** Short text. This is the default value type. */ SHORT_TEXT = "SHORT_TEXT", /** Long text. */ LONG_TEXT = "LONG_TEXT", /** A text that represents the check box value. If selected the value is `true`, otherwise `false`. */ CHECK_BOX = "CHECK_BOX" } /** @enumType */ type ValueTypeWithLiterals = ValueType | 'SHORT_TEXT' | 'LONG_TEXT' | 'CHECK_BOX'; /** Booking status. */ declare enum BookingStatus { /** The booking was created, but the customer hasn't completed the related eCommerce order yet. */ CREATED = "CREATED", /** The merchant has confirmed the booking and it appears in the business calendar. Merchants can set up their [services](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/introduction) to automatically confirm all `PENDING` bookings. */ CONFIRMED = "CONFIRMED", /** * The customer has canceled the booking. Depending on the relevant service's [policy snapshot](https://dev.wix.com/docs/rest/business-solutions/bookings/policies/booking-policy-snapshots/introduction) * they may have to pay a [cancellation fee](https://dev.wix.com/docs/rest/business-solutions/bookings/pricing/booking-fees/introduction). */ CANCELED = "CANCELED", /** The merchant must manually confirm the booking before it appears in the business calendar. */ PENDING = "PENDING", /** The merchant has declined the booking before the customer was charged. */ DECLINED = "DECLINED", /** Currently, you can't call [Register to Waitlist](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings/waitlist/register-to-waitlist) for course or appointment bookings, even though this is supported in live sites. */ WAITING_LIST = "WAITING_LIST" } /** @enumType */ type BookingStatusWithLiterals = BookingStatus | 'CREATED' | 'CONFIRMED' | 'CANCELED' | 'PENDING' | 'DECLINED' | 'WAITING_LIST'; /** * Payment status. * Automatically updated when using eCommerce checkout APIs. */ declare enum PaymentStatus { /** Undefined payment status. */ UNDEFINED = "UNDEFINED", /** The booking isn't paid. */ NOT_PAID = "NOT_PAID", /** The booking is fully paid. */ PAID = "PAID", /** The booking is partially paid. */ PARTIALLY_PAID = "PARTIALLY_PAID", /** The booking is refunded. */ REFUNDED = "REFUNDED", /** The booking is free of charge. */ EXEMPT = "EXEMPT", /** * The most recent subscription payment for this booking failed. If the payment is later recovered, the status changes back to `PAID`. Returned only for course bookings with subscription pricing. * @documentationMaturity preview */ FAILED = "FAILED" } /** @enumType */ type PaymentStatusWithLiterals = PaymentStatus | 'UNDEFINED' | 'NOT_PAID' | 'PAID' | 'PARTIALLY_PAID' | 'REFUNDED' | 'EXEMPT' | 'FAILED'; /** * Selected payment option. * * One of the payment options offered by the service. * This field is set when the user selects an option during booking. * If left undefined, the payment option is resolved by the service configuration on checkout. */ declare enum SelectedPaymentOption { /** Undefined payment option. */ UNDEFINED = "UNDEFINED", /** Offline payment. */ OFFLINE = "OFFLINE", /** Online payment. */ ONLINE = "ONLINE", /** Payment using a Wix Pricing Plan. */ MEMBERSHIP = "MEMBERSHIP", /** * Customers can pay only in person with a Wix Pricing Plan, while the Wix user * must manually redeem the pricing plan in the dashboard. */ MEMBERSHIP_OFFLINE = "MEMBERSHIP_OFFLINE" } /** @enumType */ type SelectedPaymentOptionWithLiterals = SelectedPaymentOption | 'UNDEFINED' | 'OFFLINE' | 'ONLINE' | 'MEMBERSHIP' | 'MEMBERSHIP_OFFLINE'; interface BookingSource { /** Platform from which the booking was created. */ platform?: PlatformWithLiterals; /** Actor that created the booking. */ actor?: ActorWithLiterals; /** * ID of the app that created the booking. * * Supported values for Wix apps: * - Wix Bookings: `13d21c63-b5ec-5912-8397-c3a5ddb27a97` * - Wix Meetings: `6646a75c-2027-4f49-976c-58f3d713ed0f` * - Scheduling Form Fields: `3e4e322b-6d9b-4da0-9f53-e22c4a44a49e` * * When not set, the booking was created by legacy Wix Bookings before this field was introduced. * * We recommend setting this field when creating bookings so you can filter your bookings by source app later. * @format GUID */ appDefId?: string | null; /** * Name of the app that created the booking, as saved in Wix Developers Center at the time of booking. * @readonly */ appName?: string | null; } /** Platform from which the booking was created. */ declare enum Platform { /** Platform not specified or unknown. */ UNDEFINED_PLATFORM = "UNDEFINED_PLATFORM", /** Booking was created through a web browser. */ WEB = "WEB", /** Booking was created through a mobile app. */ MOBILE_APP = "MOBILE_APP" } /** @enumType */ type PlatformWithLiterals = Platform | 'UNDEFINED_PLATFORM' | 'WEB' | 'MOBILE_APP'; /** Actor that created the booking. */ declare enum Actor { /** Actor not specified or unknown. */ UNDEFINED_ACTOR = "UNDEFINED_ACTOR", /** Booking was created by a business owner or staff member on behalf of a customer. */ BUSINESS = "BUSINESS", /** Booking was created by the customer directly. */ CUSTOMER = "CUSTOMER" } /** @enumType */ type ActorWithLiterals = Actor | 'UNDEFINED_ACTOR' | 'BUSINESS' | 'CUSTOMER'; interface ParticipantNotification { /** * Whether to send a message about the changes to the customer. * * Default: `false` */ notifyParticipants?: boolean; /** Custom message to send to the participants about the changes to the booking. */ message?: string | null; /** * Information about the delivery channels used to send the notification. * For example, `{"channels": "SMS" }`, `{"channels": "EMAIL" }`, or `{"channels": "EMAIL, SMS" }`. */ metadata?: Record; } interface IdentificationData extends IdentificationDataIdOneOf { /** * ID of a site visitor that has not logged in to the site. * @format GUID */ anonymousVisitorId?: string; /** * ID of a site visitor that has logged in to the site. * @format GUID */ memberId?: string; /** * ID of a Wix user (site owner, contributor, etc.). * @format GUID */ wixUserId?: string; /** * ID of an app. * @format GUID */ appId?: string; /** * ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system. * @format GUID */ contactId?: string | null; /** * @internal * @readonly */ identityType?: IdentityTypeWithLiterals; } /** @oneof */ interface IdentificationDataIdOneOf { /** * ID of a site visitor that has not logged in to the site. * @format GUID */ anonymousVisitorId?: string; /** * ID of a site visitor that has logged in to the site. * @format GUID */ memberId?: string; /** * ID of a Wix user (site owner, contributor, etc.). * @format GUID */ wixUserId?: string; /** * ID of an app. * @format GUID */ appId?: string; } declare enum IdentityType { UNKNOWN = "UNKNOWN", ANONYMOUS_VISITOR = "ANONYMOUS_VISITOR", MEMBER = "MEMBER", WIX_USER = "WIX_USER", APP = "APP" } /** @enumType */ type IdentityTypeWithLiterals = IdentityType | 'UNKNOWN' | 'ANONYMOUS_VISITOR' | 'MEMBER' | 'WIX_USER' | 'APP'; /** * Settings that control booking flow behavior and override default business rules. * * These settings allow administrators to bypass standard validation checks * and policies when creating, confirming, rescheduling, or canceling bookings. * Most settings require elevated permissions to use. * * Use flow control settings to handle special scenarios like: * - Emergency bookings outside normal business hours * - Admin-initiated bookings that bypass availability checks * - Custom payment flows that don't use standard eCommerce checkout * - Overriding cancellation or rescheduling policies in exceptional cases */ interface FlowControlSettings { /** * If `true`, skips the service defined booking-window in the booking policy. * Requires BOOKINGS.IGNORE_BOOKING_POLICY permissions. * Private because it is confusing to external users - collides with `skipAvailabilityValidation`. * When removing, use proto's `reserved` field. * @internal * @deprecated If `true`, skips the service defined booking-window in the booking policy. * Requires BOOKINGS.IGNORE_BOOKING_POLICY permissions. * Private because it is confusing to external users - collides with `skipAvailabilityValidation`. * When removing, use proto's `reserved` field. * @targetRemovalDate 2026-03-31 */ ignoreBookingWindow?: boolean; /** Whether availability is checked when creating or confirming the booking. */ skipAvailabilityValidation?: boolean; /** * Whether the booking's `status` is automatically updated to `CONFIRMED` when * the customer completes the [eCommerce checkout](https://dev.wix.com/docs/rest/business-solutions/e-commerce/checkout/introduction), * regardless of whether the relevant service requires manual business confirmation. */ skipBusinessConfirmation?: boolean; /** * Whether the customer is allowed to pay with a payment method that isn't * supported for the relevant service. */ skipSelectedPaymentOptionValidation?: boolean; /** * Whether the customer receives an automatic refund if there's a double booking * conflict. Only available if the customer has paid with a * pricing plan. */ withRefund?: boolean | null; /** * Whether [add-on](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) validations are skipped when creating a booking. * For example, customers can choose an add-on from an [add-on group](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/about-add-on-groups) that's not associated with the service or choose more than the maximum number of different add-ons from a group. * The calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) must have `BOOKINGS.MANAGE_ADDONS` permissions when specifying `true`. * * Default: `false`. */ skipAddOnValidation?: boolean | null; /** * Whether the orders flow was skipped for this booking. * * When `true`, indicates this booking bypassed the standard eCommerce orders flow, * for non-chargeable services. * * Default: `false`. * @internal */ skipOrderConfirmation?: boolean | null; } interface ExtendedFields { /** * Extended field data. Each key corresponds to the namespace of the app that created the extended fields. * The value of each key is structured according to the schema defined when the extended fields were configured. * * You can only access fields for which you have the appropriate permissions. * * Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields). */ namespaces?: Record>; } interface ParticipantChoices { /** * Information about the booked service choices. Includes the number of participants. * @minSize 1 * @maxSize 20 */ serviceChoices?: ServiceChoices[]; } interface ServiceChoices { /** * Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction). * @min 1 */ numberOfParticipants?: number | null; /** * Service choices for these participants. * @maxSize 5 */ choices?: ServiceChoice[]; } interface ServiceChoice extends ServiceChoiceChoiceOneOf { /** * Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list. * Choices are specific values for an option the customer can choose to book. For example, * the option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`. * Each choice may have a different price. */ custom?: string; duration?: Duration; /** The matched date-time pricing rule. Available only for `DATE_TIME` options. */ dateTime?: DateTimeRule; /** The matched participants pricing rule. Available only for `NUMBER_OF_PARTICIPANTS` options. */ participantRange?: ParticipantsRange; /** * ID of the corresponding option for the choice. For example, the choice `child` * could correspond to the option `ageGroup`. In this case, `optionId` is the ID * for the `ageGroup` option. * @format GUID */ optionId?: string; /** * ID of the service choice. When provided, the choice details are automatically populated based on this ID. * @format GUID */ choiceId?: string | null; } /** @oneof */ interface ServiceChoiceChoiceOneOf { /** * Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list. * Choices are specific values for an option the customer can choose to book. For example, * the option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`. * Each choice may have a different price. */ custom?: string; duration?: Duration; /** The matched date-time pricing rule. Available only for `DATE_TIME` options. */ dateTime?: DateTimeRule; /** The matched participants pricing rule. Available only for `NUMBER_OF_PARTICIPANTS` options. */ participantRange?: ParticipantsRange; } interface Duration { /** * Duration of the service in minutes. * Min: 1 minute, Max: 30 days, 23 hours, and 59 minutes * @min 1 * @max 44639 */ minutes?: number; /** * Name of the duration option. * Defaults to the formatted duration e.g. "1 hour, 30 minutes". * @maxLength 255 */ name?: string | null; } interface DateTimeRule { /** * Name of the date-time rule. For example, "Weekend mornings". * @maxLength 255 */ name?: string | null; } interface ParticipantsRange { /** * Name of the participants range. For example, "Large group". * @maxLength 255 */ name?: string | null; } interface MultiServiceBookingInfo { /** * Multi-service booking ID. * @format GUID * @readonly */ id?: string | null; /** Type of the multi-service booking. */ type?: MultiServiceBookingTypeWithLiterals; } interface BookedAddOn { /** * The ID of the add-on. * @format GUID */ id?: string; /** * The ID of the add-on group. * @format GUID */ groupId?: string; /** * The add-on duration in minutes at the time of booking. * Populated for duration-based add-ons. * @min 1 * @max 1440 * @readonly */ durationInMinutes?: number | null; /** * The quantity of booked add-ons. * For duration-based add-ons, `quantity` is not applicable. * If `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared. * If any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: "Invalid AddOn details: either duration or quantity must be set correctly". * @min 1 * @max 1000 */ quantity?: number | null; /** * Add-on `name` at the time of booking. * @maxLength 100 * @readonly */ name?: string | null; /** * Add-on name translated to the language the customer used during booking. * @maxLength 100 * @readonly */ nameTranslated?: string | null; } /** Server-computed datetime adjusted to a requested timezone. */ interface ZonedDate { /** * Local datetime in ISO-8601 format, e.g. "2026-11-10T10:00:00.000". * @readonly * @format LOCAL_DATE_TIME */ localDate?: string | null; /** * IANA timezone used to compute `localDate`, e.g. "America/Vancouver". * @readonly * @maxLength 64 */ timeZone?: string | null; } /** Possible allowed actions for a Booking */ interface AllowedActions { /** Whether the customer is allowed to cancel the booking. */ cancel?: boolean; /** Whether the customer is allowed to reschedule the booking. */ reschedule?: boolean; /** * Whether the customer is allowed to add another service to the booking. * @internal */ bookAnother?: boolean; /** * Deprecated. * Whether the customer is entitled to a refund when canceling the booking. * @deprecated */ refund?: boolean | null; } interface Attendance { /** * ID of the attendance object. * @format GUID * @readonly */ id?: string | null; /** General information about the booking's attendance. */ status?: AttendanceStatusWithLiterals; /** * Total number of participants who attended the session. Can * be greater than `1` for bookings with multiple participants. */ numberOfAttendees?: number; } interface ConferencingDetails { /** * URL used by a guest to join the conference. * @minLength 1 * @maxLength 2000 */ guestUrl?: string | null; /** * Conference password. * @minLength 1 * @maxLength 100 */ password?: string | null; /** * Conference description. * @internal * @minLength 1 * @maxLength 200 */ description?: string | null; } interface BookingPolicySettings { /** Whether the booking has an active cancellation fee policy. */ cancellationFeeEnabled?: boolean | null; } interface BookingFeeDetails { /** Cancellation fee status. */ cancellationFeeStatus?: BookingFeeStatusWithLiterals; } declare enum BookingFeeStatus { /** There is no information about the booking fee status. */ UNKNOWN_STATUS = "UNKNOWN_STATUS", /** The booking fee hasn't been applied to the eCommerce order yet. */ NOT_YET_APPLIED_TO_ORDER = "NOT_YET_APPLIED_TO_ORDER", /** The booking fee has already been applied as an additional fee to the eCommerce order. */ APPLIED_TO_ORDER = "APPLIED_TO_ORDER" } /** @enumType */ type BookingFeeStatusWithLiterals = BookingFeeStatus | 'UNKNOWN_STATUS' | 'NOT_YET_APPLIED_TO_ORDER' | 'APPLIED_TO_ORDER'; interface Order { /** * Order ID. * @format GUID */ id?: string | null; /** Order number displayed in the site owner's dashboard (auto-generated). */ number?: string; /** Order status. */ status?: OrderStatusWithLiterals; /** Order payment status. */ paymentStatus?: PaymentStatusEnumPaymentStatusWithLiterals; /** Order’s total price after discounts and tax. */ totalPrice?: Price; /** Line item price after line item discounts for display purposes. */ bookingPrice?: Price; /** Line item price description. */ bookingPriceDescription?: PriceDescription; /** Current amount left to pay. */ balance?: Balance; /** * Currency used for the pricing of this order in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes) format. * @format CURRENCY */ currency?: string | null; /** * Booking line item ID associated with this order. * @internal * @minLength 1 * @maxLength 50 */ lineItemId?: string | null; /** * Indicates the order only contains a single line item. * @internal */ singleItemOrder?: boolean | null; /** * Date and time the order was last updated. * @internal */ updatedDate?: Date | null; /** * Additional fees applied to the booking line item. * @internal * @maxSize 100 */ additionalFees?: AdditionalFee[]; /** * ID of the location associated with the order. * @internal * @format GUID */ locationId?: string | null; /** * Coupon applied to the order, when the underlying eCommerce order includes a coupon discount. * @internal */ couponInfo?: CouponInfo; } declare enum OrderStatus { /** Order created, but not yet approved or canceled. */ INITIALIZED = "INITIALIZED", /** * Order approved. * * This happens when either an online payment is received **or** when `order.priceSummary.total = 0` (a zero-total order). * Offline orders (cash payment) are automatically approved. */ APPROVED = "APPROVED", /** Order canceled by the user. */ CANCELED = "CANCELED", /** * Order pending. * @documentationMaturity preview */ PENDING = "PENDING", /** * Order rejected. * * This happens when pending payments fail. * @documentationMaturity preview */ REJECTED = "REJECTED" } /** @enumType */ type OrderStatusWithLiterals = OrderStatus | 'INITIALIZED' | 'APPROVED' | 'CANCELED' | 'PENDING' | 'REJECTED'; declare enum PaymentStatusEnumPaymentStatus { /** * `NOT_PAID` can apply to an order made online, but not yet paid. In such cases `order.status` will be `INITIALIZED`. * This status also applies when an offline order needs to be manually marked as paid. In such cases `order.status` will be `APPROVED`. */ NOT_PAID = "NOT_PAID", /** All required payments associated with this order are paid. */ PAID = "PAID", /** Order partially refunded, but the refunded amount is less than the order's total price. See `order.balanceSummary` for more details. */ PARTIALLY_REFUNDED = "PARTIALLY_REFUNDED", /** Order fully refunded. Refund amount equals total price. See `order.balanceSummary` for more details. */ FULLY_REFUNDED = "FULLY_REFUNDED", /** * All payments pending. * * This can happen with two-step payments, when a payment requires manual review, or when a payment is in progress and will be concluded shortly. * Learn more about [pending orders](https://support.wix.com/en/article/pending-orders). */ PENDING = "PENDING", /** At least one payment received and approved, but it covers less than the order's total price. See `order.balanceSummary` for more details. */ PARTIALLY_PAID = "PARTIALLY_PAID", /** * Payment received, but not yet confirmed by the payment provider. * * In most cases, when a payment provider is holding payment it's because setup hasn't been successfully completed by the merchant/site owner. * To solve this, the merchant/site owner should log in to the payment provider's dashboard and make sure their account is set up correctly, or contact their support for further assistance. * @documentationMaturity preview */ PENDING_MERCHANT = "PENDING_MERCHANT", /** * One or more payments canceled. * @documentationMaturity preview */ CANCELED = "CANCELED", /** * One or more payments declined. * @documentationMaturity preview */ DECLINED = "DECLINED" } /** @enumType */ type PaymentStatusEnumPaymentStatusWithLiterals = PaymentStatusEnumPaymentStatus | 'NOT_PAID' | 'PAID' | 'PARTIALLY_REFUNDED' | 'FULLY_REFUNDED' | 'PENDING' | 'PARTIALLY_PAID' | 'PENDING_MERCHANT' | 'CANCELED' | 'DECLINED'; interface Price { /** * Amount. * @decimalValue options { gte:0, lte:1000000000000000, maxScale:2 } */ amount?: string; /** Amount formatted with currency symbol. */ formattedAmount?: string; } interface PriceDescription { /** * __Required.__ Price description in the site's default language as defined in the [request envelope](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions#request-envelope). * @minLength 1 * @maxLength 100 */ original?: string; /** * Price description translated into the buyer's language. * * Default: Same as `original`. * @minLength 1 * @maxLength 100 */ translated?: string | null; } interface Balance { /** * Balance amount. * * A negative `amount` represents the amount to be refunded. This can happen due to overcharging or the order being modified after a payment has been made. * @decimalValue options { gte:0, lte:1000000000000000, maxScale:2 } */ amount?: string; /** Amount formatted with currency symbol. */ formattedAmount?: string; } interface AdditionalFee { /** * Additional fee name. * @minLength 1 * @maxLength 50 */ name?: string; } /** Coupon details exposed for an eCommerce order (from the order's applied discounts). */ interface CouponInfo { /** * Coupon ID. * @format GUID */ id?: string | null; /** Coupon code entered at checkout. */ code?: string; /** Coupon display name. */ name?: string; /** Discount amount attributed to the coupon. */ amount?: Price; } interface Waiver { /** * The ID of the waiver. This is a unique identifier for the waiver. * @format GUID */ id?: string | null; /** * The ID of the waiver template. * @format GUID */ waiverTemplateId?: string | null; /** * The ID of the contact associated with the waiver. * @format GUID */ contactId?: string | null; /** The status of the waiver. */ status?: StatusWithLiterals; } declare enum Status { UNDEFINED = "UNDEFINED", SIGNED = "SIGNED", NOT_SIGNED = "NOT_SIGNED" } /** @enumType */ type StatusWithLiterals = Status | 'UNDEFINED' | 'SIGNED' | 'NOT_SIGNED'; interface OrderTransactions { /** The charged not voided membership payment details of the booking line item made to the merchant. */ chargedMembershipPaymentDetails?: MembershipPaymentDetails; /** * Sum of refund transactions amounts made to the buyer. * @decimalValue options { gte:0, lte:1000000000000000, maxScale:2 } */ refundSumAmounts?: string | null; } interface MembershipPaymentDetails { /** Membership name. */ name?: MembershipName; /** Membership expiration date. */ expirationDate?: Date | null; /** Membership payment credits. */ credits?: MembershipPaymentCredits; /** * The amount of credits redeemed from the membership for this booking. * @internal * @decimalValue options { gte:0, maxScale:4 } * @readonly */ redeemCost?: string | null; } interface MembershipName { /** * Membership name. * @maxLength 100 */ original?: string; /** * Translated membership name. Defaults to `original` when not provided. * @maxLength 100 */ translated?: string | null; } interface MembershipPaymentCredits { /** * Membership's total amount of credits. * @min 1 */ total?: number; /** Membership's remaining amount of credits. */ remaining?: number; } interface FormSubmission { /** * Label of form field * @maxLength 500 */ label?: string | null; /** * Key of the submission, and target of a form field * @maxLength 200 */ key?: string; /** * Value of the submission, formatted as a string * @maxLength 500 */ value?: string; /** * Id of the form field * @format GUID */ fieldId?: string; } /** Information about a booking's subscription payment plan. Populated for course bookings with subscription pricing only. */ interface SubscriptionInfo { /** * Number of billing cycles that have been successfully charged. * For example, if 3 out of 12 monthly payments have been collected, `currentCycle` is `3`. */ currentCycle?: number; /** * Total number of billing cycles in the subscription. * For customers who book after recurring billing starts, includes the remaining cycles only. * This can be lower than the `totalPayments` configured in the service's subscription payment. */ totalCycles?: number; /** * Billing frequency for the subscription. * Reflects the `frequency` configured in the service's subscription payment. * * Currently supports `MONTHLY` only. */ billingFrequency?: FrequencyWithLiterals; /** * ID of the subscription in the Wix billing system. * @format GUID */ subscriptionId?: string | null; /** Current status of the subscription. */ status?: SubscriptionStatusWithLiterals; /** * Price charged for the most recent billing cycle, including tax and discounts. * May differ from the original service price after introductory pricing expires. * * Not populated during free trials or before the first payment. * @readonly */ cyclePrice?: CyclePrice; /** * Date the subscription's cancellation takes effect. * * Returned only when a cancellation is scheduled, typically for the end of the current billing cycle. * @internal */ cancellationDate?: Date | null; /** * Date the subscription's next billing cycle begins. * * Returned when the subscription has an upcoming billing cycle. * For an active subscription, this is the date an end-of-billing-period cancellation would take effect. * @internal */ nextBillingDate?: Date | null; } declare enum Frequency { /** Billing cycle repeats once per month. */ MONTHLY = "MONTHLY" } /** @enumType */ type FrequencyWithLiterals = Frequency | 'MONTHLY'; declare enum SubscriptionStatus { /** Subscription created but not yet paid for. Transitions to `PENDING` or `ACTIVE` after the first successful payment. */ DRAFT = "DRAFT", /** Subscription is paid but hasn't started yet. The start date is in the future. */ PENDING = "PENDING", /** Subscription is active and billing. */ ACTIVE = "ACTIVE", /** Subscription is temporarily paused. */ PAUSED = "PAUSED", /** Subscription was canceled before its scheduled end. */ CANCELED = "CANCELED", /** Subscription completed all billing cycles. */ ENDED = "ENDED" } /** @enumType */ type SubscriptionStatusWithLiterals = SubscriptionStatus | 'DRAFT' | 'PENDING' | 'ACTIVE' | 'PAUSED' | 'CANCELED' | 'ENDED'; interface CyclePrice { /** * Total amount charged for the billing cycle, including tax, shipping, and discounts. * @decimalValue options { gte:0, maxScale:2 } */ amount?: string; /** * Three-letter currency code in [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217) alphabetic format. * @format CURRENCY */ currency?: string; } interface DeferredChargeInfo extends DeferredChargeInfoStatusDetailsOneOf { /** Reason the charge was declined. */ declinedOptions?: DeferredChargeDeclineReasonWithLiterals; /** Current status of the deferred charge. */ status?: DeferredChargeStatusWithLiterals; /** * ID of the deferred charge. * * Pass it to `CancelDeferredCharge` to stop a scheduled charge before it fires. * @internal * @format GUID * @readonly */ deferredChargeId?: string | null; } /** @oneof */ interface DeferredChargeInfoStatusDetailsOneOf { /** Reason the charge was declined. */ declinedOptions?: DeferredChargeDeclineReasonWithLiterals; } interface QueryExtendedBookingRequest { /** Information about filters, paging, and sorting. */ query: QueryV2; /** Whether information about which actions the customer can perform for the bookings is returned. */ withBookingAllowedActions?: boolean; /** Whether information about the attendance for the bookings is returned. */ withBookingAttendanceInfo?: boolean; /** * Filters the retrieved bookings by the booking ID that corresponds to the * specified `sessionId`. * * The `booking.id` is calculated by calling Get Session and saving the returned * values for `participants.Id`. * * These participant IDs are then used as `booking.id`. * This filter overrides the `booking.id` filter inside the query object. * * __Note__: Bookings for courses don't include a `sessionId`. For these * bookings, you must use this field to filter by session ID. */ sessionId?: string | null; /** * Whether information about the total entities is returned. * @internal */ withPagingMetadataTotal?: boolean; /** * Whether information about the online conferencing details for the bookings is returned. * @internal */ withBookingConferencingDetails?: boolean; /** * Whether to retrieve information about booking policy settings. * You must have the `BOOKINGS.BOOKING_POLICY_SNAPSHOT_READ` permission scope * when passing `true`. * * Default: `false`. * @internal */ withBookingPolicySettings?: boolean; /** * Whether to retrieve information about the booking fee statuses. * Information about booking fees with a status of `PREVIEW` isn't returned. * You must have the `BOOKINGS.BOOKING_FEES_READ` permission scope when passing * `true`. To retrieve complete booking fee objects or to get information * about `PREVIEW` fees, use List Booking Fees By Booking Ids instead. * * Default: `false` * @internal */ withBookingFeeDetails?: boolean; /** * Whether to return information about the order from ecom. * * You must have the `ECOM.READ_ORDERS` permission scope * when passing `true`. * * Default: `false`. * @internal */ withEcomOrder?: boolean; /** * Whether to return information about the waiver. * * You must have the `WAIVER_TEMPLATE.VIEWS` and `WAIVER_TEMPLATE.VIEWS` and `WAIVER.VIEW` permissions scope * when passing `true`. * * Default: `false`. * @internal */ withWaiver?: boolean; /** * Whether to return information about the transactions from ecom. * * You must have the `ECOM.READ_ORDERS` and `ECOM.READ_TRANSACTIONS` permission scope * when passing `true`. * * Default: `false`. * @internal */ withEcomTransactions?: boolean; /** * Whether to return information about the form submission. * * You must have the `BOOKINGS.BOOKING_FORM_SCHEMA_READ` permission scope * when passing `true`. * * Default: `false`. * @internal */ withFormSubmissions?: boolean; /** * Whether to return event notes for each booking. * * You must have the `CALENDAR.EVENT_READ_PI` permission scope * when passing `true`. * * Default: `false`. * @internal */ withEventNotes?: boolean; /** * Whether to return deferred charge information for the bookings. * * Default: `false`. * @internal */ withDeferredCharge?: boolean; /** * IANA timezone for server-side adjusted datetime conversion. When set, `adjustedStart`/`adjustedEnd` are converted to this timezone. Otherwise, the slot or schedule timezone is used. * @internal * @maxLength 64 */ timeZone?: string | null; } interface QueryV2 extends QueryV2PagingMethodOneOf { /** Paging options to limit and skip the number of items. */ paging?: Paging; /** * Cursor token pointing to a page of results. In the first request, * specify `cursorPaging.limit`. For following requests, specify the * retrieved `cursorPaging.cursor` token and not `query.filter` or * `query.sort`. */ cursorPaging?: CursorPaging; /** * Filter object in the following format: * `"filter" : { * "fieldName1": "value1", * "fieldName2":{"$operator":"value2"} * }` * Example of operators: `$eq`, `$ne`, `$lt`, `$lte`, `$gt`, `$gte`, `$in`, `$hasSome`, `$hasAll`, `$startsWith`, `$contains` */ filter?: Record | null; /** * Sort object in the following format: * `[{"fieldName":"sortField1","order":"ASC"},{"fieldName":"sortField2","order":"DESC"}]` */ sort?: Sorting[]; /** Array of projected fields. A list of specific field names to return. If `fieldsets` are also specified, the union of `fieldsets` and `fields` is returned. */ fields?: string[]; /** Array of named, predefined sets of projected fields. A array of predefined named sets of fields to be returned. Specifying multiple `fieldsets` will return the union of fields from all sets. If `fields` are also specified, the union of `fieldsets` and `fields` is returned. */ fieldsets?: string[]; } /** @oneof */ interface QueryV2PagingMethodOneOf { /** Paging options to limit and skip the number of items. */ paging?: Paging; /** * Cursor token pointing to a page of results. In the first request, * specify `cursorPaging.limit`. For following requests, specify the * retrieved `cursorPaging.cursor` token and not `query.filter` or * `query.sort`. */ cursorPaging?: CursorPaging; } interface Sorting { /** * Name of the field to sort by. * @maxLength 512 */ fieldName?: string; /** Sort order. */ order?: SortOrderWithLiterals; /** * When `field_name` is a property of repeated field that is marked as `MATCH_ITEMS` and sort should be done by * a specific element from a collection, filter can/should be provided to ensure correct sort value is picked. * * If multiple filters are provided, they are combined with AND operator. * * Example: * Given we have document like {"id": "1", "nestedField": [{"price": 10, "region": "EU"}, {"price": 20, "region": "US"}]} * and `nestedField` is marked as `MATCH_ITEMS`, to ensure that sorting is done by correct region, filter should be * { fieldName: "nestedField.price", "select_items_by": [{"nestedField.region": "US"}] } * @internal * @maxSize 10 */ selectItemsBy?: Record[] | null; /** * Origin point for geo-distance sorting on a GEO field * results are ordered by distance from this point (ASC = nearest first, DESC = farthest first). */ origin?: CommonAddressLocation; } declare enum SortOrder { ASC = "ASC", DESC = "DESC" } /** @enumType */ type SortOrderWithLiterals = SortOrder | 'ASC' | 'DESC'; interface CommonAddressLocation { /** Address latitude. */ latitude?: number | null; /** Address longitude. */ longitude?: number | null; } interface Paging { /** Number of items to load. */ limit?: number | null; /** Number of items to skip in the current sort order. */ offset?: number | null; } interface CursorPaging { /** * Maximum number of items to return in the results. * @max 100 */ limit?: number | null; /** * Pointer to the next or previous page in the list of results. * * Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response. * Not relevant for the first request. * @maxLength 16000 */ cursor?: string | null; } interface QueryExtendedBookingResponse { /** * Retrieved bookings. * * May include information about the attendance or actions the customer can * perform, depending on your request. */ extendedBookings?: ExtendedBooking[]; /** Paging metadata. */ pagingMetadata?: PagingMetadataV2; } interface PagingMetadataV2 { /** Number of items returned in the response. */ count?: number | null; /** Offset that was requested. */ offset?: number | null; /** Total number of items that match the query. Returned if offset paging is used and the `tooManyToCount` flag is not set. */ total?: number | null; /** Flag that indicates the server failed to calculate the `total` field. */ tooManyToCount?: boolean | null; /** Cursors to navigate through the result pages using `next` and `prev`. Returned if cursor paging is used. */ cursors?: Cursors; /** * Indicates if there are more results after the current page. * If `true`, another page of results can be retrieved. * If `false`, this is the last page. * @internal */ hasNext?: boolean | null; } interface Cursors { /** * Cursor string pointing to the next page in the list of results. * @maxLength 16000 */ next?: string | null; /** * Cursor pointing to the previous page in the list of results. * @maxLength 16000 */ prev?: string | null; } interface QueryExtendedBookingsRequest { /** Information about filters, paging, and sorting. */ query: CommonQueryV2; /** Whether to return information about the actions the customer can perform for the bookings. */ withBookingAllowedActions?: boolean; /** Whether to return information about the attendance for the bookings. */ withBookingAttendanceInfo?: boolean; /** Whether to return information about the online conferencing details for the bookings. */ withBookingConferencingDetails?: boolean; /** * Whether to retrieve information about booking policy settings. * * You must have the `BOOKINGS.BOOKING_POLICY_SNAPSHOT_READ` permission scope * when passing `true`. * * Default: `false`. */ withBookingPolicySettings?: boolean; /** * Whether to retrieve information about [booking fee](https://dev.wix.com/docs/api-reference/business-solutions/bookings/pricing/booking-fees/introduction) * statuses. * * Information about booking fees with a status of `PREVIEW` isn't returned, * and only fees that have already been applied are included in the response. * If there are hypothetical fees for a booking that may be canceled in the * future, these fees aren't returned. To retrieve such fees, call * [List Booking Fees] By Booking Ids](https://dev.wix.com/docs/api-reference/business-solutions/bookings/pricing/booking-fees/list-booking-fees-by-booking-ids) * instead. * * You must have the `BOOKINGS.BOOKING_FEES_READ` permission scope when passing * `true`. * * Default: `false` */ withBookingFeeDetails?: boolean; /** * Whether to return information about the order from ecom. * * Learn more about [eCommerce orders](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction). * * You must have the `ECOM.READ_ORDERS` permission scope * when passing `true`. * * Default: `false`. */ withEcomOrder?: boolean; /** * Whether to return information about the waiver. * * You must have the `WAIVER_TEMPLATE.VIEWS` and `WAIVER_TEMPLATE.VIEWS` and `WAIVER.VIEW` permissions scope * when passing `true`. * * Default: `false`. * @internal */ withWaiver?: boolean; /** * Whether to return information about the transactions from ecom. * * You must have the `ECOM.READ_ORDERS` and `ECOM.READ_TRANSACTIONS` permission scope * when passing `true`. * * Default: `false`. * @internal */ withEcomTransactions?: boolean; /** * Whether to return information about the form submission. * * You must have the `BOOKINGS.BOOKING_FORM_SCHEMA_READ` permission scope * when passing `true`. * * Default: `false`. * @internal */ withFormSubmissions?: boolean; /** * Whether to return event notes for each booking. * * You must have the `CALENDAR.EVENT_READ_PI` permission scope * when passing `true`. * * Default: `false`. * @internal */ withEventNotes?: boolean; /** * Whether to return deferred charge information for the bookings. * * Default: `false`. * @internal */ withDeferredCharge?: boolean; /** * IANA timezone for server-side adjusted datetime conversion. When set, `adjustedStart`/`adjustedEnd` are converted to this timezone. Otherwise, the slot or schedule timezone is used. * @internal * @maxLength 64 */ timeZone?: string | null; } interface CommonQueryV2 extends CommonQueryV2PagingMethodOneOf { /** Paging options to limit and skip the number of items. */ paging?: CommonPaging; /** * Cursor token pointing to a page of results. In the first request, * specify `cursorPaging.limit`. For following requests, specify the * retrieved `cursorPaging.cursor` token and not `query.filter` or * `query.sort`. */ cursorPaging?: CursorPaging; /** * Filter object in the following format: * `"filter" : { * "fieldName1": "value1", * "fieldName2":{"$operator":"value2"} * }` * Example of operators: `$eq`, `$ne`, `$lt`, `$lte`, `$gt`, `$gte`, `$in`, `$hasSome`, `$hasAll`, `$startsWith`, `$contains` */ filter?: Record | null; /** * Sort object in the following format: * `[{"fieldName":"sortField1","order":"ASC"},{"fieldName":"sortField2","order":"DESC"}]` */ sort?: Sorting[]; } /** @oneof */ interface CommonQueryV2PagingMethodOneOf { /** Paging options to limit and skip the number of items. */ paging?: CommonPaging; /** * Cursor token pointing to a page of results. In the first request, * specify `cursorPaging.limit`. For following requests, specify the * retrieved `cursorPaging.cursor` token and not `query.filter` or * `query.sort`. */ cursorPaging?: CursorPaging; } interface CommonPaging { /** Number of items to load. */ limit?: number | null; /** Number of items to skip in the current sort order. */ offset?: number | null; } interface QueryExtendedBookingsResponse { /** * Retrieved bookings. * * May include information about the attendance or actions the customer can * perform, depending on your request. */ extendedBookings?: ExtendedBooking[]; /** Paging metadata. */ pagingMetadata?: PagingMetadataV2; } interface CountExtendedBookingsRequest { /** * Filter object in the following format: * `"filter" : { * "fieldName1": "value1", * "fieldName2":{"$operator":"value2"} * }` * Example of operators: `$eq`, `$ne`, `$lt`, `$lte`, `$gt`, `$gte`, `$in`, `$hasSome`, `$hasAll`, `$startsWith`, `$contains` */ filter?: Record | null; } interface CountExtendedBookingsResponse { /** The number of bookings matching the specified filter. */ count?: number; } interface SearchExtendedBookingsRequest { /** Search criteria including filter, sort, aggregations, and paging options. */ search?: CursorSearch; /** Whether to return information about the actions the customer can perform for the bookings. */ withBookingAllowedActions?: boolean; /** Whether to return information about the attendance for the bookings. */ withBookingAttendanceInfo?: boolean; /** Whether to return information about the online conferencing details for the bookings. */ withBookingConferencingDetails?: boolean; /** Whether to retrieve information about booking policy settings. */ withBookingPolicySettings?: boolean; /** Whether to retrieve information about booking fee statuses. */ withBookingFeeDetails?: boolean; /** * Whether to return information about the order from ecom. * @internal */ withEcomOrder?: boolean; /** * Whether to return information about the waiver. * @internal */ withWaiver?: boolean; /** * Whether to return information about the transactions from ecom. * @internal */ withEcomTransactions?: boolean; /** * Whether to return information about the form submission. * @internal */ withFormSubmissions?: boolean; /** * Whether to return event notes for each booking. * @internal */ withEventNotes?: boolean; /** * Whether to return deferred charge information for the bookings. * * Default: `false`. * @internal */ withDeferredCharge?: boolean; } interface CursorSearch extends CursorSearchPagingMethodOneOf { cursorPaging?: CursorPaging; filter?: Record | null; /** @maxSize 10 */ sort?: Sorting[]; /** @maxSize 10 */ aggregations?: Aggregation[]; search?: SearchDetails; /** @maxLength 50 */ timeZone?: string | null; } /** @oneof */ interface CursorSearchPagingMethodOneOf { cursorPaging?: CursorPaging; } interface Aggregation extends AggregationKindOneOf { value?: ValueAggregation; range?: RangeAggregation; scalar?: ScalarAggregation; dateHistogram?: DateHistogramAggregation; nested?: NestedAggregation; /** @maxLength 100 */ name?: string | null; type?: AggregationTypeWithLiterals; /** @maxLength 200 */ fieldPath?: string; /** @deprecated */ groupBy?: GroupByAggregation; } /** @oneof */ interface AggregationKindOneOf { value?: ValueAggregation; range?: RangeAggregation; scalar?: ScalarAggregation; dateHistogram?: DateHistogramAggregation; nested?: NestedAggregation; } interface RangeBucket { from?: number | null; to?: number | null; } declare enum SortType { COUNT = "COUNT", VALUE = "VALUE" } /** @enumType */ type SortTypeWithLiterals = SortType | 'COUNT' | 'VALUE'; declare enum SortDirection { DESC = "DESC", ASC = "ASC" } /** @enumType */ type SortDirectionWithLiterals = SortDirection | 'DESC' | 'ASC'; declare enum MissingValues { EXCLUDE = "EXCLUDE", INCLUDE = "INCLUDE" } /** @enumType */ type MissingValuesWithLiterals = MissingValues | 'EXCLUDE' | 'INCLUDE'; interface IncludeMissingValuesOptions { /** @maxLength 20 */ addToBucket?: string; } declare enum ScalarType { UNKNOWN_SCALAR_TYPE = "UNKNOWN_SCALAR_TYPE", COUNT_DISTINCT = "COUNT_DISTINCT", MIN = "MIN", MAX = "MAX", /** @internal */ SUM = "SUM", /** @internal */ AVG = "AVG" } /** @enumType */ type ScalarTypeWithLiterals = ScalarType | 'UNKNOWN_SCALAR_TYPE' | 'COUNT_DISTINCT' | 'MIN' | 'MAX'; declare enum Interval { UNKNOWN_INTERVAL = "UNKNOWN_INTERVAL", YEAR = "YEAR", MONTH = "MONTH", WEEK = "WEEK", DAY = "DAY", HOUR = "HOUR", MINUTE = "MINUTE", SECOND = "SECOND" } /** @enumType */ type IntervalWithLiterals = Interval | 'UNKNOWN_INTERVAL' | 'YEAR' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND'; interface ValueAggregation extends ValueAggregationOptionsOneOf { includeOptions?: IncludeMissingValuesOptions; sortType?: SortTypeWithLiterals; sortDirection?: SortDirectionWithLiterals; limit?: number | null; missingValues?: MissingValuesWithLiterals; } /** @oneof */ interface ValueAggregationOptionsOneOf { includeOptions?: IncludeMissingValuesOptions; } declare enum NestedAggregationType { UNKNOWN_AGGREGATION_TYPE = "UNKNOWN_AGGREGATION_TYPE", VALUE = "VALUE", RANGE = "RANGE", SCALAR = "SCALAR", DATE_HISTOGRAM = "DATE_HISTOGRAM" } /** @enumType */ type NestedAggregationTypeWithLiterals = NestedAggregationType | 'UNKNOWN_AGGREGATION_TYPE' | 'VALUE' | 'RANGE' | 'SCALAR' | 'DATE_HISTOGRAM'; interface RangeAggregation { /** @maxSize 50 */ buckets?: RangeBucket[]; } interface ScalarAggregation { type?: ScalarTypeWithLiterals; } interface DateHistogramAggregation { interval?: IntervalWithLiterals; } interface NestedAggregationItem extends NestedAggregationItemKindOneOf { value?: ValueAggregation; range?: RangeAggregation; scalar?: ScalarAggregation; dateHistogram?: DateHistogramAggregation; /** @maxLength 100 */ name?: string | null; type?: NestedAggregationTypeWithLiterals; /** @maxLength 200 */ fieldPath?: string; } /** @oneof */ interface NestedAggregationItemKindOneOf { value?: ValueAggregation; range?: RangeAggregation; scalar?: ScalarAggregation; dateHistogram?: DateHistogramAggregation; } declare enum AggregationType { UNKNOWN_AGGREGATION_TYPE = "UNKNOWN_AGGREGATION_TYPE", VALUE = "VALUE", RANGE = "RANGE", SCALAR = "SCALAR", DATE_HISTOGRAM = "DATE_HISTOGRAM", NESTED = "NESTED" } /** @enumType */ type AggregationTypeWithLiterals = AggregationType | 'UNKNOWN_AGGREGATION_TYPE' | 'VALUE' | 'RANGE' | 'SCALAR' | 'DATE_HISTOGRAM' | 'NESTED'; interface NestedAggregation { /** * @minSize 2 * @maxSize 3 */ nestedAggregations?: NestedAggregationItem[]; } interface GroupByAggregation extends GroupByAggregationKindOneOf { value?: ValueAggregation; /** @maxLength 100 */ name?: string | null; /** @maxLength 200 */ fieldPath?: string; } /** @oneof */ interface GroupByAggregationKindOneOf { value?: ValueAggregation; } interface SearchDetails { mode?: ModeWithLiterals; /** @maxLength 100 */ expression?: string | null; /** * @maxLength 200 * @maxSize 20 */ fields?: string[]; fuzzy?: boolean; } declare enum Mode { OR = "OR", AND = "AND" } /** @enumType */ type ModeWithLiterals = Mode | 'OR' | 'AND'; interface SearchExtendedBookingsResponse { /** Retrieved bookings (empty when only aggregation is needed with limit=0). */ extendedBookings?: ExtendedBooking[]; /** Paging metadata. */ pagingMetadata?: CursorPagingMetadata; /** Aggregation data results. */ aggregationData?: AggregationData; } interface CursorPagingMetadata { /** Number of items returned in current page. */ count?: number | null; /** Cursor strings that point to the next page, previous page, or both. */ cursors?: Cursors; /** * Whether there are more pages to retrieve following the current page. * * + `true`: Another page of results can be retrieved. * + `false`: This is the last page. */ hasNext?: boolean | null; /** * Total number of items matching the filter. * Available only on the first page of *Search* results, not included in *Query* or *List* results. * If the Search results span multiple pages, the value of `total` will exceed the number of items returned on the first page. * @internal */ total?: number | null; } interface AggregationData { /** * List of the aggregated data results. * @maxSize 10000 */ results?: AggregationResults[]; } interface ValueAggregationResult { /** * Value of the field. * @maxLength 100 */ value?: string; /** Number of entities with this value. */ count?: number; } interface RangeAggregationResult { /** Inclusive lower bound of the range. */ from?: number | null; /** Exclusive upper bound of the range. */ to?: number | null; /** Total number of entities in this range. */ count?: number; } declare enum CommonScalarType { /** Total number of distinct values. */ COUNT_DISTINCT = "COUNT_DISTINCT", /** Minimum value. */ MIN = "MIN", /** Maximum value. */ MAX = "MAX", /** * Sum of values. * @internal */ SUM = "SUM", /** * Average of values. * @internal */ AVG = "AVG" } /** @enumType */ type CommonScalarTypeWithLiterals = CommonScalarType | 'COUNT_DISTINCT' | 'MIN' | 'MAX'; interface NestedAggregationResults extends NestedAggregationResultsResultOneOf { /** Value aggregation results. */ values?: ValueResults; /** Range aggregation results. */ ranges?: RangeResults; /** Scalar aggregation results. */ scalar?: AggregationResultsScalarResult; /** * Unique, caller-defined aggregation name, identifiable by the requested aggregation `name`. * @maxLength 100 */ name?: string; /** Aggregation type. */ type?: CommonAggregationTypeWithLiterals; /** * Field which the data was aggregated by. * @maxLength 200 */ fieldPath?: string; } /** @oneof */ interface NestedAggregationResultsResultOneOf { /** Value aggregation results. */ values?: ValueResults; /** Range aggregation results. */ ranges?: RangeResults; /** Scalar aggregation results. */ scalar?: AggregationResultsScalarResult; } declare enum CommonAggregationType { /** Calculates the distribution of a specific field's values within a dataset, providing insights into the overall distribution and key statistics of those values. */ VALUE = "VALUE", /** Calculates the count of the values from the specified field in the dataset that fall within the range of each bucket you define. */ RANGE = "RANGE", /** Calculates a single numerical value from a dataset, summarizing the dataset into one key metric: `COUNT_DISTINCT`, `SUM`, `AVG`, `MIN`, or `MAX`. */ SCALAR = "SCALAR", /** Calculates the count of time values from the specified field in the dataset that fall within each time interval you define (hour, day, week, etc.). */ DATE_HISTOGRAM = "DATE_HISTOGRAM", /** Flattened list of aggregations, where each aggregation is nested within previous one. */ NESTED = "NESTED", /** Groups geo point values into buckets that represent map tiles at a given precision, for map clustering. */ GEOTILE_GRID = "GEOTILE_GRID" } /** @enumType */ type CommonAggregationTypeWithLiterals = CommonAggregationType | 'VALUE' | 'RANGE' | 'SCALAR' | 'DATE_HISTOGRAM' | 'NESTED' | 'GEOTILE_GRID'; interface ValueResults { /** * List of value aggregations. * @maxSize 250 */ results?: ValueAggregationResult[]; } interface RangeResults { /** * List of ranges returned in the same order as requested. * @maxSize 50 */ results?: RangeAggregationResult[]; } interface AggregationResultsScalarResult { /** Type of scalar aggregation. */ type?: CommonScalarTypeWithLiterals; /** Value of the scalar aggregation. */ value?: number; } interface NestedValueAggregationResult { /** * Value of the field. * @maxLength 1000 */ value?: string; /** Nested aggregations. */ nestedResults?: NestedAggregationResults; } interface ValueResult { /** * Value of the field. * @maxLength 1000 */ value?: string; /** Number of entities with this value. */ count?: number | null; } interface RangeResult { /** Inclusive lower bound of the range. */ from?: number | null; /** Exclusive upper bound of the range. */ to?: number | null; /** Number of entities in this range. */ count?: number | null; } interface ScalarResult { /** Value of the scalar aggregation. */ value?: number; } interface ScalarDateResult { /** * Date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. * @maxLength 100 */ value?: string; } interface NestedResultValue extends NestedResultValueResultOneOf { /** Value aggregation result. */ value?: ValueResult; /** Range aggregation result. */ range?: RangeResult; /** Scalar aggregation result. */ scalar?: ScalarResult; /** Date histogram aggregation result. */ dateHistogram?: ValueResult; /** Scalar date aggregation result. */ scalarDate?: ScalarDateResult; } /** @oneof */ interface NestedResultValueResultOneOf { /** Value aggregation result. */ value?: ValueResult; /** Range aggregation result. */ range?: RangeResult; /** Scalar aggregation result. */ scalar?: ScalarResult; /** Date histogram aggregation result. */ dateHistogram?: ValueResult; /** Scalar date aggregation result. */ scalarDate?: ScalarDateResult; } interface Results { /** List of nested aggregations. */ results?: Record; } interface DateHistogramResult { /** * Date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. * @maxLength 100 */ value?: string; /** Number of entities in the bucket. */ count?: number; } interface GeotileGridBucket { /** * Tile key in `zoom/x/y` format. * @maxLength 30 */ tileKey?: string; /** Number of entities whose geo point falls inside the tile. */ count?: number; /** Centroid of the geo points in the tile. */ centroid?: CommonAddressLocation; } interface GroupByValueResults { /** * List of value aggregations. * @maxSize 1000 */ results?: NestedValueAggregationResult[]; } interface DateHistogramResults { /** * List of date histogram aggregations. * @maxSize 200 */ results?: DateHistogramResult[]; } /** Results of `NESTED` aggregation type in a flattened array, identifiable by the requested aggregation `name`. */ interface NestedResults { /** * List of nested aggregations. * @maxSize 1000 */ results?: Results[]; } interface AggregationResultsScalarDateResult { /** Type of scalar date aggregation. Possible values: `MIN`, `MAX`. */ type?: CommonScalarTypeWithLiterals; /** * Date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. * @maxLength 100 */ value?: string; } /** Geotile grid aggregation results — one bucket per map tile at the requested precision. */ interface GeotileGridResults { /** * List of tile buckets. * @maxSize 1000 */ results?: GeotileGridBucket[]; } interface AggregationResults extends AggregationResultsResultOneOf { /** Value aggregation results. */ values?: ValueResults; /** Range aggregation results. */ ranges?: RangeResults; /** Scalar aggregation results. */ scalar?: AggregationResultsScalarResult; /** Group by value aggregation results. */ groupedByValue?: GroupByValueResults; /** Date histogram aggregation results. */ dateHistogram?: DateHistogramResults; /** Nested aggregation results. */ nested?: NestedResults; /** Date aggregation results. */ scalarDate?: AggregationResultsScalarDateResult; /** Geotile grid aggregation results. */ geotileGrid?: GeotileGridResults; /** * Aggregation name, returned in `aggregations.results.name`. * @maxLength 100 */ name?: string; /** Aggregation type. Must align with the corresponding aggregation field. */ type?: CommonAggregationTypeWithLiterals; /** * Field to aggregate by. Use dot notation to specify a JSON path. For example, `order.address.streetName`. * @maxLength 200 */ fieldPath?: string; } /** @oneof */ interface AggregationResultsResultOneOf { /** Value aggregation results. */ values?: ValueResults; /** Range aggregation results. */ ranges?: RangeResults; /** Scalar aggregation results. */ scalar?: AggregationResultsScalarResult; /** Group by value aggregation results. */ groupedByValue?: GroupByValueResults; /** Date histogram aggregation results. */ dateHistogram?: DateHistogramResults; /** Nested aggregation results. */ nested?: NestedResults; /** Date aggregation results. */ scalarDate?: AggregationResultsScalarDateResult; /** Geotile grid aggregation results. */ geotileGrid?: GeotileGridResults; } type __PublicMethodMetaInfo = { getUrl: (context: any) => string; httpMethod: K; path: string; pathParams: M; __requestType: T; __originalRequestType: S; __responseType: Q; __originalResponseType: R; }; declare function query(): __PublicMethodMetaInfo<'POST', {}, QueryExtendedBookingRequest$1, QueryExtendedBookingRequest, QueryExtendedBookingResponse$1, QueryExtendedBookingResponse>; declare function queryExtendedBookings(): __PublicMethodMetaInfo<'POST', {}, QueryExtendedBookingsRequest$1, QueryExtendedBookingsRequest, QueryExtendedBookingsResponse$1, QueryExtendedBookingsResponse>; declare function countExtendedBookings(): __PublicMethodMetaInfo<'POST', {}, CountExtendedBookingsRequest$1, CountExtendedBookingsRequest, CountExtendedBookingsResponse$1, CountExtendedBookingsResponse>; export { Actor as ActorOriginal, type ActorWithLiterals as ActorWithLiteralsOriginal, type AdditionalFee as AdditionalFeeOriginal, type AddressLocation as AddressLocationOriginal, type Address as AddressOriginal, type AddressStreetOneOf as AddressStreetOneOfOriginal, type AggregationData as AggregationDataOriginal, type AggregationKindOneOf as AggregationKindOneOfOriginal, type Aggregation as AggregationOriginal, type AggregationResults as AggregationResultsOriginal, type AggregationResultsResultOneOf as AggregationResultsResultOneOfOriginal, type AggregationResultsScalarDateResult as AggregationResultsScalarDateResultOriginal, type AggregationResultsScalarResult as AggregationResultsScalarResultOriginal, AggregationType as AggregationTypeOriginal, type AggregationTypeWithLiterals as AggregationTypeWithLiteralsOriginal, type AllowedActions as AllowedActionsOriginal, type Attendance as AttendanceOriginal, AttendanceStatus as AttendanceStatusOriginal, type AttendanceStatusWithLiterals as AttendanceStatusWithLiteralsOriginal, type Balance as BalanceOriginal, type BookedAddOn as BookedAddOnOriginal, type BookedEntityItemOneOf as BookedEntityItemOneOfOriginal, type BookedEntity as BookedEntityOriginal, type BookedResource as BookedResourceOriginal, type BookedSchedule as BookedScheduleOriginal, type BookedSlot as BookedSlotOriginal, type BookingFeeDetails as BookingFeeDetailsOriginal, BookingFeeStatus as BookingFeeStatusOriginal, type BookingFeeStatusWithLiterals as BookingFeeStatusWithLiteralsOriginal, type Booking as BookingOriginal, type BookingParticipantsInfoOneOf as BookingParticipantsInfoOneOfOriginal, type BookingPolicySettings as BookingPolicySettingsOriginal, type BookingSource as BookingSourceOriginal, BookingStatus as BookingStatusOriginal, type BookingStatusWithLiterals as BookingStatusWithLiteralsOriginal, type CommonAddressLocation as CommonAddressLocationOriginal, CommonAggregationType as CommonAggregationTypeOriginal, type CommonAggregationTypeWithLiterals as CommonAggregationTypeWithLiteralsOriginal, type CommonPaging as CommonPagingOriginal, type CommonQueryV2 as CommonQueryV2Original, type CommonQueryV2PagingMethodOneOf as CommonQueryV2PagingMethodOneOfOriginal, CommonScalarType as CommonScalarTypeOriginal, type CommonScalarTypeWithLiterals as CommonScalarTypeWithLiteralsOriginal, type ConferencingDetails as ConferencingDetailsOriginal, type ContactDetails as ContactDetailsOriginal, type CountExtendedBookingsRequest as CountExtendedBookingsRequestOriginal, type CountExtendedBookingsResponse as CountExtendedBookingsResponseOriginal, type CouponInfo as CouponInfoOriginal, type CursorPagingMetadata as CursorPagingMetadataOriginal, type CursorPaging as CursorPagingOriginal, type CursorSearch as CursorSearchOriginal, type CursorSearchPagingMethodOneOf as CursorSearchPagingMethodOneOfOriginal, type Cursors as CursorsOriginal, type CustomFormField as CustomFormFieldOriginal, type CyclePrice as CyclePriceOriginal, type DateHistogramAggregation as DateHistogramAggregationOriginal, type DateHistogramResult as DateHistogramResultOriginal, type DateHistogramResults as DateHistogramResultsOriginal, type DateTimeRule as DateTimeRuleOriginal, DeferredChargeDeclineReason as DeferredChargeDeclineReasonOriginal, type DeferredChargeDeclineReasonWithLiterals as DeferredChargeDeclineReasonWithLiteralsOriginal, type DeferredChargeInfo as DeferredChargeInfoOriginal, type DeferredChargeInfoStatusDetailsOneOf as DeferredChargeInfoStatusDetailsOneOfOriginal, DeferredChargeStatus as DeferredChargeStatusOriginal, type DeferredChargeStatusWithLiterals as DeferredChargeStatusWithLiteralsOriginal, type Duration as DurationOriginal, DurationUnitType as DurationUnitTypeOriginal, type DurationUnitTypeWithLiterals as DurationUnitTypeWithLiteralsOriginal, type ExtendedBooking as ExtendedBookingOriginal, type ExtendedFields as ExtendedFieldsOriginal, type FlowControlSettings as FlowControlSettingsOriginal, type FormSubmission as FormSubmissionOriginal, Frequency as FrequencyOriginal, type FrequencyWithLiterals as FrequencyWithLiteralsOriginal, type GeotileGridBucket as GeotileGridBucketOriginal, type GeotileGridResults as GeotileGridResultsOriginal, type GroupByAggregationKindOneOf as GroupByAggregationKindOneOfOriginal, type GroupByAggregation as GroupByAggregationOriginal, type GroupByValueResults as GroupByValueResultsOriginal, type IdentificationDataIdOneOf as IdentificationDataIdOneOfOriginal, type IdentificationData as IdentificationDataOriginal, IdentityType as IdentityTypeOriginal, type IdentityTypeWithLiterals as IdentityTypeWithLiteralsOriginal, type IncludeMissingValuesOptions as IncludeMissingValuesOptionsOriginal, Interval as IntervalOriginal, type IntervalWithLiterals as IntervalWithLiteralsOriginal, type Location as LocationOriginal, LocationType as LocationTypeOriginal, type LocationTypeWithLiterals as LocationTypeWithLiteralsOriginal, type MembershipName as MembershipNameOriginal, type MembershipPaymentCredits as MembershipPaymentCreditsOriginal, type MembershipPaymentDetails as MembershipPaymentDetailsOriginal, MissingValues as MissingValuesOriginal, type MissingValuesWithLiterals as MissingValuesWithLiteralsOriginal, Mode as ModeOriginal, type ModeWithLiterals as ModeWithLiteralsOriginal, type MultiServiceBookingInfo as MultiServiceBookingInfoOriginal, MultiServiceBookingType as MultiServiceBookingTypeOriginal, type MultiServiceBookingTypeWithLiterals as MultiServiceBookingTypeWithLiteralsOriginal, type NestedAggregationItemKindOneOf as NestedAggregationItemKindOneOfOriginal, type NestedAggregationItem as NestedAggregationItemOriginal, type NestedAggregation as NestedAggregationOriginal, type NestedAggregationResults as NestedAggregationResultsOriginal, type NestedAggregationResultsResultOneOf as NestedAggregationResultsResultOneOfOriginal, NestedAggregationType as NestedAggregationTypeOriginal, type NestedAggregationTypeWithLiterals as NestedAggregationTypeWithLiteralsOriginal, type NestedResultValue as NestedResultValueOriginal, type NestedResultValueResultOneOf as NestedResultValueResultOneOfOriginal, type NestedResults as NestedResultsOriginal, type NestedValueAggregationResult as NestedValueAggregationResultOriginal, type Order as OrderOriginal, OrderStatus as OrderStatusOriginal, type OrderStatusWithLiterals as OrderStatusWithLiteralsOriginal, type OrderTransactions as OrderTransactionsOriginal, type PagingMetadataV2 as PagingMetadataV2Original, type Paging as PagingOriginal, type ParticipantChoices as ParticipantChoicesOriginal, type ParticipantNotification as ParticipantNotificationOriginal, type ParticipantsRange as ParticipantsRangeOriginal, PaymentStatusEnumPaymentStatus as PaymentStatusEnumPaymentStatusOriginal, type PaymentStatusEnumPaymentStatusWithLiterals as PaymentStatusEnumPaymentStatusWithLiteralsOriginal, PaymentStatus as PaymentStatusOriginal, type PaymentStatusWithLiterals as PaymentStatusWithLiteralsOriginal, type PhoneCall as PhoneCallOriginal, Platform as PlatformOriginal, type PlatformWithLiterals as PlatformWithLiteralsOriginal, type PriceDescription as PriceDescriptionOriginal, type Price as PriceOriginal, type QueryExtendedBookingRequest as QueryExtendedBookingRequestOriginal, type QueryExtendedBookingResponse as QueryExtendedBookingResponseOriginal, type QueryExtendedBookingsRequest as QueryExtendedBookingsRequestOriginal, type QueryExtendedBookingsResponse as QueryExtendedBookingsResponseOriginal, type QueryV2 as QueryV2Original, type QueryV2PagingMethodOneOf as QueryV2PagingMethodOneOfOriginal, type RangeAggregation as RangeAggregationOriginal, type RangeAggregationResult as RangeAggregationResultOriginal, type RangeBucket as RangeBucketOriginal, type RangeResult as RangeResultOriginal, type RangeResults as RangeResultsOriginal, RequestedGender as RequestedGenderOriginal, type RequestedGenderValue as RequestedGenderValueOriginal, type RequestedGenderWithLiterals as RequestedGenderWithLiteralsOriginal, type ResourceSelection as ResourceSelectionOriginal, ResourceTransparency as ResourceTransparencyOriginal, type ResourceTransparencyWithLiterals as ResourceTransparencyWithLiteralsOriginal, type Results as ResultsOriginal, type ScalarAggregation as ScalarAggregationOriginal, type ScalarDateResult as ScalarDateResultOriginal, type ScalarResult as ScalarResultOriginal, ScalarType as ScalarTypeOriginal, type ScalarTypeWithLiterals as ScalarTypeWithLiteralsOriginal, type SearchDetails as SearchDetailsOriginal, type SearchExtendedBookingsRequest as SearchExtendedBookingsRequestOriginal, type SearchExtendedBookingsResponse as SearchExtendedBookingsResponseOriginal, SelectedPaymentOption as SelectedPaymentOptionOriginal, type SelectedPaymentOptionWithLiterals as SelectedPaymentOptionWithLiteralsOriginal, SelectionMethod as SelectionMethodOriginal, type SelectionMethodWithLiterals as SelectionMethodWithLiteralsOriginal, type ServiceChoiceChoiceOneOf as ServiceChoiceChoiceOneOfOriginal, type ServiceChoice as ServiceChoiceOriginal, type ServiceChoices as ServiceChoicesOriginal, SortDirection as SortDirectionOriginal, type SortDirectionWithLiterals as SortDirectionWithLiteralsOriginal, SortOrder as SortOrderOriginal, type SortOrderWithLiterals as SortOrderWithLiteralsOriginal, SortType as SortTypeOriginal, type SortTypeWithLiterals as SortTypeWithLiteralsOriginal, type Sorting as SortingOriginal, Status as StatusOriginal, type StatusWithLiterals as StatusWithLiteralsOriginal, type StreetAddress as StreetAddressOriginal, type Subdivision as SubdivisionOriginal, type SubscriptionInfo as SubscriptionInfoOriginal, SubscriptionStatus as SubscriptionStatusOriginal, type SubscriptionStatusWithLiterals as SubscriptionStatusWithLiteralsOriginal, type ValueAggregationOptionsOneOf as ValueAggregationOptionsOneOfOriginal, type ValueAggregation as ValueAggregationOriginal, type ValueAggregationResult as ValueAggregationResultOriginal, type ValueResult as ValueResultOriginal, type ValueResults as ValueResultsOriginal, ValueType as ValueTypeOriginal, type ValueTypeWithLiterals as ValueTypeWithLiteralsOriginal, type Waiver as WaiverOriginal, type ZonedDate as ZonedDateOriginal, type __PublicMethodMetaInfo, countExtendedBookings, query, queryExtendedBookings };