import { ConfirmOrDeclineBookingRequest as ConfirmOrDeclineBookingRequest$1, ConfirmOrDeclineBookingResponse as ConfirmOrDeclineBookingResponse$1, BulkConfirmOrDeclineBookingRequest as BulkConfirmOrDeclineBookingRequest$1, BulkConfirmOrDeclineBookingResponse as BulkConfirmOrDeclineBookingResponse$1, V1CancelBookingAnonymouslyRequest as V1CancelBookingAnonymouslyRequest$1, V1CancelBookingAnonymouslyResponse as V1CancelBookingAnonymouslyResponse$1, V1RescheduleBookingAnonymouslyRequest as V1RescheduleBookingAnonymouslyRequest$1, V1RescheduleBookingAnonymouslyResponse as V1RescheduleBookingAnonymouslyResponse$1, V1GetBookingAnonymouslyRequest as V1GetBookingAnonymouslyRequest$1, V1GetBookingAnonymouslyResponse as V1GetBookingAnonymouslyResponse$1, GetServiceAnonymouslyRequest as GetServiceAnonymouslyRequest$1, GetServiceAnonymouslyResponse as GetServiceAnonymouslyResponse$1, GetAnonymousActionTokenRequest as GetAnonymousActionTokenRequest$1, GetAnonymousActionTokenResponse as GetAnonymousActionTokenResponse$1, CreateMultiServiceBookingRequest as CreateMultiServiceBookingRequest$1, CreateMultiServiceBookingResponse as CreateMultiServiceBookingResponse$1, RescheduleMultiServiceBookingRequest as RescheduleMultiServiceBookingRequest$1, RescheduleMultiServiceBookingResponse as RescheduleMultiServiceBookingResponse$1, GetMultiServiceBookingAvailabilityRequest as GetMultiServiceBookingAvailabilityRequest$1, GetMultiServiceBookingAvailabilityResponse as GetMultiServiceBookingAvailabilityResponse$1, CancelMultiServiceBookingRequest as CancelMultiServiceBookingRequest$1, CancelMultiServiceBookingResponse as CancelMultiServiceBookingResponse$1, MarkMultiServiceBookingAsPendingRequest as MarkMultiServiceBookingAsPendingRequest$1, MarkMultiServiceBookingAsPendingResponse as MarkMultiServiceBookingAsPendingResponse$1, ConfirmMultiServiceBookingRequest as ConfirmMultiServiceBookingRequest$1, ConfirmMultiServiceBookingResponse as ConfirmMultiServiceBookingResponse$1, DeclineMultiServiceBookingRequest as DeclineMultiServiceBookingRequest$1, DeclineMultiServiceBookingResponse as DeclineMultiServiceBookingResponse$1, BulkGetMultiServiceBookingAllowedActionsRequest as BulkGetMultiServiceBookingAllowedActionsRequest$1, BulkGetMultiServiceBookingAllowedActionsResponse as BulkGetMultiServiceBookingAllowedActionsResponse$1, GetMultiServiceBookingRequest as GetMultiServiceBookingRequest$1, GetMultiServiceBookingResponse as GetMultiServiceBookingResponse$1, AddBookingsToMultiServiceBookingRequest as AddBookingsToMultiServiceBookingRequest$1, AddBookingsToMultiServiceBookingResponse as AddBookingsToMultiServiceBookingResponse$1, RemoveBookingsFromMultiServiceBookingRequest as RemoveBookingsFromMultiServiceBookingRequest$1, RemoveBookingsFromMultiServiceBookingResponse as RemoveBookingsFromMultiServiceBookingResponse$1, CreateBookingRequest as CreateBookingRequest$1, CreateBookingResponse as CreateBookingResponse$1, BulkCreateBookingRequest as BulkCreateBookingRequest$1, BulkCreateBookingResponse as BulkCreateBookingResponse$1, RescheduleBookingRequest as RescheduleBookingRequest$1, RescheduleBookingResponse as RescheduleBookingResponse$1, ConfirmBookingRequest as ConfirmBookingRequest$1, ConfirmBookingResponse as ConfirmBookingResponse$1, SetBookingSubmissionIdRequest as SetBookingSubmissionIdRequest$1, SetBookingSubmissionIdResponse as SetBookingSubmissionIdResponse$1, UpdateExtendedFieldsRequest as UpdateExtendedFieldsRequest$1, UpdateExtendedFieldsResponse as UpdateExtendedFieldsResponse$1, DeclineBookingRequest as DeclineBookingRequest$1, DeclineBookingResponse as DeclineBookingResponse$1, CancelBookingRequest as CancelBookingRequest$1, CancelBookingResponse as CancelBookingResponse$1, UpdateNumberOfParticipantsRequest as UpdateNumberOfParticipantsRequest$1, UpdateNumberOfParticipantsResponse as UpdateNumberOfParticipantsResponse$1, BulkCalculateAllowedActionsRequest as BulkCalculateAllowedActionsRequest$1, BulkCalculateAllowedActionsResponse as BulkCalculateAllowedActionsResponse$1, MarkBookingAsPendingRequest as MarkBookingAsPendingRequest$1, MarkBookingAsPendingResponse as MarkBookingAsPendingResponse$1 } from './index.typings.js'; import '@wix/sdk-types'; /** 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[]; /** * 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; /** * 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?: CommonIdentificationData; /** * 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; /** * 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; /** * 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; } /** @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; /** * 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; /** * 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[]; } 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 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; } 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 V2PhoneCall { /** 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; } 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'; 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" } /** @enumType */ type PaymentStatusWithLiterals = PaymentStatus | 'UNDEFINED' | 'NOT_PAID' | 'PAID' | 'PARTIALLY_PAID' | 'REFUNDED' | 'EXEMPT'; /** * 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 a booking was created. */ platform?: PlatformWithLiterals; /** Actor that created this booking. */ actor?: ActorWithLiterals; /** * Wix site ID of the application that created the booking. * @format GUID * @readonly */ appDefId?: string | null; /** * Name of the application that created the booking, as saved in Wix Developers Center at the time of booking. * @readonly */ appName?: string | null; } declare enum Platform { UNDEFINED_PLATFORM = "UNDEFINED_PLATFORM", WEB = "WEB", MOBILE_APP = "MOBILE_APP" } /** @enumType */ type PlatformWithLiterals = Platform | 'UNDEFINED_PLATFORM' | 'WEB' | 'MOBILE_APP'; declare enum Actor { UNDEFINED_ACTOR = "UNDEFINED_ACTOR", BUSINESS = "BUSINESS", 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 CommonIdentificationData extends CommonIdentificationDataIdOneOf { /** * 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; } /** @oneof */ interface CommonIdentificationDataIdOneOf { /** * 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 IdentificationDataIdentityType { UNKNOWN = "UNKNOWN", ANONYMOUS_VISITOR = "ANONYMOUS_VISITOR", MEMBER = "MEMBER", WIX_USER = "WIX_USER", APP = "APP" } /** @enumType */ type IdentificationDataIdentityTypeWithLiterals = IdentificationDataIdentityType | '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 { /** 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; } 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; /** * 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; } /** @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; } 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 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; } interface BookingFormFilled { /** The booking object that form was filled for. */ booking?: Booking; /** * The submitted form data, where key is the form field and value is the data submitted for the given field. * See the [form submission object](https://dev.wix.com/docs/rest/crm/forms/form-submissions/submission-object) * for more details. */ formSubmission?: Record | null; /** * ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object) * that was filled. * @format GUID */ formId?: string | null; } interface V2CreateBookingRequest extends V2CreateBookingRequestBookableItemOneOf, V2CreateBookingRequestParticipantsInfoOneOf { /** * Information about the slot to create a booking for. * If you set `slot.location.locationType` to `CUSTOM`, the created slot's * location is set to `slot.location.formattedAddress` when provided. * Otherwise it's set to `contactDetails.fullAddress.formattedAddress`. */ slot?: Slot; /** Information about the schedule to create a booking for. */ schedule?: BookedSchedule; /** Contact details of the customer booking the service. */ contactDetails?: ContactDetails; /** * Booking status. * One of: * - `"CREATED"` - The booking was created. * - `"UPDATED"` - The booking was updated. * - `"CONFIRMED"` - The booking has been confirmed and appears on the bookings calendar. * Booking can be manually confirmed using the Set As Confirmed endpoint. * Booking can be automatically confirmed when the following requirements are met: * + The service is configured as automatically confirmed. * + Invoking eCommerce checkout API and an order has been created. * - `"CANCELED"` - The booking has been canceled and synced to bookings calendar. * The booking can be canceled using cancel API. * - `"PENDING"` - The booking waiting to be confirmed or declined buy the owner and is synced to bookings calendar. * Bookings can be manually set as pending using setAsPending API, requires manage booking status permissions. * Booking can be automatically set as pending when the following requirements are met: * + The Service is configured as manually confirmed. * + Invoking the eCommerce checkout API and an order has been created. * - `"WAITING_LIST"` - The booking is pending on a waiting list. * Booking can be created with this status when invoking waiting list join API. * - `"DECLINED"` - The booking was declined by the owner and synced to bookings calendar. * Booking can be manually declined using decline API and requires manage booking permissions. * Booking can be automatically declined when the following requirements are met: * + Invoking eCommerce checkout API and the order declined event has been sent. * + Invoking eCommerce checkout API and order approved event has been sent, but the booking is offline and the booking causes a double booking. */ status?: BookingStatusWithLiterals; /** * Additional custom fields of the booking form. The customer must provide * information for each field when booking the service. For example, that they * bring their own towels or whether they use a wheelchair. * * Max: 100 fields * @maxSize 100 */ additionalFields?: CustomFormField[]; /** * Total number of participants. Available only when the service doesn't have * [variants](https://dev.wix.com/api/rest/wix-bookings/service-options-and-variants/introduction). * * Max: `20` */ numberOfParticipants?: number | null; /** * Internal business note. Not visible to the customer. * * Max: 200 characters */ internalBusinessNote?: string | null; /** * Payment option the customer intends to use. * Must be one of the payment options defined for the service, unless * you pass `flowControlSettings.skipSelectedPaymentOptionValidation` as `true`. */ selectedPaymentOption?: SelectedPaymentOptionWithLiterals; /** * Identifies the source (platform, actor and app) that created this booking. * This property of the booking cannot be changed. * The app_def_id and app_name will be resolved automatically. * TODO GAP See if we need this - might be able to get this data from the headers? */ bookingSource?: BookingSource; /** * A user identifier of an external application user that initiated the book request. * Allows an external application to later identify its own bookings and correlate to its own internal users */ externalUserId?: string | null; /** Information about a message to send to the customer. */ participantNotification?: ParticipantNotification; /** * Whether to send an SMS reminder to the customer 24 hours before the * session starts. The phone number is taken from `contactDetails.phone`. * * Default: `true`. */ sendSmsReminder?: boolean | null; /** * Information about whether specific procedures of the standard Wix Bookings * creation flow are changed. For example, whether the availability is * checked before creating the booking or if additional payment options are * accepted. */ flowControlSettings?: CreateBookingRequestFlowControlSettings; } /** @oneof */ interface V2CreateBookingRequestBookableItemOneOf { /** * Information about the slot to create a booking for. * If you set `slot.location.locationType` to `CUSTOM`, the created slot's * location is set to `slot.location.formattedAddress` when provided. * Otherwise it's set to `contactDetails.fullAddress.formattedAddress`. */ slot?: Slot; /** Information about the schedule to create a booking for. */ schedule?: BookedSchedule; } /** @oneof */ interface V2CreateBookingRequestParticipantsInfoOneOf { } interface Slot { /** * ID for the slot's corresponding session, when the session is either a single session * or a specific session generated from a recurring session. * * Deprecated. Please use `eventId` instead. * @deprecated ID for the slot's corresponding session, when the session is either a single session * or a specific session generated from a recurring session. * * Deprecated. Please use `eventId` instead. * @replacedBy event_id * @targetRemovalDate 2025-09-30 */ sessionId?: string | null; /** Service ID. */ serviceId?: string; /** Schedule ID. */ scheduleId?: string; /** * The start time of this slot in [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339) * format. * * If `timezone` is specified, * dates are based on the local date/time. This means that the timezone offset * in the `start_date` is ignored. */ startDate?: string | null; /** * The end time of this slot in * [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339) format. * * If `timezone` is specified, * dates are based on the local date/time. This means that the timezone offset * in the `end_date` is ignored. */ endDate?: string | null; /** * The timezone for which slot availability is to be calculated. * * Learn more about [handling Daylight Savings Time (DST) for local time zones](https://dev.wix.com/api/rest/wix-bookings/availability-calendar/query-availability#wix-bookings_availability-calendar_query-availability_handling-daylight-savings-time-dst-for-local-time-zones) * when calculating availability. */ timezone?: string | null; /** * The resource required for this slot. Currently, the only supported resource * is the relevant staff member for the slot. */ resource?: SlotResource; /** Geographic location of the slot. */ location?: Location; /** * ID for the slot's corresponding event, when the event is either a single event * or a specific event generated from a recurring event. * @minLength 36 * @maxLength 250 */ eventId?: string | null; } interface SlotResource { /** * Resource ID. * @format GUID * @readonly */ id?: string | null; /** * Resource name. Read only. * @maxLength 1200 */ name?: string | null; } interface PhoneCall { /** Whether the service is delivered via phone call. */ enabled?: boolean | null; } interface CreateBookingRequestFlowControlSettings { /** * Whether the availability is checked before creating the booking. When * passing `false` a booking is only created when the slot or schedule is * available. Your app must have the `BOOKINGS.OVERRIDE_AVAILABILITY` * permission scope when passing `true`. * * Default: `false`. */ skipAvailabilityValidation?: boolean; /** * Whether `PENDING` bookings are automatically set to `CONFIRMED` for * services that normally require the owner's manual confirmation. Your * app must have the `BOOKINGS.OVERRIDE_AVAILABILITY` permission scope * when passing `true`. * * Default: `false`. */ skipBusinessConfirmation?: boolean; /** * Whether customers can pay using a payment method that isn't supported * for the service, but that's supported for other services. Your app * must have the `BOOKINGS.MANAGE_PAYMENTS` permission scope when passing * `true`. * * Default: `false`. */ skipSelectedPaymentOptionValidation?: boolean; } interface V2CreateBookingResponse { /** Created booking. */ booking?: Booking; } interface V2CancelBookingRequest { /** * ID of the booking to cancel. * @format GUID */ bookingId?: string; /** * Information about whether to notify the customer about the cancellation and * the message to send. */ participantNotification?: ParticipantNotification; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, * the current revision must be passed when managing the booking. */ revision?: string | null; } interface CancelBookingRequestFlowControlSettings { /** * Whether the cancellation policy applies when canceling the booking. When * passing `false` you can only cancel a booking if the cancellation policy * allows it. Your app must have the `BOOKINGS.IGNORE_BOOKING_POLICY ` * permission scope when passing `true`. * * Default: `false`. */ ignoreCancellationPolicy?: boolean; /** * Whether to issue a refund when canceling the booking. * The refund will be issued only if the booking is refundable. * Currently, booking is considered refundable when it was paid by membership. * If passing `true`, the booking flow control settings will be set with refund, * otherwise, either if `false` is passed or the field remains empty, * the booking flow control settings will be set with no refund. * * Default: `false`. */ withRefund?: boolean | null; } interface V2CancelBookingResponse { /** Canceled booking. */ booking?: Booking; } interface V2RescheduleBookingRequest extends V2RescheduleBookingRequestParticipantsInfoOneOf { /** * Id of the booking to reschedule. * @format GUID */ bookingId?: string; /** Information about the new slot. */ slot?: Slot; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, the current revision must be passed when * managing the booking. */ revision?: string | null; /** * Information about whether to notify the customer about the rescheduling and * the message to send. */ participantNotification?: ParticipantNotification; } /** @oneof */ interface V2RescheduleBookingRequestParticipantsInfoOneOf { } interface RescheduleBookingRequestFlowControlSettings { /** * Whether the rescheduling policy applies when rescheduling the booking. * When passing `false` you can only cancel a booking if the rescheduling * policy allows it. Your app must have the `BOOKINGS.IGNORE_BOOKING_POLICY ` * permission scope when passing `true`. * * Default: `false`. */ ignoreReschedulePolicy?: boolean; /** * Whether the availability is checked before rescheduling the booking. * When passing `false` a booking is only created when the slot or * schedule is available. Your app must have the `BOOKINGS.OVERRIDE_AVAILABILITY` * permission scope when passing `true`. * * Default: `false`. */ skipAvailabilityValidation?: boolean; /** * Whether the rescheduled booking's status is automatically set to * `CONFIRMED` for services that normally require the owner's manual * confirmation. Your app must have the `BOOKINGS.OVERRIDE_AVAILABILITY` * permission scope when passing `true`. * * Default: `false`. */ skipBusinessConfirmation?: boolean; } interface V2RescheduleBookingResponse { /** Rescheduled booking. */ booking?: Booking; } interface V2ConfirmBookingRequest { /** * ID of the booking to confirm. * @format GUID */ bookingId?: string; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, the current revision must be passed when * managing the booking. */ revision?: string | null; /** * Information about whether to notify the customer about the confirmation and * the message to send. */ participantNotification?: ParticipantNotification; } interface V2ConfirmBookingResponse { booking?: Booking; } interface V2DeclineBookingRequest { /** * ID of the booking to decline. * @format GUID */ bookingId?: string; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, the current revision must be passed when * managing the booking. */ revision?: string | null; /** * Information about whether to notify the customer about the decline and * the message to send. */ participantNotification?: ParticipantNotification; } interface V2DeclineBookingResponse { /** Declined booking. */ booking?: Booking; } interface V2UpdateNumberOfParticipantsRequest extends V2UpdateNumberOfParticipantsRequestParticipantsInfoOneOf { /** * ID of the booking to update the number of participants for. * @format GUID */ bookingId?: string; /** Updated number of participants. */ numberOfParticipants?: number | null; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, the current revision must be passed when * managing the booking. */ revision?: string | null; } /** @oneof */ interface V2UpdateNumberOfParticipantsRequestParticipantsInfoOneOf { } interface V2UpdateNumberOfParticipantsResponse { /** Booking with updated number of participants. */ booking?: Booking; } interface DomainEvent extends DomainEventBodyOneOf { createdEvent?: EntityCreatedEvent; updatedEvent?: EntityUpdatedEvent; deletedEvent?: EntityDeletedEvent; actionEvent?: ActionEvent; /** Event ID. With this ID you can easily spot duplicated events and ignore them. */ id?: string; /** * Fully Qualified Domain Name of an entity. This is a unique identifier assigned to the API main business entities. * For example, `wix.stores.catalog.product`, `wix.bookings.session`, `wix.payments.transaction`. */ entityFqdn?: string; /** * Event action name, placed at the top level to make it easier for users to dispatch messages. * For example: `created`/`updated`/`deleted`/`started`/`completed`/`email_opened`. */ slug?: string; /** ID of the entity associated with the event. */ entityId?: string; /** Event timestamp in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format and UTC time. For example, `2020-04-26T13:57:50.699Z`. */ eventTime?: Date | null; /** * Whether the event was triggered as a result of a privacy regulation application * (for example, GDPR). */ triggeredByAnonymizeRequest?: boolean | null; /** If present, indicates the action that triggered the event. */ originatedFrom?: string | null; /** * A sequence number that indicates the order of updates to an entity. For example, if an entity was updated at 16:00 and then again at 16:01, the second update will always have a higher sequence number. * You can use this number to make sure you're handling updates in the right order. Just save the latest sequence number on your end and compare it to the one in each new message. If the new message has an older (lower) number, you can safely ignore it. */ entityEventSequence?: string | null; } /** @oneof */ interface DomainEventBodyOneOf { createdEvent?: EntityCreatedEvent; updatedEvent?: EntityUpdatedEvent; deletedEvent?: EntityDeletedEvent; actionEvent?: ActionEvent; } interface EntityCreatedEvent { entityAsJson?: string; /** Indicates the event was triggered by a restore-from-trashbin operation for a previously deleted entity */ restoreInfo?: RestoreInfo; } interface RestoreInfo { deletedDate?: Date | null; } interface EntityUpdatedEvent { /** * Since platformized APIs only expose PATCH and not PUT we can't assume that the fields sent from the client are the actual diff. * This means that to generate a list of changed fields (as opposed to sent fields) one needs to traverse both objects. * We don't want to impose this on all developers and so we leave this traversal to the notification recipients which need it. */ currentEntityAsJson?: string; } interface EntityDeletedEvent { /** Entity that was deleted. */ deletedEntityAsJson?: string | null; } interface ActionEvent { bodyAsJson?: string; } interface MessageEnvelope { /** * App instance ID. * @format GUID */ instanceId?: string | null; /** * Event type. * @maxLength 150 */ eventType?: string; /** The identification type and identity data. */ identity?: WebhooksIdentificationData; /** Stringify payload. */ data?: string; /** Details related to the account */ accountInfo?: AccountInfo; } interface WebhooksIdentificationData extends WebhooksIdentificationDataIdOneOf { /** * 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; /** @readonly */ identityType?: WebhookIdentityTypeWithLiterals; } /** @oneof */ interface WebhooksIdentificationDataIdOneOf { /** * 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 WebhookIdentityType { UNKNOWN = "UNKNOWN", ANONYMOUS_VISITOR = "ANONYMOUS_VISITOR", MEMBER = "MEMBER", WIX_USER = "WIX_USER", APP = "APP" } /** @enumType */ type WebhookIdentityTypeWithLiterals = WebhookIdentityType | 'UNKNOWN' | 'ANONYMOUS_VISITOR' | 'MEMBER' | 'WIX_USER' | 'APP'; interface AccountInfo { /** * ID of the Wix account associated with the event. * @format GUID */ accountId?: string | null; /** * ID of the parent Wix account. Only included when accountId belongs to a child account. * @format GUID */ parentAccountId?: string | null; /** * ID of the Wix site associated with the event. Only included when the event is tied to a specific site. * @format GUID */ siteId?: string | null; } interface ConfirmOrDeclineBookingRequest { /** * ID of the booking to confirm or decline. * @format GUID */ bookingId: string; /** * Current payment status of the booking when using a custom checkout page and * not the [eCommerce checkout](https://dev.wix.com/docs/rest/business-solutions/e-commerce/checkout/introduction). * * The booking is declined if there is a double booking conflict and you provide * one of these payment statuses: `UNDEFINED`, `NOT_PAID`, `REFUNDED`, or `EXEMPT`. */ paymentStatus?: PaymentStatusWithLiterals; } interface ConfirmOrDeclineBookingResponse { /** Updated booking. */ booking?: Booking; } interface BulkConfirmOrDeclineBookingRequest { /** * Bookings to confirm or decline. * @minSize 1 * @maxSize 300 */ details: BulkConfirmOrDeclineBookingRequestBookingDetails[]; /** Whether to return the confirmed or declined booking objects. */ returnEntity?: boolean; } interface BulkConfirmOrDeclineBookingRequestBookingDetails { /** * ID of the booking to confirm or decline. * @format GUID */ bookingId?: string; /** * Current payment status of the booking when using a custom checkout page and * not the [eCommerce checkout](https://dev.wix.com/docs/rest/business-solutions/e-commerce/checkout/introduction). * * The booking is declined if there is a double booking conflict and you provide * one of these payment statuses: `UNDEFINED`, `NOT_PAID`, `REFUNDED`, or `EXEMPT`. */ paymentStatus?: PaymentStatusWithLiterals; } interface BulkConfirmOrDeclineBookingResponse { /** List of confirmed or declined bookings, including metadata. */ results?: BulkBookingResult[]; /** Total successes and failures of the Bulk Confirm Or Decline call. */ bulkActionMetadata?: BulkActionMetadata; } interface BulkBookingResult { /** * Information about the booking that was created or updated. * Including its ID, index in the bulk request and whether it was * successfully created or updated. */ itemMetadata?: ItemMetadata; /** * Created or updated booking. Available only if you requested * to return the booking entity. */ item?: Booking; } interface ItemMetadata { /** Item ID. Should always be available, unless it's impossible (for example, when failing to create an item). */ id?: string | null; /** Index of the item within the request array. Allows for correlation between request and response items. */ originalIndex?: number; /** Whether the requested action was successful for this item. When `false`, the `error` field is populated. */ success?: boolean; /** Details about the error in case of failure. */ error?: ApplicationError; } interface ApplicationError { /** Error code. */ code?: string; /** Description of the error. */ description?: string; /** Data related to the error. */ data?: Record | null; } interface BulkActionMetadata { /** Number of items that were successfully processed. */ totalSuccesses?: number; /** Number of items that couldn't be processed. */ totalFailures?: number; /** Number of failures without details because detailed failure threshold was exceeded. */ undetailedFailures?: number; } /** Request for CancelBookingAnonymously */ interface V1CancelBookingAnonymouslyRequest { /** * Anonymous token for the booking. * @maxLength 2048 */ token: string | null; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, the current revision must be passed when canceling the booking. */ revision: string | null; } /** Response for CancelBookingAnonymously */ interface V1CancelBookingAnonymouslyResponse { /** Canceled booking. */ booking?: Booking; } /** Request for RescheduleBookingAnonymously */ interface V1RescheduleBookingAnonymouslyRequest { /** * Anonymous token for the booking. * @maxLength 2048 */ token: string | null; /** New slot to reschedule the booking to. */ slot: V2Slot; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, the current revision must be passed when rescheduling the booking. */ revision: string | null; } interface V2Slot { /** Identifier for the underlying session when the session is a single session or generated from a recurring session. */ sessionId?: string | null; /** Service identifier. Required. */ serviceId?: string; /** Schedule identifier. Required. */ scheduleId?: string; /** 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; /** The timezone according to which the slot is calculated and presented. */ timezone?: string | null; /** * The resource required for this slot. * When populated, the specified resource will be assigned to the slot upon confirmation according to its availability. * When empty, if `skip_availability_validation` is `false`, a random available resource will be assigned to the slot upon confirmation. * Otherwise, one of the service resources will be assigned to the slot randomly upon confirmation. */ resource?: SlotSlotResource; /** Geographic location of the slot. */ location?: SlotLocation; /** * Calendar event ID - not supported. * If not empty, on all write flows (create/update), it takes priority over `sessionId`. * So if both `sessionId` and `eventId` are provided, the `sessionId` will be based on the `eventId`. * Otherwise, if `eventId` is empty on write flow, * @minLength 36 * @maxLength 250 */ eventId?: string | null; /** * 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[]; } declare enum LocationLocationType { /** Undefined location type. */ UNDEFINED = "UNDEFINED", /** The business address as set in the site’s general settings. */ OWNER_BUSINESS = "OWNER_BUSINESS", /** The address set when creating the service. */ OWNER_CUSTOM = "OWNER_CUSTOM", /** The address set for the individual session. */ CUSTOM = "CUSTOM" } /** @enumType */ type LocationLocationTypeWithLiterals = LocationLocationType | 'UNDEFINED' | 'OWNER_BUSINESS' | 'OWNER_CUSTOM' | 'CUSTOM'; interface SlotSlotResource { /** * Resource ID. * @format GUID * @readonly */ id?: string | null; /** * Resource name. * @maxLength 1200 */ name?: string | null; /** * The desired transparency for this resource in the calendar event. * * 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. * * Default: `UNKNOWN_TRANSPARENCY`. */ transparency?: ResourceTransparencyWithLiterals; } interface SlotLocation { /** * Business Location ID. Present if the location is a business location. * @format GUID */ id?: string | null; /** Location name. */ name?: string | null; /** A string containing the full address of this location. */ formattedAddress?: string | null; /** Location type. */ locationType?: LocationLocationTypeWithLiterals; } /** Response for RescheduleBookingAnonymously */ interface V1RescheduleBookingAnonymouslyResponse { /** Rescheduled booking. */ booking?: Booking; } /** Request for GetBookingAnonymously */ interface V1GetBookingAnonymouslyRequest { /** * Anonymous token for the booking. * @maxLength 2048 */ token: string | null; /** * Additional fields to return. * @maxSize 1 */ fields?: V1RequestedFieldsWithLiterals[]; } /** Additional fields supported by Get Booking Anonymously. */ declare enum V1RequestedFields { /** Booking fee details. */ BOOKING_FEES = "BOOKING_FEES" } /** @enumType */ type V1RequestedFieldsWithLiterals = V1RequestedFields | 'BOOKING_FEES'; /** Response for GetBookingAnonymously */ interface V1GetBookingAnonymouslyResponse { /** Retrieved booking. */ booking?: Booking; /** Allowed anonymous actions for this booking. */ allowedAnonymousActions?: V1AllowedAnonymousActions; /** * Booking fee details. * * Returned only when `BOOKING_FEES` is passed in `fields`. */ bookingFee?: BookingFee; } /** Allowed anonymous actions for a booking. */ interface V1AllowedAnonymousActions { /** Whether the booking can be canceled anonymously. */ cancel?: boolean; /** Whether the booking can be rescheduled anonymously. */ reschedule?: boolean; } /** * Fee for a specific booking that's calculated according to the associated [booking policy snapshot](https://dev.wix.com/docs/rest/business-solutions/bookings/policies/booking-policy-snapshots/introduction). Currently, only cancellation fees, including no-show fees, are supported. * * Wix Bookings automatically applies the cancellation fee to the [eCommerce order](https://dev.wix.com/docs/rest/business-solutions/e-commerce/orders/introduction) if the customer cancels the booking themselves. * Cancellation fees aren't automatically applied to an eCommerce order if the business owner cancels the booking in their dashboard on behalf of the customer. * You can call [Apply Booking Fee to Order](https://dev.wix.com/docs/rest/business-solutions/bookings/pricing/booking-fees/apply-booking-fees-to-order) to manually apply booking fees to an eCommerce order. */ interface BookingFee { /** * Booking fee ID. * @format GUID * @readonly */ id?: string | null; /** * ID of the booking associated with the fee. * @format GUID */ bookingId?: string | null; /** Cancellation fee details. */ cancellationFee?: CancellationFee; /** * Information about the [booking policy snapshot](https://dev.wix.com/docs/api-reference/business-solutions/bookings/policies/booking-policy-snapshots/introduction) * according to which the fee was created. */ policyDetails?: PolicyDetails; } interface CancellationFee { /** Price the customer must pay. */ price?: Money; /** Status of the booking fee. */ status?: BookingFeeStatusWithLiterals; /** * Information about what triggered the creation of the booking fee. * @readonly */ trigger?: TriggerWithLiterals; } /** * Money. * Default format to use. Sufficiently compliant with majority of standards: w3c, ISO 4217, ISO 20022, ISO 8583:2003. */ interface Money { /** * Monetary amount. Decimal string with a period as a decimal separator (e.g., 3.99). Optionally, a single (-), to indicate that the amount is negative. * @format DECIMAL_VALUE * @decimalValue options { gte:0, maxScale:2 } */ value?: string; /** * Currency code. Must be valid ISO 4217 currency code (e.g., USD). * @format CURRENCY */ currency?: string; /** * Monetary amount. Decimal string in local format (e.g., 1 000,30). Optionally, a single (-), to indicate that the amount is negative. * @maxLength 50 * @readonly */ formattedValue?: string | null; } declare enum BookingFeeStatus { /** There is no eCommerce order associated with the booking. */ UNKNOWN_STATUS = "UNKNOWN_STATUS", /** The fee is informational only; the customer doesn't have to pay it. For example, it shows how much the customer would owe if they canceled the booking now. */ PREVIEW = "PREVIEW", /** The booking fee hasn't been added to the eCommerce order yet. */ NOT_YET_APPLIED_TO_ORDER = "NOT_YET_APPLIED_TO_ORDER", /** The booking fee has been added to the eCommerce order. The customer may not have paid it yet. */ APPLIED_TO_ORDER = "APPLIED_TO_ORDER" } /** @enumType */ type BookingFeeStatusWithLiterals = BookingFeeStatus | 'UNKNOWN_STATUS' | 'PREVIEW' | 'NOT_YET_APPLIED_TO_ORDER' | 'APPLIED_TO_ORDER'; /** The domain event that triggered the booking fee calculation. */ declare enum Trigger { /** There is no information about what triggered the creation of the booking fee. */ UNKNOWN_TRIGGER = "UNKNOWN_TRIGGER", /** The booking fee was created because the customer didn't show up to the booking or canceled after the expiration of the last cancellation window. */ NOT_ATTENDED = "NOT_ATTENDED", /** The booking fee was created because the customer canceled the booking before the expiration of the last cancellation window. */ BOOKING_CANCELED = "BOOKING_CANCELED" } /** @enumType */ type TriggerWithLiterals = Trigger | 'UNKNOWN_TRIGGER' | 'NOT_ATTENDED' | 'BOOKING_CANCELED'; interface PolicyDetails { /** * ID of the booking policy. * @format GUID * @readonly */ id?: string | null; /** * Description of the booking policy. * @maxLength 2500 */ description?: string | null; /** * Translated description of the booking policy according to the buyer language of the eCommerce order. * @maxLength 2500 */ descriptionTranslated?: string | null; } /** Request for GetServiceAnonymously */ interface GetServiceAnonymouslyRequest { /** * Anonymous token for the booking. * @maxLength 2048 */ token: string | null; /** * Additional fields to return. * @maxSize 5 */ fields?: RequestedFieldsWithLiterals[]; } /** Additional fields supported by Get Service Anonymously. */ declare enum RequestedFields { /** When passed, `service.staffMemberDetails` is returned. */ STAFF_MEMBER_DETAILS = "STAFF_MEMBER_DETAILS", /** When passed, `service.serviceResources.resourceType.name` is returned. */ RESOURCE_TYPE_DETAILS = "RESOURCE_TYPE_DETAILS", /** When passed, `service.payment.discountInfo` is returned. */ DISCOUNT_INFO_DETAILS = "DISCOUNT_INFO_DETAILS" } /** @enumType */ type RequestedFieldsWithLiterals = RequestedFields | 'STAFF_MEMBER_DETAILS' | 'RESOURCE_TYPE_DETAILS' | 'DISCOUNT_INFO_DETAILS'; /** Response for GetServiceAnonymously */ interface GetServiceAnonymouslyResponse { /** Retrieved service. */ service?: Service; } /** The `service` object represents an offering that a business provides to its customers. */ interface Service { /** * Service ID. * @format GUID * @readonly */ id?: string | null; /** * ID of the app associated with the service. You can't update `appId`. * Services are displayed in Wix Bookings only if they are associated with the Wix Bookings appId or have no associated app ID. * Default: `13d21c63-b5ec-5912-8397-c3a5ddb27a97` (Wix Bookings app ID) * For services 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 * @immutable */ appId?: string | null; /** * ID of the app that created the service. This field is used for analytics, auditing, and tracking creation sources. * This read-only field is automatically populated during service creation by checking these sources in order: * 1. The caller's App ID from the request identity context. * 2. The service's `appId` field. * 3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback. * * @format GUID * @readonly */ createdByAppId?: string | null; /** * Service type. * Learn more about [service types](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-types). */ type?: ServiceTypeWithLiterals; /** Order of the service within a [category](https://dev.wix.com/docs/rest/business-solutions/bookings/services/categories-v1/category-object). */ sortOrder?: number | null; /** * Service name. * @maxLength 400 * @minLength 1 */ name?: string | null; /** * Service description. For example, `High-class hair styling, cuts, straightening and color`. * @maxLength 7000 */ description?: string | null; /** * Short service description, such as `Hair styling`. * @maxLength 6000 */ tagLine?: string | null; /** * Default maximum number of customers that can book the service. The service cannot be booked beyond this capacity. * @min 1 * @max 1000 */ defaultCapacity?: number | null; /** Media associated with the service. */ media?: Media; /** Whether the service is hidden from Wix Bookings pages and widgets. */ hidden?: boolean | null; /** * [Category](https://dev.wix.com/docs/rest/business-solutions/bookings/services/categories-v2/introduction) * the service is associated with. Services aren't automatically assigned to a category. * Without an associated category, the service isn't visible on the live site. */ category?: Category; /** Form the customer filled out when booking the service. */ form?: Form; /** * Payment options for booking the service. * Learn more about [service payments](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-payments). */ payment?: Payment; /** Online booking settings. */ onlineBooking?: OnlineBooking; /** Conferencing options for the service. */ conferencing?: Conferencing; /** * The locations this service is offered at. Read more about [service locations](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-locations). * @immutable * @maxSize 500 */ locations?: V2Location[]; /** * [Policy](https://dev.wix.com/docs/rest/business-solutions/bookings/policies/booking-policies/introduction) * determining under what conditions this service can be booked. For example, whether the service can only be booked up to 30 minutes before it begins. */ bookingPolicy?: BookingPolicy; /** * The service's [schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction), * which can be used to manage the service's [events](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction). */ schedule?: Schedule; /** * IDs of the [resources](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction) associated with the [staff members](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-members/introduction) providing the service. * Note that these are the resource IDs, not the staff member IDs. * * For appointment-based services, set this field when creating or updating the service. * For classes and courses, this field is read-only and is automatically derived from staff assigned to the service's recurring scheduled sessions. * Staff assigned only to single, non-recurring events are not included. * Once all of a staff member's upcoming recurring sessions have ended, their ID is removed from this field. * To retrieve the full list of staff for classes or courses, query the service's calendar events instead. * Learn more about [retrieving staff for classes and courses](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/sample-flows#retrieve-staff-members-for-a-class-or-course). * @maxSize 220 * @format GUID */ staffMemberIds?: string[]; /** * Information about which resources must be available so customers can book the service. * For example, a meeting room or equipment. * @maxSize 3 */ serviceResources?: ServiceResource[]; /** * A slug is the last part of the URL address that serves as a unique identifier of the service. * The list of supported slugs includes past service names for backwards compatibility, and a custom slug if one was set by the business owner. * @readonly * @maxSize 100 */ supportedSlugs?: Slug[]; /** * Active slug for the service. * Learn more about [service slugs](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-slugs). * @readonly */ mainSlug?: Slug; /** * URLs to various service-related pages, such as the calendar page and the booking page. * @readonly */ urls?: URLs; /** Extensions enabling users to save custom data related to the service. */ extendedFields?: ExtendedFields; /** Custom SEO data for the service. */ seoData?: SeoSchema; /** * Date and time the service was created in `YYYY-MM-DDThh:mm:ss.sssZ` format. * @readonly */ createdDate?: Date | null; /** * Date and time the service was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format. * @readonly */ updatedDate?: Date | null; /** * Revision number, which increments by 1 each time the service is updated. To * prevent conflicting changes, the existing revision must be used when updating * a service. * @readonly */ revision?: string | null; /** * Information about the [add-on groups](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/about-add-on-groups) associated with the service. * @maxSize 3 */ addOnGroups?: AddOnGroup[]; /** * Details about all [add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) customers can choose when booking the service. * @readonly * @maxSize 50 */ addOnDetails?: AddOnDetails[]; /** Taxable address used to calculate tax */ taxableAddress?: TaxableAddress; } declare enum ServiceType { /** Appointment-based service. */ APPOINTMENT = "APPOINTMENT", /** Class service. */ CLASS = "CLASS", /** Course service. */ COURSE = "COURSE" } /** @enumType */ type ServiceTypeWithLiterals = ServiceType | 'APPOINTMENT' | 'CLASS' | 'COURSE'; interface Media { /** * Media items associated with the service. * @maxSize 100 */ items?: MediaItem[]; /** Primary media associated with the service. */ mainMedia?: MediaItem; /** Cover media associated with the service. */ coverMedia?: MediaItem; } interface MediaItem extends MediaItemItemOneOf { /** Details of the image associated with the service, such as URL and size. */ image?: Image; } /** @oneof */ interface MediaItemItemOneOf { /** Details of the image associated with the service, such as URL and size. */ image?: Image; } interface Image { /** * WixMedia image ID. (e.g. "4b3901ffcb8d7ad81a613779d92c9702.jpg") * @maxLength 2048 */ id?: string; /** * Image URL. (similar to image.id e.g. "4b3901ffcb8d7ad81a613779d92c9702.jpg") * @maxLength 2048 */ url?: string; /** Original image height. */ height?: number; /** Original image width. */ width?: number; /** * Image alt text. * @maxLength 134061 */ altText?: string | null; /** * Image file name. * @readonly * @maxLength 2048 */ filename?: string | null; } interface Category { /** * Category ID. * @format GUID */ id?: string; /** * Category name. * @maxLength 500 * @readonly */ name?: string | null; /** * Order of a category within a category list. * @readonly */ sortOrder?: number | null; } interface Form { /** * ID of the form associated with the service. * The form information that you submit when booking includes contact details, participants, and other form fields set up for the service. * You can manage the service booking form fields using the Bookings Forms API. * @format GUID */ id?: string; } interface FormSettings { /** Whether the service booking form should be hidden from the site. */ hidden?: boolean | null; } interface Payment extends PaymentRateOneOf { /** * The details for the fixed price of the service. * * Required when: `rateType` is `FIXED` */ fixed?: FixedPayment; /** * The details for the custom price of the service. * * Required when: `rateType` is `CUSTOM` */ custom?: CustomPayment; /** * The details for the varied pricing of the service. * Read more about [varied price options](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online#offering-varied-price-options). * * Required when: `rateType` is `VARIED` */ varied?: VariedPayment; /** The rate the customer is expected to pay for the service. */ rateType?: RateTypeWithLiterals; /** The payment options a customer can use to pay for the service. */ options?: PaymentOptions; /** * IDs of pricing plans that can be used as payment for the service. * Read more about [service payment options](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/about-service-payments). * @readonly * @maxSize 75 * @format GUID */ pricingPlanIds?: string[]; /** * How customers can pay for add-ons when paying for the related booking with a [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction). * If customers pay for the booking using any method other than a pricing plan, the value of this field is ignored. */ addOnOption?: AddOnPaymentOptionsWithLiterals; } /** @oneof */ interface PaymentRateOneOf { /** * The details for the fixed price of the service. * * Required when: `rateType` is `FIXED` */ fixed?: FixedPayment; /** * The details for the custom price of the service. * * Required when: `rateType` is `CUSTOM` */ custom?: CustomPayment; /** * The details for the varied pricing of the service. * Read more about [varied price options](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online#offering-varied-price-options). * * Required when: `rateType` is `VARIED` */ varied?: VariedPayment; } declare enum RateType { /** The service has a fixed price. */ FIXED = "FIXED", /** The service has a custom price, expressed as a price description. */ CUSTOM = "CUSTOM", /** This service is offered with a set of different prices based on different terms. */ VARIED = "VARIED", /** This service is offered free of charge. */ NO_FEE = "NO_FEE" } /** @enumType */ type RateTypeWithLiterals = RateType | 'FIXED' | 'CUSTOM' | 'VARIED' | 'NO_FEE'; interface FixedPayment { /** * The fixed price required to book the service. * * Required when: `rateType` is `FIXED` */ price?: CommonMoney; /** * The deposit price required to book the service. * * Required when: `rateType` is `FIXED` and `paymentOptions.deposit` is `true` */ deposit?: CommonMoney; /** * Whether customers can choose to pay the full service price upfront instead of only the deposit. * * Used only when a `deposit` amount is set. * * Default: `false`. */ fullUpfrontPaymentAllowed?: boolean | null; } /** * Money. * Default format to use. Sufficiently compliant with majority of standards: w3c, ISO 4217, ISO 20022, ISO 8583:2003. */ interface CommonMoney { /** * Monetary amount. Decimal string with a period as a decimal separator. For example `25.05`. * @format DECIMAL_VALUE * @decimalValue options { gt:0, maxScale:2 } */ value?: string; /** * Currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217). For example, `USD`. * @format CURRENCY * @readonly */ currency?: string; /** * Monetary amount. Decimal string in local format. For example, `1 000,30`. * @maxLength 50 */ formattedValue?: string | null; } interface CustomPayment { /** * A custom description explaining to the customer how to pay for the service. * @maxLength 50 */ description?: string | null; } interface VariedPayment { /** The default price for the service without any variants. It will also be used as the default price for any new variant. */ defaultPrice?: CommonMoney; /** * The deposit price required to book the service. * * Required when: `rateType` is `VARIED` and `paymentOptions.deposit` is `true` */ deposit?: CommonMoney; /** * The minimal price a customer may pay for this service, based on its variants. * @readonly */ minPrice?: CommonMoney; /** * The maximum price a customer may pay for this service, based on its variants. * @readonly */ maxPrice?: CommonMoney; /** * Whether customers can choose to pay the full service price upfront instead of only the deposit. * * Used only when a `deposit` amount is set. * * Default: `false`. */ fullUpfrontPaymentAllowed?: boolean | null; } interface SubscriptionPayment { /** Amount charged each billing cycle. */ amountPerBillingCycle?: CommonMoney; /** Billing frequency used for recurring subscription charges. */ frequency?: FrequencyTypeWithLiterals; /** * Total number of recurring payments in the subscription. * Value must be greater than `1`. * Required when: `rateType` is `SUBSCRIPTION` * @min 2 */ totalPayments?: number | null; /** When the first recurring payment is charged. */ firstChargeDate?: FirstChargeDateTypeWithLiterals; /** * Date and time when recurring payments start in `YYYY-MM-DDThh:mm:ss.sssZ` format. * When `firstChargeDate` is `SCHEDULED`, the first charge occurs on this date. * When `firstChargeDate` is `CHECKOUT`, the first charge occurs at checkout and recurring billing begins on this date. * Required when: `rateType` is `SUBSCRIPTION`. Sets the future billing cycle dates. */ recurringStartDate?: Date | null; /** Optional one-time enrollment fee. */ enrollmentFeeAmount?: CommonMoney; /** Optional full payment alternative to recurring subscription billing. */ fullUpfrontPayment?: FullUpfrontPayment; } declare enum FrequencyType { /** Payment is charged once every month. */ MONTHLY = "MONTHLY" } /** @enumType */ type FrequencyTypeWithLiterals = FrequencyType | 'MONTHLY'; declare enum FirstChargeDateType { /** Charge the first billing cycle at checkout. */ CHECKOUT = "CHECKOUT", /** Charge the first billing cycle on the `recurringStartDate`. */ SCHEDULED = "SCHEDULED" } /** @enumType */ type FirstChargeDateTypeWithLiterals = FirstChargeDateType | 'CHECKOUT' | 'SCHEDULED'; interface FullUpfrontPayment { /** Whether customers can choose a one-time full payment instead of recurring subscription payments. */ supported?: boolean | null; /** * Percentage discount applied when a customer chooses the full payment option. * Min: `0.01` percent * Max: `100` percent * @format DECIMAL_VALUE * @decimalValue options { gte:0.01, lte:100, maxScale:2 } */ discountPercent?: string | null; } interface PaymentOptions { /** * Customers can pay for the service online. * When `true`: * + `rateType` must be `FIXED` or `VARIED`. * + `fixed.price` or `varied.defaultPrice` must be specified respectively. * Read more about [getting paid online](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online). */ online?: boolean | null; /** Customers can pay for the service in person. */ inPerson?: boolean | null; /** * This service requires a deposit to be made online in order to book it. * When `true`: * + `rateType` must be `VARIED` or `FIXED`. * + A `deposit` must be specified. */ deposit?: boolean | null; /** * Whether customers can pay for the service using a pricing plan. * Read more about [service payment options](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/about-service-payments). */ pricingPlan?: boolean | null; } declare enum AddOnPaymentOptions { /** Customers are required to pay online for add-ons when the booking is paid for with a pricing plan. */ ONLINE = "ONLINE", /** Customers are required to pay in person for add-ons when the booking is paid for with a pricing plan. */ IN_PERSON = "IN_PERSON" } /** @enumType */ type AddOnPaymentOptionsWithLiterals = AddOnPaymentOptions | 'ONLINE' | 'IN_PERSON'; /** Estimated discount information for a service based on active eCommerce discounts. */ interface DiscountInfo { /** * Name of the discount. For example, `Summer Sale - 20% Off`. * @minLength 1 * @maxLength 50 */ discountName?: string; /** * Estimated price after applying the discount. The final price is determined at checkout and may differ when additional discounts are applied or rules are re-evaluated with complete booking information. * * Not returned when the discount depends on booking or cart context, for example a discount that applies to a service only when booked together with another service, or when the discount requires information only available at checkout. */ priceAfterDiscount?: CommonMoney; } interface OnlineBooking { /** * Whether the service can be booked online. * When set to `true`, customers can book the service online. Configure the payment options via the `service.payment` property. * When set to `false`, customers cannot book the service online, and the service can only be paid for in person. */ enabled?: boolean | null; /** Booking the service requires approval by the Wix user. */ requireManualApproval?: boolean | null; /** Multiple customers can request to book the same time slot. This is relevant when `requireManualApproval` is `true`. */ allowMultipleRequests?: boolean | null; } interface Conferencing { /** Whether a conference link is generated for the service's sessions. */ enabled?: boolean | null; } interface V2Location extends V2LocationOptionsOneOf { /** Information about business locations. */ business?: BusinessLocationOptions; /** Information about custom locations. */ custom?: CustomLocationOptions; /** * Location ID. * @format GUID * @readonly */ id?: string; /** * Location type. * * Default: `CUSTOM` */ type?: LocationTypeEnumLocationTypeWithLiterals; /** * Location address. Empty for `{"type": "CUSTOMER"}`. * @readonly */ calculatedAddress?: CommonAddress; } /** @oneof */ interface V2LocationOptionsOneOf { /** Information about business locations. */ business?: BusinessLocationOptions; /** Information about custom locations. */ custom?: CustomLocationOptions; } declare enum LocationTypeEnumLocationType { /** Location set by the business that is not a standard business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction). */ CUSTOM = "CUSTOM", /** Business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction). */ BUSINESS = "BUSINESS", /** * The customer specifies any address when booking. Available only for * appointment-based services. */ CUSTOMER = "CUSTOMER" } /** @enumType */ type LocationTypeEnumLocationTypeWithLiterals = LocationTypeEnumLocationType | 'CUSTOM' | 'BUSINESS' | 'CUSTOMER'; interface CommonAddress extends CommonAddressStreetOneOf { /** Street name and number. */ streetAddress?: CommonStreetAddress; /** @maxLength 255 */ addressLine?: string | null; /** * 2-letter country code in an [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format. * @format COUNTRY */ country?: string | null; /** * Code for a subdivision (such as state, prefecture, or province) in [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) format. * @maxLength 255 */ subdivision?: string | null; /** * City name. * @maxLength 255 */ city?: string | null; /** * Postal or zip code. * @maxLength 255 */ postalCode?: string | null; /** * Full address of the location. * @maxLength 512 */ formattedAddress?: string | null; } /** @oneof */ interface CommonAddressStreetOneOf { /** Street name and number. */ streetAddress?: CommonStreetAddress; /** @maxLength 255 */ addressLine?: string | null; } /** Street address. Includes street name, number, and apartment number in separate fields. */ interface CommonStreetAddress { /** * Street number. * @maxLength 255 */ number?: string; /** * Street name. * @maxLength 255 */ name?: string; /** * Apartment number. * @maxLength 255 */ apt?: string; } interface CommonAddressLocation { /** Address latitude. */ latitude?: number | null; /** Address longitude. */ longitude?: number | null; } interface BusinessLocationOptions { /** * ID of the business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction). * When setting a business location, specify only the location ID. Other location details are overwritten. * @format GUID */ id?: string; /** * Business location name. * @readonly * @maxLength 150 */ name?: string; /** * Whether this is the default location. There can only be a single default location per site. * @readonly */ default?: boolean | null; /** * Business location address. * @readonly */ address?: CommonAddress; /** * Business location email. * @format EMAIL * @readonly */ email?: string | null; /** * Business location phone. * @format PHONE * @readonly */ phone?: string | null; } interface CustomLocationOptions { /** * ID of the custom location. * @format GUID * @readonly */ id?: string; /** Address of the custom location. */ address?: CommonAddress; } /** * `BookingPolicy` is the main entity of `BookingPolicyService` and specifies a set of rules for booking a service * by visitors and members. * * Each `BookingPolicy` consists of a number of sub-policies. When the Bookings App is provisioned to a meta site then a * default `BookingPolicy` will be created with defaults for each of these sub-policies. This also applies when a request * is received to create a new `BookingPolicy` and one or more of these sub-policies are not provided. * * Sub-policies are defined in separate objects as specified below. * * - The `LimitEarlyBookingPolicy` object defines the policy for limiting early bookings. * - The `LimitLateBookingPolicy` object defines the policy for limiting late bookings. * - The `BookAfterStartPolicy` object defines the policy for booking after the start of the schedule. * - The `CancellationPolicy` object defines the policy for canceling a booked entity. * - The `ReschedulePolicy` object defines the policy for rescheduling booked entity. * - The `WaitlistPolicy` object defines the policy for a waitlist. * - The `ParticipantsPolicy` object defines the policy regarding the participants per booking. * - The `ResourcesPolicy` object defines the policy regarding the resources per booking. * - The `CancellationFeePolicy` object defines the policy regarding cancellation fees. * - The `SaveCreditCardPolicy` object defines the policy for saving credit card details. * * By default each sub-policy is disabled. A more detailed specification of the default settings of each sub-policy * can be found in the description of the corresponding object. * * Partial updates are supported on the main entity level, however in order to update a sub-policy the client needs to provide the whole sub-policy object. */ interface BookingPolicy { /** * The ID to the policy for the booking. * @format GUID */ id?: string; /** * Date and time the policy was created. * @readonly */ createdDate?: Date | null; /** * Date and time the policy was updated. * @readonly */ updatedDate?: Date | null; /** * Name of the policy. * @maxLength 400 * @readonly */ name?: string | null; /** * Custom description for the policy. This policy is displayed to the participant. * @readonly */ customPolicyDescription?: PolicyDescription; /** * Whether the policy is the default for the meta site. * @readonly */ default?: boolean | null; /** * Policy for limiting early bookings. * @readonly */ limitEarlyBookingPolicy?: LimitEarlyBookingPolicy; /** * Policy for limiting late bookings. * @readonly */ limitLateBookingPolicy?: LimitLateBookingPolicy; /** * Policy on booking an entity after the start of the schedule. * @readonly */ bookAfterStartPolicy?: BookAfterStartPolicy; /** * Policy for canceling a booked entity. * @readonly */ cancellationPolicy?: CancellationPolicy; /** * Policy for rescheduling a booked entity. * @readonly */ reschedulePolicy?: ReschedulePolicy; /** * Waitlist policy for the service. * @readonly */ waitlistPolicy?: WaitlistPolicy; /** * Policy regarding the participants per booking. * @readonly */ participantsPolicy?: ParticipantsPolicy; /** * Policy for allocating resources. * @readonly */ resourcesPolicy?: ResourcesPolicy; /** * Rules for cancellation fees. * @readonly */ cancellationFeePolicy?: CancellationFeePolicy; /** * Rule for saving credit card. * @readonly */ saveCreditCardPolicy?: SaveCreditCardPolicy; } /** A description of the policy to display to participants. */ interface PolicyDescription { /** * Whether the description should be displayed. If `true`, the description is displayed. * * Default: `false` */ enabled?: boolean; /** * The description to display. * * Default: Empty * Max length: 2500 characters * @maxLength 2500 */ description?: string; } /** The policy for limiting early bookings. */ interface LimitEarlyBookingPolicy { /** * Whether there is a limit on how early a customer * can book. When `false`, there is no limit on the earliest * booking time and customers can book in advance, as early as they like. * * Default: `false` */ enabled?: boolean; /** * Maximum number of minutes before the start of the session that a booking can be made. This value must be greater * than `latest_booking_in_minutes` in the `LimitLateBookingPolicy` policy. * * Default: 10080 minutes (7 days) * Min: 1 minute * @min 1 */ earliestBookingInMinutes?: number; } /** * The policy for limiting late bookings. * * This policy and the `BookAfterStartPolicy` policy cannot be enabled at the same time. So if this policy * is enabled, `BookAfterStartPolicy` must be disabled. */ interface LimitLateBookingPolicy { /** * Whether there is a limit on how late a customer * can book. When `false`, there is no limit on the latest * booking time and customers can book up to the last minute. * * Default: `false` */ enabled?: boolean; /** * Minimum number of minutes before the start of the session that a booking can be made. * For a schedule, this is relative to the start time of the next booked session, excluding past-booked sessions. * This value must be less than `earliest_booking_in_minutes` in the `LimitEarlyBookingPolicy` policy. * * Default: 1440 minutes (1 day) * Min: 1 minute * @min 1 */ latestBookingInMinutes?: number; } /** * The policy for whether a session can be booked after the start of the schedule. * This policy and `LimitLateBookingPolicy` cannot be enabled at the same time. So if this policy * is enabled, the `LimitLateBookingPolicy` policy must be disabled. */ interface BookAfterStartPolicy { /** * Whether booking is allowed after the start of the schedule. When `true`, * customers can book after the start of the schedule. * * Default: `false` */ enabled?: boolean; } /** The policy for canceling a booked session. */ interface CancellationPolicy { /** * Whether canceling a booking is allowed. When `true`, customers * can cancel the booking. * * Default: `false` */ enabled?: boolean; /** * Whether there is a limit on the latest cancellation time. When `true`, * a time limit is enforced. * * Default: `false` */ limitLatestCancellation?: boolean; /** * Minimum number of minutes before the start of the booked session that the booking can be canceled. * * Default: 1440 minutes (1 day) * Min: 1 minute * @min 1 */ latestCancellationInMinutes?: number; /** * Whether this cancellation policy allows anonymous cancellations. * * **Important**: This flag only applies when `enabled` is `true`. If the cancellation * policy itself is disabled (`enabled` = `false`), anonymous users cannot cancel * regardless of this flag's value. * * When not set (null), defaults to disabled. * * Default: `null` (treated as disabled) */ allowAnonymous?: boolean | null; } /** The policy for rescheduling a booked session. */ interface ReschedulePolicy { /** * Whether rescheduling a booking is allowed. When `true`, customers * can reschedule the booking. * * Default: `false` */ enabled?: boolean; /** * Whether there is a limit on the latest reschedule time. When `true`, * a time limit is enforced. * * Default: `false` */ limitLatestReschedule?: boolean; /** * Minimum number of minutes before the start of the booked session that the booking can be rescheduled. * * Default: 1440 minutes (1 day) * Min: 1 minute * @min 1 */ latestRescheduleInMinutes?: number; /** * Whether this reschedule policy allows anonymous rescheduling. * * **Important**: This flag only applies when `enabled` is `true`. If the reschedule * policy itself is disabled (`enabled` = `false`), anonymous users cannot reschedule * regardless of this flag's value. * * When not set (null), defaults to disabled. * * Default: `null` (treated as disabled) */ allowAnonymous?: boolean | null; } /** The policy for the waitlist. */ interface WaitlistPolicy { /** * Whether the session has a waitlist. If `true`, there is a waitlist. * * Default: `false` */ enabled?: boolean; /** * Number of spots available in the waitlist. * * Default: 10 spots * Min: 1 spot * @min 1 */ capacity?: number; /** * Amount of time a participant is given to book, once notified that a spot is available. * * Default: 10 minutes * Min: 1 spot * @min 1 */ reservationTimeInMinutes?: number; } /** The policy for the maximum number of participants per booking. */ interface ParticipantsPolicy { /** * Maximum number of participants allowed. * * Default: 1 participant * Min: 1 participant * @min 1 */ maxParticipantsPerBooking?: number; } /** The policy regarding the allocation of resources (e.g. staff members). */ interface ResourcesPolicy { /** * `true` if this policy is enabled, `false` otherwise. * When `false` then the client must always select a resource when booking an appointment. */ enabled?: boolean; /** * `true`, if it is allowed to automatically assign a resource when booking an appointment, * `false`, if the client must always select a resource. * * Default: `false` */ autoAssignAllowed?: boolean; } interface CancellationFeePolicy { /** * Whether canceling a booking will result in a cancellation fee * * Default: `false` */ enabled?: boolean; /** * Cancellation windows describing the time of cancellation and the fee to charge. * @maxSize 2 */ cancellationWindows?: CancellationWindow[]; /** * Whether the cancellation fee should not be automatically collected when customer cancels the booking. * * Default: `true` */ autoCollectFeeEnabled?: boolean | null; } interface CancellationWindow extends CancellationWindowFeeOneOf { /** Amount to be charged as a cancellation fee. */ amount?: CommonMoney; /** * Percentage of the original price to be charged as a cancellation fee. * @decimalValue options { gt:0, lte:100, maxScale:2 } */ percentage?: string; /** * The fee will be applied if the booked session starts within this start time in minutes. * @min 1 */ startInMinutes?: number | null; } /** @oneof */ interface CancellationWindowFeeOneOf { /** Amount to be charged as a cancellation fee. */ amount?: CommonMoney; /** * Percentage of the original price to be charged as a cancellation fee. * @decimalValue options { gt:0, lte:100, maxScale:2 } */ percentage?: string; } interface SaveCreditCardPolicy { /** Default: `false` */ enabled?: boolean; } /** * Policy for determining how staff members are sorted and selected during the booking process. * This affects which staff member is chosen when multiple staff members are available for a service. */ interface StaffSortingPolicy extends StaffSortingPolicyOptionsOneOf { rankingOptions?: RankingOptions; customOptions?: CustomOptions; /** * Method used for sorting and selecting staff members. * * Default: `RANDOM` */ sortingMethodType?: SortingMethodTypeWithLiterals; } /** @oneof */ interface StaffSortingPolicyOptionsOneOf { rankingOptions?: RankingOptions; customOptions?: CustomOptions; } /** Order for ranking-based staff selection. */ declare enum RankingOrder { /** Staff members with lower priority values are selected first. */ LOWEST_TO_HIGHEST = "LOWEST_TO_HIGHEST", /** Staff members with higher priority values are selected first. */ HIGHEST_TO_LOWEST = "HIGHEST_TO_LOWEST" } /** @enumType */ type RankingOrderWithLiterals = RankingOrder | 'LOWEST_TO_HIGHEST' | 'HIGHEST_TO_LOWEST'; /** Method used to sort and select staff members. */ declare enum SortingMethodType { /** Staff members are selected randomly from available options. */ RANDOM = "RANDOM", /** Staff members are selected based on their priority ranking. */ RANKING = "RANKING", /** * Staff members are selected using a custom implementation provided by SortStaffSPI. * This allows third-party apps to implement custom staff sorting logic. */ CUSTOM = "CUSTOM" } /** @enumType */ type SortingMethodTypeWithLiterals = SortingMethodType | 'RANDOM' | 'RANKING' | 'CUSTOM'; /** * Configuration options for ranking-based staff selection. * Used when `sorting_method_type` is set to `RANKING`. */ interface RankingOptions { /** * Order in which staff members are sorted by their priority ranking. * * Default: `LOWEST_TO_HIGHEST` */ order?: RankingOrderWithLiterals; } /** * Configuration options for custom staff selection methods. * Used when `sorting_method_type` is set to `CUSTOM`. */ interface CustomOptions { /** * ID of the custom sorting method implemented in SortStaffSPI. * This identifies which custom sorting algorithm to use. * @format GUID */ implementationId?: string; /** * ID of the app that provides the custom sorting method. * @format GUID */ appId?: string; } /** Policy for integrating with Intake form. Stores which form to use and when to present it. */ interface IntakeFormPolicy { /** * Whether intake form integration is enabled for the service. * Default: `false` */ enabled?: boolean; /** * ID of the intake form to integrate with the service. * @format GUID */ formId?: string | null; /** When to present the intake form to the customer. */ timing?: TimingWithLiterals; completionRequirement?: CompletionRequirementWithLiterals; } declare enum Timing { /** Send form after booking. */ AFTER_BOOKING = "AFTER_BOOKING", /** Show form during booking flow. */ BEFORE_BOOKING = "BEFORE_BOOKING" } /** @enumType */ type TimingWithLiterals = Timing | 'AFTER_BOOKING' | 'BEFORE_BOOKING'; /** Requirement for completing the intake form. */ declare enum CompletionRequirement { /** Form completion is optional and can be skipped entirely. */ OPTIONAL = "OPTIONAL", /** * Form must be completed before the booking can be finalized. * can used only if timing is BEFORE_BOOKING. */ REQUIRED_BEFORE_BOOKING = "REQUIRED_BEFORE_BOOKING" } /** @enumType */ type CompletionRequirementWithLiterals = CompletionRequirement | 'OPTIONAL' | 'REQUIRED_BEFORE_BOOKING'; interface Schedule { /** * ID of the [schedule](https://dev.wix.com/docs/api-reference/business-management/calendar/schedules-v3/introduction) * to which the service's events belong. * @format GUID * @readonly */ id?: string | null; /** * Start time of the first session in the schedule. For courses only. * @readonly */ firstSessionStart?: Date | null; /** * End time of the last session in the schedule. For courses only. * @readonly */ lastSessionEnd?: Date | null; /** Limitations affecting the service availability. */ availabilityConstraints?: AvailabilityConstraints; } interface AvailabilityConstraints { /** * Calculated list of all supported session durations for the service. For * appointment-based services without varied pricing based on session length, it * matches the single value in the `sessionDurations` array. For appointment-based * services with varied pricing based on session length, it includes session * durations for all [variants](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/service-options-and-variants/introduction), * while ignoring `sessionDurations`. * For courses and classes, it includes durations for all future * recurring sessions but excludes durations for one-off or past recurring sessions. * @readonly * @maxSize 50 */ durations?: V2Duration[]; /** * List of supported session durations in minutes. * * - For appointment-based services, specify `sessionDurations` when creating a service. * - For appointment-based services with varied pricing by session length, you must still specify `sessionDurations`, but the values are ignored. Actual durations are taken from the [service variants](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/service-options-and-variants/introduction). * - For classes or courses, don't specify `sessionDurations` when creating a service. * * Min: `1` minute * Max: `44639` minutes (30 days, 23 hours, and 59 minutes) * @min 1 * @max 44639 * @maxSize 50 */ sessionDurations?: number[]; /** * The number of minutes between the end of a session and the start of the next. * * * Min: `0` minutes * Max: `720` minutes * @max 720 */ timeBetweenSessions?: number; } interface V2Duration { /** * The duration of the service in minutes. * * Min: `1` minute * Max: `44639` minutes (30 days, 23 hours, and 59 minutes) * @min 1 * @max 44639 */ minutes?: number; } /** Duration range configuration for a service. */ interface DurationRange extends DurationRangeConfigOneOf { /** Configuration for hourly duration. Set when `unit_type` is `HOUR`. */ hourOptions?: HourlyConfig; /** Configuration for daily duration. Set when `unit_type` is `DAY`. */ dayOptions?: DailyConfig; /** The unit type for this duration range. */ unitType?: UnitTypeWithLiterals; } /** @oneof */ interface DurationRangeConfigOneOf { /** Configuration for hourly duration. Set when `unit_type` is `HOUR`. */ hourOptions?: HourlyConfig; /** Configuration for daily duration. Set when `unit_type` is `DAY`. */ dayOptions?: DailyConfig; } /** The booking unit for the duration range. */ declare enum UnitType { } /** @enumType */ type UnitTypeWithLiterals = UnitType; /** Hourly duration configuration. Values are in minutes. */ interface HourlyConfig { /** * Minimum bookable duration in minutes. * * Min: `30` minutes * Max: `4320` minutes (72 hours) * @min 30 * @max 4320 */ minDurationInMinutes?: number; /** * Maximum bookable duration in minutes. * * Min: `30` minutes * Max: `4320` minutes (72 hours) * @min 30 * @max 4320 */ maxDurationInMinutes?: number; } /** Daily duration configuration. Values are in days. */ interface DailyConfig { /** * Minimum bookable duration in days. * * Min: `1` day * Max: `8` days * @min 1 * @max 8 */ minDurationInDays?: number; /** * Maximum bookable duration in days. * * Min: `1` day * Max: `8` days * @min 1 * @max 8 */ maxDurationInDays?: number; } interface StaffMember { /** * ID of the [resource](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction) associated with the staff member providing the service. * Despite the field name, this is the resource ID, not the staff member ID. * This value matches the staff member's `resourceId` from the [Staff Members API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-members/introduction) * and corresponds to the IDs in the service's `staffMemberIds` field. * @format GUID * @readonly */ staffMemberId?: string; /** * Name of the staff member * @maxLength 40 * @readonly */ name?: string | null; /** * Main media associated with the service. * @readonly */ mainMedia?: StaffMediaItem; } interface StaffMediaItem extends StaffMediaItemItemOneOf { /** Details of the image associated with the staff, such as URL and size. */ image?: Image; } /** @oneof */ interface StaffMediaItemItemOneOf { /** Details of the image associated with the staff, such as URL and size. */ image?: Image; } interface StaffMemberDetails { /** * Staff members providing the service. For appointments only. * @maxSize 220 */ staffMembers?: StaffMember[]; } interface ResourceGroup { /** * An optional resource group ID. If specified, it references a resource group in the resource groups API. * TODO - referenced_entity annotation * @format GUID */ resourceGroupId?: string | null; /** * Resource IDs. Each ID references a resource in the resources API and may be a subset of resources within a resource group. * TODO - referenced_entity annotation */ resourceIds?: ResourceIds; /** * Specifies how many resources in the group / resource IDs are required to book the service. * Defaults to 1. * @min 1 */ requiredResourcesNumber?: number | null; /** * If set to `true`, the customer can select the specific resources while booking the service. * If set to `false`, the resources required to book the service will be auto-selected at the time of the booking. * Defaults to false. * @readonly */ selectableResource?: boolean | null; } interface ResourceIds { /** * Values of the resource IDs. * @maxSize 100 * @format GUID */ values?: string[]; } interface ServiceResource extends ServiceResourceSelectionOneOf { /** Details about the required [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction). */ resourceType?: ResourceType; } /** @oneof */ interface ServiceResourceSelectionOneOf { } interface ResourceType { /** * The type of the resource. * @format GUID */ id?: string | null; /** * The name of the resource type. * @readonly * @maxLength 40 * @minLength 1 */ name?: string | null; } interface Slug { /** * The unique part of service's URL that identifies the service's information page. For example, `service-1` in `https:/example.com/services/service-1`. * @maxLength 500 */ name?: string; /** * Whether the slug was generated or customized. If `true`, the slug was customized manually by the business owner. Otherwise, the slug was automatically generated from the service name. * @readonly */ custom?: boolean | null; /** * Date and time the slug was created. This is a system field. * @readonly */ createdDate?: Date | null; } interface URLs { /** * The URL for the service page. * @readonly */ servicePage?: PageUrlV2; /** * The URL for the booking entry point. It can be either to the calendar or to the service page. * @readonly */ bookingPage?: PageUrlV2; /** * The URL for the calendar. Can be empty if no calendar exists. * @readonly */ calendarPage?: PageUrlV2; } interface PageUrlV2 { /** * The relative path for the page within the site. For example, `/product-page/a-product`. * @maxLength 2048 */ relativePath?: string; /** * The page's full URL. For example, `https://mysite.com/product-page/a-product`. * @maxLength 2048 */ url?: string | null; } /** * The SEO schema object contains data about different types of meta tags. It makes sure that the information about your page is presented properly to search engines. * The search engines use this information for ranking purposes, or to display snippets in the search results. * This data will override other sources of tags (for example patterns) and will be included in the section of the HTML document, while not being displayed on the page itself. */ interface SeoSchema { /** SEO tag information. */ tags?: Tag[]; /** SEO general settings. */ settings?: Settings; } interface Keyword { /** Keyword value. */ term?: string; /** Whether the keyword is the main focus keyword. */ isMain?: boolean; /** * The source that added the keyword terms to the SEO settings. * @maxLength 1000 */ origin?: string | null; } interface Tag { /** * SEO tag type. * * * Supported values: `title`, `meta`, `script`, `link`. */ type?: string; /** * A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value. * For example: `{"name": "description", "content": "the description itself"}`. */ props?: Record | null; /** SEO tag metadata. For example, `{"height": 300, "width": 240}`. */ meta?: Record | null; /** SEO tag inner content. For example, ` inner content `. */ children?: string; /** Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages). */ custom?: boolean; /** Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines. */ disabled?: boolean; } interface Settings { /** * Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled. * * * Default: `false` (automatical redirect is enabled). */ preventAutoRedirect?: boolean; /** * User-selected keyword terms for a specific page. * @maxSize 5 */ keywords?: Keyword[]; } interface AddOnGroup { /** * ID of the add-on group. * Wix Bookings automatically populates this field when creating or updating an add-on group. * @readonly * @format GUID */ id?: string | null; /** * Name of the add-on group. * @maxLength 100 */ name?: string | null; /** * Maximum number of different [add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) from the group customers can add when booking the service. * When empty, there's no upper limit. */ maxNumberOfAddOns?: number | null; /** * List of IDs of all [add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) included in the group. * @format GUID * @maxSize 7 */ addOnIds?: string[] | null; /** * Description or instructional prompt of the add-on group that's displayed to customers when booking the service. * @maxLength 200 */ prompt?: string | null; } interface AddOnDetails { /** * ID of the add-on. * @format GUID */ addOnId?: string | null; /** * Duration in minutes for add-ons that extend service time. * Empty for [quantity-based add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction#terminology). */ durationInMinutes?: number | null; } /** `TaxableAddress` defines the taxable address used for the service. */ interface TaxableAddress { /** Taxable address type. */ taxableAddressType?: TaxableAddressTypeWithLiterals; } declare enum TaxableAddressType { BUSINESS = "BUSINESS", BILLING = "BILLING" } /** @enumType */ type TaxableAddressTypeWithLiterals = TaxableAddressType | 'BUSINESS' | 'BILLING'; interface ServicesV2PhoneCall { /** Whether the service is delivered via phone call. */ enabled?: boolean | null; } /** Request for GetAnonymousActionToken */ interface GetAnonymousActionTokenRequest { /** * Booking ID. * @format GUID */ bookingId: string | null; } /** Response for GetAnonymousActionToken */ interface GetAnonymousActionTokenResponse { /** * Encrypted, URL-safe token for anonymous access to the booking. * Pass this token to the other methods in this API to retrieve, cancel, or reschedule the booking without authentication. * @minLength 32 * @maxLength 2048 */ token?: string | null; } interface CreateMultiServiceBookingRequest { /** * Between 2 to 8 new single-service booking specifications to create and combine in a multi-service booking. * * Each single-service booking specification must include `slot` details (`scheduleId`, `startDate`, and `endDate`). * Specify contact details, number of participants, and any additional fields as needed. * * For sequential bookings, ensure the timing allows services to be scheduled back-to-back. * @minSize 2 * @maxSize 8 */ bookings: Booking[]; /** Information about whether to notify the customer and the message to send. */ participantNotification?: ParticipantNotification; /** * Whether to send an SMS reminder to the customer 24 hours before the session starts. * Wix Bookings takes the phone number from `contactDetails.phone`. * * Default: `true` */ sendSmsReminder?: boolean | null; /** * Whether to ignore specific standard procedures of the Wix Bookings flow. * For example, whether to skip checking availability before updating the status. */ flowControlSettings?: CreateBookingFlowControlSettings; /** Whether to return the created single-service bookings. */ returnFullEntity?: boolean; /** * Multi-service booking type. * * Currently only `SEQUENTIAL_BOOKINGS` is supported. */ multiServiceBookingType?: MultiServiceBookingTypeWithLiterals; } interface CreateBookingFlowControlSettings { /** * Whether the availability is checked before creating the booking. * * - `false`: A booking is only created when the slot or schedule is available. * - `true`: The booking is created regardless of availability conflicts. Make sure the call's [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) has the required permissions. * * *Use cases for `true`:** * - Emergency or priority bookings that must be accommodated. * - Administrative bookings that override normal availability rules. * - Testing or demonstration purposes. * * Default: `false`. */ skipAvailabilityValidation?: boolean; /** * Whether `PENDING` bookings are automatically set to `CONFIRMED` for * services that normally require the owner's manual confirmation. * * Your app must have the `BOOKINGS.OVERRIDE_AVAILABILITY` permission * when passing `true`. * Default: `false`. */ skipBusinessConfirmation?: boolean; /** * Whether customers can pay using a payment method that isn't supported * for the service, but that's supported for other services. * * Your app must have the `BOOKINGS.MANAGE_PAYMENTS` permission when passing * `true`. * Default: `false`. */ skipSelectedPaymentOptionValidation?: boolean; /** * Whether Wix Bookings validates [add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) when creating a booking. * The calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) must have `BOOKINGS.MANAGE_ADDONS` permissions to specify `true`. * This allows customers to choose an add-on that's not associated with the service or choose more than the maximum number of add-ons from a group. * * Default: `false`. */ skipAddOnValidation?: boolean; } interface CreateMultiServiceBookingResponse { /** * Created multi-service booking. * Contains the single-service bookings in the same order as specified in the request. */ multiServiceBooking?: MultiServiceBooking; } /** * A multi-service booking combines multiple single-service bookings into a package. * * Currently, multi-service bookings support only sequential scheduling where services are scheduled back-to-back at the same location, with each single-service booking starting when the previous 1 ends. */ interface MultiServiceBooking { /** * Multi-service booking ID. * @format GUID */ id?: string | null; /** The single-service bookings that make up the multi-service booking package. */ bookings?: BookingResult[]; } interface BookingResult { /** * Single-service booking ID. Always present. * This value is identical to `booking.id`, which is only returned when `returnFullEntity` is `true`. * @format GUID */ bookingId?: string | null; /** Single-service booking entity. Only returned when `returnFullEntity` is `true`. */ booking?: Booking; } interface RescheduleMultiServiceBookingRequest { /** * ID of the multi-service booking to reschedule. * @format GUID */ multiServiceBookingId: string | null; /** Information about the single-service bookings to reschedule. */ rescheduleBookingsInfo: RescheduleBookingInfo[]; /** Information about whether to notify the customer and the message to send. */ participantNotification?: ParticipantNotification; /** * Information about whether specific procedures of the standard Wix Bookings rescheduling flow are changed. * For example, whether the availability of the new slot is checked before rescheduling the booking or if the customer can reschedule the booking even though the service's rescheduling policy doesn't allow it. */ flowControlSettings?: RescheduleBookingFlowControlSettings; /** Whether to return the rescheduled bookings entities. */ returnFullEntity?: boolean; } interface RescheduleBookingInfo extends RescheduleBookingInfoParticipantsInfoOneOf { /** * Total number of participants. Available only for services with [variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction). * Specify when all participants book the same variant. */ totalParticipants?: number; /** * Information about the service choices to book. Available only for services with [variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction). * Specify when not all participants book the same variant. */ participantsChoices?: ParticipantChoices; /** * ID of the booking to reschedule. * @format GUID */ bookingId?: string | null; /** Information about the new slot. */ slot?: V2Slot; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, the current revision must be specified when managing the booking. */ revision?: string | null; /** * List of [add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) added to the booking. * * To replace the booking's the list of booked add-ons, all of these conditions must be met: * - The booking must have been created with `flowControlSettings.allowAddOnChanges` set to `true`. * - You must have `BOOKINGS.MANAGE_ADDONS` permissions. * - For bookings paid via an [eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/purchase-flow/checkout/introduction): The related [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/draft-orders/introduction) must be in a draftable state to correctly adjust the price when modifying add-ons. You can call [Get Order Draftability Status](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/draft-orders/get-order-draftability-status), specifying the order ID to check if it's draftable. If the order isn't draftable, Reschedule Booking still succeeds, but the order's `priceSummary` isn't updated. * @maxSize 21 */ bookedAddOns?: BookedAddOn[]; } /** @oneof */ interface RescheduleBookingInfoParticipantsInfoOneOf { /** * Total number of participants. Available only for services with [variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction). * Specify when all participants book the same variant. */ totalParticipants?: number; /** * Information about the service choices to book. Available only for services with [variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction). * Specify when not all participants book the same variant. */ participantsChoices?: ParticipantChoices; } interface RescheduleBookingFlowControlSettings { /** * Whether the rescheduling policy applies when rescheduling the booking. * * When passing `false`, you can only reschedule a booking if the rescheduling * policy allows it. * When passing `true`, the rescheduling policy is ignored and external * validation providers are also skipped. * Default: `false`. */ ignoreReschedulePolicy?: boolean; /** * Whether the availability is checked before rescheduling the booking. * * When passing `false`, a booking is only created when the slot or * schedule is available. * Default: `false`. */ skipAvailabilityValidation?: boolean; /** * Whether the rescheduled booking's status is automatically set to * `CONFIRMED` for services that normally require the owner's manual * confirmation. * Default: `false`. */ skipBusinessConfirmation?: boolean; /** * Whether you can update the list of add-ons associated with the booking when rescheduling. * The calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) must have `BOOKINGS.MANAGE_ADDONS` permissions to specify `true`. * * Default: `false`. */ allowAddOnChanges?: boolean; } interface RescheduleMultiServiceBookingResponse { /** Rescheduled multi-service booking. */ multiServiceBooking?: MultiServiceBooking; } interface BookingRescheduled extends BookingRescheduledPreviousParticipantsInfoOneOf { /** * The previous total number of participants. Available only when the booking includes * a single service variant. */ previousTotalParticipants?: number; /** * Information about the previous booked service choices and participants. * Available only when the booking includes multiple service variants. */ previousParticipantsChoices?: ParticipantChoices; /** The rescheduled booking object. */ booking?: Booking; /** Information about whether to notify the customer about the rescheduling and the message to send. */ participantNotification?: ParticipantNotification; /** * Information about whether specific procedures of the standard Wix Bookings * rescheduling flow are changed. For example, whether the availability of * the new slot is checked before rescheduling the booking or if you can * reschedule the booking even though the rescheduling policy doesn't allow it. */ flowControlSettings?: RescheduleBookingFlowControlSettings; /** ID of the rescheduling initiator. */ initiatedBy?: IdentificationData; /** The previous status of the booking. */ previousStatus?: BookingStatusWithLiterals; /** An object describing the previous slot or schedule of the booking. */ previousBookedEntity?: BookedEntity; /** * The previous start date of the booking. * For a slot, this is the start date of the slot. * For a schedule, this is the start date of the first session. */ previousStartDate?: Date | null; /** * The previous end date of the booking. * For a slot, this is the end date of the slot. * For a schedule, this is the end date of the last session. */ previousEndDate?: Date | null; /** * The add-ons that were associated with the booking before rescheduling. * @maxSize 21 */ previousBookedAddOns?: BookedAddOn[]; } /** @oneof */ interface BookingRescheduledPreviousParticipantsInfoOneOf { /** * The previous total number of participants. Available only when the booking includes * a single service variant. */ previousTotalParticipants?: number; /** * Information about the previous booked service choices and participants. * Available only when the booking includes multiple service variants. */ previousParticipantsChoices?: ParticipantChoices; } 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 * @readonly */ contactId?: string | null; } /** @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'; interface GetMultiServiceBookingAvailabilityRequest { /** * ID of the multi-service booking to retrieve. * @format GUID */ multiServiceBookingId: string | null; } interface GetMultiServiceBookingAvailabilityResponse { /** Whether all contained single-service bookings are bookable. */ bookable?: boolean; /** Total number of spots. */ totalCapacity?: number | null; /** Number of open spots. */ remainingCapacity?: number | null; /** Indicators for policy violations of the multi-service booking. */ policyViolations?: BookingPolicyViolations; /** Multi-service booking policy settings. */ policySettings?: BookingPolicySettings; /** Details of the multi-service booking. */ multiServiceBookingInfo?: GetMultiServiceBookingAvailabilityResponseBookingInfo[]; } interface BookingPolicyViolations { /** Booking policy violation: Too early to book this slot. */ tooEarlyToBook?: boolean | null; /** Booking policy violation: Too late to book this slot. */ tooLateToBook?: boolean | null; /** Booking policy violation: Online booking is disabled for this slot. */ bookOnlineDisabled?: boolean | null; } interface BookingPolicySettings { /** Booking policy settings for a given slot or schedule. */ maxParticipantsPerBooking?: number | null; } interface GetMultiServiceBookingAvailabilityResponseBookingInfo { /** * Booking ID. * @format GUID */ bookingId?: string | null; } interface CancelMultiServiceBookingRequest { /** * ID of the multi-service booking to cancel. * @format GUID */ multiServiceBookingId: string | null; /** Information about whether to notify the customer and the message to send. */ participantNotification?: ParticipantNotification; /** * Information about whether specific procedures of the standard Wix Bookings cancellation flow are changed. * For example, whether the customer can cancel the booking even though the service's cancellation policy doesn't allow it or whether to issue a refund upon cancellation. */ flowControlSettings?: CancelBookingFlowControlSettings; /** Whether to return the canceled single-service bookings. */ returnFullEntity?: boolean; } interface CancelBookingFlowControlSettings { /** * Whether the cancellation policy applies when canceling the booking. * * When passing `false`, you can only cancel a booking if the cancellation policy allows it. * Default: `false`. */ ignoreCancellationPolicy?: boolean | null; /** * Whether to issue a refund when canceling the booking. * * The refund will be issued only if the booking is refundable. * Currently, a booking is considered refundable when it was paid by membership. * If you specify `true`, the booking flow control settings is set to include a refund. * If `false` is specified or the field remains empty, * the booking flow control settings are set without refund. * * Default: `false`. */ withRefund?: boolean | null; /** * Whether to waive the cancellation fee when canceling the booking. * * - `true`: The customer doesn't have to pay a cancellation fee. * - `false`: The customer must pay the cancellation fee that's defined in the service's [policy](https://dev.wix.com/docs/api-reference/business-solutions/bookings/policies/booking-policies/introduction). * * Default: `false`. */ waiveCancellationFee?: boolean | null; } interface CancelMultiServiceBookingResponse { /** Canceled multi-service booking. */ multiServiceBooking?: MultiServiceBooking; } interface BookingCanceled { /** The canceled booking object. */ booking?: Booking; /** Information about whether to notify the customer about the cancellation and the message to send. */ participantNotification?: ParticipantNotification; /** * Information about whether specific procedures of the standard Wix Bookings * cancellation flow are changed. For example, whether you can cancel * a booking even though the cancellation policy doesn't allow it or whether * to issue a refund. */ flowControlSettings?: CancelBookingFlowControlSettings; /** ID of the cancellation initiator. */ initiatedBy?: IdentificationData; /** The previous status of the booking. */ previousStatus?: BookingStatusWithLiterals; } interface MarkMultiServiceBookingAsPendingRequest { /** * ID of the multi-service booking to mark as `PENDING`. * @format GUID */ multiServiceBookingId: string | null; /** Information about the single-service bookings to mark as `PENDING`. */ markAsPendingBookingsInfo?: BookingInfo[]; /** Information about whether to notify the customer and the message to send. */ participantNotification?: ParticipantNotification; /** * Whether to send an SMS reminder to the customer 24 hours before the session starts. * Wix Bookings takes the phone number from `contactDetails.phone`. * * Default: `true` */ sendSmsReminder?: boolean | null; /** Whether this booking has a conflict with at least 1 other confirmed booking. */ doubleBooked?: boolean | null; /** * Whether to return the single-service bookings that were marked as `PENDING`. * * Default: `false` */ returnFullEntity?: boolean; /** * Information about whether specific procedures of the standard Wix Bookings creation flow are changed. * For example, whether Wix Bookings checks availability before updating the booking. */ flowControlSettings?: MarkBookingAsPendingFlowControlSettings; } interface BookingInfo { /** * ID of the single-service booking. * @format GUID */ bookingId?: string | null; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, the current revision must be specified when managing the booking. */ revision?: string | null; /** Payment status to set for the single-service booking. */ paymentStatus?: PaymentStatusWithLiterals; } interface MarkBookingAsPendingFlowControlSettings { /** * Whether to check for double booking conflicts when updating the status. * * - `true`: Checks for availability conflicts and sets `doubleBooked` to `true` * if conflicts exist. * The booking is still marked as `PENDING` for the business to resolve manually. * - `false`: No availability checking is performed. * * Default: `false` */ checkAvailabilityValidation?: boolean; /** * Whether to allow marking any booking as pending, even if the service doesn't require manual approval. * * - `true`: Bypasses the validation that checks if the service has `service.onlineBooking.requireManualApproval` set to `true`. * - `false`: Only services that require manual approval can have their bookings marked as pending. * * Default: `false`. */ skipPendingApprovalServiceValidation?: boolean; } interface MarkMultiServiceBookingAsPendingResponse { /** Updated multi-service booking. */ multiServiceBooking?: MultiServiceBooking; } interface ConfirmMultiServiceBookingRequest { /** * ID of the multi-service booking to confirm its related bookings. * @format GUID */ multiServiceBookingId: string | null; /** Information about the single-service bookings to confirm. */ confirmBookingsInfo?: BookingInfo[]; /** Information about whether to notify the customer and the message to send. */ participantNotification?: ParticipantNotification; /** * Whether to send an SMS reminder to the customer 24 hours before the session starts. * Wix Bookings takes the phone number from `contactDetails.phone`. * * Default: `true` */ sendSmsReminder?: boolean | null; /** Whether this booking has a conflict with at least 1 other confirmed booking. */ doubleBooked?: boolean | null; /** Whether to return the confirmed single-service bookings. */ returnFullEntity?: boolean; /** * Information about whether specific procedures of the standard Wix Bookings confirmation flow are changed. * For example, whether Wix Bookings checks availability before confirming the booking. */ flowControlSettings?: ConfirmBookingFlowControlSettings; } interface ConfirmBookingFlowControlSettings { /** * Whether the availability is checked before confirming the booking. * * When specifying `false`, a booking is only updated with status `CONFIRMED`. * Default: `false`. */ checkAvailabilityValidation?: boolean; } interface ConfirmMultiServiceBookingResponse { /** Confirmed multi-service booking. */ multiServiceBooking?: MultiServiceBooking; } interface BookingConfirmed { /** The confirmed booking object. */ booking?: Booking; /** Information about whether to notify the customer about the confirmation and the message to send. */ participantNotification?: ParticipantNotification; /** * Whether to send an SMS reminder to the customer 24 hours before the session starts. * The phone number is taken from `contactDetails.phone`. */ sendSmsReminder?: boolean | null; /** Whether this booking overlaps with another existing confirmed booking. */ doubleBooked?: boolean | null; /** ID of the confirmation initiator. */ initiatedBy?: IdentificationData; /** The previous status of the booking. */ previousStatus?: BookingStatusWithLiterals; /** The previous payment status of the booking. */ previousPaymentStatus?: PaymentStatusWithLiterals; } interface DeclineMultiServiceBookingRequest { /** * ID of the multi-service booking to decline. * @format GUID */ multiServiceBookingId: string | null; /** Information about the single-service bookings to decline. */ declineBookingsInfo?: BookingInfo[]; /** Information about whether to notify the customer and the message to send. */ participantNotification?: ParticipantNotification; /** Whether this booking has a conflict with at least 1 other confirmed booking. */ doubleBooked?: boolean | null; /** Whether to return the declined single-service bookings. */ returnFullEntity?: boolean; /** * Information about whether specific procedures of the standard Wix Bookings declining flow are changed. * For example, whether to issue a refund upon cancellation. */ flowControlSettings?: DeclineBookingFlowControlSettings; } interface DeclineBookingFlowControlSettings { /** * Whether to issue a refund when declining the booking. * * The refund will be issued only if the booking is refundable. * Currently, a booking is considered refundable when it was paid by membership. * If specifying `true`, the booking flow control settings will be set with a refund. * If you specify `false` or an empty field, * the booking flow control settings are set without refund. * * Default: `false`. */ withRefund?: boolean | null; } interface DeclineMultiServiceBookingResponse { /** Declined multi-service booking. */ multiServiceBooking?: MultiServiceBooking; } interface BookingDeclined { /** The declined booking object. */ booking?: Booking; /** Information about whether to notify the customer about the decline and the message to send. */ participantNotification?: ParticipantNotification; /** Whether this booking overlaps with another existing confirmed booking. */ doubleBooked?: boolean | null; /** ID of the decline initiator. */ initiatedBy?: IdentificationData; /** The previous status of the booking. */ previousStatus?: BookingStatusWithLiterals; /** The previous payment status of the booking. */ previousPaymentStatus?: PaymentStatusWithLiterals; /** * Information about whether specific procedures of the standard Wix Bookings * declining flow are changed. For example, whether to issue a refund. */ flowControlSettings?: DeclineBookingFlowControlSettings; } interface BulkGetMultiServiceBookingAllowedActionsRequest { /** * IDs of the multi-service bookings to retrieve allowed actions for. * @format GUID * @minSize 1 * @maxSize 50 */ multiServiceBookingIds: string[] | null; } interface BulkGetMultiServiceBookingAllowedActionsResponse { /** * Information about the multi-service bookings that were retrieved. * Includes their ID, index in the bulk request and whether they were successfully processed. */ results?: BulkCalculateAllowedActionsResult[]; /** Total number of successes and failures for Bulk Get Multi Service Booking Allowed Actions. */ bulkActionMetadata?: BulkActionMetadata; } interface BulkCalculateAllowedActionsResult { /** Metadata for the booking. Including ID, index in the provided sequence, success status, and error. */ itemMetadata?: ItemMetadata; /** Booking entity. */ item?: AllowedActions; } /** Possible actions allowed for the booking. */ interface AllowedActions { /** Whether canceling the booking is allowed. */ cancel?: boolean; /** Whether rescheduling the booking is allowed. */ reschedule?: boolean; } interface GetMultiServiceBookingRequest { /** * ID of the multi-service booking. * @format GUID */ multiServiceBookingId: string | null; } interface GetMultiServiceBookingResponse { /** Retrieved multi-service booking. */ multiServiceBooking?: MultiServiceBooking; /** Details about how many single-service bookings belong to the multi-service booking. */ metadata?: MultiServiceBookingMetadata; } interface MultiServiceBookingMetadata { /** * Total number of `CONFIRMED` and `PENDING` single-service bookings belonging to the multi-service booking. * The total includes the number of single-service bookings which couldn't be retrieved due to lack of permissions. */ totalNumberOfScheduledBookings?: number | null; } interface AddBookingsToMultiServiceBookingRequest { /** * ID of the multi-service booking. * @format GUID */ multiServiceBookingId: string | null; /** * List of single-service booking IDs and their revision. * @maxSize 8 */ bookings: BookingIdAndRevision[]; /** * Whether to return the single-service bookings that were added to the multi-service booking. * * Default: `false` */ returnFullEntity?: boolean; } interface BookingIdAndRevision { /** * ID of the single-service booking. * @format GUID */ bookingId?: string | null; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, the current revision must be specified when managing the booking. */ revision?: string | null; } interface AddBookingsToMultiServiceBookingResponse { /** Single-service bookings that were added to the multi-service booking. */ bookings?: BookingResult[]; } interface RemoveBookingsFromMultiServiceBookingRequest { /** * ID of the multi-service booking. * @format GUID */ multiServiceBookingId: string | null; /** * List of single-service booking IDs and their revision. * @maxSize 8 */ bookings?: BookingIdAndRevision[]; /** * Whether to return the single-service bookings. * * Default: `false` */ returnFullEntity?: boolean; } interface RemoveBookingsFromMultiServiceBookingResponse { /** Single-service bookings that were removed from the multi-service booking. */ bookings?: BookingResult[]; } interface BookingChanged { /** The booking before the changes. */ previousBooking?: Booking; /** The booking after the changes. */ currentBooking?: Booking; } interface CreateBookingRequest { /** The booking to create. */ booking: Booking; /** * Information about whether to notify the customer and * the message to send. */ participantNotification?: ParticipantNotification; /** * Whether to send an SMS reminder to the customer 24 hours before the * session starts. The phone number is taken from `contactDetails.phone`. * Default: `true`. */ sendSmsReminder?: boolean | null; /** * Whether to ignore specific standard procedures of the Wix Bookings flow. * For example, whether to check availability when creating a booking. */ flowControlSettings?: CreateBookingFlowControlSettings; /** * Booking form data submitted by the customer during the booking process. * Each key represents the name of the form submission field while the value is the data submitted by the customer for that field. * * Wix Bookings stores this form data in different locations depending on the field type: * - __Contact details fields__: Input values for standard contact fields such as name, email, phone, and address are saved in the booking object's `contactDetails`. * - __Custom and additional fields__: All other form field values are stored separately in the [form submissions object](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction). * * For comprehensive details about integrating custom forms with bookings, see [Wix Forms Integration](https://dev.wix.com/docs/rest/business-solutions/bookings/wix-forms-integration). */ formSubmission?: Record | null; } interface CreateBookingResponse { /** Created booking. */ booking?: Booking; } /** * The `fieldMask` should not include both the `numberOfParticipants` and `participantsInfo` paths. Including both results * in an error. `participantsInfo` is preferred over `numberOfParticipants`. */ interface UpdateBookingRequest { booking?: Booking; } interface UpdateBookingResponse { booking?: Booking; } interface LegacyCreateBookingRequest { booking?: Booking; } interface LegacyCreateBookingResponse { booking?: Booking; } /** * The `fieldMask` for each booking should not include both the `numberOfParticipants` and `participantsInfo` paths. Including both results * in an error. `participantsInfo` is preferred over `numberOfParticipants`. */ interface BulkUpdateBookingRequest { bookings?: MaskedBooking[]; /** Whether to return the updated bookings. */ returnFullEntity?: boolean; } interface MaskedBooking { booking?: Booking; mask?: string[]; } interface BulkUpdateBookingResponse { /** List of individual Bulk Update Bookings results. */ results?: BulkBookingResult[]; /** Total number of successes and failures for Bulk Update Bookings. */ bulkActionMetadata?: BulkActionMetadata; } interface BulkCreateBookingRequest { /** * Bookings to create. * * Max: 8 bookings * @minSize 1 * @maxSize 12 */ createBookingsInfo: CreateBookingInfo[]; /** Whether to return the created bookings. */ returnFullEntity?: boolean; } interface CreateBookingInfo { /** Booking to create. */ booking?: Booking; /** * Information about whether to notify the customer and * the message to send. */ participantNotification?: ParticipantNotification; /** * Whether to send an SMS reminder to the customer 24 hours before the * session starts. The phone number is taken from `contactDetails.phone`. * Default: `true`. */ sendSmsReminder?: boolean | null; /** * Whether to ignore specific standard procedures of the Wix Bookings flow. * For example, whether to check availability when creating a booking. */ flowControlSettings?: CreateBookingFlowControlSettings; } interface BulkCreateBookingResponse { /** List of individual Bulk Create Bookings results. */ results?: BulkBookingResult[]; /** Total number of successes and failures for Bulk Create Bookings. */ bulkActionMetadata?: BulkActionMetadata; } interface RescheduleBookingRequest extends RescheduleBookingRequestParticipantsInfoOneOf { /** * Total number of participants. Specify when all participants have booked the * same service variant. */ totalParticipants?: number; /** * Information about the service choices to book. Specify when not all * participants have booked the same service variant. */ participantsChoices?: ParticipantChoices; /** * ID of the booking to reschedule. * @format GUID */ bookingId: string; /** New slot of the booking. */ slot: V2Slot; /** * Revision number, which increments by 1 each time the booking is rescheduled. * To prevent conflicting changes, the current revision must be passed when * rescheduling the booking. */ revision: string | null; /** * Information about whether to notify the customer about the rescheduling and * the message to send. */ participantNotification?: ParticipantNotification; /** * Whether to ignore specific standard procedures of the Wix Bookings flow. * For example, whether to check availability when rescheduling a booking. */ flowControlSettings?: RescheduleBookingFlowControlSettings; /** * List of [add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) added to the booking. * * To replace the booking's the list of booked add-ons, all of these conditions must be met: * - The booking must have been created with `flowControlSettings.allowAddOnChanges` set to `true`. * - You must have `BOOKINGS.MANAGE_ADDONS` permissions. * - For bookings paid via an [eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/purchase-flow/checkout/introduction): The related [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/draft-orders/introduction) must be in a draftable state to correctly adjust the price when modifying add-ons. You can call [Get Order Draftability Status](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/draft-orders/get-order-draftability-status), specifying the order ID to check if it's draftable. If the order isn't draftable, Reschedule Booking still succeeds, but the order's `priceSummary` isn't updated. * @maxSize 21 */ bookedAddOns?: BookedAddOn[]; } /** @oneof */ interface RescheduleBookingRequestParticipantsInfoOneOf { /** * Total number of participants. Specify when all participants have booked the * same service variant. */ totalParticipants?: number; /** * Information about the service choices to book. Specify when not all * participants have booked the same service variant. */ participantsChoices?: ParticipantChoices; } interface RescheduleBookingResponse { /** Rescheduled booking. */ booking?: Booking; } interface BulkRescheduleBookingRequest { /** * Reschedule multiple bookings to multiple slots. * @minSize 1 */ slotsBookings?: SlotBookings[]; /** * Information about whether to notify the customer about the rescheduling and * the message to send. */ participantNotification?: ParticipantNotification; } interface BulkRescheduleBookingRequestBooking { /** * ID of the booking to reschedule. * @format GUID */ id?: string; /** * Revision number, which increments by 1 each time the booking is rescheduled. * To prevent conflicting changes, * the current revision must be specified when rescheduling the booking. */ revision?: string | null; } /** Bookings to be rescheduled to the given slot. */ interface SlotBookings { /** * The bookings details. * @minSize 1 */ bookings?: BulkRescheduleBookingRequestBooking[]; /** * The slot to which the bookings were rescheduled. * These bookings are automatically assigned to the session, if given. Otherwise, a new session is created. */ slot?: BookedSlot; } interface BulkRescheduleBookingResponse { /** * Information about the booking that was rescheduled. * Including its ID, index in the bulk request and whether it was * successfully rescheduled. */ results?: ItemMetadata[]; /** Total number of successes and failures for Bulk Reschedule Bookings. */ bulkActionMetadata?: BulkActionMetadata; } /** Update the booked schedule of multiple bookings to the given schedule. */ interface BulkUpdateBookedScheduleRequest { /** * The bookings whose booked schedule is to be updated to the given schedule. * @minSize 1 */ bookings?: BookingDetails[]; /** ID of the schedule to update. */ scheduleId?: string; /** * Information about whether to notify the customer about the rescheduling and * the message to send. */ participantNotification?: ParticipantNotification; } interface BookingDetails { /** * ID of the bookings to be updated. * @format GUID */ id?: string; revision?: string | null; } interface BulkUpdateBookedScheduleResponse { /** * Information about the schedule that was updated. * Including its ID, index in the bulk request and whether it was * succesfully updated. */ results?: ItemMetadata[]; /** Total number of successes and failures for Bulk Updated Booked Schedules. */ bulkActionMetadata?: BulkActionMetadata; } interface QueryBookingsRequest { /** Information about filters, paging, and sorting. */ query?: QueryV2; } 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; } declare enum SortOrder { ASC = "ASC", DESC = "DESC" } /** @enumType */ type SortOrderWithLiterals = SortOrder | 'ASC' | 'DESC'; 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 QueryBookingsResponse { /** Retrieved bookings. */ bookings?: Booking[]; /** 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?: CommonCursors; } interface CommonCursors { /** * 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 ConfirmRequest { /** * ID of the booking to confirm. * @format GUID */ id?: string; /** * Information about whether to notify the customer about the confirmation and * the message to send. */ participantNotification?: ParticipantNotification; } interface ConfirmResponse { /** Confirmed booking. */ booking?: Booking; /** Whether this booking has a conflict with at least 1 other confirmed booking. */ doubleBooked?: boolean | null; } interface ConfirmBookingRequest { /** * ID of the booking to confirm. * @format GUID */ bookingId: string; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, the current revision must be passed when * updating the booking. */ revision: string | null; /** * Information about whether to notify the customer about the confirmation and * the message to send. */ participantNotification?: ParticipantNotification; /** * Whether to send an SMS reminder to the customer 24 hours before the * session starts. The phone number is taken from `contactDetails.phone`. */ sendSmsReminder?: boolean | null; /** Payment status to set for the booking. */ paymentStatus?: PaymentStatusWithLiterals; /** Whether this booking has a conflict with at least 1 other confirmed booking. */ doubleBooked?: boolean | null; /** * Whether to ignore specific standard procedures of the Wix Bookings flow. * For example, whether to check availability when confirming a booking. */ flowControlSettings?: ConfirmBookingFlowControlSettings; } interface ConfirmBookingResponse { /** Confirmed booking. */ booking?: Booking; } interface ConsistentQueryBookingsRequest { /** Information about filters, paging, and sorting. */ query?: QueryV2; } interface ConsistentQueryBookingsResponse { /** Retrieved bookings. */ bookings?: Booking[]; /** Paging metadata. */ pagingMetadata?: PagingMetadataV2; } interface SetBookingSessionIdRequest { /** * ID of the booking to set `sessionId` for. * @format GUID */ id?: string; /** ID of the session to set on the booking. */ sessionId?: string; } interface SetBookingSessionIdResponse { /** Updated booking. */ booking?: Booking; } interface SetBookingSubmissionIdRequest { /** * ID of the booking to set `formSubmissionId` for. * @format GUID */ bookingId: string; /** * ID of the [Wix Forms submission](https://dev.wix.com/docs/api-reference/crm/forms/form-submissions/introduction) to associate with the booking. * @format GUID */ submissionId: string; } interface SetBookingSubmissionIdResponse { /** Updated booking. */ booking?: Booking; } interface UpdateExtendedFieldsRequest { /** ID of the entity to update. */ id: string; /** Identifier for the app whose extended fields are being updated. */ namespace: string; /** Data to update. Structured according to the [schema](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields#json-schema-for-extended-fields) defined when the extended fields were configured. */ namespaceData: Record | null; } interface UpdateExtendedFieldsResponse { /** * Updated namespace. * @maxLength 164 */ namespace?: string; /** Updated data. */ namespaceData?: Record | null; } interface DeclineBookingRequest { /** * ID of the booking to decline. * @format GUID */ bookingId: string; /** * Revision number, which increments by 1 each time the booking is updated. * * To prevent conflicting changes, the current revision must be specified when * declining the booking. * @min 1 */ revision: string | null; /** * Information about whether to notify the customer and * the message to send. */ participantNotification?: ParticipantNotification; /** Payment status to set for the booking. */ paymentStatus?: PaymentStatusWithLiterals; /** Whether this booking has a conflict with at least 1 other confirmed booking. */ doubleBooked?: boolean | null; /** * Whether to ignore specific standard procedures of the Wix Bookings flow. * For example, whether to refund a declined booking. */ flowControlSettings?: DeclineBookingFlowControlSettings; } interface DeclineBookingResponse { /** Declined booking. */ booking?: Booking; } interface CancelBookingRequest { /** * ID of the booking to cancel. * @format GUID */ bookingId: string; /** * Information about whether to notify the customer about the cancellation and * the message to send. */ participantNotification?: ParticipantNotification; /** * Whether to ignore specific standard procedures of the Wix Bookings flow. * For example, whether to allow a cancellation even though the service's * policy doesn't allow it. */ flowControlSettings?: CancelBookingFlowControlSettings; /** * Revision number, which increments by 1 each time the booking is updated. * * To prevent conflicting changes, the current revision must be specified when * managing the booking. */ revision: string | null; } interface CancelBookingResponse { /** Canceled booking. */ booking?: Booking; } interface UpdateNumberOfParticipantsRequest extends UpdateNumberOfParticipantsRequestParticipantsInfoOneOf { /** * Total number of participants. Specify when all participants have booked the * same service variant. */ totalParticipants?: number; /** * Information about the service choices the participants have booked. Specify * when not all participants have booked the same service variant. */ participantsChoices?: ParticipantChoices; /** * ID of the booking to update the number of participants for. * @format GUID */ bookingId: string; /** * Revision number, which increments by 1 each time the booking is updated. * * To prevent conflicting changes, the current revision must be specified * when updating the booking. */ revision: string | null; } /** @oneof */ interface UpdateNumberOfParticipantsRequestParticipantsInfoOneOf { /** * Total number of participants. Specify when all participants have booked the * same service variant. */ totalParticipants?: number; /** * Information about the service choices the participants have booked. Specify * when not all participants have booked the same service variant. */ participantsChoices?: ParticipantChoices; } interface UpdateNumberOfParticipantsResponse { /** Updated booking. */ booking?: Booking; } interface NumberOfParticipantsUpdated extends NumberOfParticipantsUpdatedPreviousParticipantsInfoOneOf { /** * The previous total number of participants. Available only when the booking includes * a single service variant. */ previousTotalParticipants?: number; /** * Information about the previous booked service choices and participants. * Available only when the booking includes multiple service variants. */ previousParticipantsChoices?: ParticipantChoices; /** The updated booking object. */ booking?: Booking; /** ID of the participant number update initiator. */ initiatedBy?: IdentificationData; } /** @oneof */ interface NumberOfParticipantsUpdatedPreviousParticipantsInfoOneOf { /** * The previous total number of participants. Available only when the booking includes * a single service variant. */ previousTotalParticipants?: number; /** * Information about the previous booked service choices and participants. * Available only when the booking includes multiple service variants. */ previousParticipantsChoices?: ParticipantChoices; } interface BulkCalculateAllowedActionsRequest { /** * List of booking IDs to calculate allowed actions for. * @minSize 1 */ bookingIds: string[] | null; } interface BulkCalculateAllowedActionsResponse { /** Results for each booking in the request, containing the allowed actions or error information. */ results?: BulkCalculateAllowedActionsResult[]; /** Summary of successful and failed operations. */ bulkActionMetadata?: BulkActionMetadata; } interface GetSlotAvailabilityRequest { /** The slot for which the availability is checked. */ slot?: V2Slot; /** The timezone for which availability is to be calculated. */ timezone?: string | null; } interface GetSlotAvailabilityResponse { availability?: SlotAvailability; bookingPolicySettings?: BookingPolicySettings; } interface SlotAvailability { /** Identifier for the underlying session when the session is a single session or generated from a recurring session. Required. */ slot?: V2Slot; /** Whether this available slot is bookable. */ bookable?: boolean; /** * Total number of spots for this availability. * For example, for a class of 10 spots with 3 spots booked, `totalSpots` is 10 and `openSpots` is 7. */ totalSpots?: number | null; /** * Number of open spots for this availability. * For appointments, if there are existing bookings with overlapping time, service & resource, `openSpots` is 0. Otherwise, `openSpots` is 1. */ openSpots?: number | null; /** An object describing the slot's waiting list and its occupancy. */ waitingList?: WaitingList; /** Indicators for booking policy violations for the slot. */ bookingPolicyViolations?: BookingPolicyViolations; /** Indicates whether this slot is locked. */ locked?: boolean | null; } interface WaitingList { /** * Total number of spots and open spots for this waiting list. * For example, a Yoga class of 10 waiting list spots with 3 registered on the waiting list has `total_spots`: 10 and `open_spots`: 7. */ totalSpots?: number | null; /** Number of open spots for this waiting list. */ openSpots?: number | null; } interface AvailableResources { /** * Resource type ID. * @format GUID */ resourceTypeId?: string | null; /** * Available resources for the slot. * `maxSize` is defined by 135 staff members + 3 resource types and 50 resources per type. * `Availability-2` currently has no `maxSize` defined. * @format GUID * @maxSize 275 */ resourceIds?: string[]; } interface GetScheduleAvailabilityRequest { /** * ID of the schedule for which to check availability. * @format GUID */ scheduleId?: string; } interface GetScheduleAvailabilityResponse { availability?: ScheduleAvailability; bookingPolicySettings?: BookingPolicySettings; } interface ScheduleAvailability { /** Total number of spots. */ totalSpots?: number | null; /** Number of remaining open spots. */ openSpots?: number | null; /** Indicators of booking policy violations for the specified schedule. */ bookingPolicyViolations?: BookingPolicyViolations; } interface MarkBookingAsPendingRequest { /** * ID of the booking to mark as `PENDING`. * @format GUID */ bookingId: string; /** * Revision number, which increments by 1 each time the booking is updated. * * To prevent conflicting changes, the current revision must be specified when * managing the booking. */ revision: string | null; /** * Information about whether to notify the customer and * the message to send. */ participantNotification?: ParticipantNotification; /** * Whether to send an SMS reminder to the customer 24 hours before the * session starts. The phone number is taken from `contactDetails.phone`. */ sendSmsReminder?: boolean | null; /** Payment status to set for the booking. */ paymentStatus?: PaymentStatusWithLiterals; /** Whether this booking has a conflict with at least 1 other confirmed booking. */ doubleBooked?: boolean | null; /** * Whether to ignore specific standard procedures of the Wix Bookings flow. * For example, whether to check availability before updating the status. */ flowControlSettings?: MarkBookingAsPendingFlowControlSettings; } interface MarkBookingAsPendingResponse { /** Updated booking. */ booking?: Booking; } interface BookingMarkedAsPending { /** The booking that was marked as pending. */ booking?: Booking; /** Customer notification settings for when the pending booking is manually confirmed. */ participantNotification?: ParticipantNotification; /** * Whether to send an SMS reminder to the customer 24 hours before the session starts. * The phone number is taken from `contactDetails.phone`. */ sendSmsReminder?: boolean | null; /** Whether this booking overlaps with another existing confirmed booking. */ doubleBooked?: boolean | null; /** ID of the mark as pending initiator. */ initiatedBy?: IdentificationData; /** The previous status of the booking. */ previousStatus?: BookingStatusWithLiterals; /** The previous payment status of the booking. */ previousPaymentStatus?: PaymentStatusWithLiterals; } interface MigrationCheckIfClashesWithBlockedTimeRequest { msidAndBookingIds?: MsidAndBookingId[]; } interface MsidAndBookingId { msid?: string; bookingId?: string; } interface MigrationCheckIfClashesWithBlockedTimeResponse { clashes?: Clash[]; } interface Clash { msid?: string; bookingId?: string; sessionId?: string; resourceName?: string; contactName?: string; } interface CountBookingsRequest { /** * 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 CountBookingsResponse { /** Number of bookings matching the specified filter. */ count?: number; } interface SearchBookingsRequest { search?: CursorSearch; } 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" } /** @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 SearchBookingsResponse { bookings?: Booking[]; pagingMetadata?: CursorPagingMetadata; 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. */ 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 AggregationData { /** @maxSize 10000 */ results?: AggregationResults[]; } interface ValueAggregationResult { /** @maxLength 100 */ value?: string; count?: number; } interface RangeAggregationResult { from?: number | null; to?: number | null; count?: number; } interface NestedAggregationResults extends NestedAggregationResultsResultOneOf { values?: ValueResults; ranges?: RangeResults; scalar?: AggregationResultsScalarResult; /** @maxLength 100 */ name?: string; type?: AggregationTypeWithLiterals; /** @maxLength 200 */ fieldPath?: string; } /** @oneof */ interface NestedAggregationResultsResultOneOf { values?: ValueResults; ranges?: RangeResults; scalar?: AggregationResultsScalarResult; } interface ValueResults { /** @maxSize 250 */ results?: ValueAggregationResult[]; } interface RangeResults { /** @maxSize 50 */ results?: RangeAggregationResult[]; } interface AggregationResultsScalarResult { type?: ScalarTypeWithLiterals; value?: number; } interface NestedValueAggregationResult { /** @maxLength 1000 */ value?: string; nestedResults?: NestedAggregationResults; } interface ValueResult { /** @maxLength 1000 */ value?: string; count?: number | null; } interface RangeResult { from?: number | null; to?: number | null; count?: number | null; } interface ScalarResult { value?: number; } interface ScalarDateResult { /** @maxLength 100 */ value?: string; } interface NestedResultValue extends NestedResultValueResultOneOf { value?: ValueResult; range?: RangeResult; scalar?: ScalarResult; dateHistogram?: ValueResult; scalarDate?: ScalarDateResult; } /** @oneof */ interface NestedResultValueResultOneOf { value?: ValueResult; range?: RangeResult; scalar?: ScalarResult; dateHistogram?: ValueResult; scalarDate?: ScalarDateResult; } interface Results { results?: Record; } interface DateHistogramResult { /** @maxLength 100 */ value?: string; count?: number; } interface GroupByValueResults { /** @maxSize 1000 */ results?: NestedValueAggregationResult[]; } interface DateHistogramResults { /** @maxSize 200 */ results?: DateHistogramResult[]; } interface NestedResults { /** @maxSize 1000 */ results?: Results[]; } interface AggregationResults extends AggregationResultsResultOneOf { values?: ValueResults; ranges?: RangeResults; scalar?: AggregationResultsScalarResult; groupedByValue?: GroupByValueResults; dateHistogram?: DateHistogramResults; nested?: NestedResults; /** @maxLength 100 */ name?: string; type?: AggregationTypeWithLiterals; /** @maxLength 200 */ fieldPath?: string; } /** @oneof */ interface AggregationResultsResultOneOf { values?: ValueResults; ranges?: RangeResults; scalar?: AggregationResultsScalarResult; groupedByValue?: GroupByValueResults; dateHistogram?: DateHistogramResults; nested?: NestedResults; } /** Request for GetAnonymousActionDetails */ interface GetAnonymousActionDetailsRequest { /** @format GUID */ bookingId?: string | null; } /** Response for GetAnonymousActionDetails */ interface GetAnonymousActionDetailsResponse { /** * Token for anonymous access to manage the booking. * It represents a symmetrically encrypted and URL-safe string containing the booking ID. * This token is required for canceling or rescheduling the booking without authentication. * @minLength 32 * @maxLength 2048 */ token?: string | null; /** @format GUID */ clientId?: string | null; anonymousBookingUrls?: AnonymousBookingUrls; } interface AnonymousBookingUrls { /** * The base URL for the booking links * @maxLength 2048 */ baseUrl?: string | null; /** * The cancellation URL for the booking, which contains an anonymous token and AOth clientId * @maxLength 2048 */ anonymousCancellationUrl?: string | null; /** * The reschedule URL for the booking, which contains an anonymous token and AOth clientId * @maxLength 2048 */ anonymousRescheduleUrl?: string | null; } /** Request for CancelBookingAnonymously */ interface CancelBookingAnonymouslyRequest { /** * The token provided in the booking links for anonymous access * @maxLength 2048 */ token?: string | null; /** * Revision number, which increments by 1 each time the booking is updated. * To prevent conflicting changes, the current revision must be specified when * managing the booking. */ revision?: string | null; } /** Response for CancelBookingAnonymously */ interface CancelBookingAnonymouslyResponse { /** Canceled booking. */ booking?: Booking; } /** Request for RescheduleBookingAnonymously */ interface RescheduleBookingAnonymouslyRequest { /** * The token provided in the booking links for anonymous access * @maxLength 2048 */ token?: string | null; /** New slot of the booking. */ slot?: V2Slot; /** * Revision number, which increments by 1 each time the booking is rescheduled. * To prevent conflicting changes, the current revision must be passed when * rescheduling the booking. */ revision?: string | null; } /** Response for RescheduleBookingAnonymously */ interface RescheduleBookingAnonymouslyResponse { /** Rescheduled booking. */ booking?: Booking; } /** Request for GetBookingAnonymously */ interface GetBookingAnonymouslyRequest { /** * The token provided in the booking links for anonymous access * @maxLength 2048 */ token?: string | null; } /** Response for GetBookingAnonymously */ interface GetBookingAnonymouslyResponse { booking?: Booking; /** * Allowed actions for the booking, such as canceling or rescheduling. * deprecated: use allowed_anonymous_actions instead * @deprecated Allowed actions for the booking, such as canceling or rescheduling. * deprecated: use allowed_anonymous_actions instead * @replacedBy allowed_anonymous_actions * @targetRemovalDate 2026-03-17 */ allowedActionsAnonymously?: AllowedActionsAnonymously; /** Allowed actions for the booking, such as canceling or rescheduling. */ allowedAnonymousActions?: AllowedAnonymousActions; } /** Possible allowed actions for a Booking */ interface AllowedActionsAnonymously { /** Whether the customer is allowed to cancel the booking. */ cancel?: boolean; /** Whether the customer is allowed to reschedule the booking. */ reschedule?: boolean; } /** Possible allowed actions for a Booking */ interface AllowedAnonymousActions { /** Whether the customer is allowed to cancel the booking. */ cancel?: boolean; /** Whether the customer is allowed to reschedule the booking. */ reschedule?: boolean; } /** Request for GetSchedulingUrl */ interface GetSchedulingUrlRequest { /** * ID of the service for which to get the scheduling URL. * @format GUID */ serviceId?: string | null; } /** Response for GetSchedulingUrl */ interface GetSchedulingUrlResponse { /** * The scheduling URL for the specified service. * @maxLength 2048 */ schedulingUrl?: string | null; } /** @docsIgnore */ type ConfirmOrDeclineBookingApplicationErrors = { code?: 'INVALID_BOOKING_STATUS'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; }; /** @docsIgnore */ type BulkConfirmOrDeclineBookingApplicationErrors = { code?: 'DUPLICATED_BOOKINGS'; description?: string; data?: Record; }; /** @docsIgnore */ type BookingsCancelBookingAnonymouslyApplicationErrors = { code?: 'INVALID_TOKEN'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'BOOKING_CANNOT_BE_CANCELLED'; description?: string; data?: Record; }; /** @docsIgnore */ type BookingsRescheduleBookingAnonymouslyApplicationErrors = { code?: 'INVALID_TOKEN'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'RESCHEDULING_NOT_ALLOWED'; description?: string; data?: Record; }; /** @docsIgnore */ type BookingsGetBookingAnonymouslyApplicationErrors = { code?: 'INVALID_TOKEN'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'FAILED_GETTING_BOOKING_FEES'; description?: string; data?: Record; }; /** @docsIgnore */ type GetServiceAnonymouslyApplicationErrors = { code?: 'INVALID_TOKEN'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'SERVICE_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'FAILED_GETTING_SERVICE'; description?: string; data?: Record; }; /** @docsIgnore */ type GetAnonymousActionTokenApplicationErrors = { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'FAILED_GENERATING_TOKEN'; description?: string; data?: Record; }; /** @docsIgnore */ type CreateMultiServiceBookingApplicationErrors = { code?: 'VALIDATION_FAILURE'; description?: string; data?: Record; } | { code?: 'SCHEDULE_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'RESOURCE_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'EMPTY_FORM_INFO'; description?: string; data?: Record; } | { code?: 'FAILED_RESOLVING_CUSTOM_CHOICES'; description?: string; data?: Record; } | { code?: 'INVALID_CHOICES'; description?: string; data?: Record; } | { code?: 'SLOT_NOT_AVAILABLE'; description?: string; data?: Record; } | { code?: 'UNAUTHORIZED_OPERATION'; description?: string; data?: Record; } | { code?: 'CAN_NOT_SKIP_AVAILABILITY_VALIDATION_IF_RESOURCE_NOT_PROVIDED'; description?: string; data?: Record; }; /** @docsIgnore */ type RescheduleMultiServiceBookingApplicationErrors = { code?: 'MULTI_SERVICE_BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'REVISION_MISSING'; description?: string; data?: Record; } | { code?: 'NOT_ALL_BOOKINGS_WERE_SENT'; description?: string; data?: Record; } | { code?: 'DUPLICATE_BOOKING_INFO'; description?: string; data?: Record; } | { code?: 'SOME_BOOKINGS_UPDATES_FAILED'; description?: string; data?: Record; } | { code?: 'BOOKING_REVISION_MISMATCH'; description?: string; data?: Record; } | { code?: 'NO_OPEN_SPOTS'; description?: string; data?: Record; } | { code?: 'MULTI_SERVICE_BOOKING_INCLUDES_MULTIPLE_STAFF_MEMBERS'; description?: string; data?: Record; }; /** @docsIgnore */ type GetMultiServiceBookingAvailabilityApplicationErrors = { code?: 'MULTI_SERVICE_BOOKING_NOT_FOUND'; description?: string; data?: Record; }; /** @docsIgnore */ type CancelMultiServiceBookingApplicationErrors = { code?: 'MULTI_SERVICE_BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'ALL_BOOKINGS_ARE_ALREADY_DECLINED'; description?: string; data?: Record; } | { code?: 'ALL_BOOKINGS_ARE_ALREADY_CANCELED'; description?: string; data?: Record; } | { code?: 'MULTI_SERVICE_BOOKING_INCLUDES_MULTIPLE_STAFF_MEMBERS'; description?: string; data?: Record; }; /** @docsIgnore */ type MarkMultiServiceBookingAsPendingApplicationErrors = { code?: 'MULTI_SERVICE_BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'REVISION_MISSING'; description?: string; data?: Record; } | { code?: 'NOT_ALL_BOOKINGS_WERE_SENT'; description?: string; data?: Record; } | { code?: 'DUPLICATE_BOOKING_INFO'; description?: string; data?: Record; } | { code?: 'SOME_BOOKINGS_UPDATES_FAILED'; description?: string; data?: Record; } | { code?: 'BOOKING_REVISION_MISMATCH'; description?: string; data?: Record; } | { code?: 'NO_OPEN_SPOTS'; description?: string; data?: Record; } | { code?: 'MULTI_SERVICE_BOOKING_INCLUDES_MULTIPLE_STAFF_MEMBERS'; description?: string; data?: Record; }; /** @docsIgnore */ type ConfirmMultiServiceBookingApplicationErrors = { code?: 'MULTI_SERVICE_BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'REVISION_MISSING'; description?: string; data?: Record; } | { code?: 'INVALID_BOOKING_STATUS'; description?: string; data?: Record; } | { code?: 'ALL_BOOKINGS_ARE_ALREADY_CONFIRMED'; description?: string; data?: Record; } | { code?: 'NOT_ALL_BOOKINGS_WERE_SENT'; description?: string; data?: Record; } | { code?: 'DUPLICATE_BOOKING_INFO'; description?: string; data?: Record; } | { code?: 'SOME_BOOKINGS_UPDATES_FAILED'; description?: string; data?: Record; } | { code?: 'BOOKING_REVISION_MISMATCH'; description?: string; data?: Record; } | { code?: 'NO_OPEN_SPOTS'; description?: string; data?: Record; } | { code?: 'MULTI_SERVICE_BOOKING_INCLUDES_MULTIPLE_STAFF_MEMBERS'; description?: string; data?: Record; } | { code?: 'NOT_ALL_BOOKINGS_HAVE_START_AND_END_DATE'; description?: string; data?: Record; }; /** @docsIgnore */ type DeclineMultiServiceBookingApplicationErrors = { code?: 'MULTI_SERVICE_BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'REVISION_MISSING'; description?: string; data?: Record; } | { code?: 'INVALID_BOOKING_STATUS'; description?: string; data?: Record; } | { code?: 'ALL_BOOKINGS_ARE_ALREADY_DECLINED'; description?: string; data?: Record; } | { code?: 'NOT_ALL_BOOKINGS_WERE_SENT'; description?: string; data?: Record; } | { code?: 'DUPLICATE_BOOKING_INFO'; description?: string; data?: Record; } | { code?: 'SOME_BOOKINGS_UPDATES_FAILED'; description?: string; data?: Record; } | { code?: 'BOOKING_REVISION_MISMATCH'; description?: string; data?: Record; } | { code?: 'MULTI_SERVICE_BOOKING_INCLUDES_MULTIPLE_STAFF_MEMBERS'; description?: string; data?: Record; }; /** @docsIgnore */ type AddBookingsToMultiServiceBookingApplicationErrors = { code?: 'MULTI_SERVICE_BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'BOOKING_REVISION_MISMATCH'; description?: string; data?: Record; } | { code?: 'BOOKING_ALREADY_PART_OF_ANOTHER_MULTI_SERVICE_BOOKING'; description?: string; data?: Record; } | { code?: 'MULTI_SERVICE_BOOKING_ALREADY_INCLUDES_BOOKING'; description?: string; data?: Record; } | { code?: 'BOOKING_TO_ADD_STATUS_NOT_VALID'; description?: string; data?: Record; }; /** @docsIgnore */ type RemoveBookingsFromMultiServiceBookingApplicationErrors = { code?: 'MULTI_SERVICE_BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'BOOKING_REVISION_MISMATCH'; description?: string; data?: Record; }; /** @docsIgnore */ type CreateBookingApplicationErrors = { code?: 'SESSION_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'SCHEDULE_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'FAILED_RESOLVING_CUSTOM_CHOICES'; description?: string; data?: Record; } | { code?: 'INVALID_CHOICES'; description?: string; data?: Record; } | { code?: 'VALIDATION_FAILURE'; description?: string; data?: Record; } | { code?: 'SESSION_CAPACITY_EXCEEDED'; description?: string; data?: Record; } | { code?: 'SCHEDULE_CAPACITY_EXCEEDED'; description?: string; data?: Record; } | { code?: 'SLOT_NOT_AVAILABLE'; description?: string; data?: Record; } | { code?: 'FAILED_VALIDATING_AVAILABILITY'; description?: string; data?: Record; } | { code?: 'BOOKING_POLICY_VIOLATION'; description?: string; data?: Record; } | { code?: 'UNAUTHORIZED_OPERATION'; description?: string; data?: Record; } | { code?: 'INVALID_SERVICE_CHOICES'; description?: string; data?: Record; } | { code?: 'INVALID_FLOW_SELECTED_RESOURCES'; description?: string; data?: Record; } | { code?: 'CAN_NOT_CREATE_BOOKING_WITH_MULTI_SERVICE_BOOKING_INFO'; description?: string; data?: Record; } | { code?: 'CAN_NOT_SKIP_AVAILABILITY_VALIDATION_IF_RESOURCE_NOT_PROVIDED'; description?: string; data?: Record; } | { code?: 'INVALID_DATE_FORMAT'; description?: string; data?: Record; } | { code?: 'INVALID_TIME_ZONE'; description?: string; data?: Record; } | { code?: 'CONTACT_DETAILS_CONFLICT'; description?: string; data?: Record; }; /** @docsIgnore */ type BulkCreateBookingApplicationErrors = { code?: 'SESSION_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'SCHEDULE_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'RESOURCE_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'FAILED_RESOLVING_CUSTOM_CHOICES'; description?: string; data?: Record; } | { code?: 'INVALID_CHOICES'; description?: string; data?: Record; } | { code?: 'VALIDATION_FAILURE'; description?: string; data?: Record; } | { code?: 'SLOT_NOT_AVAILABLE'; description?: string; data?: Record; } | { code?: 'EMPTY_FORM_INFO'; description?: string; data?: Record; } | { code?: 'UNAUTHORIZED_OPERATION'; description?: string; data?: Record; } | { code?: 'CAN_NOT_SKIP_AVAILABILITY_VALIDATION_IF_RESOURCE_NOT_PROVIDED'; description?: string; data?: Record; }; /** @docsIgnore */ type RescheduleBookingApplicationErrors = { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'BOOKING_POLICY_VIOLATION'; description?: string; data?: Record; } | { code?: 'UNAUTHORIZED_OPERATION'; description?: string; data?: Record; } | { code?: 'SESSION_CAPACITY_EXCEEDED'; description?: string; data?: Record; } | { code?: 'SCHEDULE_CAPACITY_EXCEEDED'; description?: string; data?: Record; } | { code?: 'SLOT_NOT_AVAILABLE'; description?: string; data?: Record; } | { code?: 'VALIDATION_FAILURE'; description?: string; data?: Record; } | { code?: 'EMPTY_FORM_INFO'; description?: string; data?: Record; } | { code?: 'SESSION_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'SCHEDULE_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'RESOURCE_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'FAILED_VALIDATING_AVAILABILITY'; description?: string; data?: Record; } | { code?: 'FAILED_RESOLVING_SESSION'; description?: string; data?: Record; } | { code?: 'FAILED_RESOLVING_SCHEDULE'; description?: string; data?: Record; } | { code?: 'INVALID_SERVICE_CHOICES'; description?: string; data?: Record; } | { code?: 'NOT_ALLOWED_TO_UPDATE_BOOKING_IN_MULTI_SERVICE_BOOKING'; description?: string; data?: Record; } | { code?: 'ADD_ON_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'ADD_ON_CHANGES_NOT_ALLOWED'; description?: string; data?: Record; } | { code?: 'ADD_ON_GROUP_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'PRICE_CHANGE_NOT_ALLOWED'; description?: string; data?: Record; }; /** @docsIgnore */ type BookingsConfirmBookingApplicationErrors = { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'FAILED_CONFIRMING_NON_PENDING_BOOKING'; description?: string; data?: Record; } | { code?: 'INVALID_BOOKING_STATUS'; description?: string; data?: Record; } | { code?: 'NO_OPEN_SPOTS'; description?: string; data?: Record; }; /** @docsIgnore */ type SetBookingSubmissionIdApplicationErrors = { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; }; /** @docsIgnore */ type UpdateExtendedFieldsApplicationErrors = { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; }; /** @docsIgnore */ type BookingsDeclineBookingApplicationErrors = { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'FAILED_DECLINE_NON_PENDING_BOOKING'; description?: string; data?: Record; } | { code?: 'INVALID_BOOKING_STATUS'; description?: string; data?: Record; }; /** @docsIgnore */ type BookingsCancelBookingApplicationErrors = { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'BOOKING_POLICY_VIOLATION'; description?: string; data?: Record; } | { code?: 'VALIDATION_FAILURE'; description?: string; data?: Record; } | { code?: 'FEATURE_LIMIT_EXCEEDED'; description?: string; data?: Record; } | { code?: 'REFUND_NOT_ALLOWED'; description?: string; data?: Record; } | { code?: 'NOT_ALLOWED_TO_UPDATE_BOOKING_IN_MULTI_SERVICE_BOOKING'; description?: string; data?: Record; }; /** @docsIgnore */ type BookingsUpdateNumberOfParticipantsApplicationErrors = { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; }; /** @docsIgnore */ type MarkBookingAsPendingApplicationErrors = { code?: 'BOOKING_MARK_BOOKING_AS_PENDING'; description?: string; data?: Record; } | { code?: 'BOOKING_NOT_FOUND'; description?: string; data?: Record; } | { code?: 'NO_OPEN_SPOTS'; description?: string; data?: Record; } | { code?: 'NOT_PENDING_APPROVAL_SERVICE'; description?: string; data?: Record; }; type __PublicMethodMetaInfo = { getUrl: (context: any) => string; httpMethod: K; path: string; pathParams: M; __requestType: T; __originalRequestType: S; __responseType: Q; __originalResponseType: R; }; declare function confirmOrDeclineBooking(): __PublicMethodMetaInfo<'POST', { bookingId: string; }, ConfirmOrDeclineBookingRequest$1, ConfirmOrDeclineBookingRequest, ConfirmOrDeclineBookingResponse$1, ConfirmOrDeclineBookingResponse>; declare function bulkConfirmOrDeclineBooking(): __PublicMethodMetaInfo<'POST', {}, BulkConfirmOrDeclineBookingRequest$1, BulkConfirmOrDeclineBookingRequest, BulkConfirmOrDeclineBookingResponse$1, BulkConfirmOrDeclineBookingResponse>; declare function bookingsCancelBookingAnonymously(): __PublicMethodMetaInfo<'POST', { token: string; }, V1CancelBookingAnonymouslyRequest$1, V1CancelBookingAnonymouslyRequest, V1CancelBookingAnonymouslyResponse$1, V1CancelBookingAnonymouslyResponse>; declare function bookingsRescheduleBookingAnonymously(): __PublicMethodMetaInfo<'POST', { token: string; }, V1RescheduleBookingAnonymouslyRequest$1, V1RescheduleBookingAnonymouslyRequest, V1RescheduleBookingAnonymouslyResponse$1, V1RescheduleBookingAnonymouslyResponse>; declare function bookingsGetBookingAnonymously(): __PublicMethodMetaInfo<'GET', { token: string; }, V1GetBookingAnonymouslyRequest$1, V1GetBookingAnonymouslyRequest, V1GetBookingAnonymouslyResponse$1, V1GetBookingAnonymouslyResponse>; declare function getServiceAnonymously(): __PublicMethodMetaInfo<'GET', { token: string; }, GetServiceAnonymouslyRequest$1, GetServiceAnonymouslyRequest, GetServiceAnonymouslyResponse$1, GetServiceAnonymouslyResponse>; declare function getAnonymousActionToken(): __PublicMethodMetaInfo<'GET', { bookingId: string; }, GetAnonymousActionTokenRequest$1, GetAnonymousActionTokenRequest, GetAnonymousActionTokenResponse$1, GetAnonymousActionTokenResponse>; declare function createMultiServiceBooking(): __PublicMethodMetaInfo<'POST', {}, CreateMultiServiceBookingRequest$1, CreateMultiServiceBookingRequest, CreateMultiServiceBookingResponse$1, CreateMultiServiceBookingResponse>; declare function rescheduleMultiServiceBooking(): __PublicMethodMetaInfo<'POST', { multiServiceBookingId: string; }, RescheduleMultiServiceBookingRequest$1, RescheduleMultiServiceBookingRequest, RescheduleMultiServiceBookingResponse$1, RescheduleMultiServiceBookingResponse>; declare function getMultiServiceBookingAvailability(): __PublicMethodMetaInfo<'POST', { multiServiceBookingId: string; }, GetMultiServiceBookingAvailabilityRequest$1, GetMultiServiceBookingAvailabilityRequest, GetMultiServiceBookingAvailabilityResponse$1, GetMultiServiceBookingAvailabilityResponse>; declare function cancelMultiServiceBooking(): __PublicMethodMetaInfo<'POST', { multiServiceBookingId: string; }, CancelMultiServiceBookingRequest$1, CancelMultiServiceBookingRequest, CancelMultiServiceBookingResponse$1, CancelMultiServiceBookingResponse>; declare function markMultiServiceBookingAsPending(): __PublicMethodMetaInfo<'POST', { multiServiceBookingId: string; }, MarkMultiServiceBookingAsPendingRequest$1, MarkMultiServiceBookingAsPendingRequest, MarkMultiServiceBookingAsPendingResponse$1, MarkMultiServiceBookingAsPendingResponse>; declare function confirmMultiServiceBooking(): __PublicMethodMetaInfo<'POST', { multiServiceBookingId: string; }, ConfirmMultiServiceBookingRequest$1, ConfirmMultiServiceBookingRequest, ConfirmMultiServiceBookingResponse$1, ConfirmMultiServiceBookingResponse>; declare function declineMultiServiceBooking(): __PublicMethodMetaInfo<'POST', { multiServiceBookingId: string; }, DeclineMultiServiceBookingRequest$1, DeclineMultiServiceBookingRequest, DeclineMultiServiceBookingResponse$1, DeclineMultiServiceBookingResponse>; declare function bulkGetMultiServiceBookingAllowedActions(): __PublicMethodMetaInfo<'POST', {}, BulkGetMultiServiceBookingAllowedActionsRequest$1, BulkGetMultiServiceBookingAllowedActionsRequest, BulkGetMultiServiceBookingAllowedActionsResponse$1, BulkGetMultiServiceBookingAllowedActionsResponse>; declare function getMultiServiceBooking(): __PublicMethodMetaInfo<'GET', { multiServiceBookingId: string; }, GetMultiServiceBookingRequest$1, GetMultiServiceBookingRequest, GetMultiServiceBookingResponse$1, GetMultiServiceBookingResponse>; declare function addBookingsToMultiServiceBooking(): __PublicMethodMetaInfo<'POST', {}, AddBookingsToMultiServiceBookingRequest$1, AddBookingsToMultiServiceBookingRequest, AddBookingsToMultiServiceBookingResponse$1, AddBookingsToMultiServiceBookingResponse>; declare function removeBookingsFromMultiServiceBooking(): __PublicMethodMetaInfo<'POST', {}, RemoveBookingsFromMultiServiceBookingRequest$1, RemoveBookingsFromMultiServiceBookingRequest, RemoveBookingsFromMultiServiceBookingResponse$1, RemoveBookingsFromMultiServiceBookingResponse>; declare function createBooking(): __PublicMethodMetaInfo<'POST', {}, CreateBookingRequest$1, CreateBookingRequest, CreateBookingResponse$1, CreateBookingResponse>; declare function bulkCreateBooking(): __PublicMethodMetaInfo<'POST', {}, BulkCreateBookingRequest$1, BulkCreateBookingRequest, BulkCreateBookingResponse$1, BulkCreateBookingResponse>; declare function rescheduleBooking(): __PublicMethodMetaInfo<'POST', { bookingId: string; }, RescheduleBookingRequest$1, RescheduleBookingRequest, RescheduleBookingResponse$1, RescheduleBookingResponse>; declare function confirmBooking(): __PublicMethodMetaInfo<'POST', { bookingId: string; }, ConfirmBookingRequest$1, ConfirmBookingRequest, ConfirmBookingResponse$1, ConfirmBookingResponse>; declare function setBookingSubmissionId(): __PublicMethodMetaInfo<'POST', { bookingId: string; }, SetBookingSubmissionIdRequest$1, SetBookingSubmissionIdRequest, SetBookingSubmissionIdResponse$1, SetBookingSubmissionIdResponse>; declare function updateExtendedFields(): __PublicMethodMetaInfo<'POST', { id: string; }, UpdateExtendedFieldsRequest$1, UpdateExtendedFieldsRequest, UpdateExtendedFieldsResponse$1, UpdateExtendedFieldsResponse>; declare function declineBooking(): __PublicMethodMetaInfo<'POST', { bookingId: string; }, DeclineBookingRequest$1, DeclineBookingRequest, DeclineBookingResponse$1, DeclineBookingResponse>; declare function cancelBooking(): __PublicMethodMetaInfo<'POST', { bookingId: string; }, CancelBookingRequest$1, CancelBookingRequest, CancelBookingResponse$1, CancelBookingResponse>; declare function updateNumberOfParticipants(): __PublicMethodMetaInfo<'POST', { bookingId: string; }, UpdateNumberOfParticipantsRequest$1, UpdateNumberOfParticipantsRequest, UpdateNumberOfParticipantsResponse$1, UpdateNumberOfParticipantsResponse>; declare function bulkCalculateAllowedActions(): __PublicMethodMetaInfo<'POST', {}, BulkCalculateAllowedActionsRequest$1, BulkCalculateAllowedActionsRequest, BulkCalculateAllowedActionsResponse$1, BulkCalculateAllowedActionsResponse>; declare function markBookingAsPending(): __PublicMethodMetaInfo<'POST', { bookingId: string; }, MarkBookingAsPendingRequest$1, MarkBookingAsPendingRequest, MarkBookingAsPendingResponse$1, MarkBookingAsPendingResponse>; export { type AccountInfo as AccountInfoOriginal, type ActionEvent as ActionEventOriginal, Actor as ActorOriginal, type ActorWithLiterals as ActorWithLiteralsOriginal, type AddBookingsToMultiServiceBookingApplicationErrors as AddBookingsToMultiServiceBookingApplicationErrorsOriginal, type AddBookingsToMultiServiceBookingRequest as AddBookingsToMultiServiceBookingRequestOriginal, type AddBookingsToMultiServiceBookingResponse as AddBookingsToMultiServiceBookingResponseOriginal, type AddOnDetails as AddOnDetailsOriginal, type AddOnGroup as AddOnGroupOriginal, AddOnPaymentOptions as AddOnPaymentOptionsOriginal, type AddOnPaymentOptionsWithLiterals as AddOnPaymentOptionsWithLiteralsOriginal, 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 AggregationResultsScalarResult as AggregationResultsScalarResultOriginal, AggregationType as AggregationTypeOriginal, type AggregationTypeWithLiterals as AggregationTypeWithLiteralsOriginal, type AllowedActionsAnonymously as AllowedActionsAnonymouslyOriginal, type AllowedActions as AllowedActionsOriginal, type AllowedAnonymousActions as AllowedAnonymousActionsOriginal, type AnonymousBookingUrls as AnonymousBookingUrlsOriginal, type ApplicationError as ApplicationErrorOriginal, type AvailabilityConstraints as AvailabilityConstraintsOriginal, type AvailableResources as AvailableResourcesOriginal, type BookAfterStartPolicy as BookAfterStartPolicyOriginal, 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 BookingCanceled as BookingCanceledOriginal, type BookingChanged as BookingChangedOriginal, type BookingConfirmed as BookingConfirmedOriginal, type BookingDeclined as BookingDeclinedOriginal, type BookingDetails as BookingDetailsOriginal, type BookingFee as BookingFeeOriginal, BookingFeeStatus as BookingFeeStatusOriginal, type BookingFeeStatusWithLiterals as BookingFeeStatusWithLiteralsOriginal, type BookingFormFilled as BookingFormFilledOriginal, type BookingIdAndRevision as BookingIdAndRevisionOriginal, type BookingInfo as BookingInfoOriginal, type BookingMarkedAsPending as BookingMarkedAsPendingOriginal, type Booking as BookingOriginal, type BookingParticipantsInfoOneOf as BookingParticipantsInfoOneOfOriginal, type BookingPolicy as BookingPolicyOriginal, type BookingPolicySettings as BookingPolicySettingsOriginal, type BookingPolicyViolations as BookingPolicyViolationsOriginal, type BookingRescheduled as BookingRescheduledOriginal, type BookingRescheduledPreviousParticipantsInfoOneOf as BookingRescheduledPreviousParticipantsInfoOneOfOriginal, type BookingResult as BookingResultOriginal, type BookingSource as BookingSourceOriginal, BookingStatus as BookingStatusOriginal, type BookingStatusWithLiterals as BookingStatusWithLiteralsOriginal, type BookingsCancelBookingAnonymouslyApplicationErrors as BookingsCancelBookingAnonymouslyApplicationErrorsOriginal, type BookingsCancelBookingApplicationErrors as BookingsCancelBookingApplicationErrorsOriginal, type BookingsConfirmBookingApplicationErrors as BookingsConfirmBookingApplicationErrorsOriginal, type BookingsDeclineBookingApplicationErrors as BookingsDeclineBookingApplicationErrorsOriginal, type BookingsGetBookingAnonymouslyApplicationErrors as BookingsGetBookingAnonymouslyApplicationErrorsOriginal, type BookingsRescheduleBookingAnonymouslyApplicationErrors as BookingsRescheduleBookingAnonymouslyApplicationErrorsOriginal, type BookingsUpdateNumberOfParticipantsApplicationErrors as BookingsUpdateNumberOfParticipantsApplicationErrorsOriginal, type BulkActionMetadata as BulkActionMetadataOriginal, type BulkBookingResult as BulkBookingResultOriginal, type BulkCalculateAllowedActionsRequest as BulkCalculateAllowedActionsRequestOriginal, type BulkCalculateAllowedActionsResponse as BulkCalculateAllowedActionsResponseOriginal, type BulkCalculateAllowedActionsResult as BulkCalculateAllowedActionsResultOriginal, type BulkConfirmOrDeclineBookingApplicationErrors as BulkConfirmOrDeclineBookingApplicationErrorsOriginal, type BulkConfirmOrDeclineBookingRequestBookingDetails as BulkConfirmOrDeclineBookingRequestBookingDetailsOriginal, type BulkConfirmOrDeclineBookingRequest as BulkConfirmOrDeclineBookingRequestOriginal, type BulkConfirmOrDeclineBookingResponse as BulkConfirmOrDeclineBookingResponseOriginal, type BulkCreateBookingApplicationErrors as BulkCreateBookingApplicationErrorsOriginal, type BulkCreateBookingRequest as BulkCreateBookingRequestOriginal, type BulkCreateBookingResponse as BulkCreateBookingResponseOriginal, type BulkGetMultiServiceBookingAllowedActionsRequest as BulkGetMultiServiceBookingAllowedActionsRequestOriginal, type BulkGetMultiServiceBookingAllowedActionsResponse as BulkGetMultiServiceBookingAllowedActionsResponseOriginal, type BulkRescheduleBookingRequestBooking as BulkRescheduleBookingRequestBookingOriginal, type BulkRescheduleBookingRequest as BulkRescheduleBookingRequestOriginal, type BulkRescheduleBookingResponse as BulkRescheduleBookingResponseOriginal, type BulkUpdateBookedScheduleRequest as BulkUpdateBookedScheduleRequestOriginal, type BulkUpdateBookedScheduleResponse as BulkUpdateBookedScheduleResponseOriginal, type BulkUpdateBookingRequest as BulkUpdateBookingRequestOriginal, type BulkUpdateBookingResponse as BulkUpdateBookingResponseOriginal, type BusinessLocationOptions as BusinessLocationOptionsOriginal, type CancelBookingAnonymouslyRequest as CancelBookingAnonymouslyRequestOriginal, type CancelBookingAnonymouslyResponse as CancelBookingAnonymouslyResponseOriginal, type CancelBookingFlowControlSettings as CancelBookingFlowControlSettingsOriginal, type CancelBookingRequestFlowControlSettings as CancelBookingRequestFlowControlSettingsOriginal, type CancelBookingRequest as CancelBookingRequestOriginal, type CancelBookingResponse as CancelBookingResponseOriginal, type CancelMultiServiceBookingApplicationErrors as CancelMultiServiceBookingApplicationErrorsOriginal, type CancelMultiServiceBookingRequest as CancelMultiServiceBookingRequestOriginal, type CancelMultiServiceBookingResponse as CancelMultiServiceBookingResponseOriginal, type CancellationFee as CancellationFeeOriginal, type CancellationFeePolicy as CancellationFeePolicyOriginal, type CancellationPolicy as CancellationPolicyOriginal, type CancellationWindowFeeOneOf as CancellationWindowFeeOneOfOriginal, type CancellationWindow as CancellationWindowOriginal, type Category as CategoryOriginal, type Clash as ClashOriginal, type CommonAddressLocation as CommonAddressLocationOriginal, type CommonAddress as CommonAddressOriginal, type CommonAddressStreetOneOf as CommonAddressStreetOneOfOriginal, type CommonCursors as CommonCursorsOriginal, type CommonIdentificationDataIdOneOf as CommonIdentificationDataIdOneOfOriginal, type CommonIdentificationData as CommonIdentificationDataOriginal, type CommonMoney as CommonMoneyOriginal, type CommonStreetAddress as CommonStreetAddressOriginal, CompletionRequirement as CompletionRequirementOriginal, type CompletionRequirementWithLiterals as CompletionRequirementWithLiteralsOriginal, type Conferencing as ConferencingOriginal, type ConfirmBookingFlowControlSettings as ConfirmBookingFlowControlSettingsOriginal, type ConfirmBookingRequest as ConfirmBookingRequestOriginal, type ConfirmBookingResponse as ConfirmBookingResponseOriginal, type ConfirmMultiServiceBookingApplicationErrors as ConfirmMultiServiceBookingApplicationErrorsOriginal, type ConfirmMultiServiceBookingRequest as ConfirmMultiServiceBookingRequestOriginal, type ConfirmMultiServiceBookingResponse as ConfirmMultiServiceBookingResponseOriginal, type ConfirmOrDeclineBookingApplicationErrors as ConfirmOrDeclineBookingApplicationErrorsOriginal, type ConfirmOrDeclineBookingRequest as ConfirmOrDeclineBookingRequestOriginal, type ConfirmOrDeclineBookingResponse as ConfirmOrDeclineBookingResponseOriginal, type ConfirmRequest as ConfirmRequestOriginal, type ConfirmResponse as ConfirmResponseOriginal, type ConsistentQueryBookingsRequest as ConsistentQueryBookingsRequestOriginal, type ConsistentQueryBookingsResponse as ConsistentQueryBookingsResponseOriginal, type ContactDetails as ContactDetailsOriginal, type CountBookingsRequest as CountBookingsRequestOriginal, type CountBookingsResponse as CountBookingsResponseOriginal, type CreateBookingApplicationErrors as CreateBookingApplicationErrorsOriginal, type CreateBookingFlowControlSettings as CreateBookingFlowControlSettingsOriginal, type CreateBookingInfo as CreateBookingInfoOriginal, type CreateBookingRequestFlowControlSettings as CreateBookingRequestFlowControlSettingsOriginal, type CreateBookingRequest as CreateBookingRequestOriginal, type CreateBookingResponse as CreateBookingResponseOriginal, type CreateMultiServiceBookingApplicationErrors as CreateMultiServiceBookingApplicationErrorsOriginal, type CreateMultiServiceBookingRequest as CreateMultiServiceBookingRequestOriginal, type CreateMultiServiceBookingResponse as CreateMultiServiceBookingResponseOriginal, 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 CustomLocationOptions as CustomLocationOptionsOriginal, type CustomOptions as CustomOptionsOriginal, type CustomPayment as CustomPaymentOriginal, type DailyConfig as DailyConfigOriginal, type DateHistogramAggregation as DateHistogramAggregationOriginal, type DateHistogramResult as DateHistogramResultOriginal, type DateHistogramResults as DateHistogramResultsOriginal, type DeclineBookingFlowControlSettings as DeclineBookingFlowControlSettingsOriginal, type DeclineBookingRequest as DeclineBookingRequestOriginal, type DeclineBookingResponse as DeclineBookingResponseOriginal, type DeclineMultiServiceBookingApplicationErrors as DeclineMultiServiceBookingApplicationErrorsOriginal, type DeclineMultiServiceBookingRequest as DeclineMultiServiceBookingRequestOriginal, type DeclineMultiServiceBookingResponse as DeclineMultiServiceBookingResponseOriginal, type DiscountInfo as DiscountInfoOriginal, type DomainEventBodyOneOf as DomainEventBodyOneOfOriginal, type DomainEvent as DomainEventOriginal, type Duration as DurationOriginal, type DurationRangeConfigOneOf as DurationRangeConfigOneOfOriginal, type DurationRange as DurationRangeOriginal, type EntityCreatedEvent as EntityCreatedEventOriginal, type EntityDeletedEvent as EntityDeletedEventOriginal, type EntityUpdatedEvent as EntityUpdatedEventOriginal, type ExtendedFields as ExtendedFieldsOriginal, FirstChargeDateType as FirstChargeDateTypeOriginal, type FirstChargeDateTypeWithLiterals as FirstChargeDateTypeWithLiteralsOriginal, type FixedPayment as FixedPaymentOriginal, type FlowControlSettings as FlowControlSettingsOriginal, type Form as FormOriginal, type FormSettings as FormSettingsOriginal, FrequencyType as FrequencyTypeOriginal, type FrequencyTypeWithLiterals as FrequencyTypeWithLiteralsOriginal, type FullUpfrontPayment as FullUpfrontPaymentOriginal, type GetAnonymousActionDetailsRequest as GetAnonymousActionDetailsRequestOriginal, type GetAnonymousActionDetailsResponse as GetAnonymousActionDetailsResponseOriginal, type GetAnonymousActionTokenApplicationErrors as GetAnonymousActionTokenApplicationErrorsOriginal, type GetAnonymousActionTokenRequest as GetAnonymousActionTokenRequestOriginal, type GetAnonymousActionTokenResponse as GetAnonymousActionTokenResponseOriginal, type GetBookingAnonymouslyRequest as GetBookingAnonymouslyRequestOriginal, type GetBookingAnonymouslyResponse as GetBookingAnonymouslyResponseOriginal, type GetMultiServiceBookingAvailabilityApplicationErrors as GetMultiServiceBookingAvailabilityApplicationErrorsOriginal, type GetMultiServiceBookingAvailabilityRequest as GetMultiServiceBookingAvailabilityRequestOriginal, type GetMultiServiceBookingAvailabilityResponseBookingInfo as GetMultiServiceBookingAvailabilityResponseBookingInfoOriginal, type GetMultiServiceBookingAvailabilityResponse as GetMultiServiceBookingAvailabilityResponseOriginal, type GetMultiServiceBookingRequest as GetMultiServiceBookingRequestOriginal, type GetMultiServiceBookingResponse as GetMultiServiceBookingResponseOriginal, type GetScheduleAvailabilityRequest as GetScheduleAvailabilityRequestOriginal, type GetScheduleAvailabilityResponse as GetScheduleAvailabilityResponseOriginal, type GetSchedulingUrlRequest as GetSchedulingUrlRequestOriginal, type GetSchedulingUrlResponse as GetSchedulingUrlResponseOriginal, type GetServiceAnonymouslyApplicationErrors as GetServiceAnonymouslyApplicationErrorsOriginal, type GetServiceAnonymouslyRequest as GetServiceAnonymouslyRequestOriginal, type GetServiceAnonymouslyResponse as GetServiceAnonymouslyResponseOriginal, type GetSlotAvailabilityRequest as GetSlotAvailabilityRequestOriginal, type GetSlotAvailabilityResponse as GetSlotAvailabilityResponseOriginal, type GroupByAggregationKindOneOf as GroupByAggregationKindOneOfOriginal, type GroupByAggregation as GroupByAggregationOriginal, type GroupByValueResults as GroupByValueResultsOriginal, type HourlyConfig as HourlyConfigOriginal, type IdentificationDataIdOneOf as IdentificationDataIdOneOfOriginal, IdentificationDataIdentityType as IdentificationDataIdentityTypeOriginal, type IdentificationDataIdentityTypeWithLiterals as IdentificationDataIdentityTypeWithLiteralsOriginal, type IdentificationData as IdentificationDataOriginal, IdentityType as IdentityTypeOriginal, type IdentityTypeWithLiterals as IdentityTypeWithLiteralsOriginal, type Image as ImageOriginal, type IncludeMissingValuesOptions as IncludeMissingValuesOptionsOriginal, type IntakeFormPolicy as IntakeFormPolicyOriginal, Interval as IntervalOriginal, type IntervalWithLiterals as IntervalWithLiteralsOriginal, type ItemMetadata as ItemMetadataOriginal, type Keyword as KeywordOriginal, type LegacyCreateBookingRequest as LegacyCreateBookingRequestOriginal, type LegacyCreateBookingResponse as LegacyCreateBookingResponseOriginal, type LimitEarlyBookingPolicy as LimitEarlyBookingPolicyOriginal, type LimitLateBookingPolicy as LimitLateBookingPolicyOriginal, LocationLocationType as LocationLocationTypeOriginal, type LocationLocationTypeWithLiterals as LocationLocationTypeWithLiteralsOriginal, type Location as LocationOriginal, LocationTypeEnumLocationType as LocationTypeEnumLocationTypeOriginal, type LocationTypeEnumLocationTypeWithLiterals as LocationTypeEnumLocationTypeWithLiteralsOriginal, LocationType as LocationTypeOriginal, type LocationTypeWithLiterals as LocationTypeWithLiteralsOriginal, type MarkBookingAsPendingApplicationErrors as MarkBookingAsPendingApplicationErrorsOriginal, type MarkBookingAsPendingFlowControlSettings as MarkBookingAsPendingFlowControlSettingsOriginal, type MarkBookingAsPendingRequest as MarkBookingAsPendingRequestOriginal, type MarkBookingAsPendingResponse as MarkBookingAsPendingResponseOriginal, type MarkMultiServiceBookingAsPendingApplicationErrors as MarkMultiServiceBookingAsPendingApplicationErrorsOriginal, type MarkMultiServiceBookingAsPendingRequest as MarkMultiServiceBookingAsPendingRequestOriginal, type MarkMultiServiceBookingAsPendingResponse as MarkMultiServiceBookingAsPendingResponseOriginal, type MaskedBooking as MaskedBookingOriginal, type MediaItemItemOneOf as MediaItemItemOneOfOriginal, type MediaItem as MediaItemOriginal, type Media as MediaOriginal, type MessageEnvelope as MessageEnvelopeOriginal, type MigrationCheckIfClashesWithBlockedTimeRequest as MigrationCheckIfClashesWithBlockedTimeRequestOriginal, type MigrationCheckIfClashesWithBlockedTimeResponse as MigrationCheckIfClashesWithBlockedTimeResponseOriginal, MissingValues as MissingValuesOriginal, type MissingValuesWithLiterals as MissingValuesWithLiteralsOriginal, Mode as ModeOriginal, type ModeWithLiterals as ModeWithLiteralsOriginal, type Money as MoneyOriginal, type MsidAndBookingId as MsidAndBookingIdOriginal, type MultiServiceBookingInfo as MultiServiceBookingInfoOriginal, type MultiServiceBookingMetadata as MultiServiceBookingMetadataOriginal, type MultiServiceBooking as MultiServiceBookingOriginal, 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 NumberOfParticipantsUpdated as NumberOfParticipantsUpdatedOriginal, type NumberOfParticipantsUpdatedPreviousParticipantsInfoOneOf as NumberOfParticipantsUpdatedPreviousParticipantsInfoOneOfOriginal, type OnlineBooking as OnlineBookingOriginal, type PageUrlV2 as PageUrlV2Original, type PagingMetadataV2 as PagingMetadataV2Original, type Paging as PagingOriginal, type ParticipantChoices as ParticipantChoicesOriginal, type ParticipantNotification as ParticipantNotificationOriginal, type ParticipantsPolicy as ParticipantsPolicyOriginal, type PaymentOptions as PaymentOptionsOriginal, type Payment as PaymentOriginal, type PaymentRateOneOf as PaymentRateOneOfOriginal, PaymentStatus as PaymentStatusOriginal, type PaymentStatusWithLiterals as PaymentStatusWithLiteralsOriginal, type PhoneCall as PhoneCallOriginal, Platform as PlatformOriginal, type PlatformWithLiterals as PlatformWithLiteralsOriginal, type PolicyDescription as PolicyDescriptionOriginal, type PolicyDetails as PolicyDetailsOriginal, type QueryBookingsRequest as QueryBookingsRequestOriginal, type QueryBookingsResponse as QueryBookingsResponseOriginal, 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, type RankingOptions as RankingOptionsOriginal, RankingOrder as RankingOrderOriginal, type RankingOrderWithLiterals as RankingOrderWithLiteralsOriginal, RateType as RateTypeOriginal, type RateTypeWithLiterals as RateTypeWithLiteralsOriginal, type RemoveBookingsFromMultiServiceBookingApplicationErrors as RemoveBookingsFromMultiServiceBookingApplicationErrorsOriginal, type RemoveBookingsFromMultiServiceBookingRequest as RemoveBookingsFromMultiServiceBookingRequestOriginal, type RemoveBookingsFromMultiServiceBookingResponse as RemoveBookingsFromMultiServiceBookingResponseOriginal, RequestedFields as RequestedFieldsOriginal, type RequestedFieldsWithLiterals as RequestedFieldsWithLiteralsOriginal, type RescheduleBookingAnonymouslyRequest as RescheduleBookingAnonymouslyRequestOriginal, type RescheduleBookingAnonymouslyResponse as RescheduleBookingAnonymouslyResponseOriginal, type RescheduleBookingApplicationErrors as RescheduleBookingApplicationErrorsOriginal, type RescheduleBookingFlowControlSettings as RescheduleBookingFlowControlSettingsOriginal, type RescheduleBookingInfo as RescheduleBookingInfoOriginal, type RescheduleBookingInfoParticipantsInfoOneOf as RescheduleBookingInfoParticipantsInfoOneOfOriginal, type RescheduleBookingRequestFlowControlSettings as RescheduleBookingRequestFlowControlSettingsOriginal, type RescheduleBookingRequest as RescheduleBookingRequestOriginal, type RescheduleBookingRequestParticipantsInfoOneOf as RescheduleBookingRequestParticipantsInfoOneOfOriginal, type RescheduleBookingResponse as RescheduleBookingResponseOriginal, type RescheduleMultiServiceBookingApplicationErrors as RescheduleMultiServiceBookingApplicationErrorsOriginal, type RescheduleMultiServiceBookingRequest as RescheduleMultiServiceBookingRequestOriginal, type RescheduleMultiServiceBookingResponse as RescheduleMultiServiceBookingResponseOriginal, type ReschedulePolicy as ReschedulePolicyOriginal, type ResourceGroup as ResourceGroupOriginal, type ResourceIds as ResourceIdsOriginal, type ResourceSelection as ResourceSelectionOriginal, ResourceTransparency as ResourceTransparencyOriginal, type ResourceTransparencyWithLiterals as ResourceTransparencyWithLiteralsOriginal, type ResourceType as ResourceTypeOriginal, type ResourcesPolicy as ResourcesPolicyOriginal, type RestoreInfo as RestoreInfoOriginal, type Results as ResultsOriginal, type SaveCreditCardPolicy as SaveCreditCardPolicyOriginal, type ScalarAggregation as ScalarAggregationOriginal, type ScalarDateResult as ScalarDateResultOriginal, type ScalarResult as ScalarResultOriginal, ScalarType as ScalarTypeOriginal, type ScalarTypeWithLiterals as ScalarTypeWithLiteralsOriginal, type ScheduleAvailability as ScheduleAvailabilityOriginal, type Schedule as ScheduleOriginal, type SearchBookingsRequest as SearchBookingsRequestOriginal, type SearchBookingsResponse as SearchBookingsResponseOriginal, type SearchDetails as SearchDetailsOriginal, SelectedPaymentOption as SelectedPaymentOptionOriginal, type SelectedPaymentOptionWithLiterals as SelectedPaymentOptionWithLiteralsOriginal, SelectionMethod as SelectionMethodOriginal, type SelectionMethodWithLiterals as SelectionMethodWithLiteralsOriginal, type SeoSchema as SeoSchemaOriginal, type ServiceChoiceChoiceOneOf as ServiceChoiceChoiceOneOfOriginal, type ServiceChoice as ServiceChoiceOriginal, type ServiceChoices as ServiceChoicesOriginal, type Service as ServiceOriginal, type ServiceResource as ServiceResourceOriginal, type ServiceResourceSelectionOneOf as ServiceResourceSelectionOneOfOriginal, ServiceType as ServiceTypeOriginal, type ServiceTypeWithLiterals as ServiceTypeWithLiteralsOriginal, type ServicesV2PhoneCall as ServicesV2PhoneCallOriginal, type SetBookingSessionIdRequest as SetBookingSessionIdRequestOriginal, type SetBookingSessionIdResponse as SetBookingSessionIdResponseOriginal, type SetBookingSubmissionIdApplicationErrors as SetBookingSubmissionIdApplicationErrorsOriginal, type SetBookingSubmissionIdRequest as SetBookingSubmissionIdRequestOriginal, type SetBookingSubmissionIdResponse as SetBookingSubmissionIdResponseOriginal, type Settings as SettingsOriginal, type SlotAvailability as SlotAvailabilityOriginal, type SlotBookings as SlotBookingsOriginal, type SlotLocation as SlotLocationOriginal, type Slot as SlotOriginal, type SlotResource as SlotResourceOriginal, type SlotSlotResource as SlotSlotResourceOriginal, type Slug as SlugOriginal, SortDirection as SortDirectionOriginal, type SortDirectionWithLiterals as SortDirectionWithLiteralsOriginal, SortOrder as SortOrderOriginal, type SortOrderWithLiterals as SortOrderWithLiteralsOriginal, SortType as SortTypeOriginal, type SortTypeWithLiterals as SortTypeWithLiteralsOriginal, SortingMethodType as SortingMethodTypeOriginal, type SortingMethodTypeWithLiterals as SortingMethodTypeWithLiteralsOriginal, type Sorting as SortingOriginal, type StaffMediaItemItemOneOf as StaffMediaItemItemOneOfOriginal, type StaffMediaItem as StaffMediaItemOriginal, type StaffMemberDetails as StaffMemberDetailsOriginal, type StaffMember as StaffMemberOriginal, type StaffSortingPolicyOptionsOneOf as StaffSortingPolicyOptionsOneOfOriginal, type StaffSortingPolicy as StaffSortingPolicyOriginal, type StreetAddress as StreetAddressOriginal, type Subdivision as SubdivisionOriginal, type SubscriptionPayment as SubscriptionPaymentOriginal, type Tag as TagOriginal, type TaxableAddress as TaxableAddressOriginal, TaxableAddressType as TaxableAddressTypeOriginal, type TaxableAddressTypeWithLiterals as TaxableAddressTypeWithLiteralsOriginal, Timing as TimingOriginal, type TimingWithLiterals as TimingWithLiteralsOriginal, Trigger as TriggerOriginal, type TriggerWithLiterals as TriggerWithLiteralsOriginal, type URLs as URLsOriginal, UnitType as UnitTypeOriginal, type UnitTypeWithLiterals as UnitTypeWithLiteralsOriginal, type UpdateBookingRequest as UpdateBookingRequestOriginal, type UpdateBookingResponse as UpdateBookingResponseOriginal, type UpdateExtendedFieldsApplicationErrors as UpdateExtendedFieldsApplicationErrorsOriginal, type UpdateExtendedFieldsRequest as UpdateExtendedFieldsRequestOriginal, type UpdateExtendedFieldsResponse as UpdateExtendedFieldsResponseOriginal, type UpdateNumberOfParticipantsRequest as UpdateNumberOfParticipantsRequestOriginal, type UpdateNumberOfParticipantsRequestParticipantsInfoOneOf as UpdateNumberOfParticipantsRequestParticipantsInfoOneOfOriginal, type UpdateNumberOfParticipantsResponse as UpdateNumberOfParticipantsResponseOriginal, type V1AllowedAnonymousActions as V1AllowedAnonymousActionsOriginal, type V1CancelBookingAnonymouslyRequest as V1CancelBookingAnonymouslyRequestOriginal, type V1CancelBookingAnonymouslyResponse as V1CancelBookingAnonymouslyResponseOriginal, type V1GetBookingAnonymouslyRequest as V1GetBookingAnonymouslyRequestOriginal, type V1GetBookingAnonymouslyResponse as V1GetBookingAnonymouslyResponseOriginal, V1RequestedFields as V1RequestedFieldsOriginal, type V1RequestedFieldsWithLiterals as V1RequestedFieldsWithLiteralsOriginal, type V1RescheduleBookingAnonymouslyRequest as V1RescheduleBookingAnonymouslyRequestOriginal, type V1RescheduleBookingAnonymouslyResponse as V1RescheduleBookingAnonymouslyResponseOriginal, type V2CancelBookingRequest as V2CancelBookingRequestOriginal, type V2CancelBookingResponse as V2CancelBookingResponseOriginal, type V2ConfirmBookingRequest as V2ConfirmBookingRequestOriginal, type V2ConfirmBookingResponse as V2ConfirmBookingResponseOriginal, type V2CreateBookingRequestBookableItemOneOf as V2CreateBookingRequestBookableItemOneOfOriginal, type V2CreateBookingRequest as V2CreateBookingRequestOriginal, type V2CreateBookingRequestParticipantsInfoOneOf as V2CreateBookingRequestParticipantsInfoOneOfOriginal, type V2CreateBookingResponse as V2CreateBookingResponseOriginal, type V2DeclineBookingRequest as V2DeclineBookingRequestOriginal, type V2DeclineBookingResponse as V2DeclineBookingResponseOriginal, type V2Duration as V2DurationOriginal, type V2LocationOptionsOneOf as V2LocationOptionsOneOfOriginal, type V2Location as V2LocationOriginal, type V2PhoneCall as V2PhoneCallOriginal, type V2RescheduleBookingRequest as V2RescheduleBookingRequestOriginal, type V2RescheduleBookingRequestParticipantsInfoOneOf as V2RescheduleBookingRequestParticipantsInfoOneOfOriginal, type V2RescheduleBookingResponse as V2RescheduleBookingResponseOriginal, type V2Slot as V2SlotOriginal, type V2UpdateNumberOfParticipantsRequest as V2UpdateNumberOfParticipantsRequestOriginal, type V2UpdateNumberOfParticipantsRequestParticipantsInfoOneOf as V2UpdateNumberOfParticipantsRequestParticipantsInfoOneOfOriginal, type V2UpdateNumberOfParticipantsResponse as V2UpdateNumberOfParticipantsResponseOriginal, 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 VariedPayment as VariedPaymentOriginal, type WaitingList as WaitingListOriginal, type WaitlistPolicy as WaitlistPolicyOriginal, WebhookIdentityType as WebhookIdentityTypeOriginal, type WebhookIdentityTypeWithLiterals as WebhookIdentityTypeWithLiteralsOriginal, type WebhooksIdentificationDataIdOneOf as WebhooksIdentificationDataIdOneOfOriginal, type WebhooksIdentificationData as WebhooksIdentificationDataOriginal, type __PublicMethodMetaInfo, addBookingsToMultiServiceBooking, bookingsCancelBookingAnonymously, bookingsGetBookingAnonymously, bookingsRescheduleBookingAnonymously, bulkCalculateAllowedActions, bulkConfirmOrDeclineBooking, bulkCreateBooking, bulkGetMultiServiceBookingAllowedActions, cancelBooking, cancelMultiServiceBooking, confirmBooking, confirmMultiServiceBooking, confirmOrDeclineBooking, createBooking, createMultiServiceBooking, declineBooking, declineMultiServiceBooking, getAnonymousActionToken, getMultiServiceBooking, getMultiServiceBookingAvailability, getServiceAnonymously, markBookingAsPending, markMultiServiceBookingAsPending, removeBookingsFromMultiServiceBooking, rescheduleBooking, rescheduleMultiServiceBooking, setBookingSubmissionId, updateExtendedFields, updateNumberOfParticipants };