import { cA as CreateServiceRequest$1, cB as CreateServiceResponse$1, cF as BulkCreateServicesRequest$1, a as BulkCreateServicesResponse$1, cK as GetServiceRequest$1, cL as GetServiceResponse$1, cQ as UpdateServiceRequest$1, cR as UpdateServiceResponse$1, cS as BulkUpdateServicesRequest$1, d as BulkUpdateServicesResponse$1, cU as BulkUpdateServicesByFilterRequest$1, f as BulkUpdateServicesByFilterResponse$1, cV as DeleteServiceRequest$1, cX as DeleteServiceResponse$1, cY as BulkDeleteServicesRequest$1, h as BulkDeleteServicesResponse$1, cZ as BulkDeleteServicesByFilterRequest$1, j as BulkDeleteServicesByFilterResponse$1, c_ as QueryServicesRequest$1, d4 as QueryServicesResponse$1, d7 as SearchServicesRequest$1, l as SearchServicesResponse$1, dO as QueryPoliciesRequest$1, Q as QueryPoliciesResponse$1, dR as QueryBookingFormsRequest$1, o as QueryBookingFormsResponse$1, dV as CountServicesRequest$1, r as CountServicesResponse$1, dW as QueryLocationsRequest$1, t as QueryLocationsResponse$1, d$ as QueryCategoriesRequest$1, v as QueryCategoriesResponse$1, e3 as SetServiceLocationsRequest$1, x as SetServiceLocationsResponse$1, e7 as EnablePricingPlansForServiceRequest$1, E as EnablePricingPlansForServiceResponse$1, ea as DisablePricingPlansForServiceRequest$1, A as DisablePricingPlansForServiceResponse$1, eb as SetCustomSlugRequest$1, H as SetCustomSlugResponse$1, ec as ValidateSlugRequest$1, K as ValidateSlugResponse$1, ed as CloneServiceRequest$1, L as CloneServiceResponse$1, eL as CreateAddOnGroupRequest$1, O as CreateAddOnGroupResponse$1, eM as DeleteAddOnGroupRequest$1, eN as DeleteAddOnGroupResponse$1, eO as UpdateAddOnGroupRequest$1, W as UpdateAddOnGroupResponse$1, eP as ListAddOnGroupsByServiceIdRequest$1, Z as ListAddOnGroupsByServiceIdResponse$1, eT as SetAddOnsForGroupRequest$1, $ as SetAddOnsForGroupResponse$1 } from './bookings-services-v2-service-services.universal-BvAL2_h8.js'; import '@wix/sdk-types'; /** 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?: V2Category; /** 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) that are 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 resources IDs, not the staff member IDs. * Available only for appointment-based services. * @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 V2Category { /** * 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?: Money; /** * The deposit price required to book the service. * * Required when: `rateType` is `FIXED` and `paymentOptions.deposit` is `true` */ deposit?: Money; /** * 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 Money { /** * 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?: Money; /** * The deposit price required to book the service. * * Required when: `rateType` is `VARIED` and `paymentOptions.deposit` is `true` */ deposit?: Money; /** * The minimal price a customer may pay for this service, based on its variants. * @readonly */ minPrice?: Money; /** * The maximum price a customer may pay for this service, based on its variants. * @readonly */ maxPrice?: Money; /** * 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?: Money; /** 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?: Money; /** 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?: Money; } 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?: Money; /** * 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?: Money; /** * 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; } 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. * @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; } 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>; } /** * 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 V2PhoneCall { /** Whether the service is delivered via phone call. */ enabled?: boolean | null; } interface SetCustomSlugEvent { /** The main slug for the service after the update */ mainSlug?: Slug; } interface ServicesUrlsChanged { } interface DummyRequest { } interface DummyResponse { /** Service. */ service?: Service; /** Booking. */ booking?: Booking; } /** 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 PhoneCall { /** Whether the service is delivered via phone call. */ enabled?: boolean | null; } interface ResourceSelection { /** * ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction). * @format GUID */ resourceTypeId?: string | null; /** Information about how the customer has selected the resource for this resource type. */ selectionMethod?: SelectionMethodWithLiterals; } 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 IdentityType { UNKNOWN = "UNKNOWN", ANONYMOUS_VISITOR = "ANONYMOUS_VISITOR", MEMBER = "MEMBER", WIX_USER = "WIX_USER", APP = "APP" } /** @enumType */ type IdentityTypeWithLiterals = IdentityType | 'UNKNOWN' | 'ANONYMOUS_VISITOR' | 'MEMBER' | 'WIX_USER' | 'APP'; /** * Settings that control booking flow behavior and override default business rules. * * These settings allow administrators to bypass standard validation checks * and policies when creating, confirming, rescheduling, or canceling bookings. * Most settings require elevated permissions to use. * * Use flow control settings to handle special scenarios like: * - Emergency bookings outside normal business hours * - Admin-initiated bookings that bypass availability checks * - Custom payment flows that don't use standard eCommerce checkout * - Overriding cancellation or rescheduling policies in exceptional cases */ interface FlowControlSettings { /** 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 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 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?: IdentificationData; /** Stringify payload. */ data?: string; /** Details related to the account */ accountInfo?: AccountInfo; } 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; /** @readonly */ identityType?: WebhookIdentityTypeWithLiterals; } /** @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 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 CreateServiceRequest { /** Service to create. */ service: Service; } interface CreateServiceResponse { /** Created service. */ service?: Service; } interface ValidateServiceRequest { /** Service to validate. */ service?: Service; } interface ValidateServiceResponse { /** Whether the service is valid. */ valid?: boolean; /** Field violations. */ fieldViolations?: FieldViolation[]; } interface FieldViolation { /** * Path to the invalid field. * @maxLength 2000 */ fieldName?: string; /** * Description of the error. * @maxLength 2000 */ description?: string; /** * Rule name of the violation * @maxLength 2000 */ ruleName?: string; } interface BulkCreateServicesRequest { /** * Services to create. * @maxSize 100 */ services: Service[]; /** Whether to return the created service objects. */ returnEntity?: boolean; } interface BulkCreateServicesResponse { /** The result of each service creation. */ results?: BulkServiceResult[]; /** Create statistics. */ bulkActionMetadata?: BulkActionMetadata; } interface BulkServiceResult { /** Update metadata. */ itemMetadata?: ItemMetadata; /** Updated service. */ item?: Service; } interface ItemMetadata { /** * Item ID. Should always be available, unless it's impossible (for example, when failing to create an item). * @format GUID */ 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; } interface GetServiceRequest { /** * ID of the service to retrieve. * @format GUID */ serviceId: string; } declare enum V2RequestedFields { /** 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 V2RequestedFieldsWithLiterals = V2RequestedFields | 'STAFF_MEMBER_DETAILS' | 'RESOURCE_TYPE_DETAILS' | 'DISCOUNT_INFO_DETAILS'; interface GetServiceResponse { /** Retrieved service. */ service?: Service; } interface GetServiceAvailabilityConstraintsRequest { /** * ID of the service to retrieve. * @format GUID */ serviceId?: string; } interface GetServiceAvailabilityConstraintsResponse { /** The retrieved availability constraints of the service. */ constraints?: ServiceAvailabilityConstraints; } interface ServiceAvailabilityConstraints { /** * The booking policy. * @readonly */ bookingPolicy?: BookingPolicy; /** * The service schedule, including the schedule ID and availability constraints. * @readonly */ schedule?: Schedule; /** * The locations this service is offered at. * Only multiple locations of type `BUSINESS` are supported. Multiple locations of type `CUSTOM` or `CUSTOMER` are not supported. * For courses only: Currently, only one location is supported for all location types. * Use the `Set Service Locations` method to change the locations this service is offered at. * @readonly * @maxSize 100 */ locations?: V2Location[]; /** * Resource groups required to book the service. For backward compatibility only. Use `Service Resources` instead. * @maxSize 3 * @readonly * @deprecated Resource groups required to book the service. For backward compatibility only. Use `Service Resources` instead. * @replacedBy service_resources * @targetRemovalDate 2024-08-19 */ resourceGroups?: ResourceGroup[]; /** * Resource groups required to book the service. * @maxSize 3 * @readonly */ serviceResources?: ServiceResource[]; /** * The time between available slots' start times. * For example, for 5-minute slots: 3:00, 3:05, 3:10 etc. For 1-hour slots: 3:00, 4:00, 5:00 etc. * Applied to all schedules of the site. * For appointments only. * @readonly */ slotsSplitInterval?: SplitInterval; /** * Online booking settings. * @readonly */ onlineBooking?: OnlineBooking; } /** The time between available slots' start times. For example, For 5 minute slots, 3:00, 3:05, 3:15 etc. For 1 hour slots, 3:00, 4:00, 5:00 etc. */ interface SplitInterval { /** * Whether the slot duration is used as the split interval value. * If `same_as_duration` is `true`, the `value_in_minutes` is the sum of the first duration in * `schedule.availabilityConstraints.SlotDurations` field, and `schedule.availabilityConstraints.TimeBetweenSlots` field. */ sameAsDuration?: boolean | null; /** Number of minutes between available slots' start times when `same_as_duration` is `false`. */ valueInMinutes?: number | null; } interface UpdateServiceRequest { /** Service to update. */ service: Service; } interface UpdateServiceResponse { /** Updated service. */ service?: Service; } interface BulkUpdateServicesRequest { /** * Services to update. * @maxSize 100 */ services?: MaskedService[]; /** Whether to include the updated services in the response. Default: `false` */ returnEntity?: boolean; } interface MaskedService { /** Service to update. */ service?: Service; /** Explicit list of fields to update. */ mask?: string[]; } interface BulkUpdateServicesResponse { /** The result of each service update. */ results?: BulkServiceResult[]; /** Update statistics. */ bulkActionMetadata?: BulkActionMetadata; } interface BulkUpdateServicesByFilterRequest { /** Filter to identify the services to update. */ filter: Record | null; /** Service to update. */ service: Service; } interface BulkUpdateServicesByFilterResponse { /** * ID of the service update job. * * Pass this ID to [Get Async Job](https://dev.wix.com/docs/rest/business-management/async-job/introduction) to retrieve job details and metadata. * @format GUID */ jobId?: string; } interface DeleteServiceRequest { /** * ID of the service to delete. * @format GUID */ serviceId: string; /** * Whether to preserve future sessions with participants. * * Default: `false` */ preserveFutureSessionsWithParticipants?: boolean; /** * Whether to notify participants about the change and an optional * custom message. */ participantNotification?: V2ParticipantNotification; } interface V2ParticipantNotification { /** * Whether to send a message about the changes to the customer. * * Default: `false` */ notifyParticipants?: boolean | null; /** * Custom message to send to the participants about the changes to the booking. * @maxLength 2000 */ message?: string | null; } interface DeleteServiceResponse { } interface BulkDeleteServicesRequest { /** * IDs of the services to delete. * @format GUID * @maxSize 100 */ ids: string[]; /** * Whether to preserve future sessions with participants. * * Default: `false`. */ preserveFutureSessionsWithParticipants?: boolean; /** * Whether to notify participants about the change and an optional * custom message. */ participantNotification?: V2ParticipantNotification; } interface BulkDeleteServicesResponse { /** The result of each service removal. */ results?: BulkServiceResult[]; /** Delete statistics. */ bulkActionMetadata?: BulkActionMetadata; } interface BulkDeleteServicesByFilterRequest { /** Filter to identify the services that need to be deleted. */ filter: Record | null; /** * Whether to preserve future sessions with participants. * * Default: `false`. */ preserveFutureSessionsWithParticipants?: boolean; /** Whether to notify participants about the change and an optional custom message. */ participantNotification?: V2ParticipantNotification; } interface BulkDeleteServicesByFilterResponse { /** * ID of the service deletion job. * * Pass this ID to [Get Async Job](https://dev.wix.com/docs/rest/business-management/async-job/introduction) to retrieve job details and metadata. * @format GUID */ jobId?: string; } interface QueryServicesRequest { /** WQL expression. */ query: QueryV2; } interface QueryV2 extends QueryV2PagingMethodOneOf { /** Paging options to limit and skip the number of items. */ paging?: Paging; /** * 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` * * Read more about [supported fields and operators](https://dev.wix.com/api/rest/wix-bookings/services-v2/filtering-and-sorting). */ filter?: Record | null; /** * Sort object in the following format: * `[ {"fieldName":"sortField1","order":"ASC"}, * {"fieldName":"sortField2","order":"DESC"} ]` * * Read more about [sorting](https://dev.wix.com/api/rest/wix-bookings/services-v2/filtering-and-sorting#wix-bookings_services-v2_filtering-and-sorting_sorting). * @maxSize 50 */ sort?: Sorting[]; } /** @oneof */ interface QueryV2PagingMethodOneOf { /** Paging options to limit and skip the number of items. */ paging?: Paging; } 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 { /** * Number of items to load. * @max 100 */ limit?: number | null; /** * Pointer to the next or previous page in the list of results. * * You can get 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 QueryServicesResponse { /** The retrieved services. */ services?: Service[]; /** Paging metadata, including offset and count. */ pagingMetadata?: PagingMetadataV2; } interface PagingMetadataV2 { /** Number of items returned in the response. */ count?: number | null; /** Offset that was requested. */ offset?: number | null; /** Total number of items that match the query. Returned if offset paging is used and the `tooManyToCount` flag is not set. */ total?: number | null; /** Flag that indicates the server failed to calculate the `total` field. */ tooManyToCount?: boolean | null; /** Cursors to navigate through the result pages using `next` and `prev`. Returned if cursor paging is used. */ cursors?: Cursors; } interface Cursors { /** * Cursor token for retrieving the next page of results. * * Use this token in subsequent requests to continue pagination forward. * Value is `null` when on the last page of results. * @maxLength 16000 */ next?: string | null; /** * Cursor token for retrieving the previous page of results. * * Use this token to navigate backwards through result pages. * Value is `null` when on the first page of results. * @maxLength 16000 */ prev?: string | null; } interface SearchServicesRequest { /** Search criteria including filter, sort, aggregations, and paging options. */ search: CursorSearch; } interface CursorSearch extends CursorSearchPagingMethodOneOf { /** * Cursor-based paging for result navigation. When requesting `cursor_paging.cursor`, * `filter`, `sort`, or `search` can't be specified. */ cursorPaging?: CursorPaging; /** * Filter object for narrowing search results. For example, to return only services with specific payment options: `"filter": {"payment.options.online": true, "payment.options.in_person": false}`. * * Learn more about the filter format in the [supported filters article](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/filtering-and-sorting). */ filter?: Record | null; /** * Array of sort objects specifying result order. For example, to sort by creation date in descending order: `"sort": [{"fieldName": "createdDate", "order": "DESC"}]`. * * Learn more about the sort format in the [supported filters article](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/filtering-and-sorting). * @maxSize 10 */ sort?: Sorting[]; /** * Aggregations for grouping data into categories (facets) and providing summaries for each category. * For example, use aggregations to categorize search results by service type, payment options, or locations. * @maxSize 10 */ aggregations?: Aggregation[]; /** Free text to match in searchable fields. */ search?: SearchDetails; /** * Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database) or [ISO 8601 UTC offset format](https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC) for adjusting time fields in the specified filters and returned aggregation data. For example, `America/New_York`, `UTC`, or `+02:00`. * * Default: Time zone specified in the business [site properties](https://dev.wix.com/docs/rest/business-management/site-properties/properties/get-site-properties). * @maxLength 50 */ timeZone?: string | null; } /** @oneof */ interface CursorSearchPagingMethodOneOf { /** * Cursor-based paging for result navigation. When requesting `cursor_paging.cursor`, * `filter`, `sort`, or `search` can't be specified. */ cursorPaging?: CursorPaging; } interface Aggregation extends AggregationKindOneOf { /** Value aggregation configuration. */ value?: ValueAggregation; /** Range aggregation configuration. */ range?: RangeAggregation; /** Scalar aggregation configuration. */ scalar?: ScalarAggregation; /** Date histogram aggregation configuration. */ dateHistogram?: DateHistogramAggregation; /** Nested aggregation configuration. */ nested?: NestedAggregation; /** * User-defined name of aggregation. Must be unique and will appear in aggregation results. * @maxLength 100 */ name?: string | null; /** Type of aggregation. Client must specify matching aggregation field below. */ type?: AggregationTypeWithLiterals; /** * Path to the field to aggregate by in dot notation. For example `name` or `paymentOptions.online`. * @maxLength 200 */ fieldPath?: string; /** * Deprecated, use `nested` instead. * @deprecated Deprecated, use `nested` instead. * @replacedBy kind.nested * @targetRemovalDate 2025-01-01 */ groupBy?: GroupByAggregation; } /** @oneof */ interface AggregationKindOneOf { /** Value aggregation configuration. */ value?: ValueAggregation; /** Range aggregation configuration. */ range?: RangeAggregation; /** Scalar aggregation configuration. */ scalar?: ScalarAggregation; /** Date histogram aggregation configuration. */ dateHistogram?: DateHistogramAggregation; /** Nested aggregation configuration. */ nested?: NestedAggregation; } interface RangeBucket { /** Inclusive lower bound of the range. Required if `to` isn't specified. */ from?: number | null; /** Exclusive upper bound of the range. Required if `from` isn't specified. */ 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 { /** * Custom bucket name for missing values. * * Default values: * - string: `N/A` * - int: `0` * - bool: `false` * @maxLength 20 */ addToBucket?: string; } declare enum ScalarType { /** Total number of distinct values. */ COUNT_DISTINCT = "COUNT_DISTINCT", /** Minimum value. */ MIN = "MIN", /** Maximum value. */ MAX = "MAX" } /** @enumType */ type ScalarTypeWithLiterals = ScalarType | 'COUNT_DISTINCT' | 'MIN' | 'MAX'; interface ValueAggregation extends ValueAggregationOptionsOneOf { /** Options for including missing values in the aggregation results. */ includeOptions?: IncludeMissingValuesOptions; /** Whether to sort by number of matches or value of the field. */ sortType?: SortTypeWithLiterals; /** Whether to sort in ascending or descending order. */ sortDirection?: SortDirectionWithLiterals; /** * Number of aggregations to return. * * Min: `1` * Max: `250` * Default: `10` */ limit?: number | null; /** * Whether missing values should be included or excluded from the aggregation results. * * Default: `EXCLUDE` */ missingValues?: MissingValuesWithLiterals; } /** @oneof */ interface ValueAggregationOptionsOneOf { /** Options for including missing values in the aggregation results. */ includeOptions?: IncludeMissingValuesOptions; } declare enum NestedAggregationType { /** Calculates the distribution of a specific field's values within a dataset, providing insights into the overall distribution and key statistics of those values. */ VALUE = "VALUE", /** Calculates the count of the values from the specified field in the dataset that fall within the range of each bucket you define. */ RANGE = "RANGE", /** Calculates a single numerical value from a dataset, summarizing the dataset into 1 key metric: `COUNT_DISTINCT`, `SUM`, `AVG`, `MIN`, or `MAX`. */ SCALAR = "SCALAR", /** Calculates the count of time values from the specified field in the dataset that fall within each time interval you define (hour, day, week, etc.). */ DATE_HISTOGRAM = "DATE_HISTOGRAM" } /** @enumType */ type NestedAggregationTypeWithLiterals = NestedAggregationType | 'VALUE' | 'RANGE' | 'SCALAR' | 'DATE_HISTOGRAM'; interface RangeAggregation { /** * List of range buckets defining the ranges for aggregation. During aggregation, each entity is placed in the first bucket where its value falls within the specified range bounds. * @maxSize 50 */ buckets?: RangeBucket[]; } interface ScalarAggregation { /** Operator for the scalar aggregation, for example `COUNT_DISTINCT`, `MIN`, `MAX`. */ type?: ScalarTypeWithLiterals; } interface DateHistogramAggregation { /** Time interval for date histogram aggregation, for example `DAY`, `HOUR`, `MONTH`. */ interval?: IntervalWithLiterals; } declare enum Interval { /** Yearly interval. */ YEAR = "YEAR", /** Monthly interval. */ MONTH = "MONTH", /** Weekly interval. */ WEEK = "WEEK", /** Daily interval. */ DAY = "DAY", /** Hourly interval. */ HOUR = "HOUR", /** Minute interval. */ MINUTE = "MINUTE", /** Second interval. */ SECOND = "SECOND" } /** @enumType */ type IntervalWithLiterals = Interval | 'YEAR' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND'; interface NestedAggregationItem extends NestedAggregationItemKindOneOf { /** Value aggregation configuration. Calculates the distribution of field values within the dataset. */ value?: ValueAggregation; /** Range aggregation configuration. Calculates counts within user-defined value ranges. */ range?: RangeAggregation; /** Scalar aggregation configuration. Calculates single numerical metrics like count, min, max, sum, or average. */ scalar?: ScalarAggregation; /** Date histogram aggregation configuration. Calculates counts within time intervals. */ dateHistogram?: DateHistogramAggregation; /** * User-defined name of aggregation. Must be unique and will appear in aggregation results. * @maxLength 100 */ name?: string | null; /** Type of aggregation. Client must specify matching aggregation field below. */ type?: NestedAggregationTypeWithLiterals; /** * Path to the field to aggregate by in dot notation. For example `name` or `paymentOptions.online`. * @maxLength 200 */ fieldPath?: string; } /** @oneof */ interface NestedAggregationItemKindOneOf { /** Value aggregation configuration. Calculates the distribution of field values within the dataset. */ value?: ValueAggregation; /** Range aggregation configuration. Calculates counts within user-defined value ranges. */ range?: RangeAggregation; /** Scalar aggregation configuration. Calculates single numerical metrics like count, min, max, sum, or average. */ scalar?: ScalarAggregation; /** Date histogram aggregation configuration. Calculates counts within time intervals. */ dateHistogram?: DateHistogramAggregation; } declare enum AggregationType { /** Calculates the distribution of a specific field's values within a dataset, providing insights into the overall distribution and key statistics of those values. */ VALUE = "VALUE", /** Calculates the count of the values from the specified field in the dataset that fall within the range of each bucket you define. */ RANGE = "RANGE", /** Calculates a single numerical value from a dataset, summarizing the dataset into 1 key metric: `COUNT_DISTINCT`, `SUM`, `AVG`, `MIN`, or `MAX`. */ SCALAR = "SCALAR", /** Calculates the count of time values from the specified field in the dataset that fall within each time interval you define (hour, day, week, etc.). */ DATE_HISTOGRAM = "DATE_HISTOGRAM", /** Flattened list of aggregations, where each aggregation is nested within previous 1. */ NESTED = "NESTED" } /** @enumType */ type AggregationTypeWithLiterals = AggregationType | 'VALUE' | 'RANGE' | 'SCALAR' | 'DATE_HISTOGRAM' | 'NESTED'; /** Nested aggregation for multi-level faceted search. Allows exploring large amounts of data through multiple levels of categorization, where each subsequent aggregation is nested within the previous aggregation to create hierarchical data summaries. */ interface NestedAggregation { /** * Flattened list of aggregations where each next aggregation is nested within the previous 1. * @minSize 2 * @maxSize 10 */ nestedAggregations?: NestedAggregationItem[]; } interface GroupByAggregation extends GroupByAggregationKindOneOf { /** Value aggregation configuration. */ value?: ValueAggregation; /** * User-defined name of aggregation. Must be unique and will appear in aggregation results. * @maxLength 100 */ name?: string | null; /** * Path to the field to aggregate by in dot notation. For example `name` or `paymentOptions.online`. * @maxLength 200 */ fieldPath?: string; } /** @oneof */ interface GroupByAggregationKindOneOf { /** Value aggregation configuration. */ value?: ValueAggregation; } interface SearchDetails { /** Search mode. Defines the search logic for combining multiple terms in the `expression`. */ mode?: ModeWithLiterals; /** * Search term or expression. * @maxLength 200 */ expression?: string | null; /** * Fields to search in. If the array is empty, all searchable fields are searched. Use dot notation to specify a JSON path. For example, `order.address.streetName`. * @maxSize 10 * @maxLength 200 */ fields?: string[]; /** Whether to enable the search function to use an algorithm to automatically find results that are close to the search expression, such as typos and declensions. */ fuzzy?: boolean; } declare enum Mode { /** At least 1 of the search terms must be present. */ OR = "OR", /** All search terms must be present. */ AND = "AND" } /** @enumType */ type ModeWithLiterals = Mode | 'OR' | 'AND'; interface SearchServicesResponse { /** * Retrieved services that match the search criteria specified in the request. * * Each service includes all standard service information including name, description, * pricing details, location options, schedule information, and payment configuration. */ services?: Service[]; /** * Cursor-based paging metadata for navigating search results. * * Contains the current page's cursor information, whether there are more results available, * and count details. Use the `next` cursor to retrieve subsequent pages of results. */ pagingMetadata?: CursorPagingMetadata; /** * Aggregation results based on the aggregations specified in the search request. * * Provides categorized data summaries such as service counts by type, location distribution, * payment method statistics, or custom aggregations. Available only when aggregations * are requested in the search criteria. */ aggregationData?: AggregationData; } interface CursorPagingMetadata { /** * Number of items returned in the current response page. * * This count reflects the actual number of items in the current result set, * which may be less than the requested limit if fewer items are available. */ count?: number | null; /** * Navigation cursors for moving between result pages. * * Contains `next` and `prev` cursor tokens for pagination. Use the `next` cursor * to retrieve subsequent pages and `prev` cursor to go back to previous pages. * Learn more about cursor paging in the [API Query Language guide](https://dev.wix.com/api/rest/getting-started/api-query-language#getting-started_api-query-language_cursor-paging). */ cursors?: Cursors; /** * Indicates whether additional results are available beyond the current page. * * - `true`: More results exist and can be retrieved using the `next` cursor. * - `false`: This is the final page of results. */ hasNext?: boolean | null; } interface AggregationData { /** * Array of aggregation results, each containing the aggregation metadata and its calculated values for the specified search criteria. * @maxSize 10000 */ results?: AggregationResults[]; } interface ValueAggregationResult { /** * Value of the field. * @maxLength 100 */ value?: string; /** Count of entities with this value. */ count?: number; } interface RangeAggregationResult { /** Inclusive lower bound of the range. */ from?: number | null; /** Exclusive upper bound of the range. */ to?: number | null; /** Count of entities in this range. */ count?: number; } interface NestedAggregationResults extends NestedAggregationResultsResultOneOf { /** Value aggregation results. */ values?: ValueResults; /** Range aggregation results. */ ranges?: RangeResults; /** Scalar aggregation results. */ scalar?: AggregationResultsScalarResult; /** * User-defined name of aggregation, matches the one specified in request. * @maxLength 100 */ name?: string; /** Type of aggregation that matches result. */ type?: AggregationTypeWithLiterals; /** * Path to the field to aggregate by in dot notation. For example `name` or `paymentOptions.online`. * @maxLength 200 */ fieldPath?: string; } /** @oneof */ interface NestedAggregationResultsResultOneOf { /** Value aggregation results. */ values?: ValueResults; /** Range aggregation results. */ ranges?: RangeResults; /** Scalar aggregation results. */ scalar?: AggregationResultsScalarResult; } interface ValueResults { /** * Array of value aggregation results, each containing a field value and the count of entities with that value. * @maxSize 250 */ results?: ValueAggregationResult[]; } interface RangeResults { /** * Array of range aggregation results returned in the same order as requested, each containing range bounds and count of entities within that range. * @maxSize 50 */ results?: RangeAggregationResult[]; } interface AggregationResultsScalarResult { /** Type of scalar aggregation. */ type?: ScalarTypeWithLiterals; /** Value of the scalar aggregation. */ value?: number; } interface NestedValueAggregationResult { /** * Value of the field. * @maxLength 1000 */ value?: string; /** Nested aggregations. */ nestedResults?: NestedAggregationResults; } interface ValueResult { /** * Value of the field. * @maxLength 1000 */ value?: string; /** Count of entities with this value. */ count?: number | null; } interface RangeResult { /** Inclusive lower bound of the range. */ from?: number | null; /** Exclusive upper bound of the range. */ to?: number | null; /** Count of entities in this range. */ count?: number | null; } interface ScalarResult { /** Value of the scalar aggregation. */ value?: number; } interface ScalarDateResult { /** * Date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. * @maxLength 100 */ value?: string; } interface NestedResultValue extends NestedResultValueResultOneOf { /** Value aggregation result. */ value?: ValueResult; /** Range aggregation result. */ range?: RangeResult; /** Scalar aggregation result. */ scalar?: ScalarResult; /** Date histogram aggregation result. */ dateHistogram?: ValueResult; /** Scalar date aggregation result. */ scalarDate?: ScalarDateResult; } /** @oneof */ interface NestedResultValueResultOneOf { /** Value aggregation result. */ value?: ValueResult; /** Range aggregation result. */ range?: RangeResult; /** Scalar aggregation result. */ scalar?: ScalarResult; /** Date histogram aggregation result. */ dateHistogram?: ValueResult; /** Scalar date aggregation result. */ scalarDate?: ScalarDateResult; } interface Results { /** Map of nested aggregation results, keyed by aggregation name. */ results?: Record; } interface DateHistogramResult { /** * Date in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601). * @maxLength 100 */ value?: string; /** Count of documents in the bucket. */ count?: number; } interface GroupByValueResults { /** * Array of nested value aggregation results, each containing a field value and the associated nested aggregation data. * @maxSize 1000 */ results?: NestedValueAggregationResult[]; } interface DateHistogramResults { /** * Array of date histogram aggregation results, each containing a date bucket and its count. * @maxSize 200 */ results?: DateHistogramResult[]; } /** * Results of `NESTED` aggregation type in a flattened form. * Aggregations in resulting array are keyed by requested aggregation `name`. */ interface NestedResults { /** * Array of nested aggregation result groups, each containing multiple aggregation results. * @maxSize 1000 */ results?: Results[]; } interface AggregationResultsScalarDateResult { /** Type of scalar date aggregation. Possible values: `MIN`, `MAX`. */ type?: ScalarTypeWithLiterals; /** * Date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. * @maxLength 100 */ value?: string; } interface AggregationResults extends AggregationResultsResultOneOf { /** Value aggregation results. */ values?: ValueResults; /** Range aggregation results. */ ranges?: RangeResults; /** Scalar aggregation results. */ scalar?: AggregationResultsScalarResult; /** Group by value aggregation results. */ groupedByValue?: GroupByValueResults; /** Date histogram aggregation results. */ dateHistogram?: DateHistogramResults; /** Nested aggregation results. */ nested?: NestedResults; /** Date aggregation results. */ scalarDate?: AggregationResultsScalarDateResult; /** * User-defined name of aggregation as derived from search request. * @maxLength 100 */ name?: string; /** Type of aggregation that must match specified kind as derived from search request. */ type?: AggregationTypeWithLiterals; /** * Path to the field to aggregate by in dot notation. For example `name` or `paymentOptions.online`. * @maxLength 200 */ fieldPath?: string; } /** @oneof */ interface AggregationResultsResultOneOf { /** Value aggregation results. */ values?: ValueResults; /** Range aggregation results. */ ranges?: RangeResults; /** Scalar aggregation results. */ scalar?: AggregationResultsScalarResult; /** Group by value aggregation results. */ groupedByValue?: GroupByValueResults; /** Date histogram aggregation results. */ dateHistogram?: DateHistogramResults; /** Nested aggregation results. */ nested?: NestedResults; /** Date aggregation results. */ scalarDate?: AggregationResultsScalarDateResult; } interface QueryPoliciesRequest { /** Information about filters, paging, and sorting. */ query: CursorQuery; } interface CursorQuery extends CursorQueryPagingMethodOneOf { /** Cursor token pointing to a page of results. Not used in the first request. Following requests use the cursor token and not `filter` or `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` */ filter?: Record | null; /** * Sort object in the following format: * `[{"fieldName":"sortField1","order":"ASC"},{"fieldName":"sortField2","order":"DESC"}]` * @maxSize 50 */ sort?: Sorting[]; } /** @oneof */ interface CursorQueryPagingMethodOneOf { /** Cursor token pointing to a page of results. Not used in the first request. Following requests use the cursor token and not `filter` or `sort`. */ cursorPaging?: CursorPaging; } interface QueryPoliciesResponse { /** Retrieved booking policies and information about the services using them. */ bookingPolicies?: BookingPolicyWithServices[]; /** Paging metadata. */ pagingMetadata?: CursorPagingMetadata; } interface BookingPolicyWithServices { /** Retrieved booking policy. */ bookingPolicy?: BookingPolicy; /** * Up to 5 services connected to the booking policy. If `totalServiceCount` is * greater than 5, there are additional services connected to the policy. * You can call [Search Services](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/search-services) * specifying the relevant policy ID in the filter, to retrieve all services that are * connected to a booking policy. * @maxSize 5 */ connectedServices?: Service[]; /** Total number of services connected to the booking policy. */ totalServiceCount?: number; } interface QueryBookingFormsRequest { /** * Information about filters, paging, and sorting. See the article about * form filters ([REST](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)) * for all supported filters and sorting options. */ query: CursorQuery; /** * Conditional fields to return. * @maxSize 5 */ conditionalFields?: RequestedFieldsWithLiterals[]; } declare enum RequestedFields { /** Whether to return the site's default booking form. */ DEFAULT_BOOKING_FORM = "DEFAULT_BOOKING_FORM" } /** @enumType */ type RequestedFieldsWithLiterals = RequestedFields | 'DEFAULT_BOOKING_FORM'; interface QueryBookingFormsResponse { /** Retrieved booking forms and information about connected services. */ bookingForms?: BookingForm[]; /** Paging metadata. */ pagingMetadata?: CursorPagingMetadata; /** The site's default booking form and information about connected services. */ defaultBookingForm?: BookingForm; } interface BookingForm { /** Information about the retrieved booking form. */ formDetails?: FormDetails; /** * Up to 5 services connected to the booking form. If `totalServiceCount` is * greater than 5, there are additional services connected to the policy. * You can call [Search Services](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/search-services) * specifying the relevant policy ID in the filter, to retrieve all services that are * connected to a booking policy. * @maxSize 5 */ connectedServices?: ConnectedService[]; /** Total number of services connected to the booking form. */ totalServiceCount?: number; } interface FormDetails { /** * Form ID. * @format GUID */ formId?: string; /** * Form name. * @maxLength 200 */ name?: string | null; /** * Revision number, which increments by 1 each time the form is updated. * To prevent conflicting changes, * the current revision must be passed when updating the form. * @readonly */ revision?: string | null; } interface ConnectedService { /** * ID of the service connected to the booking form. * @format GUID */ id?: string | null; /** * Name of the service connected to the booking form. * @maxLength 400 * @minLength 1 */ name?: string | null; } interface CountServicesRequest { /** Query filter to base the count on. See [Query Services](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/query-services) for a list of supported filters. */ filter?: Record | null; } interface CountServicesResponse { /** Number of services matching the specified filter. */ count?: number; } interface QueryLocationsRequest { /** Filter. */ filter?: QueryLocationsFilter; } interface QueryLocationsFilter { /** Service filter. See [Query Services](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/query-services) for a list of supported filters. */ services?: Record | null; /** * List of business IDs to filter by. * @format GUID * @maxSize 100 */ businessLocationIds?: string[]; } interface QueryLocationsResponse { /** * Retrieved business locations and whether each location is connected to at * least one service. */ businessLocations?: BusinessLocations; /** * Retrieved custom locations and whether each location is connected to at * least one service. */ customLocations?: CustomLocations; /** * Retrieved customer locations and whether each location is connected to at * least one service. */ customerLocations?: CustomerLocations; } interface BusinessLocations { /** * Whether at least one service matching the filter is connected to any of the * retrieved business locations. */ exists?: boolean; /** * Retrieved business locations. * @maxSize 100 */ locations?: V2Location[]; } interface CustomLocations { /** * Whether at least one service matching the filter is connected to any of the * retrieved custom locations. */ exists?: boolean; } interface CustomerLocations { /** * Whether at least one service matching the filter is connected to any of the * retrieved customer locations. */ exists?: boolean; } interface QueryCategoriesRequest { /** Filter. */ filter?: QueryCategoriesFilter; } interface QueryCategoriesFilter { /** Service filter. See [Query Services](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/query-services) for a list of supported filters. */ services?: Record | null; /** * List of category IDs to filter by. * @format GUID * @maxSize 100 */ categoryIds?: string[]; } interface QueryCategoriesResponse { /** Retrieved categories. */ categories?: V2Category[]; } interface QueryServicesMultiLanguageRequest { /** WQL expression. */ query?: QueryV2; } interface QueryServicesMultiLanguageResponse { /** The retrieved services in the main language */ services?: Service[]; /** * the retrieved services in the requested language according to the * provided linguist aspect */ translatedServices?: Service[]; /** Paging metadata, including offset and count. */ pagingMetadata?: PagingMetadataV2; } interface SetServiceLocationsRequest { /** * ID of the service. * @format GUID */ serviceId: string; /** * List of locations replacing existing service locations. Omitting an existing location removes it from the service. Specify `removedLocationSessionsAction` to determine the handling of future sessions scheduled at that location. * @maxSize 100 */ locations?: V2Location[]; /** * The action to perform on sessions currently set to a removed location. For * example, move existing sessions to a new specified location. * If not specified, sessions will not be moved to a new location. */ removedLocationSessionsAction?: RemovedLocationSessionsAction; /** * Whether to notify participants about the change of location, and an * Optional custom message. The notification is sent only to participants of sessions that are affected by the change. */ participantNotification?: V2ParticipantNotification; } interface RemovedLocationSessionsAction extends RemovedLocationSessionsActionActionOptionsOneOf { /** * Details about the new location of future events that were scheduled to take * place at a removed location. */ moveToLocationOptions?: MoveToNewLocationsOptions; /** Information about what to do with future events at the removed location. */ action?: ActionWithLiterals; } /** @oneof */ interface RemovedLocationSessionsActionActionOptionsOneOf { /** * Details about the new location of future events that were scheduled to take * place at a removed location. */ moveToLocationOptions?: MoveToNewLocationsOptions; } declare enum Action { /** Retain all future sessions at their current location. This is the default. */ KEEP_AT_CURRENT_LOCATION = "KEEP_AT_CURRENT_LOCATION", /** Move future events to a new location. */ MOVE_TO_LOCATION = "MOVE_TO_LOCATION" } /** @enumType */ type ActionWithLiterals = Action | 'KEEP_AT_CURRENT_LOCATION' | 'MOVE_TO_LOCATION'; interface MoveToNewLocationsOptions { /** The new location to move existing sessions currently set to a removed location, used when `action` is `MOVE_TO_LOCATION`. */ newLocation?: V2Location; } interface SetServiceLocationsResponse { /** The updated service with the newly set locations. */ service?: Service; } interface EnablePricingPlansForServiceRequest { /** * ID of the service to update. * @format GUID */ serviceId: string; /** * IDs of the [pricing plans](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/plans/introduction) * to add to the service's `payment.pricingPlanIds` array. * Maintained for backward compatibility. Use `pricing_plan_selections` for explicit benefit selection. * @format GUID * @maxSize 100 */ pricingPlanIds: string[]; } /** Pricing plan selection with required benefit IDs. */ interface PricingPlanSelection { /** * ID of the pricing plan * @format GUID */ pricingPlanId?: string; /** * IDs of specific benefits to connect/disconnect. * This value corresponds to `poolDefinition.details.benefits.itemSetId` in the * [Pool Definition Object](https://dev.wix.com/docs/api-reference/business-solutions/benefit-programs/pool-definitions/pool-definition-object), * and differs from `benefitKey`. * This field is required and must contain at least one benefit ID. * @format GUID * @minSize 1 * @maxSize 10 */ benefitIds?: string[]; } interface EnablePricingPlansForServiceResponse { /** Updated service. */ service?: Service; } interface InvalidPricingPlan { /** * ID of the invalid pricing plan. * @format GUID */ id?: string; /** * Explanation why the pricing plan is considered invalid. * @maxLength 2000 */ message?: string; } interface DisablePricingPlansForServiceRequest { /** * ID of the service to update. * @format GUID */ serviceId: string; /** * IDs of the [pricing plans](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/plans/introduction) * to remove from the service's `payment.pricingPlanIds` array. * Maintained for backward compatibility. Use `pricing_plan_selections` for explicit benefit selection. * @format GUID * @maxSize 75 */ pricingPlanIds?: string[]; } interface DisablePricingPlansForServiceResponse { /** Updated service. */ service?: Service; } interface SetCustomSlugRequest { /** * ID of the service for which to update the active slug. * @format GUID */ serviceId: string; /** * Slug to set as the active service slug. * @maxLength 500 */ slug?: string; } interface SetCustomSlugResponse { /** Updated active service slug. */ slug?: Slug; /** Updated service. */ service?: Service; } interface ValidateSlugRequest { /** * IO of the service to check custom slug validity for. * @format GUID */ serviceId: string; /** * Custom slug to validate. * @maxLength 500 */ slug?: string; } interface ValidateSlugResponse { /** Whether the slug is valid. */ valid?: boolean; /** * Valid slug. Available only if `{"valid": true}`. * @maxLength 500 */ slug?: string | null; /** * Reasons why the slug is invalid. Available only if `{"valid": false}`. * @maxSize 3 */ errors?: InvalidSlugErrorWithLiterals[]; } declare enum InvalidSlugError { /** Slug contains illegal characters. */ SLUG_CONTAINS_ILLEGAL_CHARACTERS = "SLUG_CONTAINS_ILLEGAL_CHARACTERS", /** Slug is already associated with another service. */ SLUG_ALREADY_EXISTS = "SLUG_ALREADY_EXISTS" } /** @enumType */ type InvalidSlugErrorWithLiterals = InvalidSlugError | 'SLUG_CONTAINS_ILLEGAL_CHARACTERS' | 'SLUG_ALREADY_EXISTS'; interface CloneServiceRequest { /** * ID of the service to clone. * @format GUID */ sourceServiceId: string; } interface CloneServiceResponse { /** Cloned service. */ service?: Service; /** * Information about connected entities that couldn't be cloned. For example, * future recurring events, the booking form, service variants, and connected * pricing plans. */ errors?: CloneErrorsWithLiterals[]; } declare enum CloneErrors { /** Failed to clone the original service's [options and variants](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/service-options-and-variants/introduction). */ OPTIONS_AND_VARIANTS = "OPTIONS_AND_VARIANTS", /** Failed to clone the original service's *booking form*. */ FORM = "FORM" } /** @enumType */ type CloneErrorsWithLiterals = CloneErrors | 'OPTIONS_AND_VARIANTS' | 'FORM'; /** An event sent every time a category entity is changed. */ interface CategoryNotification { category?: Category; event?: CategoryNotificationEventWithLiterals; } /** Categories are used to group multiple services together. A service must be associated with a category in order to be exposed in the Wix Bookings UI. */ interface Category { /** * Category ID. * @format GUID * @readonly */ id?: string | null; /** * Category name. * @maxLength 500 */ name?: string | null; /** * Category status. * * Default: `CREATED` * @readonly */ status?: StatusWithLiterals; /** Sort order of the category in the live site and dashboard. */ sortOrder?: number | null; } declare enum Status { /** The category was created. */ CREATED = "CREATED", /** The category was deleted. */ DELETED = "DELETED" } /** @enumType */ type StatusWithLiterals = Status | 'CREATED' | 'DELETED'; declare enum CategoryNotificationEvent { /** Category was updated. */ Updated = "Updated", /** Category was deleted. */ Deleted = "Deleted", /** Category was created. */ Created = "Created" } /** @enumType */ type CategoryNotificationEventWithLiterals = CategoryNotificationEvent | 'Updated' | 'Deleted' | 'Created'; interface Empty { } interface BenefitNotification { /** * Plan unique ID * @format GUID */ planId?: string; /** * App def ID * @format GUID */ appDefId?: string; /** Current benefit details */ benefit?: Benefit; /** Previous benefit */ prevBenefit?: Benefit; /** Notification event */ event?: EventWithLiterals; } interface Benefit { /** * Benefit unique ID * @format GUID * @readonly */ id?: string | null; /** Benefit Type */ benefitType?: BenefitTypeWithLiterals; /** * Resource IDs that serves by this benefit * @format GUID */ resourceIds?: string[]; /** Amount of credits that provided by this benefit */ creditAmount?: number | null; /** * additional details related to benefit; limited to 20 entries, 20 symbols for key and 20 symbols for value * @maxSize 20 */ customFields?: Record; /** return value only in case it required in the ListRequest, true means that benefit's type could be updated */ editable?: boolean | null; /** Benefit behavior */ behavior?: Behavior; /** * Id of the app associated with this benefit * @format GUID * @readonly */ appDefId?: string | null; } interface EntryPass { } interface Discount extends DiscountDiscountOneOf { /** * Fixed-rate percent off discount * @decimalValue options { gt:0, lte:100, maxScale:2 } */ percentOffRate?: string; /** * Absolute amount discount * @decimalValue options { gt:0, maxScale:2 } */ moneyOffAmount?: string; } /** @oneof */ interface DiscountDiscountOneOf { /** * Fixed-rate percent off discount * @decimalValue options { gt:0, lte:100, maxScale:2 } */ percentOffRate?: string; /** * Absolute amount discount * @decimalValue options { gt:0, maxScale:2 } */ moneyOffAmount?: string; } declare enum BenefitType { /** Should never be used */ UNDEFINED = "UNDEFINED", /** Limited benefit type */ LIMITED = "LIMITED", /** Unlimited benefit type */ UNLIMITED = "UNLIMITED" } /** @enumType */ type BenefitTypeWithLiterals = BenefitType | 'UNDEFINED' | 'LIMITED' | 'UNLIMITED'; interface Behavior extends BehaviorBehaviorOneOf { /** Entry pass for resources, e.g. a ticket for Bookings service or a ticket for Events. */ defaultBehavior?: EntryPass; /** Discount applied to paid resources */ discount?: Discount; } /** @oneof */ interface BehaviorBehaviorOneOf { /** Entry pass for resources, e.g. a ticket for Bookings service or a ticket for Events. */ defaultBehavior?: EntryPass; /** Discount applied to paid resources */ discount?: Discount; } declare enum Event { Updated = "Updated", Deleted = "Deleted", Created = "Created" } /** @enumType */ type EventWithLiterals = Event | 'Updated' | 'Deleted' | 'Created'; interface UserDomainInfoChangedEvent { domainName?: string; crudType?: CrudTypeWithLiterals; /** @format GUID */ metaSiteId?: string | null; changeTime?: Date | null; } declare enum CrudType { INVALID_CRUD_TYPE = "INVALID_CRUD_TYPE", CREATE = "CREATE", UPDATE = "UPDATE", DELETE = "DELETE", /** Unfortunately this action is used by hibernate save in wix-war */ CREATE_OR_UPDATE = "CREATE_OR_UPDATE" } /** @enumType */ type CrudTypeWithLiterals = CrudType | 'INVALID_CRUD_TYPE' | 'CREATE' | 'UPDATE' | 'DELETE' | 'CREATE_OR_UPDATE'; interface HtmlSitePublished { /** * Application instance ID * @maxLength 50 */ appInstanceId?: string; /** * Application type * @maxLength 100 */ appType?: string; /** Revision */ revision?: string; /** * MSID * @maxLength 100 */ metaSiteId?: string | null; /** * optional branch id if publish is done from branch * @format GUID */ branchId?: string | null; /** The site's last transactionId */ lastTransactionId?: string | null; /** A list of the site's pages */ pages?: Page[]; /** Site's publish date */ publishDate?: string; /** Determine if this message was produced by editor-deployments service */ originatedFromDeploymentsService?: boolean; } interface Page { /** * Page's Id * @maxLength 100 */ id?: string; } /** Encapsulates all details written to the Greyhound topic when a site's properties are updated. */ interface SitePropertiesNotification { /** The site ID for which this update notification applies. */ metasiteId?: string; /** The actual update event. */ event?: SitePropertiesEvent; /** * A convenience set of mappings from the MetaSite ID to its constituent services. * @maxSize 500 */ translations?: Translation[]; /** Context of the notification */ changeContext?: ChangeContext; } /** The actual update event for a particular notification. */ interface SitePropertiesEvent { /** Version of the site's properties represented by this update. */ version?: number; /** Set of properties that were updated - corresponds to the fields in "properties". */ fields?: string[]; /** Updated properties. */ properties?: Properties; } interface Properties { /** Site categories. */ categories?: Categories; /** Site locale. */ locale?: Locale; /** * Site language. * * Two-letter language code in [ISO 639-1 alpha-2](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format. */ language?: string | null; /** * Site currency format used to bill customers. * * Three-letter currency code in [ISO-4217 alphabetic](https://en.wikipedia.org/wiki/ISO_4217#Active_codes) format. */ paymentCurrency?: string | null; /** Timezone in `America/New_York` format. */ timeZone?: string | null; /** Email address. */ email?: string | null; /** Phone number. */ phone?: string | null; /** Fax number. */ fax?: string | null; /** Address. */ address?: V4Address; /** Site display name. */ siteDisplayName?: string | null; /** Business name. */ businessName?: string | null; /** Path to the site's logo in Wix Media (without Wix Media base URL). */ logo?: string | null; /** Site description. */ description?: string | null; /** * Business schedule. Regular and exceptional time periods when the business is open or the service is available. * * __Note:__ Not supported by Wix Bookings. */ businessSchedule?: BusinessSchedule; /** Supported languages of a site and the primary language. */ multilingual?: Multilingual; /** Cookie policy the Wix user defined for their site (before the site visitor interacts with/limits it). */ consentPolicy?: ConsentPolicy; /** * Supported values: `FITNESS SERVICE`, `RESTAURANT`, `BLOG`, `STORE`, `EVENT`, `UNKNOWN`. * * Site business type. */ businessConfig?: string | null; /** External site URL that uses Wix as its headless business solution. */ externalSiteUrl?: string | null; /** Track clicks analytics. */ trackClicksAnalytics?: boolean; } interface Categories { /** Primary site category. */ primary?: string; /** * Secondary site category. * @maxSize 50 */ secondary?: string[]; /** Business Term Id */ businessTermId?: string | null; } interface Locale { /** Two-letter language code in [ISO 639-1 alpha-2](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format. */ languageCode?: string; /** Two-letter country code in [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) format. */ country?: string; } interface V4Address { /** Street name. */ street?: string; /** City name. */ city?: string; /** Two-letter country code in an [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format. */ country?: string; /** State. */ state?: string; /** * Zip or postal code. * @maxLength 20 */ zip?: string; /** Extra information to be displayed in the address. */ hint?: AddressHint; /** Whether this address represents a physical location. */ isPhysical?: boolean; /** Google-formatted version of this address. */ googleFormattedAddress?: string; /** Street number. */ streetNumber?: string; /** Apartment number. */ apartmentNumber?: string; /** Geographic coordinates of location. */ coordinates?: GeoCoordinates; } /** * Extra information on displayed addresses. * This is used for display purposes. Used to add additional data about the address, such as "In the passage". * Free text. In addition, the user can state where to display the additional description - before, after, or instead of the address string. */ interface AddressHint { /** Extra text displayed next to, or instead of, the actual address. */ text?: string; /** Where the extra text should be displayed. */ placement?: PlacementTypeWithLiterals; } /** Where the extra text should be displayed: before, after or instead of the actual address. */ declare enum PlacementType { BEFORE = "BEFORE", AFTER = "AFTER", REPLACE = "REPLACE" } /** @enumType */ type PlacementTypeWithLiterals = PlacementType | 'BEFORE' | 'AFTER' | 'REPLACE'; /** Geocoordinates for a particular address. */ interface GeoCoordinates { /** Latitude of the location. Must be between -90 and 90. */ latitude?: number; /** Longitude of the location. Must be between -180 and 180. */ longitude?: number; } /** Business schedule. Regular and exceptional time periods when the business is open or the service is available. */ interface BusinessSchedule { /** * Weekly recurring time periods when the business is regularly open or the service is available. Limited to 100 time periods. * @maxSize 100 */ periods?: TimePeriod[]; /** * Exceptions to the business's regular hours. The business can be open or closed during the exception. * @maxSize 100 */ specialHourPeriod?: SpecialHourPeriod[]; } /** Weekly recurring time periods when the business is regularly open or the service is available. */ interface TimePeriod { /** Day of the week the period starts on. */ openDay?: DayOfWeekWithLiterals; /** * Time the period starts in 24-hour [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) extended format. Valid values are `00:00` to `24:00`, where `24:00` represents * midnight at the end of the specified day. */ openTime?: string; /** Day of the week the period ends on. */ closeDay?: DayOfWeekWithLiterals; /** * Time the period ends in 24-hour [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) extended format. Valid values are `00:00` to `24:00`, where `24:00` represents * midnight at the end of the specified day. * * __Note:__ If `openDay` and `closeDay` specify the same day of the week `closeTime` must be later than `openTime`. */ closeTime?: string; } /** Enumerates the days of the week. */ declare enum DayOfWeek { MONDAY = "MONDAY", TUESDAY = "TUESDAY", WEDNESDAY = "WEDNESDAY", THURSDAY = "THURSDAY", FRIDAY = "FRIDAY", SATURDAY = "SATURDAY", SUNDAY = "SUNDAY" } /** @enumType */ type DayOfWeekWithLiterals = DayOfWeek | 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY'; /** Exception to the business's regular hours. The business can be open or closed during the exception. */ interface SpecialHourPeriod { /** Start date and time of the exception in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format and [Coordinated Universal Time (UTC)](https://en.wikipedia.org/wiki/Coordinated_Universal_Time). */ startDate?: string; /** End date and time of the exception in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format and [Coordinated Universal Time (UTC)](https://en.wikipedia.org/wiki/Coordinated_Universal_Time). */ endDate?: string; /** * Whether the business is closed (or the service is not available) during the exception. * * Default: `true`. */ isClosed?: boolean; /** Additional info about the exception. For example, "We close earlier on New Year's Eve." */ comment?: string; } interface Multilingual { /** * Supported languages list. * @maxSize 200 */ supportedLanguages?: SupportedLanguage[]; /** Whether to redirect to user language. */ autoRedirect?: boolean; } interface SupportedLanguage { /** Two-letter language code in [ISO 639-1 alpha-2](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format. */ languageCode?: string; /** Locale. */ locale?: Locale; /** Whether the supported language is the primary language for the site. */ isPrimary?: boolean; /** Language icon. */ countryCode?: string; /** How the language will be resolved. For internal use. */ resolutionMethod?: ResolutionMethodWithLiterals; /** Whether the supported language is the primary language for site visitors. */ isVisitorPrimary?: boolean | null; } declare enum ResolutionMethod { QUERY_PARAM = "QUERY_PARAM", SUBDOMAIN = "SUBDOMAIN", SUBDIRECTORY = "SUBDIRECTORY" } /** @enumType */ type ResolutionMethodWithLiterals = ResolutionMethod | 'QUERY_PARAM' | 'SUBDOMAIN' | 'SUBDIRECTORY'; interface ConsentPolicy { /** Whether the site uses cookies that are essential to site operation. Always `true`. */ essential?: boolean | null; /** Whether the site uses cookies that affect site performance and other functional measurements. */ functional?: boolean | null; /** Whether the site uses cookies that collect analytics about how the site is used (in order to improve it). */ analytics?: boolean | null; /** Whether the site uses cookies that collect information allowing better customization of the experience for a current visitor. */ advertising?: boolean | null; /** CCPA compliance flag. */ dataToThirdParty?: boolean | null; } /** A single mapping from the MetaSite ID to a particular service. */ interface Translation { /** The service type. */ serviceType?: string; /** The application definition ID; this only applies to services of type ThirdPartyApps. */ appDefId?: string; /** The instance ID of the service. */ instanceId?: string; } interface ChangeContext extends ChangeContextPayloadOneOf { /** Properties were updated. */ propertiesChange?: PropertiesChange; /** Default properties were created on site creation. */ siteCreated?: SiteCreated; /** Properties were cloned on site cloning. */ siteCloned?: SiteCloned; } /** @oneof */ interface ChangeContextPayloadOneOf { /** Properties were updated. */ propertiesChange?: PropertiesChange; /** Default properties were created on site creation. */ siteCreated?: SiteCreated; /** Properties were cloned on site cloning. */ siteCloned?: SiteCloned; } interface PropertiesChange { } interface SiteCreated { /** Origin template site id. */ originTemplateId?: string | null; } interface SiteCloned { /** Origin site id. */ originMetaSiteId?: string; } interface CreateAddOnGroupRequest { /** Add-on group to create. */ addOnGroup: AddOnGroup; /** * ID of the service to create the add-on group for. * @format GUID */ serviceId: string | null; } interface CreateAddOnGroupResponse { /** Created add-on group. */ addOnGroup?: AddOnGroup; } interface DeleteAddOnGroupRequest { /** * ID of the add-on group to delete. * @format GUID */ addOnGroupId: string | null; /** * ID of the service from which to delete the add-on group. * @format GUID */ serviceId: string | null; } interface DeleteAddOnGroupResponse { } interface UpdateAddOnGroupRequest { /** Add-on group to update. */ addOnGroup: AddOnGroup; /** * ID of the service that contains the add-on group. * @format GUID */ serviceId: string | null; } interface UpdateAddOnGroupResponse { /** Updated add-on group. */ addOnGroup?: AddOnGroup; } interface ListAddOnGroupsByServiceIdRequest { /** * ID of the service to retrieve add-on groups for. * @format GUID */ serviceId: string | null; /** * List of group IDs to return. By default, all groups are returned. * @format GUID * @maxSize 3 */ groupIds?: string[] | null; } interface ListAddOnGroupsByServiceIdResponse { /** * List of group details with their linked add-ons. * @maxSize 3 */ addOnGroupsDetails?: AddOnGroupDetail[]; } interface AddOn extends AddOnAddOnInfoOneOf { /** Duration in minutes for duration-based add-ons that extend booking service time. */ durationInMinutes?: number; /** Maximum quantity customers can purchase for quantity-based add-ons. */ maxQuantity?: number; /** * Add-on ID. * @format GUID */ addOnId?: string | null; /** * Add-on name displayed to customers. * @maxLength 100 */ name?: string | null; /** Add-on price. */ price?: Money; /** * Translated add-on name. * @maxLength 100 */ nameTranslated?: string | null; } /** @oneof */ interface AddOnAddOnInfoOneOf { /** Duration in minutes for duration-based add-ons that extend booking service time. */ durationInMinutes?: number; /** Maximum quantity customers can purchase for quantity-based add-ons. */ maxQuantity?: number; } interface AddOnGroupDetail { /** * Group ID. * @format GUID */ groupId?: string | null; /** Maximum number of add-ons customers can select from this group. */ maxNumberOfAddOns?: number | null; /** * Group name displayed to customers. * @maxLength 100 */ groupName?: string | null; /** * Add-ons linked to this group in display order. * @maxSize 7 */ addOns?: AddOn[]; /** * Instructional prompt displayed to customers. For example, `Choose up to 2 relaxing spa treatments to enhance your experience`. You can also use this field as a group description. For example, `Beginner-friendly rental equipment`. * @maxLength 200 */ prompt?: string | null; /** * Translated group name. * @maxLength 100 */ groupNameTranslated?: string | null; /** * Instructional translated prompt displayed to customers. For example, `Choose up to 2 relaxing spa treatments to enhance your experience`. You can also use this field as a group description. For example, `Beginner-friendly rental equipment`. * @maxLength 200 */ promptTranslated?: string | null; } interface SetAddOnsForGroupRequest { /** * Service ID containing the group. * @format GUID */ serviceId: string | null; /** * Group ID to set add-ons for. * @format GUID */ groupId: string | null; /** * IDs of add-ons to set for the group in display order. * @format GUID * @minSize 1 * @maxSize 7 */ addOnIds: string[] | null; } interface SetAddOnsForGroupResponse { /** Updated add-on group. */ addOnGroup?: AddOnGroup; } /** @docsIgnore */ type CreateServiceValidationErrors = { ruleName?: 'INVALID_FORM'; } | { ruleName?: 'INVALID_CATEGORY'; } | { ruleName?: 'INVALID_BOOKING_POLICY'; } | { ruleName?: 'INVALID_SERVICE_TYPE'; } | { ruleName?: 'INVALID_SERVICE_NAME'; } | { ruleName?: 'INVALID_ONLINE_BOOKING'; } | { ruleName?: 'INVALID_STAFF_MEMBER_IDS'; } | { ruleName?: 'PAYMENT_REQUIRED'; } | { ruleName?: 'INVALID_PAYMENT_TYPE'; } | { ruleName?: 'INVALID_RATE'; } | { ruleName?: 'INVALID_PAYMENT_OPTIONS'; } | { ruleName?: 'INVALID_BUSINESS_LOCATIONS'; } | { ruleName?: 'INVALID_LOCATIONS'; } | { ruleName?: 'INVALID_BUSINESS_LOCATION'; } | { ruleName?: 'INVALID_CUSTOM_LOCATION'; } | { ruleName?: 'INVALID_CUSTOMER_LOCATION'; } | { ruleName?: 'INVALID_UNKNOWN_LOCATION'; } | { ruleName?: 'INVALID_MANUAL_APPROVAL_WITH_PRICING_PLANS'; } | { ruleName?: 'INVALID_DEFAULT_CAPACITY'; } | { ruleName?: 'INVALID_APPOINTMENT_CAPACITY'; } | { ruleName?: 'INVALID_SESSION_DURATION'; }; /** @docsIgnore */ type UpdateServiceValidationErrors = { ruleName?: 'INVALID_FORM'; } | { ruleName?: 'INVALID_CATEGORY'; } | { ruleName?: 'INVALID_BOOKING_POLICY'; } | { ruleName?: 'INVALID_SERVICE_TYPE'; } | { ruleName?: 'INVALID_SERVICE_NAME'; } | { ruleName?: 'INVALID_ONLINE_BOOKING'; } | { ruleName?: 'INVALID_STAFF_MEMBER_IDS'; } | { ruleName?: 'PAYMENT_REQUIRED'; } | { ruleName?: 'INVALID_PAYMENT_TYPE'; } | { ruleName?: 'INVALID_RATE'; } | { ruleName?: 'INVALID_PAYMENT_OPTIONS'; } | { ruleName?: 'INVALID_BUSINESS_LOCATIONS'; } | { ruleName?: 'INVALID_LOCATIONS'; } | { ruleName?: 'INVALID_BUSINESS_LOCATION'; } | { ruleName?: 'INVALID_CUSTOM_LOCATION'; } | { ruleName?: 'INVALID_CUSTOMER_LOCATION'; } | { ruleName?: 'INVALID_UNKNOWN_LOCATION'; } | { ruleName?: 'INVALID_MANUAL_APPROVAL_WITH_PRICING_PLANS'; } | { ruleName?: 'INVALID_DEFAULT_CAPACITY'; } | { ruleName?: 'INVALID_APPOINTMENT_CAPACITY'; } | { ruleName?: 'INVALID_SESSION_DURATION'; }; /** @docsIgnore */ type QueryBookingFormsApplicationErrors = { code?: 'DEFAULT_BOOKING_FORM_NOT_FOUND'; description?: string; data?: Record; }; /** @docsIgnore */ type EnablePricingPlansForServiceApplicationErrors = { code?: 'INVALID_PRICING_PLAN'; description?: string; data?: InvalidPricingPlan; } | { code?: 'SERVICE_DOES_NOT_SUPPORT_PRICING_PLANS'; description?: string; data?: Record; }; /** @docsIgnore */ type DisablePricingPlansForServiceApplicationErrors = { code?: 'INVALID_PRICING_PLAN'; description?: string; data?: InvalidPricingPlan; }; /** @docsIgnore */ type SetCustomSlugApplicationErrors = { code?: 'SLUG_ALREADY_EXISTS'; description?: string; data?: Record; }; /** @docsIgnore */ type SetCustomSlugValidationErrors = { ruleName?: 'SLUG_CONTAINS_ILLEGAL_CHARACTERS'; }; /** @docsIgnore */ type DeleteAddOnGroupApplicationErrors = { code?: 'GROUP_NOT_ON_SERVICE'; description?: string; data?: Record; }; /** @docsIgnore */ type UpdateAddOnGroupApplicationErrors = { code?: 'GROUP_NOT_ON_SERVICE'; description?: string; data?: Record; }; /** @docsIgnore */ type SetAddOnsForGroupApplicationErrors = { code?: 'ADD_ON_GROUP_NOT_FOUND'; 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 createService(): __PublicMethodMetaInfo<'POST', {}, CreateServiceRequest$1, CreateServiceRequest, CreateServiceResponse$1, CreateServiceResponse>; declare function bulkCreateServices(): __PublicMethodMetaInfo<'POST', {}, BulkCreateServicesRequest$1, BulkCreateServicesRequest, BulkCreateServicesResponse$1, BulkCreateServicesResponse>; declare function getService(): __PublicMethodMetaInfo<'GET', { serviceId: string; }, GetServiceRequest$1, GetServiceRequest, GetServiceResponse$1, GetServiceResponse>; declare function updateService(): __PublicMethodMetaInfo<'PATCH', { serviceId: string; }, UpdateServiceRequest$1, UpdateServiceRequest, UpdateServiceResponse$1, UpdateServiceResponse>; declare function bulkUpdateServices(): __PublicMethodMetaInfo<'POST', {}, BulkUpdateServicesRequest$1, BulkUpdateServicesRequest, BulkUpdateServicesResponse$1, BulkUpdateServicesResponse>; declare function bulkUpdateServicesByFilter(): __PublicMethodMetaInfo<'POST', {}, BulkUpdateServicesByFilterRequest$1, BulkUpdateServicesByFilterRequest, BulkUpdateServicesByFilterResponse$1, BulkUpdateServicesByFilterResponse>; declare function deleteService(): __PublicMethodMetaInfo<'DELETE', { serviceId: string; }, DeleteServiceRequest$1, DeleteServiceRequest, DeleteServiceResponse$1, DeleteServiceResponse>; declare function bulkDeleteServices(): __PublicMethodMetaInfo<'POST', {}, BulkDeleteServicesRequest$1, BulkDeleteServicesRequest, BulkDeleteServicesResponse$1, BulkDeleteServicesResponse>; declare function bulkDeleteServicesByFilter(): __PublicMethodMetaInfo<'POST', {}, BulkDeleteServicesByFilterRequest$1, BulkDeleteServicesByFilterRequest, BulkDeleteServicesByFilterResponse$1, BulkDeleteServicesByFilterResponse>; declare function queryServices(): __PublicMethodMetaInfo<'POST', {}, QueryServicesRequest$1, QueryServicesRequest, QueryServicesResponse$1, QueryServicesResponse>; declare function searchServices(): __PublicMethodMetaInfo<'POST', {}, SearchServicesRequest$1, SearchServicesRequest, SearchServicesResponse$1, SearchServicesResponse>; declare function queryPolicies(): __PublicMethodMetaInfo<'POST', {}, QueryPoliciesRequest$1, QueryPoliciesRequest, QueryPoliciesResponse$1, QueryPoliciesResponse>; declare function queryBookingForms(): __PublicMethodMetaInfo<'POST', {}, QueryBookingFormsRequest$1, QueryBookingFormsRequest, QueryBookingFormsResponse$1, QueryBookingFormsResponse>; declare function countServices(): __PublicMethodMetaInfo<'POST', {}, CountServicesRequest$1, CountServicesRequest, CountServicesResponse$1, CountServicesResponse>; declare function queryLocations(): __PublicMethodMetaInfo<'POST', {}, QueryLocationsRequest$1, QueryLocationsRequest, QueryLocationsResponse$1, QueryLocationsResponse>; declare function queryCategories(): __PublicMethodMetaInfo<'POST', {}, QueryCategoriesRequest$1, QueryCategoriesRequest, QueryCategoriesResponse$1, QueryCategoriesResponse>; declare function setServiceLocations(): __PublicMethodMetaInfo<'POST', { serviceId: string; }, SetServiceLocationsRequest$1, SetServiceLocationsRequest, SetServiceLocationsResponse$1, SetServiceLocationsResponse>; declare function enablePricingPlansForService(): __PublicMethodMetaInfo<'POST', { serviceId: string; }, EnablePricingPlansForServiceRequest$1, EnablePricingPlansForServiceRequest, EnablePricingPlansForServiceResponse$1, EnablePricingPlansForServiceResponse>; declare function disablePricingPlansForService(): __PublicMethodMetaInfo<'POST', { serviceId: string; }, DisablePricingPlansForServiceRequest$1, DisablePricingPlansForServiceRequest, DisablePricingPlansForServiceResponse$1, DisablePricingPlansForServiceResponse>; declare function setCustomSlug(): __PublicMethodMetaInfo<'POST', { serviceId: string; }, SetCustomSlugRequest$1, SetCustomSlugRequest, SetCustomSlugResponse$1, SetCustomSlugResponse>; declare function validateSlug(): __PublicMethodMetaInfo<'POST', {}, ValidateSlugRequest$1, ValidateSlugRequest, ValidateSlugResponse$1, ValidateSlugResponse>; declare function cloneService(): __PublicMethodMetaInfo<'POST', {}, CloneServiceRequest$1, CloneServiceRequest, CloneServiceResponse$1, CloneServiceResponse>; declare function createAddOnGroup(): __PublicMethodMetaInfo<'POST', {}, CreateAddOnGroupRequest$1, CreateAddOnGroupRequest, CreateAddOnGroupResponse$1, CreateAddOnGroupResponse>; declare function deleteAddOnGroup(): __PublicMethodMetaInfo<'POST', {}, DeleteAddOnGroupRequest$1, DeleteAddOnGroupRequest, DeleteAddOnGroupResponse$1, DeleteAddOnGroupResponse>; declare function updateAddOnGroup(): __PublicMethodMetaInfo<'POST', {}, UpdateAddOnGroupRequest$1, UpdateAddOnGroupRequest, UpdateAddOnGroupResponse$1, UpdateAddOnGroupResponse>; declare function listAddOnGroupsByServiceId(): __PublicMethodMetaInfo<'POST', {}, ListAddOnGroupsByServiceIdRequest$1, ListAddOnGroupsByServiceIdRequest, ListAddOnGroupsByServiceIdResponse$1, ListAddOnGroupsByServiceIdResponse>; declare function setAddOnsForGroup(): __PublicMethodMetaInfo<'POST', {}, SetAddOnsForGroupRequest$1, SetAddOnsForGroupRequest, SetAddOnsForGroupResponse$1, SetAddOnsForGroupResponse>; export { type AccountInfo as AccountInfoOriginal, type ActionEvent as ActionEventOriginal, Action as ActionOriginal, type ActionWithLiterals as ActionWithLiteralsOriginal, Actor as ActorOriginal, type ActorWithLiterals as ActorWithLiteralsOriginal, type AddOnAddOnInfoOneOf as AddOnAddOnInfoOneOfOriginal, type AddOnDetails as AddOnDetailsOriginal, type AddOnGroupDetail as AddOnGroupDetailOriginal, type AddOnGroup as AddOnGroupOriginal, type AddOn as AddOnOriginal, AddOnPaymentOptions as AddOnPaymentOptionsOriginal, type AddOnPaymentOptionsWithLiterals as AddOnPaymentOptionsWithLiteralsOriginal, type AddressHint as AddressHintOriginal, type AddressLocation as AddressLocationOriginal, type Address as AddressOriginal, type AddressStreetOneOf as AddressStreetOneOfOriginal, type AggregationData as AggregationDataOriginal, type AggregationKindOneOf as AggregationKindOneOfOriginal, type Aggregation as AggregationOriginal, type AggregationResults as AggregationResultsOriginal, type AggregationResultsResultOneOf as AggregationResultsResultOneOfOriginal, type AggregationResultsScalarDateResult as AggregationResultsScalarDateResultOriginal, type AggregationResultsScalarResult as AggregationResultsScalarResultOriginal, AggregationType as AggregationTypeOriginal, type AggregationTypeWithLiterals as AggregationTypeWithLiteralsOriginal, type ApplicationError as ApplicationErrorOriginal, type AvailabilityConstraints as AvailabilityConstraintsOriginal, type BehaviorBehaviorOneOf as BehaviorBehaviorOneOfOriginal, type Behavior as BehaviorOriginal, type BenefitNotification as BenefitNotificationOriginal, type Benefit as BenefitOriginal, BenefitType as BenefitTypeOriginal, type BenefitTypeWithLiterals as BenefitTypeWithLiteralsOriginal, 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 BookingForm as BookingFormOriginal, type Booking as BookingOriginal, type BookingParticipantsInfoOneOf as BookingParticipantsInfoOneOfOriginal, type BookingPolicy as BookingPolicyOriginal, type BookingPolicyWithServices as BookingPolicyWithServicesOriginal, type BookingSource as BookingSourceOriginal, BookingStatus as BookingStatusOriginal, type BookingStatusWithLiterals as BookingStatusWithLiteralsOriginal, type BulkActionMetadata as BulkActionMetadataOriginal, type BulkCreateServicesRequest as BulkCreateServicesRequestOriginal, type BulkCreateServicesResponse as BulkCreateServicesResponseOriginal, type BulkDeleteServicesByFilterRequest as BulkDeleteServicesByFilterRequestOriginal, type BulkDeleteServicesByFilterResponse as BulkDeleteServicesByFilterResponseOriginal, type BulkDeleteServicesRequest as BulkDeleteServicesRequestOriginal, type BulkDeleteServicesResponse as BulkDeleteServicesResponseOriginal, type BulkServiceResult as BulkServiceResultOriginal, type BulkUpdateServicesByFilterRequest as BulkUpdateServicesByFilterRequestOriginal, type BulkUpdateServicesByFilterResponse as BulkUpdateServicesByFilterResponseOriginal, type BulkUpdateServicesRequest as BulkUpdateServicesRequestOriginal, type BulkUpdateServicesResponse as BulkUpdateServicesResponseOriginal, type BusinessLocationOptions as BusinessLocationOptionsOriginal, type BusinessLocations as BusinessLocationsOriginal, type BusinessSchedule as BusinessScheduleOriginal, type CancellationFeePolicy as CancellationFeePolicyOriginal, type CancellationPolicy as CancellationPolicyOriginal, type CancellationWindowFeeOneOf as CancellationWindowFeeOneOfOriginal, type CancellationWindow as CancellationWindowOriginal, type Categories as CategoriesOriginal, CategoryNotificationEvent as CategoryNotificationEventOriginal, type CategoryNotificationEventWithLiterals as CategoryNotificationEventWithLiteralsOriginal, type CategoryNotification as CategoryNotificationOriginal, type Category as CategoryOriginal, type ChangeContext as ChangeContextOriginal, type ChangeContextPayloadOneOf as ChangeContextPayloadOneOfOriginal, CloneErrors as CloneErrorsOriginal, type CloneErrorsWithLiterals as CloneErrorsWithLiteralsOriginal, type CloneServiceRequest as CloneServiceRequestOriginal, type CloneServiceResponse as CloneServiceResponseOriginal, type CommonAddressLocation as CommonAddressLocationOriginal, type CommonAddress as CommonAddressOriginal, type CommonAddressStreetOneOf as CommonAddressStreetOneOfOriginal, type CommonIdentificationDataIdOneOf as CommonIdentificationDataIdOneOfOriginal, type CommonIdentificationData as CommonIdentificationDataOriginal, type CommonStreetAddress as CommonStreetAddressOriginal, CompletionRequirement as CompletionRequirementOriginal, type CompletionRequirementWithLiterals as CompletionRequirementWithLiteralsOriginal, type Conferencing as ConferencingOriginal, type ConnectedService as ConnectedServiceOriginal, type ConsentPolicy as ConsentPolicyOriginal, type ContactDetails as ContactDetailsOriginal, type CountServicesRequest as CountServicesRequestOriginal, type CountServicesResponse as CountServicesResponseOriginal, type CreateAddOnGroupRequest as CreateAddOnGroupRequestOriginal, type CreateAddOnGroupResponse as CreateAddOnGroupResponseOriginal, type CreateServiceRequest as CreateServiceRequestOriginal, type CreateServiceResponse as CreateServiceResponseOriginal, type CreateServiceValidationErrors as CreateServiceValidationErrorsOriginal, CrudType as CrudTypeOriginal, type CrudTypeWithLiterals as CrudTypeWithLiteralsOriginal, type CursorPagingMetadata as CursorPagingMetadataOriginal, type CursorPaging as CursorPagingOriginal, type CursorQuery as CursorQueryOriginal, type CursorQueryPagingMethodOneOf as CursorQueryPagingMethodOneOfOriginal, type CursorSearch as CursorSearchOriginal, type CursorSearchPagingMethodOneOf as CursorSearchPagingMethodOneOfOriginal, type Cursors as CursorsOriginal, type CustomFormField as CustomFormFieldOriginal, type CustomLocationOptions as CustomLocationOptionsOriginal, type CustomLocations as CustomLocationsOriginal, type CustomOptions as CustomOptionsOriginal, type CustomPayment as CustomPaymentOriginal, type CustomerLocations as CustomerLocationsOriginal, type DateHistogramAggregation as DateHistogramAggregationOriginal, type DateHistogramResult as DateHistogramResultOriginal, type DateHistogramResults as DateHistogramResultsOriginal, DayOfWeek as DayOfWeekOriginal, type DayOfWeekWithLiterals as DayOfWeekWithLiteralsOriginal, type DeleteAddOnGroupApplicationErrors as DeleteAddOnGroupApplicationErrorsOriginal, type DeleteAddOnGroupRequest as DeleteAddOnGroupRequestOriginal, type DeleteAddOnGroupResponse as DeleteAddOnGroupResponseOriginal, type DeleteServiceRequest as DeleteServiceRequestOriginal, type DeleteServiceResponse as DeleteServiceResponseOriginal, type DisablePricingPlansForServiceApplicationErrors as DisablePricingPlansForServiceApplicationErrorsOriginal, type DisablePricingPlansForServiceRequest as DisablePricingPlansForServiceRequestOriginal, type DisablePricingPlansForServiceResponse as DisablePricingPlansForServiceResponseOriginal, type DiscountDiscountOneOf as DiscountDiscountOneOfOriginal, type DiscountInfo as DiscountInfoOriginal, type Discount as DiscountOriginal, type DomainEventBodyOneOf as DomainEventBodyOneOfOriginal, type DomainEvent as DomainEventOriginal, type DummyRequest as DummyRequestOriginal, type DummyResponse as DummyResponseOriginal, type Duration as DurationOriginal, type Empty as EmptyOriginal, type EnablePricingPlansForServiceApplicationErrors as EnablePricingPlansForServiceApplicationErrorsOriginal, type EnablePricingPlansForServiceRequest as EnablePricingPlansForServiceRequestOriginal, type EnablePricingPlansForServiceResponse as EnablePricingPlansForServiceResponseOriginal, type EntityCreatedEvent as EntityCreatedEventOriginal, type EntityDeletedEvent as EntityDeletedEventOriginal, type EntityUpdatedEvent as EntityUpdatedEventOriginal, type EntryPass as EntryPassOriginal, Event as EventOriginal, type EventWithLiterals as EventWithLiteralsOriginal, type ExtendedFields as ExtendedFieldsOriginal, type FieldViolation as FieldViolationOriginal, FirstChargeDateType as FirstChargeDateTypeOriginal, type FirstChargeDateTypeWithLiterals as FirstChargeDateTypeWithLiteralsOriginal, type FixedPayment as FixedPaymentOriginal, type FlowControlSettings as FlowControlSettingsOriginal, type FormDetails as FormDetailsOriginal, type Form as FormOriginal, type FormSettings as FormSettingsOriginal, FrequencyType as FrequencyTypeOriginal, type FrequencyTypeWithLiterals as FrequencyTypeWithLiteralsOriginal, type FullUpfrontPayment as FullUpfrontPaymentOriginal, type GeoCoordinates as GeoCoordinatesOriginal, type GetServiceAvailabilityConstraintsRequest as GetServiceAvailabilityConstraintsRequestOriginal, type GetServiceAvailabilityConstraintsResponse as GetServiceAvailabilityConstraintsResponseOriginal, type GetServiceRequest as GetServiceRequestOriginal, type GetServiceResponse as GetServiceResponseOriginal, type GroupByAggregationKindOneOf as GroupByAggregationKindOneOfOriginal, type GroupByAggregation as GroupByAggregationOriginal, type GroupByValueResults as GroupByValueResultsOriginal, type HtmlSitePublished as HtmlSitePublishedOriginal, type IdentificationDataIdOneOf as IdentificationDataIdOneOfOriginal, 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 InvalidPricingPlan as InvalidPricingPlanOriginal, InvalidSlugError as InvalidSlugErrorOriginal, type InvalidSlugErrorWithLiterals as InvalidSlugErrorWithLiteralsOriginal, type ItemMetadata as ItemMetadataOriginal, type Keyword as KeywordOriginal, type LimitEarlyBookingPolicy as LimitEarlyBookingPolicyOriginal, type LimitLateBookingPolicy as LimitLateBookingPolicyOriginal, type ListAddOnGroupsByServiceIdRequest as ListAddOnGroupsByServiceIdRequestOriginal, type ListAddOnGroupsByServiceIdResponse as ListAddOnGroupsByServiceIdResponseOriginal, type Locale as LocaleOriginal, type Location as LocationOriginal, LocationTypeEnumLocationType as LocationTypeEnumLocationTypeOriginal, type LocationTypeEnumLocationTypeWithLiterals as LocationTypeEnumLocationTypeWithLiteralsOriginal, LocationType as LocationTypeOriginal, type LocationTypeWithLiterals as LocationTypeWithLiteralsOriginal, type MaskedService as MaskedServiceOriginal, type MediaItemItemOneOf as MediaItemItemOneOfOriginal, type MediaItem as MediaItemOriginal, type Media as MediaOriginal, type MessageEnvelope as MessageEnvelopeOriginal, MissingValues as MissingValuesOriginal, type MissingValuesWithLiterals as MissingValuesWithLiteralsOriginal, Mode as ModeOriginal, type ModeWithLiterals as ModeWithLiteralsOriginal, type Money as MoneyOriginal, type MoveToNewLocationsOptions as MoveToNewLocationsOptionsOriginal, type MultiServiceBookingInfo as MultiServiceBookingInfoOriginal, MultiServiceBookingType as MultiServiceBookingTypeOriginal, type MultiServiceBookingTypeWithLiterals as MultiServiceBookingTypeWithLiteralsOriginal, type Multilingual as MultilingualOriginal, 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 OnlineBooking as OnlineBookingOriginal, type Page as PageOriginal, 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, PlacementType as PlacementTypeOriginal, type PlacementTypeWithLiterals as PlacementTypeWithLiteralsOriginal, Platform as PlatformOriginal, type PlatformWithLiterals as PlatformWithLiteralsOriginal, type PolicyDescription as PolicyDescriptionOriginal, type PricingPlanSelection as PricingPlanSelectionOriginal, type PropertiesChange as PropertiesChangeOriginal, type Properties as PropertiesOriginal, type QueryBookingFormsApplicationErrors as QueryBookingFormsApplicationErrorsOriginal, type QueryBookingFormsRequest as QueryBookingFormsRequestOriginal, type QueryBookingFormsResponse as QueryBookingFormsResponseOriginal, type QueryCategoriesFilter as QueryCategoriesFilterOriginal, type QueryCategoriesRequest as QueryCategoriesRequestOriginal, type QueryCategoriesResponse as QueryCategoriesResponseOriginal, type QueryLocationsFilter as QueryLocationsFilterOriginal, type QueryLocationsRequest as QueryLocationsRequestOriginal, type QueryLocationsResponse as QueryLocationsResponseOriginal, type QueryPoliciesRequest as QueryPoliciesRequestOriginal, type QueryPoliciesResponse as QueryPoliciesResponseOriginal, type QueryServicesMultiLanguageRequest as QueryServicesMultiLanguageRequestOriginal, type QueryServicesMultiLanguageResponse as QueryServicesMultiLanguageResponseOriginal, type QueryServicesRequest as QueryServicesRequestOriginal, type QueryServicesResponse as QueryServicesResponseOriginal, 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 RemovedLocationSessionsActionActionOptionsOneOf as RemovedLocationSessionsActionActionOptionsOneOfOriginal, type RemovedLocationSessionsAction as RemovedLocationSessionsActionOriginal, RequestedFields as RequestedFieldsOriginal, type RequestedFieldsWithLiterals as RequestedFieldsWithLiteralsOriginal, type ReschedulePolicy as ReschedulePolicyOriginal, ResolutionMethod as ResolutionMethodOriginal, type ResolutionMethodWithLiterals as ResolutionMethodWithLiteralsOriginal, 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 Schedule as ScheduleOriginal, type SearchDetails as SearchDetailsOriginal, type SearchServicesRequest as SearchServicesRequestOriginal, type SearchServicesResponse as SearchServicesResponseOriginal, SelectedPaymentOption as SelectedPaymentOptionOriginal, type SelectedPaymentOptionWithLiterals as SelectedPaymentOptionWithLiteralsOriginal, SelectionMethod as SelectionMethodOriginal, type SelectionMethodWithLiterals as SelectionMethodWithLiteralsOriginal, type SeoSchema as SeoSchemaOriginal, type ServiceAvailabilityConstraints as ServiceAvailabilityConstraintsOriginal, 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 ServicesUrlsChanged as ServicesUrlsChangedOriginal, type SetAddOnsForGroupApplicationErrors as SetAddOnsForGroupApplicationErrorsOriginal, type SetAddOnsForGroupRequest as SetAddOnsForGroupRequestOriginal, type SetAddOnsForGroupResponse as SetAddOnsForGroupResponseOriginal, type SetCustomSlugApplicationErrors as SetCustomSlugApplicationErrorsOriginal, type SetCustomSlugEvent as SetCustomSlugEventOriginal, type SetCustomSlugRequest as SetCustomSlugRequestOriginal, type SetCustomSlugResponse as SetCustomSlugResponseOriginal, type SetCustomSlugValidationErrors as SetCustomSlugValidationErrorsOriginal, type SetServiceLocationsRequest as SetServiceLocationsRequestOriginal, type SetServiceLocationsResponse as SetServiceLocationsResponseOriginal, type Settings as SettingsOriginal, type SiteCloned as SiteClonedOriginal, type SiteCreated as SiteCreatedOriginal, type SitePropertiesEvent as SitePropertiesEventOriginal, type SitePropertiesNotification as SitePropertiesNotificationOriginal, 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 SpecialHourPeriod as SpecialHourPeriodOriginal, type SplitInterval as SplitIntervalOriginal, type StaffMediaItemItemOneOf as StaffMediaItemItemOneOfOriginal, type StaffMediaItem as StaffMediaItemOriginal, type StaffMemberDetails as StaffMemberDetailsOriginal, type StaffMember as StaffMemberOriginal, type StaffSortingPolicyOptionsOneOf as StaffSortingPolicyOptionsOneOfOriginal, type StaffSortingPolicy as StaffSortingPolicyOriginal, Status as StatusOriginal, type StatusWithLiterals as StatusWithLiteralsOriginal, type StreetAddress as StreetAddressOriginal, type Subdivision as SubdivisionOriginal, type SubscriptionPayment as SubscriptionPaymentOriginal, type SupportedLanguage as SupportedLanguageOriginal, type Tag as TagOriginal, type TaxableAddress as TaxableAddressOriginal, TaxableAddressType as TaxableAddressTypeOriginal, type TaxableAddressTypeWithLiterals as TaxableAddressTypeWithLiteralsOriginal, type TimePeriod as TimePeriodOriginal, Timing as TimingOriginal, type TimingWithLiterals as TimingWithLiteralsOriginal, type Translation as TranslationOriginal, type URLs as URLsOriginal, type UpdateAddOnGroupApplicationErrors as UpdateAddOnGroupApplicationErrorsOriginal, type UpdateAddOnGroupRequest as UpdateAddOnGroupRequestOriginal, type UpdateAddOnGroupResponse as UpdateAddOnGroupResponseOriginal, type UpdateServiceRequest as UpdateServiceRequestOriginal, type UpdateServiceResponse as UpdateServiceResponseOriginal, type UpdateServiceValidationErrors as UpdateServiceValidationErrorsOriginal, type UserDomainInfoChangedEvent as UserDomainInfoChangedEventOriginal, type V2Category as V2CategoryOriginal, type V2Duration as V2DurationOriginal, type V2LocationOptionsOneOf as V2LocationOptionsOneOfOriginal, type V2Location as V2LocationOriginal, type V2ParticipantNotification as V2ParticipantNotificationOriginal, type V2PhoneCall as V2PhoneCallOriginal, V2RequestedFields as V2RequestedFieldsOriginal, type V2RequestedFieldsWithLiterals as V2RequestedFieldsWithLiteralsOriginal, type V4Address as V4AddressOriginal, type ValidateServiceRequest as ValidateServiceRequestOriginal, type ValidateServiceResponse as ValidateServiceResponseOriginal, type ValidateSlugRequest as ValidateSlugRequestOriginal, type ValidateSlugResponse as ValidateSlugResponseOriginal, 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 WaitlistPolicy as WaitlistPolicyOriginal, WebhookIdentityType as WebhookIdentityTypeOriginal, type WebhookIdentityTypeWithLiterals as WebhookIdentityTypeWithLiteralsOriginal, type __PublicMethodMetaInfo, bulkCreateServices, bulkDeleteServices, bulkDeleteServicesByFilter, bulkUpdateServices, bulkUpdateServicesByFilter, cloneService, countServices, createAddOnGroup, createService, deleteAddOnGroup, deleteService, disablePricingPlansForService, enablePricingPlansForService, getService, listAddOnGroupsByServiceId, queryBookingForms, queryCategories, queryLocations, queryPolicies, queryServices, searchServices, setAddOnsForGroup, setCustomSlug, setServiceLocations, updateAddOnGroup, updateService, validateSlug };