{"version":3,"sources":["../../../src/bookings-catalog-search-v1-catalog-search-catalog-search.universal.ts","../../../src/bookings-catalog-search-v1-catalog-search-catalog-search.http.ts","../../../src/bookings-catalog-search-v1-catalog-search-catalog-search.public.ts","../../../src/bookings-catalog-search-v1-catalog-search-catalog-search.context.ts"],"sourcesContent":["import { transformError as sdkTransformError } from '@wix/sdk-runtime/transform-error';\nimport {\n  renameKeysFromSDKRequestToRESTRequest,\n  renameKeysFromRESTResponseToSDKResponse,\n} from '@wix/sdk-runtime/rename-all-nested-keys';\nimport { HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport * as ambassadorWixBookingsCatalogSearchV1CatalogSearch from './bookings-catalog-search-v1-catalog-search-catalog-search.http.js';\nimport { transformRESTAddressToSDKAddress } from '@wix/sdk-runtime/transformations/address';\nimport { transformRESTImageToSDKImage } from '@wix/sdk-runtime/transformations/image';\nimport { transformRESTPageURLV2ToSDKPageURLV2 } from '@wix/sdk-runtime/transformations/page-url-v2';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\n\n/**\n * Represents a search across a site's catalog of bookable services, combined with location,\n * resource, and availability filters.\n */\nexport interface CatalogSearchResult {\n  /**\n   * Catalog search result ID.\n   * @format GUID\n   */\n  _id?: string;\n}\n\nexport interface QueryServicesByFiltersRequest {\n  /**\n   * Query against the service catalog: WQL filter, sort, and cursor paging.\n   *\n   * Default: `query.cursorPaging.limit` is `10`.\n   */\n  query?: CursorQuery;\n  /**\n   * Availability and resource constraints applied on top of the service query.\n   * When absent, no availability check is performed and all pre-filtered services are returned.\n   */\n  serviceFilters?: ServiceFilters;\n}\n\nexport interface CursorQuery extends CursorQueryPagingMethodOneOf {\n  /** 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`. */\n  cursorPaging?: CursorPaging;\n  /**\n   * Filter object in the following format:\n   * `\"filter\" : {\n   * \"fieldName1\": \"value1\",\n   * \"fieldName2\":{\"$operator\":\"value2\"}\n   * }`\n   * Example of operators: `$eq`, `$ne`, `$lt`, `$lte`, `$gt`, `$gte`, `$in`, `$hasSome`, `$hasAll`, `$startsWith`, `$contains`\n   */\n  filter?: Record<string, any> | null;\n  /**\n   * Sort object in the following format:\n   * `[{\"fieldName\":\"sortField1\",\"order\":\"ASC\"},{\"fieldName\":\"sortField2\",\"order\":\"DESC\"}]`\n   * @maxSize 5\n   */\n  sort?: Sorting[];\n}\n\n/** @oneof */\nexport interface CursorQueryPagingMethodOneOf {\n  /** 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`. */\n  cursorPaging?: CursorPaging;\n}\n\nexport interface Sorting {\n  /**\n   * Name of the field to sort by.\n   * @maxLength 512\n   */\n  fieldName?: string;\n  /** Sort order. */\n  order?: SortOrderWithLiterals;\n}\n\nexport enum SortOrder {\n  ASC = 'ASC',\n  DESC = 'DESC',\n}\n\n/** @enumType */\nexport type SortOrderWithLiterals = SortOrder | 'ASC' | 'DESC';\n\nexport interface CursorPaging {\n  /**\n   * Maximum number of items to return in the results.\n   * @max 50\n   */\n  limit?: number | null;\n  /**\n   * Pointer to the next or previous page in the list of results.\n   *\n   * Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response.\n   * Not relevant for the first request.\n   * @maxLength 16000\n   */\n  cursor?: string | null;\n}\n\nexport interface ServiceFilters {\n  /**\n   * Start of the availability window (ISO local date-time, e.g. \"2024-03-25T09:00:00\").\n   * Must be provided together with `localEndDate`, and must be strictly before it.\n   * @format LOCAL_DATE_TIME\n   */\n  localStartDate?: string | null;\n  /**\n   * End of the availability window (ISO local date-time, e.g. \"2024-03-25T17:00:00\").\n   * Must be provided together with `localStartDate`.\n   * A whole-day end may be expressed as the next day's \"00:00:00\" (exclusive) or as any time at or\n   * after \"23:59:00\" on the same day (inclusive); both mean \"through the end of that day\".\n   * A window is treated as whole days only when it starts at \"00:00:00\" and ends on a day boundary;\n   * any other window is an hour window and is matched as such, even when it crosses midnight\n   * (such as \"09:00\" one day to \"09:00\" the next).\n   * @format LOCAL_DATE_TIME\n   */\n  localEndDate?: string | null;\n  /**\n   * IANA time zone identifier (e.g. \"America/New_York\") used to interpret the availability window.\n   * Optional; when omitted, the site's business time zone is used.\n   * @maxLength 100\n   */\n  timeZone?: string | null;\n  /**\n   * Controls how strictly the availability window must be satisfied. Interpreted by window shape:\n   * - Sub-day hour window, true: bookable for the exact hour range, matched to the minute.\n   * - Sub-day hour window, false (default): at least one bookable slot within the window.\n   * - A single full day: bookable that day (any slot).\n   * - Multiple days, true: bookable on every day in the range.\n   * - Multiple days, false (default): at least one bookable slot anywhere in the range.\n   * Hour-based and day-based services (those configured with a booking duration range) refine this:\n   * a single day is matched as a whole (any slot counts), sub-day hour windows still respect `exactMatch`,\n   * and an exact multi-day window returns no results for hour-based services.\n   */\n  exactMatch?: boolean | null;\n  /**\n   * Filters services to those whose resources are available at these business locations.\n   * If empty, no location-based resource filtering is applied.\n   *\n   * A resource configured as available at all locations always matches, regardless of the\n   * locations specified here.\n   *\n   * Note: at most 200 matching resources are scanned for the `locationIds`/`resourceTypes`\n   * pre-filter; beyond that the filtered set is truncated and results may be imprecise.\n   * @maxSize 100\n   * @format GUID\n   */\n  locationIds?: string[];\n  /**\n   * Filters services to those that have a resource matching the requested attributes. Values given\n   * for the same attribute are OR'd (match any); values for different attributes are AND'd (match all).\n   * If empty, no attribute filtering is applied.\n   *\n   * Combined with `locationIds` and `resourceTypes` using AND: a service's resource must match\n   * this filter and the location/resource type filter to be included.\n   *\n   * Note: at most 1,000 matching attribute values are scanned across all conditions; beyond that the\n   * set is truncated and results may be imprecise.\n   * @maxSize 10\n   */\n  attributes?: Attribute[];\n  /**\n   * Filters services to those that use resources of the given types (e.g. \"STAFF\", \"ROOM\").\n   * If empty, all resource types are included.\n   * Note: see `locationIds` for the 200-resource pre-filter scan limit.\n   * @maxSize 10\n   * @maxLength 100\n   */\n  resourceTypes?: string[];\n  /**\n   * When true, unavailable services are included in the response with `available` set to `false`.\n   * When absent or false, only available services are returned.\n   */\n  includeUnavailable?: boolean | null;\n}\n\n/**\n * Filters resources by a single attribute value.\n * Exactly one value variant must be set, matching the attribute definition's value_type.\n */\nexport interface Attribute extends AttributeValueOneOf {\n  /**\n   * Exact enum value to match. Must be in the attribute's EnumConfig.allowed_values.\n   * @maxLength 40\n   */\n  enumValue?: string;\n  /**\n   * Inclusive number range to match. At least one bound must be present; min must not exceed max.\n   * To match an exact number, set min and max to the same value.\n   */\n  numberRangeValue?: NumberRange;\n  /** Exact boolean value to match. */\n  boolValue?: boolean;\n  /**\n   * Discrete set of numbers to match. At least one value must be present.\n   * A resource matches if its stored number equals any value in the set.\n   */\n  numberValues?: NumberValues;\n  /**\n   * ID of the attribute definition to filter by.\n   * @format GUID\n   */\n  attributeId?: string;\n}\n\n/** @oneof */\nexport interface AttributeValueOneOf {\n  /**\n   * Exact enum value to match. Must be in the attribute's EnumConfig.allowed_values.\n   * @maxLength 40\n   */\n  enumValue?: string;\n  /**\n   * Inclusive number range to match. At least one bound must be present; min must not exceed max.\n   * To match an exact number, set min and max to the same value.\n   */\n  numberRangeValue?: NumberRange;\n  /** Exact boolean value to match. */\n  boolValue?: boolean;\n  /**\n   * Discrete set of numbers to match. At least one value must be present.\n   * A resource matches if its stored number equals any value in the set.\n   */\n  numberValues?: NumberValues;\n}\n\n/** Inclusive numeric range filter. At least one bound must be present. */\nexport interface NumberRange {\n  /** Minimum value (inclusive). If absent, no lower bound is applied. */\n  min?: number | null;\n  /** Maximum value (inclusive). If absent, no upper bound is applied. */\n  max?: number | null;\n}\n\n/** Discrete set of numeric values to match. At least one value must be present. */\nexport interface NumberValues {\n  /**\n   * Numbers to match against. A resource matches if its stored number equals any entry.\n   * @maxSize 10\n   */\n  values?: number[];\n}\n\nexport interface QueryServicesByFiltersResponse {\n  /** Services matching the query, each enriched with availability data. */\n  results?: ServiceWithAvailability[];\n  /**\n   * Paging metadata. The cursor in `pagingMetadata.cursors.next` is an opaque token owned by CatalogSearch.\n   * Pass it unchanged in the next request's `query.cursorPaging.cursor`.\n   * Do not assume any relationship between this cursor and the internal cursors of services-2 or other upstream services.\n   */\n  pagingMetadata?: CursorPagingMetadata;\n}\n\n/** A service enriched with availability data. */\nexport interface ServiceWithAvailability {\n  /** The service entity. */\n  service?: Service;\n  /**\n   * Whether the service has available slots in the requested window.\n   * Always true when no date range was provided.\n   */\n  available?: boolean;\n}\n\n/** The `service` object represents an offering that a business provides to its customers. */\nexport interface Service {\n  /**\n   * Service ID.\n   * @format GUID\n   * @readonly\n   */\n  _id?: string | null;\n  /**\n   * ID of the app associated with the service. You can't update `appId`.\n   * Services are displayed in Wix Bookings only if they are associated with the Wix Bookings appId or have no associated app ID.\n   * Default: `13d21c63-b5ec-5912-8397-c3a5ddb27a97` (Wix Bookings app ID)\n   * For services from Wix apps, the following values apply:\n   * - Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\n   * - Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\n   * - Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`.<!-- [Scheduling Form Fields](https://dev.wix.com/docs/api-reference/business-solutions/bookings/about-scheduling-form-fields) services also use this app ID. Use `createdByAppId` to distinguish between Wix Meetings and Scheduling Form Fields services.-->\n   * [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).\n   * <!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\n   * @format GUID\n   * @immutable\n   */\n  appId?: string | null;\n  /**\n   * ID of the app that created the service. This field is used for analytics, auditing, and tracking creation sources.\n   * This read-only field is automatically populated during service creation by checking these sources in order:\n   * 1. The caller's App ID from the request identity context.\n   * 2. The service's `appId` field.\n   * 3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\n   * <!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\n   * @format GUID\n   * @readonly\n   */\n  createdByAppId?: string | null;\n  /**\n   * Service type.\n   * Learn more about [service types](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-types).\n   */\n  type?: ServiceTypeWithLiterals;\n  /** Order of the service within a [category](https://dev.wix.com/docs/rest/business-solutions/bookings/services/categories-v1/category-object). */\n  sortOrder?: number | null;\n  /**\n   * Service name.\n   * @maxLength 400\n   * @minLength 1\n   */\n  name?: string | null;\n  /**\n   * Service description. For example, `High-class hair styling, cuts, straightening and color`.\n   * @maxLength 7000\n   */\n  description?: string | null;\n  /**\n   * Short service description, such as `Hair styling`.\n   * @maxLength 6000\n   */\n  tagLine?: string | null;\n  /**\n   * Default maximum number of customers that can book the service. The service cannot be booked beyond this capacity.\n   * @min 1\n   * @max 1000\n   */\n  defaultCapacity?: number | null;\n  /** Media associated with the service. */\n  media?: Media;\n  /** Whether the service is hidden from Wix Bookings pages and widgets. */\n  hidden?: boolean | null;\n  /**\n   * [Category](https://dev.wix.com/docs/rest/business-solutions/bookings/services/categories-v2/introduction)\n   * the service is associated with. Services aren't automatically assigned to a category.\n   * Without an associated category, the service isn't visible on the live site.\n   */\n  category?: Category;\n  /** Form the customer filled out when booking the service. */\n  form?: Form;\n  /**\n   * Payment options for booking the service.\n   * Learn more about [service payments](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-payments).\n   */\n  payment?: Payment;\n  /** Online booking settings. */\n  onlineBooking?: OnlineBooking;\n  /** Conferencing options for the service. */\n  conferencing?: Conferencing;\n  /**\n   * 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).\n   * @immutable\n   * @maxSize 500\n   */\n  locations?: Location[];\n  /**\n   * [Policy](https://dev.wix.com/docs/rest/business-solutions/bookings/policies/booking-policies/introduction)\n   * 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.\n   */\n  bookingPolicy?: BookingPolicy;\n  /**\n   * The service's [schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction),\n   * which can be used to manage the service's [events](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\n   */\n  schedule?: Schedule;\n  /**\n   * IDs of the [resources](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction) associated with the [staff members](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-members/introduction) providing the service.\n   * Note that these are the resource IDs, not the staff member IDs.\n   *\n   * For appointment-based services, set this field when creating or updating the service.\n   * For classes and courses, this field is read-only and is automatically derived from staff assigned to the service's recurring scheduled sessions.\n   * Staff assigned only to single, non-recurring events are not included.\n   * Once all of a staff member's upcoming recurring sessions have ended, their ID is removed from this field.\n   * To retrieve the full list of staff for classes or courses, query the service's calendar events instead.\n   * Learn more about [retrieving staff for classes and courses](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/sample-flows#retrieve-staff-members-for-a-class-or-course).\n   * @maxSize 220\n   * @format GUID\n   */\n  staffMemberIds?: string[];\n  /** Staff members details. Returned only if `STAFF_MEMBER_DETAILS` conditional field was specified. */\n  staffMemberDetails?: StaffMemberDetails;\n  /**\n   * Information about which resources must be available so customers can book the service.\n   * For example, a meeting room or equipment.\n   * Some nested fields are only returned when specific conditional fields are requested:\n   * pass `RESOURCE_TYPE_DETAILS` to retrieve `resourceType.name`, and `RESOURCE_DETAILS` to retrieve `resourceDetails.resources`.\n   * @maxSize 3\n   */\n  serviceResources?: ServiceResource[];\n  /**\n   * A slug is the last part of the URL address that serves as a unique identifier of the service.\n   * The list of supported slugs includes past service names for backwards compatibility, and a custom slug if one was set by the business owner.\n   * @readonly\n   * @maxSize 100\n   */\n  supportedSlugs?: Slug[];\n  /**\n   * Active slug for the service.\n   * Learn more about [service slugs](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-slugs).\n   * @readonly\n   */\n  mainSlug?: Slug;\n  /**\n   * URLs to various service-related pages, such as the calendar page and the booking page.\n   * @readonly\n   */\n  urls?: URLs;\n  /** Extensions enabling users to save custom data related to the service. */\n  extendedFields?: ExtendedFields;\n  /** Custom SEO data for the service. */\n  seoData?: SeoSchema;\n  /**\n   * Date and time the service was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.\n   * @readonly\n   */\n  _createdDate?: Date | null;\n  /**\n   * Date and time the service was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.\n   * @readonly\n   */\n  _updatedDate?: Date | null;\n  /**\n   * Revision number, which increments by 1 each time the service is updated. To\n   * prevent conflicting changes, the existing revision must be used when updating\n   * a service.\n   * @readonly\n   */\n  revision?: string | null;\n  /**\n   * 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.\n   * @maxSize 3\n   */\n  addOnGroups?: AddOnGroup[];\n  /**\n   * 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.\n   * @readonly\n   * @maxSize 50\n   */\n  addOnDetails?: AddOnDetails[];\n  /** Taxable address used to calculate tax */\n  taxableAddress?: TaxableAddress;\n  /**\n   * ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction)\n   * that serves as the primary resource for this appointment service. The primary resource type\n   * determines which resources drive slot assignment and availability resolution.\n   *\n   * For example, when set to a \"Meeting Rooms\" resource type, availability is calculated\n   * based on the rooms' schedules rather than staff schedules.\n   *\n   * Default: The staff resource type.\n   * @format GUID\n   */\n  primaryResourceType?: string | null;\n}\n\nexport enum ServiceType {\n  /** Appointment-based service. */\n  APPOINTMENT = 'APPOINTMENT',\n  /** Class service. */\n  CLASS = 'CLASS',\n  /** Course service. */\n  COURSE = 'COURSE',\n}\n\n/** @enumType */\nexport type ServiceTypeWithLiterals =\n  | ServiceType\n  | 'APPOINTMENT'\n  | 'CLASS'\n  | 'COURSE';\n\nexport interface Media {\n  /**\n   * Media items associated with the service.\n   * @maxSize 100\n   */\n  items?: MediaItem[];\n  /** Primary media associated with the service. */\n  mainMedia?: MediaItem;\n  /** Cover media associated with the service. */\n  coverMedia?: MediaItem;\n}\n\nexport interface MediaItem extends MediaItemItemOneOf {\n  /** Details of the image associated with the service, such as URL and size. */\n  image?: string;\n}\n\n/** @oneof */\nexport interface MediaItemItemOneOf {\n  /** Details of the image associated with the service, such as URL and size. */\n  image?: string;\n}\n\nexport interface Category {\n  /**\n   * Category ID.\n   * @format GUID\n   */\n  _id?: string;\n  /**\n   * Category name.\n   * @maxLength 500\n   * @readonly\n   */\n  name?: string | null;\n  /**\n   * Order of a category within a category list.\n   * @readonly\n   */\n  sortOrder?: number | null;\n}\n\nexport interface Form {\n  /**\n   * ID of the form associated with the service.\n   * The form information that you submit when booking includes contact details, participants, and other form fields set up for the service.\n   * You can manage the service booking form fields using the Bookings Forms API.\n   * @format GUID\n   */\n  _id?: string;\n}\n\nexport interface FormSettings {\n  /** Whether the service booking form should be hidden from the site. */\n  hidden?: boolean | null;\n}\n\nexport interface Payment extends PaymentRateOneOf {\n  /**\n   * The details for the fixed price of the service.\n   *\n   * Required when: `rateType` is `FIXED`\n   */\n  fixed?: FixedPayment;\n  /**\n   * The details for the custom price of the service.\n   *\n   * Required when: `rateType` is `CUSTOM`\n   */\n  custom?: CustomPayment;\n  /**\n   * The details for the varied pricing of the service.\n   * Read more about [varied price options](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online#offering-varied-price-options).\n   *\n   * Required when: `rateType` is `VARIED`\n   */\n  varied?: VariedPayment;\n  /**\n   * Subscription pricing details for the service. Supported for course services only.\n   * The business charges recurring monthly payments instead of a one-time fee.\n   *\n   * Required when: `rateType` is `SUBSCRIPTION`.\n   */\n  subscription?: SubscriptionPayment;\n  /** The rate the customer is expected to pay for the service. */\n  rateType?: RateTypeWithLiterals;\n  /** The payment options a customer can use to pay for the service. */\n  options?: PaymentOptions;\n  /**\n   * IDs of pricing plans that can be used as payment for the service.\n   * Read more about [service payment options](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/about-service-payments).\n   * @readonly\n   * @maxSize 75\n   * @format GUID\n   */\n  pricingPlanIds?: string[];\n  /**\n   * 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).\n   * If customers pay for the booking using any method other than a pricing plan, the value of this field is ignored.\n   */\n  addOnOption?: AddOnPaymentOptionsWithLiterals;\n  /**\n   * Estimated discount information for the service based on active [eCommerce discounts](https://dev.wix.com/docs/rest/business-solutions/e-commerce/extensions/discounts/introduction).\n   * The final discount is determined during eCommerce checkout and may differ from the estimate,\n   * for example when discounts depend on cart totals.\n   *\n   * A discount is considered active when its start time has passed and its end time hasn't.\n   * If multiple active discounts apply, the most recently created one is returned.\n   *\n   * Returned only when `DISCOUNT_INFO_DETAILS` is requested.\n   * @readonly\n   */\n  discountInfo?: DiscountInfo;\n}\n\n/** @oneof */\nexport interface PaymentRateOneOf {\n  /**\n   * The details for the fixed price of the service.\n   *\n   * Required when: `rateType` is `FIXED`\n   */\n  fixed?: FixedPayment;\n  /**\n   * The details for the custom price of the service.\n   *\n   * Required when: `rateType` is `CUSTOM`\n   */\n  custom?: CustomPayment;\n  /**\n   * The details for the varied pricing of the service.\n   * Read more about [varied price options](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online#offering-varied-price-options).\n   *\n   * Required when: `rateType` is `VARIED`\n   */\n  varied?: VariedPayment;\n  /**\n   * Subscription pricing details for the service. Supported for course services only.\n   * The business charges recurring monthly payments instead of a one-time fee.\n   *\n   * Required when: `rateType` is `SUBSCRIPTION`.\n   */\n  subscription?: SubscriptionPayment;\n}\n\nexport enum RateType {\n  /** The service has a fixed price. */\n  FIXED = 'FIXED',\n  /** The service has a custom price, expressed as a price description. */\n  CUSTOM = 'CUSTOM',\n  /** This service is offered with a set of different prices based on different terms. */\n  VARIED = 'VARIED',\n  /** This service is offered free of charge. */\n  NO_FEE = 'NO_FEE',\n  /**\n   * The service charges recurring monthly payments. Supported for course services only.\n   * @documentationMaturity preview\n   */\n  SUBSCRIPTION = 'SUBSCRIPTION',\n}\n\n/** @enumType */\nexport type RateTypeWithLiterals =\n  | RateType\n  | 'FIXED'\n  | 'CUSTOM'\n  | 'VARIED'\n  | 'NO_FEE'\n  | 'SUBSCRIPTION';\n\nexport interface FixedPayment {\n  /**\n   * The fixed price required to book the service.\n   *\n   * Required when: `rateType` is `FIXED`\n   */\n  price?: Money;\n  /**\n   * The deposit price required to book the service.\n   *\n   * Required when: `rateType` is `FIXED` and `paymentOptions.deposit` is `true`\n   */\n  deposit?: Money;\n  /**\n   * Whether customers can choose to pay the full service price upfront instead of only the deposit.\n   *\n   * Used only when a `deposit` amount is set.\n   *\n   * Default: `false`.\n   */\n  fullUpfrontPaymentAllowed?: boolean | null;\n  /**\n   * The deposit required to book the service, expressed as either a fixed amount or a percentage of the price.\n   *\n   * Used only when `paymentOptions.deposit` is `true`.\n   * @internal\n   */\n  depositDetails?: DepositDetails;\n}\n\n/**\n * Money.\n * Default format to use. Sufficiently compliant with majority of standards: w3c, ISO 4217, ISO 20022, ISO 8583:2003.\n */\nexport interface Money {\n  /**\n   * Monetary amount. Decimal string with a period as a decimal separator. For example `25.05`.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { gt:0, maxScale:2 }\n   */\n  value?: string;\n  /**\n   * Currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217). For example, `USD`.\n   * @format CURRENCY\n   * @readonly\n   */\n  currency?: string;\n  /**\n   * Monetary amount. Decimal string in local format. For example, `1 000,30`.\n   * @maxLength 50\n   */\n  formattedValue?: string | null;\n}\n\n/**\n * A deposit expressed as exactly one of a fixed monetary amount or a percentage of the full service price.\n * Structurally exclusive: at most one of `amount` or `percentage` may be set.\n */\nexport interface DepositDetails extends DepositDetailsValueOneOf {\n  /** The deposit as a fixed monetary amount. */\n  amount?: Money;\n  /**\n   * The deposit as a percentage of the full service price, for example `20` for 20% or `20.5` for 20.5%.\n   * Resolved to a concrete amount when the customer books.\n   *\n   * Min: `0.01` percent\n   * Max: `99.99` percent\n   * @format DECIMAL_VALUE\n   * @decimalValue options { gte:0.01, lte:99.99, maxScale:2 }\n   */\n  percentage?: string | null;\n}\n\n/** @oneof */\nexport interface DepositDetailsValueOneOf {\n  /** The deposit as a fixed monetary amount. */\n  amount?: Money;\n  /**\n   * The deposit as a percentage of the full service price, for example `20` for 20% or `20.5` for 20.5%.\n   * Resolved to a concrete amount when the customer books.\n   *\n   * Min: `0.01` percent\n   * Max: `99.99` percent\n   * @format DECIMAL_VALUE\n   * @decimalValue options { gte:0.01, lte:99.99, maxScale:2 }\n   */\n  percentage?: string | null;\n}\n\nexport interface CustomPayment {\n  /**\n   * A custom description explaining to the customer how to pay for the service.\n   * @maxLength 50\n   */\n  description?: string | null;\n}\n\nexport interface VariedPayment {\n  /** The default price for the service without any variants. It will also be used as the default price for any new variant. */\n  defaultPrice?: Money;\n  /**\n   * The deposit price required to book the service.\n   *\n   * Required when: `rateType` is `VARIED` and `paymentOptions.deposit` is `true`\n   */\n  deposit?: Money;\n  /**\n   * The minimal price a customer may pay for this service, based on its variants.\n   * @readonly\n   */\n  minPrice?: Money;\n  /**\n   * The maximum price a customer may pay for this service, based on its variants.\n   * @readonly\n   */\n  maxPrice?: Money;\n  /**\n   * Whether customers can choose to pay the full service price upfront instead of only the deposit.\n   *\n   * Used only when a `deposit` amount is set.\n   *\n   * Default: `false`.\n   */\n  fullUpfrontPaymentAllowed?: boolean | null;\n  /**\n   * The deposit required to book the service, expressed as either a fixed amount or a percentage of the price.\n   *\n   * Used only when `paymentOptions.deposit` is `true`.\n   * @internal\n   */\n  depositDetails?: DepositDetails;\n}\n\nexport interface SubscriptionPayment {\n  /**\n   * Base price charged per billing cycle before tax and discounts.\n   * The actual amount charged may differ after checkout applies tax and discounts.\n   */\n  amountPerBillingCycle?: Money;\n  /**\n   * Billing frequency for recurring subscription charges.\n   * Reflected as `billingFrequency` in the booking's subscription info.\n   *\n   * Currently supports `MONTHLY` only.\n   */\n  frequency?: FrequencyTypeWithLiterals;\n  /**\n   * Total number of billing cycles in the subscription. For example, `12` for a 12-month subscription with monthly payments.\n   * Reflected as `totalCycles` in the booking's subscription info.\n   *\n   * Required when: `rateType` is `SUBSCRIPTION`.\n   * @min 2\n   */\n  totalPayments?: number | null;\n  /** Determines when the first billing cycle payment is charged. Used together with `recurringStartDate` to define the subscription billing schedule. */\n  firstChargeDate?: FirstChargeDateTypeWithLiterals;\n  /**\n   * Date and time when recurring billing starts.\n   *\n   * When `firstChargeDate` is `CHECKOUT`, the first charge occurs at checkout and subsequent billing cycles start from this date.\n   *\n   * When `firstChargeDate` is `SCHEDULED`, the first charge occurs on this date.\n   *\n   * Customers who book after recurring billing starts are billed for the remaining billing cycles only.\n   *\n   * Required when: `rateType` is `SUBSCRIPTION`.\n   */\n  recurringStartDate?: Date | null;\n  /**\n   * Deprecated.\n   * @deprecated Deprecated.\n   * @targetRemovalDate 2026-07-01\n   */\n  enrollmentFeeAmount?: Money;\n  /**\n   * Full upfront payment settings for the subscription, including the discount applied when a customer pays in full.\n   * The customer's choice is reflected as `subscriptionUpfrontPaymentSelected` on the booking.\n   * Used only when `rateType` is `SUBSCRIPTION`.\n   * @internal\n   */\n  fullUpfrontPayment?: FullUpfrontPayment;\n}\n\nexport enum FrequencyType {\n  /** Billing cycle repeats once per month. */\n  MONTHLY = 'MONTHLY',\n}\n\n/** @enumType */\nexport type FrequencyTypeWithLiterals = FrequencyType | 'MONTHLY';\n\nexport enum FirstChargeDateType {\n  /** The first billing cycle is charged at checkout. Recurring billing continues from the `recurringStartDate`. */\n  CHECKOUT = 'CHECKOUT',\n  /** The first billing cycle is charged on the `recurringStartDate`. */\n  SCHEDULED = 'SCHEDULED',\n}\n\n/** @enumType */\nexport type FirstChargeDateTypeWithLiterals =\n  | FirstChargeDateType\n  | 'CHECKOUT'\n  | 'SCHEDULED';\n\nexport interface FullUpfrontPayment {\n  /**\n   * Whether customers can choose a one-time full payment instead of recurring subscription payments.\n   * Default: `false`.\n   */\n  supported?: boolean | null;\n  /**\n   * Percentage discount applied when a customer chooses the full payment option.\n   * When `supported` is `true` and this field isn't set, no discount is applied.\n   * Min: `0.01` percent\n   * Max: `100` percent\n   * @format DECIMAL_VALUE\n   * @decimalValue options { gte:0.01, lte:100, maxScale:2 }\n   */\n  discountPercent?: string | null;\n}\n\n/**\n * The payment options a customer can use to pay for the service.\n * For payments of type `FIXED` or `VARIED`, at least one of `online`, `inPerson`, or `pricingPlan` must be `true`.\n */\nexport interface PaymentOptions {\n  /**\n   * Customers can pay for the service online.\n   * When `true`:\n   * + `rateType` must be `FIXED`, `VARIED`, or `SUBSCRIPTION`.\n   * + `fixed.price`, `varied.defaultPrice`, or `subscription.amountPerBillingCycle` must be specified respectively.\n   *\n   * Required when: `rateType` is `SUBSCRIPTION`.\n   * Read more about [getting paid online](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online).\n   */\n  online?: boolean | null;\n  /** Customers can pay for the service in person. */\n  inPerson?: boolean | null;\n  /**\n   * This service requires a deposit to be made online in order to book it.\n   * When `true`:\n   * + `rateType` must be `VARIED` or `FIXED`.\n   * + A `deposit` must be specified.\n   * + `online` must be `true`.\n   * + `inPerson` must be `false`.\n   */\n  deposit?: boolean | null;\n  /**\n   * Whether customers can pay for the service using a pricing plan.\n   * Read more about [service payment options](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/about-service-payments).\n   */\n  pricingPlan?: boolean | null;\n}\n\nexport enum AddOnPaymentOptions {\n  /** Customers are required to pay online for add-ons when the booking is paid for with a pricing plan. */\n  ONLINE = 'ONLINE',\n  /** Customers are required to pay in person for add-ons when the booking is paid for with a pricing plan. */\n  IN_PERSON = 'IN_PERSON',\n}\n\n/** @enumType */\nexport type AddOnPaymentOptionsWithLiterals =\n  | AddOnPaymentOptions\n  | 'ONLINE'\n  | 'IN_PERSON';\n\n/** Estimated discount information for a service based on active eCommerce discounts. */\nexport interface DiscountInfo {\n  /**\n   * Name of the discount. For example, `Summer Sale - 20% Off`.\n   * @minLength 1\n   * @maxLength 50\n   */\n  discountName?: string;\n  /**\n   * 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.\n   *\n   * 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.\n   */\n  priceAfterDiscount?: Money;\n}\n\nexport interface OnlineBooking {\n  /**\n   * Whether the service can be booked online.\n   * When set to `true`, customers can book the service online. Configure the payment options via the `service.payment` property.\n   * When set to `false`, customers cannot book the service online, and the service can only be paid for in person.\n   */\n  enabled?: boolean | null;\n  /** Booking the service requires approval by the Wix user. */\n  requireManualApproval?: boolean | null;\n  /** Multiple customers can request to book the same time slot. This is relevant when `requireManualApproval` is `true`. */\n  allowMultipleRequests?: boolean | null;\n}\n\nexport interface Conferencing {\n  /** Whether a conference link is generated for the service's sessions. */\n  enabled?: boolean | null;\n}\n\nexport interface Location extends LocationOptionsOneOf {\n  /** Information about business locations. Required when `type` is `BUSINESS`. */\n  business?: BusinessLocationOptions;\n  /** Information about custom locations. Required when `type` is `CUSTOM`. */\n  custom?: CustomLocationOptions;\n  /**\n   * Location ID.\n   * @format GUID\n   * @readonly\n   */\n  _id?: string;\n  /**\n   * Location type.\n   *\n   * Default: `CUSTOM`\n   */\n  type?: LocationTypeWithLiterals;\n  /**\n   * Location address. Empty for `{\"type\": \"CUSTOMER\"}`.\n   * @readonly\n   */\n  calculatedAddress?: Address;\n}\n\n/** @oneof */\nexport interface LocationOptionsOneOf {\n  /** Information about business locations. Required when `type` is `BUSINESS`. */\n  business?: BusinessLocationOptions;\n  /** Information about custom locations. Required when `type` is `CUSTOM`. */\n  custom?: CustomLocationOptions;\n}\n\nexport enum LocationType {\n  /** Location set by the business that is not a standard business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction). */\n  CUSTOM = 'CUSTOM',\n  /** Business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction). */\n  BUSINESS = 'BUSINESS',\n  /**\n   * The customer specifies any address when booking. Available only for\n   * appointment-based services.\n   */\n  CUSTOMER = 'CUSTOMER',\n}\n\n/** @enumType */\nexport type LocationTypeWithLiterals =\n  | LocationType\n  | 'CUSTOM'\n  | 'BUSINESS'\n  | 'CUSTOMER';\n\nexport interface Address extends AddressStreetOneOf {\n  /** Street name and number. */\n  streetAddress?: StreetAddress;\n  /** @maxLength 255 */\n  addressLine1?: string | null;\n  /**\n   * 2-letter country code in an [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n   * @format COUNTRY\n   */\n  country?: string | null;\n  /**\n   * Code for a subdivision (such as state, prefecture, or province) in [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) format.\n   * @maxLength 255\n   */\n  subdivision?: string | null;\n  /**\n   * City name.\n   * @maxLength 255\n   */\n  city?: string | null;\n  /**\n   * Postal or zip code.\n   * @maxLength 255\n   */\n  postalCode?: string | null;\n  /**\n   * Full address of the location.\n   * @maxLength 512\n   */\n  formatted?: string | null;\n}\n\n/** @oneof */\nexport interface AddressStreetOneOf {\n  /** Street name and number. */\n  streetAddress?: StreetAddress;\n  /** @maxLength 255 */\n  addressLine?: string | null;\n}\n\n/** Street address. Includes street name, number, and apartment number in separate fields. */\nexport interface StreetAddress {\n  /**\n   * Street number.\n   * @maxLength 255\n   */\n  number?: string;\n  /**\n   * Street name.\n   * @maxLength 255\n   */\n  name?: string;\n  /**\n   * Apartment number.\n   * @maxLength 255\n   */\n  apt?: string;\n}\n\nexport interface AddressLocation {\n  /** Address latitude. */\n  latitude?: number | null;\n  /** Address longitude. */\n  longitude?: number | null;\n}\n\nexport interface BusinessLocationOptions {\n  /**\n   * ID of the business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction).\n   * When setting a business location, specify only the location ID. Other location details are overwritten.\n   * @format GUID\n   */\n  _id?: string;\n  /**\n   * Business location name.\n   * @readonly\n   * @maxLength 150\n   */\n  name?: string;\n  /**\n   * Whether this is the default location. There can only be a single default location per site.\n   * @readonly\n   */\n  default?: boolean | null;\n  /**\n   * Business location address.\n   * @readonly\n   */\n  address?: Address;\n  /**\n   * Business location email.\n   * @format EMAIL\n   * @readonly\n   */\n  email?: string | null;\n  /**\n   * Business location phone.\n   * @format PHONE\n   * @readonly\n   */\n  phone?: string | null;\n}\n\nexport interface CustomLocationOptions {\n  /**\n   * ID of the custom location.\n   * @format GUID\n   * @readonly\n   */\n  _id?: string;\n  /** Address of the custom location. */\n  address?: Address;\n}\n\n/**\n * `BookingPolicy` is the main entity of `BookingPolicyService` and specifies a set of rules for booking a service\n * by visitors and members.\n *\n * Each `BookingPolicy` consists of a number of sub-policies. When the Bookings App is provisioned to a meta site then a\n * default `BookingPolicy` will be created with defaults for each of these sub-policies. This also applies when a request\n * is received to create a new `BookingPolicy` and one or more of these sub-policies are not provided.\n *\n * Sub-policies are defined in separate objects as specified below.\n *\n * - The `LimitEarlyBookingPolicy` object defines the policy for limiting early bookings.\n * - The `LimitLateBookingPolicy` object defines the policy for limiting late bookings.\n * - The `BookAfterStartPolicy` object defines the policy for booking after the start of the schedule.\n * - The `CancellationPolicy` object defines the policy for canceling a booked entity.\n * - The `ReschedulePolicy` object defines the policy for rescheduling booked entity.\n * - The `WaitlistPolicy` object defines the policy for a waitlist.\n * - The `ParticipantsPolicy` object defines the policy regarding the participants per booking.\n * - The `ResourcesPolicy` object defines the policy regarding the resources per booking.\n * - The `CancellationFeePolicy` object defines the policy regarding cancellation fees.\n * - The `SaveCreditCardPolicy` object defines the policy for saving credit card details.\n *\n * By default each sub-policy is disabled. A more detailed specification of the default settings of each sub-policy\n * can be found in the description of the corresponding object.\n *\n * 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.\n */\nexport interface BookingPolicy {\n  /**\n   * The ID to the policy for the booking.\n   * @format GUID\n   */\n  _id?: string;\n  /**\n   * Date and time the policy was created.\n   * @readonly\n   */\n  _createdDate?: Date | null;\n  /**\n   * Date and time the policy was updated.\n   * @readonly\n   */\n  _updatedDate?: Date | null;\n  /**\n   * Name of the policy.\n   * @maxLength 400\n   * @readonly\n   */\n  name?: string | null;\n  /**\n   * Custom description for the policy. This policy is displayed to the participant.\n   * @readonly\n   */\n  customPolicyDescription?: PolicyDescription;\n  /**\n   * Whether the policy is the default for the meta site.\n   * @readonly\n   */\n  default?: boolean | null;\n  /**\n   * Policy for limiting early bookings.\n   * @readonly\n   */\n  limitEarlyBookingPolicy?: LimitEarlyBookingPolicy;\n  /**\n   * Policy for limiting late bookings.\n   * @readonly\n   */\n  limitLateBookingPolicy?: LimitLateBookingPolicy;\n  /**\n   * Policy on booking an entity after the start of the schedule.\n   * @readonly\n   */\n  bookAfterStartPolicy?: BookAfterStartPolicy;\n  /**\n   * Policy for canceling a booked entity.\n   * @readonly\n   */\n  cancellationPolicy?: CancellationPolicy;\n  /**\n   * Policy for rescheduling a booked entity.\n   * @readonly\n   */\n  reschedulePolicy?: ReschedulePolicy;\n  /**\n   * Waitlist policy for the service.\n   * @readonly\n   */\n  waitlistPolicy?: WaitlistPolicy;\n  /**\n   * Policy regarding the participants per booking.\n   * @readonly\n   */\n  participantsPolicy?: ParticipantsPolicy;\n  /**\n   * Policy for allocating resources.\n   * @readonly\n   */\n  resourcesPolicy?: ResourcesPolicy;\n  /**\n   * Rules for cancellation fees.\n   * @readonly\n   */\n  cancellationFeePolicy?: CancellationFeePolicy;\n  /**\n   * Rule for saving credit card.\n   * @readonly\n   */\n  saveCreditCardPolicy?: SaveCreditCardPolicy;\n}\n\n/** A description of the policy to display to participants. */\nexport interface PolicyDescription {\n  /**\n   * Whether the description should be displayed. If `true`, the description is displayed.\n   *\n   * Default: `false`\n   */\n  enabled?: boolean;\n  /**\n   * The description to display.\n   *\n   * Default: Empty\n   * Max length: 2500 characters\n   * @maxLength 2500\n   */\n  description?: string;\n}\n\n/** The policy for limiting early bookings. */\nexport interface LimitEarlyBookingPolicy {\n  /**\n   * Whether there is a limit on how early a customer\n   * can book. When `false`, there is no limit on the earliest\n   * booking time and customers can book in advance, as early as they like.\n   *\n   * Default: `false`\n   */\n  enabled?: boolean;\n  /**\n   * Maximum number of minutes before the start of the session that a booking can be made. This value must be greater\n   * than `latest_booking_in_minutes` in the `LimitLateBookingPolicy` policy.\n   *\n   * Default: 10080 minutes (7 days)\n   * Min: 1 minute\n   * @min 1\n   */\n  earliestBookingInMinutes?: number;\n}\n\n/**\n * The policy for limiting late bookings.\n *\n * This policy and the `BookAfterStartPolicy` policy cannot be enabled at the same time. So if this policy\n * is enabled, `BookAfterStartPolicy` must be disabled.\n */\nexport interface LimitLateBookingPolicy {\n  /**\n   * Whether there is a limit on how late a customer\n   * can book. When `false`, there is no limit on the latest\n   * booking time and customers can book up to the last minute.\n   *\n   * Default: `false`\n   */\n  enabled?: boolean;\n  /**\n   * Minimum number of minutes before the start of the session that a booking can be made.\n   * For a schedule, this is relative to the start time of the next booked session, excluding past-booked sessions.\n   * This value must be less than `earliest_booking_in_minutes` in the `LimitEarlyBookingPolicy` policy.\n   *\n   * Default: 1440 minutes (1 day)\n   * Min: 1 minute\n   * @min 1\n   */\n  latestBookingInMinutes?: number;\n}\n\n/**\n * The policy for whether a session can be booked after the start of the schedule.\n * This policy and `LimitLateBookingPolicy` cannot be enabled at the same time. So if this policy\n * is enabled, the `LimitLateBookingPolicy` policy must be disabled.\n */\nexport interface BookAfterStartPolicy {\n  /**\n   * Whether booking is allowed after the start of the schedule. When `true`,\n   * customers can book after the start of the schedule.\n   *\n   * Default: `false`\n   */\n  enabled?: boolean;\n}\n\n/** The policy for canceling a booked session. */\nexport interface CancellationPolicy {\n  /**\n   * Whether canceling a booking is allowed. When `true`, customers\n   * can cancel the booking.\n   *\n   * Default: `false`\n   */\n  enabled?: boolean;\n  /**\n   * Whether there is a limit on the latest cancellation time. When `true`,\n   * a time limit is enforced.\n   *\n   * Default: `false`\n   */\n  limitLatestCancellation?: boolean;\n  /**\n   * Minimum number of minutes before the start of the booked session that the booking can be canceled.\n   *\n   * Default: 1440 minutes (1 day)\n   * Min: 1 minute\n   * @min 1\n   */\n  latestCancellationInMinutes?: number;\n  /**\n   * Whether this cancellation policy allows anonymous cancellations.\n   *\n   * **Important**: This flag only applies when `enabled` is `true`. If the cancellation\n   * policy itself is disabled (`enabled` = `false`), anonymous users cannot cancel\n   * regardless of this flag's value.\n   *\n   * When not set (null), defaults to enabled. Anonymous cancellations are allowed by default\n   * so that customers aren't required to be site members to cancel their bookings.\n   *\n   * Default: `null` (treated as `true`)\n   */\n  allowAnonymous?: boolean | null;\n}\n\n/** The policy for rescheduling a booked session. */\nexport interface ReschedulePolicy {\n  /**\n   * Whether rescheduling a booking is allowed. When `true`, customers\n   * can reschedule the booking.\n   *\n   * Default: `false`\n   */\n  enabled?: boolean;\n  /**\n   * Whether there is a limit on the latest reschedule time. When `true`,\n   * a time limit is enforced.\n   *\n   * Default: `false`\n   */\n  limitLatestReschedule?: boolean;\n  /**\n   * Minimum number of minutes before the start of the booked session that the booking can be rescheduled.\n   *\n   * Default: 1440 minutes (1 day)\n   * Min: 1 minute\n   * @min 1\n   */\n  latestRescheduleInMinutes?: number;\n  /**\n   * Whether this reschedule policy allows anonymous rescheduling.\n   *\n   * **Important**: This flag only applies when `enabled` is `true`. If the reschedule\n   * policy itself is disabled (`enabled` = `false`), anonymous users cannot reschedule\n   * regardless of this flag's value.\n   *\n   * When not set (null), defaults to enabled. Anonymous rescheduling is allowed by default\n   * so that customers aren't required to be site members to reschedule their bookings.\n   *\n   * Default: `null` (treated as `true`)\n   */\n  allowAnonymous?: boolean | null;\n}\n\n/** The policy for the waitlist. */\nexport interface WaitlistPolicy {\n  /**\n   * Whether the session has a waitlist. If `true`, there is a waitlist.\n   *\n   * Default: `false`\n   */\n  enabled?: boolean;\n  /**\n   * Number of spots available in the waitlist.\n   *\n   * Default: 10 spots\n   * Min: 1 spot\n   * @min 1\n   */\n  capacity?: number;\n  /**\n   * Amount of time a participant is given to book, once notified that a spot is available.\n   *\n   * Default: 10 minutes\n   * Min: 1 spot\n   * @min 1\n   */\n  reservationTimeInMinutes?: number;\n}\n\n/** The policy for the maximum number of participants per booking. */\nexport interface ParticipantsPolicy {\n  /**\n   * Maximum number of participants allowed.\n   *\n   * Default: 1 participant\n   * Min: 1 participant\n   * @min 1\n   */\n  maxParticipantsPerBooking?: number;\n}\n\n/** The policy regarding the allocation of resources (e.g. staff members). */\nexport interface ResourcesPolicy {\n  /**\n   * `true` if this policy is enabled, `false` otherwise.\n   * When `false` then the client must always select a resource when booking an appointment.\n   */\n  enabled?: boolean;\n  /**\n   * `true`, if it is allowed to automatically assign a resource when booking an appointment,\n   * `false`, if the client must always select a resource.\n   *\n   * Default: `false`\n   */\n  autoAssignAllowed?: boolean;\n}\n\nexport interface CancellationFeePolicy {\n  /**\n   * Whether canceling a booking will result in a cancellation fee\n   *\n   * Default: `false`\n   */\n  enabled?: boolean;\n  /**\n   * Cancellation windows describing the time of cancellation and the fee to charge.\n   * @maxSize 2\n   */\n  cancellationWindows?: CancellationWindow[];\n  /**\n   * Whether the cancellation fee should not be automatically collected when customer cancels the booking.\n   *\n   * Default: `true`\n   */\n  autoCollectFeeEnabled?: boolean | null;\n}\n\nexport interface CancellationWindow extends CancellationWindowFeeOneOf {\n  /** Amount to be charged as a cancellation fee. */\n  amount?: Money;\n  /**\n   * Percentage of the original price to be charged as a cancellation fee.\n   * @decimalValue options { gt:0, lte:100, maxScale:2 }\n   */\n  percentage?: string;\n  /**\n   * The fee will be applied if the booked session starts within this start time in minutes.\n   * @min 1\n   */\n  startInMinutes?: number | null;\n}\n\n/** @oneof */\nexport interface CancellationWindowFeeOneOf {\n  /** Amount to be charged as a cancellation fee. */\n  amount?: Money;\n  /**\n   * Percentage of the original price to be charged as a cancellation fee.\n   * @decimalValue options { gt:0, lte:100, maxScale:2 }\n   */\n  percentage?: string;\n}\n\nexport interface SaveCreditCardPolicy {\n  /** Default: `false` */\n  enabled?: boolean;\n}\n\n/**\n * Policy for determining how staff members are sorted and selected during the booking process.\n * This affects which staff member is chosen when multiple staff members are available for a service.\n */\nexport interface StaffSortingPolicy extends StaffSortingPolicyOptionsOneOf {\n  rankingOptions?: RankingOptions;\n  customOptions?: CustomOptions;\n  /**\n   * Method used for sorting and selecting staff members.\n   *\n   * Default: `RANDOM`\n   */\n  sortingMethodType?: SortingMethodTypeWithLiterals;\n}\n\n/** @oneof */\nexport interface StaffSortingPolicyOptionsOneOf {\n  rankingOptions?: RankingOptions;\n  customOptions?: CustomOptions;\n}\n\n/** Order for ranking-based staff selection. */\nexport enum RankingOrder {\n  /** Staff members with lower priority values are selected first. */\n  LOWEST_TO_HIGHEST = 'LOWEST_TO_HIGHEST',\n  /** Staff members with higher priority values are selected first. */\n  HIGHEST_TO_LOWEST = 'HIGHEST_TO_LOWEST',\n}\n\n/** @enumType */\nexport type RankingOrderWithLiterals =\n  | RankingOrder\n  | 'LOWEST_TO_HIGHEST'\n  | 'HIGHEST_TO_LOWEST';\n\n/** Method used to sort and select staff members. */\nexport enum SortingMethodType {\n  /** Staff members are selected randomly from available options. */\n  RANDOM = 'RANDOM',\n  /** Staff members are selected based on their priority ranking. */\n  RANKING = 'RANKING',\n  /**\n   * Staff members are selected using a custom implementation provided by SortStaffSPI.\n   * This allows third-party apps to implement custom staff sorting logic.\n   */\n  CUSTOM = 'CUSTOM',\n}\n\n/** @enumType */\nexport type SortingMethodTypeWithLiterals =\n  | SortingMethodType\n  | 'RANDOM'\n  | 'RANKING'\n  | 'CUSTOM';\n\n/**\n * Configuration options for ranking-based staff selection.\n * Used when `sorting_method_type` is set to `RANKING`.\n */\nexport interface RankingOptions {\n  /**\n   * Order in which staff members are sorted by their priority ranking.\n   *\n   * Default: `LOWEST_TO_HIGHEST`\n   */\n  order?: RankingOrderWithLiterals;\n}\n\n/**\n * Configuration options for custom staff selection methods.\n * Used when `sorting_method_type` is set to `CUSTOM`.\n */\nexport interface CustomOptions {\n  /**\n   * ID of the custom sorting method implemented in SortStaffSPI.\n   * This identifies which custom sorting algorithm to use.\n   * @format GUID\n   */\n  implementationId?: string;\n  /**\n   * ID of the app that provides the custom sorting method.\n   * @format GUID\n   */\n  appId?: string;\n}\n\n/** Policy for integrating with Intake form. Stores which form to use and when to present it. */\nexport interface IntakeFormPolicy {\n  /**\n   * Whether intake form integration is enabled for the service.\n   * Default: `false`\n   */\n  enabled?: boolean;\n  /**\n   * ID of the intake form to integrate with the service.\n   * @format GUID\n   */\n  formId?: string | null;\n  /** When to present the intake form to the customer. */\n  timing?: TimingWithLiterals;\n  completionRequirement?: CompletionRequirementWithLiterals;\n}\n\nexport enum Timing {\n  /** Send form after booking. */\n  AFTER_BOOKING = 'AFTER_BOOKING',\n  /** Show form during booking flow. */\n  BEFORE_BOOKING = 'BEFORE_BOOKING',\n}\n\n/** @enumType */\nexport type TimingWithLiterals = Timing | 'AFTER_BOOKING' | 'BEFORE_BOOKING';\n\n/** Requirement for completing the intake form. */\nexport enum CompletionRequirement {\n  /** Form completion is optional and can be skipped entirely. */\n  OPTIONAL = 'OPTIONAL',\n  /**\n   * Form must be completed before the booking can be finalized.\n   * can used only if timing is BEFORE_BOOKING.\n   */\n  REQUIRED_BEFORE_BOOKING = 'REQUIRED_BEFORE_BOOKING',\n}\n\n/** @enumType */\nexport type CompletionRequirementWithLiterals =\n  | CompletionRequirement\n  | 'OPTIONAL'\n  | 'REQUIRED_BEFORE_BOOKING';\n\n/**\n * Rule limiting how many times the same customer can book a service within a given period.\n * The first booking is always allowed; the limit constrains additional bookings.\n */\nexport interface LimitRebookingPolicy {\n  /**\n   * Whether booking-frequency limits are enabled for the service. When `false`, there's no limit on how often a customer can book.\n   *\n   * Default: `false`\n   */\n  enabled?: boolean;\n  /**\n   * Maximum number of bookings of the same service a single customer can make within `windowInMinutes`.\n   * Only enforced when `enabled` is `true`, and required in that case.\n   *\n   * Example: `2` (up to two bookings per window)\n   * Min: `1`\n   * @min 1\n   */\n  maxBookings?: number | null;\n  /**\n   * Length of the rolling window, in minutes, over which `maxBookings` is counted. Only enforced when `enabled` is `true`.\n   * When enabled and left unset, the limit applies over all time (a lifetime cap) — e.g. `maxBookings = 1` with no window blocks rebooking permanently.\n   *\n   * Examples: `1440` (1 day), `10080` (7 days), `43200` (30 days)\n   * @min 1\n   */\n  windowInMinutes?: number | null;\n}\n\nexport interface Schedule {\n  /**\n   * ID of the [schedule](https://dev.wix.com/docs/api-reference/business-management/calendar/schedules-v3/introduction)\n   * to which the service's events belong.\n   * @format GUID\n   * @readonly\n   */\n  _id?: string | null;\n  /**\n   * Start time of the first session in the schedule. For courses only.\n   * @readonly\n   */\n  firstSessionStart?: Date | null;\n  /**\n   * End time of the last session in the schedule. For courses only.\n   * @readonly\n   */\n  lastSessionEnd?: Date | null;\n  /** Limitations affecting the service availability. */\n  availabilityConstraints?: AvailabilityConstraints;\n}\n\nexport interface AvailabilityConstraints {\n  /**\n   * Calculated list of all supported session durations for the service. For\n   * appointment-based services without varied pricing based on session length, it\n   * matches the single value in the `sessionDurations` array. For appointment-based\n   * services with varied pricing based on session length, it includes session\n   * durations for all [variants](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/service-options-and-variants/introduction),\n   * while ignoring `sessionDurations`.\n   * For courses and classes, it includes durations for all future\n   * recurring sessions but excludes durations for one-off or past recurring sessions.\n   * @readonly\n   * @maxSize 50\n   */\n  durations?: Duration[];\n  /**\n   * List of supported session durations in minutes.\n   *\n   * - For appointment-based services, specify `sessionDurations` when creating a service.\n   * - 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).\n   * - For classes or courses, don't specify `sessionDurations` when creating a service.\n   * @min 1\n   * @max 44639\n   * @maxSize 50\n   */\n  sessionDurations?: number[];\n  /**\n   * The number of minutes between the end of a session and the start of the next.\n   * @max 720\n   */\n  timeBetweenSessions?: number;\n  /**\n   * Duration range for the service. When set, the customer picks a duration\n   * within the configured min/max range instead of a fixed session duration.\n   * Mutually exclusive with `sessionDurations`. A service uses one or the other.\n   * Can't be combined with `workingHours`.\n   *\n   * Use `durationRange` for services where the customer chooses how long to book,\n   * such as equipment or space rentals. The `unitType` determines whether the range\n   * is measured in hours or days.\n   */\n  durationRange?: DurationRange;\n  /**\n   * Determines how the service's own working hours combine with the working hours of its assigned\n   * staff members and required resources. Supported for appointment services only, and can't be\n   * combined with `durationRange`.\n   *\n   * Leave unset for resource-based availability, the default and only valid state for class,\n   * course, and duration-range services. The service's own working hours are the `WORKING_HOURS`\n   * [events](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction)\n   * on this service's schedule (`schedule.id`); this field controls only how those events combine\n   * with the resources working hours, it doesn't contain the hours themselves.\n   * @internal\n   */\n  workingHours?: WorkingHours;\n}\n\nexport interface Duration {\n  /**\n   * The duration of the service in minutes.\n   * @min 1\n   * @max 44639\n   */\n  minutes?: number;\n}\n\n/**\n * Duration range configuration for a service. Defines the minimum and maximum\n * booking duration a customer can select, and the unit of measurement.\n *\n * For hourly services, durations are configured in minutes via `hourOptions`.\n * For daily services, durations are configured in days via `dayOptions`.\n */\nexport interface DurationRange extends DurationRangeConfigOneOf {\n  /** Configuration for hourly duration ranges. Set when `unitType` is `HOUR`. */\n  hourOptions?: HourlyConfig;\n  /** Configuration for daily duration ranges. Set when `unitType` is `DAY`. */\n  dayOptions?: DailyConfig;\n  /** The unit type for this duration range. Determines which configuration to use in the `config` union. */\n  unitType?: UnitTypeWithLiterals;\n}\n\n/** @oneof */\nexport interface DurationRangeConfigOneOf {\n  /** Configuration for hourly duration ranges. Set when `unitType` is `HOUR`. */\n  hourOptions?: HourlyConfig;\n  /** Configuration for daily duration ranges. Set when `unitType` is `DAY`. */\n  dayOptions?: DailyConfig;\n}\n\n/** The booking unit for the duration range. */\nexport enum UnitType {\n  /** Hourly booking unit. Durations are configured in minutes via `hourOptions`. */\n  HOUR = 'HOUR',\n  /** Daily booking unit. Durations are configured in days via `dayOptions`. */\n  DAY = 'DAY',\n}\n\n/** @enumType */\nexport type UnitTypeWithLiterals = UnitType | 'HOUR' | 'DAY';\n\n/** Hourly duration configuration. Durations are specified in minutes. */\nexport interface HourlyConfig {\n  /**\n   * Minimum bookable duration in minutes. The customer can't book for less than this duration.\n   * @min 30\n   * @max 1440\n   */\n  minDurationInMinutes?: number;\n  /**\n   * Maximum bookable duration in minutes. The customer can't book for more than this duration.\n   *\n   * Must be greater than or equal to `minDurationInMinutes`.\n   * @min 30\n   * @max 1440\n   */\n  maxDurationInMinutes?: number;\n}\n\n/** Daily duration configuration. Durations are specified in days. */\nexport interface DailyConfig {\n  /**\n   * Minimum bookable duration in days. The customer can't book for less than this number of days.\n   * @min 1\n   * @max 8\n   */\n  minDurationInDays?: number;\n  /**\n   * Maximum bookable duration in days. The customer can't book for more than this number of days.\n   *\n   * Must be greater than or equal to `minDurationInDays`.\n   * @min 1\n   * @max 8\n   */\n  maxDurationInDays?: number;\n}\n\n/**\n * Controls how a service's own working hours combine with the working hours of its assigned\n * staff members and required resources. The hours themselves are not held here. They are the\n * `WORKING_HOURS` events on the service's schedule (`schedule.id`), and this message controls\n * only how they combine with the resources working hours.\n */\nexport interface WorkingHours {\n  /** How the service's own working hours combine with its resources working hours. */\n  mode?: ModeWithLiterals;\n}\n\nexport enum Mode {\n  /**\n   * Bookable only where the service's own working hours and the resources working hours\n   * overlap (the intersection of the two).\n   * @documentationMaturity preview\n   * @internal\n   */\n  INTERSECT_RESOURCE_HOURS = 'INTERSECT_RESOURCE_HOURS',\n  /**\n   * The service's own working hours replace the resources working-hours window. Existing\n   * bookings and blocked time on those resources still reduce availability.\n   * @documentationMaturity preview\n   * @internal\n   */\n  OVERRIDE_RESOURCE_HOURS = 'OVERRIDE_RESOURCE_HOURS',\n}\n\n/** @enumType */\nexport type ModeWithLiterals = Mode;\n\nexport interface StaffMember {\n  /**\n   * 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.\n   * Despite the field name, this is the resource ID, not the staff member ID.\n   * This value matches the staff member's `resourceId` from the [Staff Members API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/staff-members/staff-members/introduction)\n   * and corresponds to the IDs in the service's `staffMemberIds` field.\n   * @format GUID\n   * @readonly\n   */\n  staffMemberId?: string;\n  /**\n   * Name of the staff member\n   * @maxLength 40\n   * @readonly\n   */\n  name?: string | null;\n  /**\n   * Main media associated with the service.\n   * @readonly\n   */\n  mainMedia?: StaffMediaItem;\n}\n\nexport interface StaffMediaItem extends StaffMediaItemItemOneOf {\n  /** Details of the image associated with the staff, such as URL and size. */\n  image?: string;\n}\n\n/** @oneof */\nexport interface StaffMediaItemItemOneOf {\n  /** Details of the image associated with the staff, such as URL and size. */\n  image?: string;\n}\n\n/**\n * Working hours location coverage derived from Calendar v3 WORKING_HOURS events\n * (`NONE` and `MASTER` recurrence types). The server paginates through Calendar results\n * (100 events per page) until all matching events are collected.\n *\n * Coverage states when enrichment is requested:\n * + `available_at_all_locations = true`: Staff applies to every business location. Set when the staff\n * uses default business working hours, or has any WORKING_HOURS event without a location ID\n * (including when mixed with location-specific events).\n * + `available_at_all_locations = false` with non-empty `location_ids`: Staff has location-specific\n * WORKING_HOURS only. Show the staff member only when the selected location is in `location_ids`.\n * + `available_at_all_locations = false` with empty `location_ids`: Staff has working-hours schedules\n * but no applicable location coverage was found.\n *\n * Recommended client filter:\n * `availableAtAllLocations || locationIds.includes(selectedLocationId)`\n *\n * Omitted when `STAFF_WORKING_HOURS_LOCATIONS` is not requested.\n */\nexport interface WorkingHoursLocationCoverage {}\n\nexport interface StaffMemberDetails {\n  /**\n   * Staff members providing the service. For appointments only.\n   * @maxSize 220\n   */\n  staffMembers?: StaffMember[];\n}\n\nexport interface ResourceGroup {\n  /**\n   * An optional resource group ID. If specified, it references a resource group in the resource groups API.\n   * TODO - referenced_entity annotation\n   * @format GUID\n   */\n  resourceGroupId?: string | null;\n  /**\n   * Resource IDs. Each ID references a resource in the resources API and may be a subset of resources within a resource group.\n   * TODO - referenced_entity annotation\n   */\n  resourceIds?: ResourceIds;\n  /**\n   * Specifies how many resources in the group / resource IDs are required to book the service.\n   * Defaults to 1.\n   * @min 1\n   */\n  requiredResourcesNumber?: number | null;\n  /**\n   * If set to `true`, the customer can select the specific resources while booking the service.\n   * If set to `false`, the resources required to book the service will be auto-selected at the time of the booking.\n   * Defaults to false.\n   * @readonly\n   */\n  selectableResource?: boolean | null;\n}\n\nexport interface ResourceIds {\n  /**\n   * Values of the resource IDs.\n   * @maxSize 100\n   * @format GUID\n   */\n  values?: string[];\n}\n\nexport interface ServiceResource extends ServiceResourceSelectionOneOf {\n  /**\n   * IDs of specific [resources](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction)\n   * assigned to this service resource. Each ID must reference a resource within the specified `resourceType`.\n   *\n   * When set, only these resources are considered for availability and booking.\n   * When not set, all resources of the specified resource type are eligible.\n   */\n  resourceIds?: ResourceIds;\n  /** Details about the required [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction). */\n  resourceType?: ResourceType;\n  /**\n   * Details about the individual resources assigned to this service resource, including their names.\n   * Only returned when `RESOURCE_DETAILS` is passed in `conditionalFields`.\n   * @internal\n   */\n  resourceDetails?: ResourceDetails;\n}\n\n/** @oneof */\nexport interface ServiceResourceSelectionOneOf {\n  /**\n   * IDs of specific [resources](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction)\n   * assigned to this service resource. Each ID must reference a resource within the specified `resourceType`.\n   *\n   * When set, only these resources are considered for availability and booking.\n   * When not set, all resources of the specified resource type are eligible.\n   */\n  resourceIds?: ResourceIds;\n}\n\nexport interface ResourceType {\n  /**\n   * The type of the resource.\n   * @format GUID\n   */\n  _id?: string | null;\n  /**\n   * The name of the resource type.\n   * @readonly\n   * @maxLength 40\n   * @minLength 1\n   */\n  name?: string | null;\n}\n\n/** Details about the individual resources assigned to a service resource. */\nexport interface ResourceDetails {\n  /**\n   * List of resources assigned to this service resource.\n   * @maxSize 100\n   */\n  resources?: ResourceInfo[];\n}\n\n/** A resource assigned to a service resource. */\nexport interface ResourceInfo {\n  /**\n   * ID of the resource.\n   * @format GUID\n   * @readonly\n   */\n  _id?: string;\n  /**\n   * Display name of the resource (for example, `\"John Smith\"` or `\"Room A\"`).\n   * @readonly\n   * @maxLength 100\n   */\n  name?: string | null;\n}\n\nexport interface Slug {\n  /**\n   * 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`.\n   * @maxLength 500\n   */\n  name?: string;\n  /**\n   * 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.\n   * @readonly\n   */\n  custom?: boolean | null;\n  /**\n   * Date and time the slug was created. This is a system field.\n   * @readonly\n   */\n  _createdDate?: Date | null;\n}\n\nexport interface URLs {\n  /**\n   * The URL for the service page.\n   * @readonly\n   */\n  servicePage?: string;\n  /**\n   * The URL for the booking entry point. It can be either to the calendar or to the service page.\n   * @readonly\n   */\n  bookingPage?: string;\n  /**\n   * The URL for the calendar. Can be empty if no calendar exists.\n   * @readonly\n   */\n  calendarPage?: string;\n}\n\nexport interface ExtendedFields {\n  /**\n   * Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\n   * The value of each key is structured according to the schema defined when the extended fields were configured.\n   *\n   * You can only access fields for which you have the appropriate permissions.\n   *\n   * Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).\n   */\n  namespaces?: Record<string, Record<string, any>>;\n}\n\n/**\n * 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.\n * The search engines use this information for ranking purposes, or to display snippets in the search results.\n * This data will override other sources of tags (for example patterns) and will be included in the <head> section of the HTML document, while not being displayed on the page itself.\n */\nexport interface SeoSchema {\n  /** SEO tag information. */\n  tags?: Tag[];\n  /** SEO general settings. */\n  settings?: Settings;\n}\n\nexport interface Keyword {\n  /** Keyword value. */\n  term?: string;\n  /** Whether the keyword is the main focus keyword. */\n  isMain?: boolean;\n  /**\n   * The source that added the keyword terms to the SEO settings.\n   * @maxLength 1000\n   */\n  origin?: string | null;\n}\n\nexport interface Tag {\n  /**\n   * SEO tag type.\n   *\n   *\n   * Supported values: `title`, `meta`, `script`, `link`.\n   */\n  type?: string;\n  /**\n   * A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\n   * For example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.\n   */\n  props?: Record<string, any> | null;\n  /** SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`. */\n  meta?: Record<string, any> | null;\n  /** SEO tag inner content. For example, `<title> inner content </title>`. */\n  children?: string;\n  /** Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages). */\n  custom?: boolean;\n  /** Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines. */\n  disabled?: boolean;\n}\n\nexport interface Settings {\n  /**\n   * 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.\n   *\n   *\n   * Default: `false` (automatical redirect is enabled).\n   */\n  preventAutoRedirect?: boolean;\n  /**\n   * User-selected keyword terms for a specific page.\n   * @maxSize 5\n   */\n  keywords?: Keyword[];\n}\n\nexport interface AddOnGroup {\n  /**\n   * ID of the add-on group.\n   * Wix Bookings automatically populates this field when creating or updating an add-on group.\n   * @readonly\n   * @format GUID\n   */\n  _id?: string | null;\n  /**\n   * Name of the add-on group.\n   * @maxLength 100\n   */\n  name?: string | null;\n  /**\n   * 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.\n   * When empty, there's no upper limit.\n   */\n  maxNumberOfAddOns?: number | null;\n  /**\n   * 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.\n   * @format GUID\n   * @maxSize 7\n   */\n  addOnIds?: string[] | null;\n  /**\n   * Description or instructional prompt of the add-on group that's displayed to customers when booking the service.\n   * @maxLength 200\n   */\n  prompt?: string | null;\n}\n\nexport interface AddOnDetails {\n  /**\n   * ID of the add-on.\n   * @format GUID\n   */\n  addOnId?: string | null;\n  /**\n   * Duration in minutes for add-ons that extend service time.\n   * Empty for [quantity-based add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction#terminology).\n   */\n  durationInMinutes?: number | null;\n}\n\n/** `TaxableAddress` defines the taxable address used for the service. */\nexport interface TaxableAddress {\n  /** Taxable address type. */\n  taxableAddressType?: TaxableAddressTypeWithLiterals;\n}\n\nexport enum TaxableAddressType {\n  BUSINESS = 'BUSINESS',\n  BILLING = 'BILLING',\n}\n\n/** @enumType */\nexport type TaxableAddressTypeWithLiterals =\n  | TaxableAddressType\n  | 'BUSINESS'\n  | 'BILLING';\n\nexport interface PhoneCall {\n  /** Whether the service is delivered via phone call. */\n  enabled?: boolean | null;\n}\n\nexport interface CursorPagingMetadata {\n  /** Number of items returned in the response. */\n  count?: number | null;\n  /** Cursor strings that point to the next page, previous page, or both. */\n  cursors?: Cursors;\n  /**\n   * Whether there are more pages to retrieve following the current page.\n   *\n   * + `true`: Another page of results can be retrieved.\n   * + `false`: This is the last page.\n   */\n  hasNext?: boolean | null;\n}\n\nexport interface Cursors {\n  /**\n   * Cursor string pointing to the next page in the list of results.\n   * @maxLength 16000\n   */\n  next?: string | null;\n  /**\n   * Cursor pointing to the previous page in the list of results.\n   * @maxLength 16000\n   */\n  prev?: string | null;\n}\n\n/**\n * Retrieves services from the catalog that match the given filters, each enriched with availability data.\n *\n * Applies location, resource type, and attribute filters, then narrows the catalog using the provided\n * WQL query. When a date range is specified in `serviceFilters`, only services with bookable slots in\n * that window are returned. Without a date range, all filtered services are returned, each marked as\n * available.\n *\n * To get complete result pages when filtering by availability, specify `query.cursorPaging`. Without it,\n * a single page of filtered results is returned without backfilling to the requested page size.\n * @public\n * @documentationMaturity preview\n * @permissionId bookings:catalog_search:v1:catalog_search:query_services_by_filters\n * @applicableIdentity APP\n * @fqn wix.bookings.catalog.search.v1.CatalogSearch.QueryServicesByFilters\n */\nexport async function queryServicesByFilters(\n  options?: QueryServicesByFiltersOptions\n): Promise<\n  NonNullablePaths<\n    QueryServicesByFiltersResponse,\n    | `results`\n    | `results.${number}.service.type`\n    | `results.${number}.service.category._id`\n    | `results.${number}.service.form._id`\n    | `results.${number}.service.payment.rateType`\n    | `results.${number}.service.payment.addOnOption`\n    | `results.${number}.service.bookingPolicy._id`\n    | `results.${number}.service.taxableAddress.taxableAddressType`\n    | `results.${number}.available`,\n    6\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    query: options?.query,\n    serviceFilters: options?.serviceFilters,\n  });\n\n  const reqOpts =\n    ambassadorWixBookingsCatalogSearchV1CatalogSearch.queryServicesByFilters(\n      payload\n    );\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(\n      transformPaths(result.data, [\n        {\n          transformFn: transformRESTImageToSDKImage,\n          paths: [\n            { path: 'results.service.media.items.image' },\n            { path: 'results.service.media.mainMedia.image' },\n            { path: 'results.service.media.coverMedia.image' },\n            { path: 'results.service.staffMembers.mainMedia.image' },\n            {\n              path: 'results.service.staffMemberDetails.staffMembers.mainMedia.image',\n            },\n          ],\n        },\n        {\n          transformFn: transformRESTAddressToSDKAddress,\n          paths: [\n            { path: 'results.service.locations.calculatedAddress' },\n            { path: 'results.service.locations.business.address' },\n            { path: 'results.service.locations.custom.address' },\n          ],\n        },\n        {\n          transformFn: transformRESTPageURLV2ToSDKPageURLV2,\n          paths: [\n            { path: 'results.service.urls.servicePage' },\n            { path: 'results.service.urls.bookingPage' },\n            { path: 'results.service.urls.calendarPage' },\n          ],\n        },\n      ])\n    )!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: {\n          query: '$[0].query',\n          serviceFilters: '$[0].serviceFilters',\n        },\n        singleArgumentUnchanged: false,\n      },\n      ['options']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\nexport interface QueryServicesByFiltersOptions {\n  /**\n   * Query against the service catalog: WQL filter, sort, and cursor paging.\n   *\n   * Default: `query.cursorPaging.limit` is `10`.\n   */\n  query?: CursorQuery;\n  /**\n   * Availability and resource constraints applied on top of the service query.\n   * When absent, no availability check is performed and all pre-filtered services are returned.\n   */\n  serviceFilters?: ServiceFilters;\n}\n","import { transformRESTFloatToSDKFloat } from '@wix/sdk-runtime/transformations/float';\nimport { transformRESTTimestampToSDKTimestamp } from '@wix/sdk-runtime/transformations/timestamp';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { resolveUrl } from '@wix/sdk-runtime/rest-modules';\nimport { ResolveUrlOpts } from '@wix/sdk-runtime/rest-modules';\nimport { RequestOptionsFactory } from '@wix/sdk-types';\n\nfunction resolveWixBookingsCatalogSearchV1CatalogSearchUrl(\n  opts: Omit<ResolveUrlOpts, 'domainToMappings'>\n) {\n  const domainToMappings = {\n    _: [\n      {\n        srcPath: '/_api/bookings/v1/catalog/search',\n        destPath: '/v1/catalog/search',\n      },\n    ],\n    'www.wixapis.com': [\n      {\n        srcPath: '/bookings/catalog-search/v1/catalog/search/services/query',\n        destPath: '/v1/catalog/search/services/query',\n      },\n    ],\n    '*.dev.wix-code.com': [\n      {\n        srcPath: '/bookings/catalog-search/v1/catalog/search/services/query',\n        destPath: '/v1/catalog/search/services/query',\n      },\n    ],\n  };\n\n  return resolveUrl(Object.assign(opts, { domainToMappings }));\n}\n\nconst PACKAGE_NAME = '@wix/auto_sdk_bookings_catalog-search';\n\n/**\n * Retrieves services from the catalog that match the given filters, each enriched with availability data.\n *\n * Applies location, resource type, and attribute filters, then narrows the catalog using the provided\n * WQL query. When a date range is specified in `serviceFilters`, only services with bookable slots in\n * that window are returned. Without a date range, all filtered services are returned, each marked as\n * available.\n *\n * To get complete result pages when filtering by availability, specify `query.cursorPaging`. Without it,\n * a single page of filtered results is returned without backfilling to the requested page size.\n */\nexport function queryServicesByFilters(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __queryServicesByFilters({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.bookings.catalog_search.v1.catalog_search',\n      method: 'POST' as any,\n      methodFqn:\n        'wix.bookings.catalog.search.v1.CatalogSearch.QueryServicesByFilters',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixBookingsCatalogSearchV1CatalogSearchUrl({\n        protoPath: '/v1/catalog/search/services/query',\n        data: payload,\n        host,\n      }),\n      data: payload,\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTTimestampToSDKTimestamp,\n            paths: [\n              { path: 'results.service.createdDate' },\n              { path: 'results.service.updatedDate' },\n              { path: 'results.service.media.items.image.urlExpirationDate' },\n              {\n                path: 'results.service.media.mainMedia.image.urlExpirationDate',\n              },\n              {\n                path: 'results.service.media.coverMedia.image.urlExpirationDate',\n              },\n              {\n                path: 'results.service.payment.subscription.recurringStartDate',\n              },\n              { path: 'results.service.bookingPolicy.createdDate' },\n              { path: 'results.service.bookingPolicy.updatedDate' },\n              { path: 'results.service.schedule.firstSessionStart' },\n              { path: 'results.service.schedule.lastSessionEnd' },\n              {\n                path: 'results.service.staffMembers.mainMedia.image.urlExpirationDate',\n              },\n              {\n                path: 'results.service.staffMemberDetails.staffMembers.mainMedia.image.urlExpirationDate',\n              },\n              { path: 'results.service.supportedSlugs.createdDate' },\n              { path: 'results.service.mainSlug.createdDate' },\n            ],\n          },\n          {\n            transformFn: transformRESTFloatToSDKFloat,\n            paths: [\n              {\n                path: 'results.service.locations.business.address.geocode.latitude',\n              },\n              {\n                path: 'results.service.locations.business.address.geocode.longitude',\n              },\n              {\n                path: 'results.service.locations.custom.address.geocode.latitude',\n              },\n              {\n                path: 'results.service.locations.custom.address.geocode.longitude',\n              },\n              {\n                path: 'results.service.locations.calculatedAddress.geocode.latitude',\n              },\n              {\n                path: 'results.service.locations.calculatedAddress.geocode.longitude',\n              },\n            ],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __queryServicesByFilters;\n}\n","import { HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport {\n  QueryServicesByFiltersOptions,\n  QueryServicesByFiltersResponse,\n  queryServicesByFilters as universalQueryServicesByFilters,\n} from './bookings-catalog-search-v1-catalog-search-catalog-search.universal.js';\n\nexport const __metadata = { PACKAGE_NAME: '@wix/bookings' };\n\nexport function queryServicesByFilters(\n  httpClient: HttpClient\n): QueryServicesByFiltersSignature {\n  return (options?: QueryServicesByFiltersOptions) =>\n    universalQueryServicesByFilters(\n      options,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface QueryServicesByFiltersSignature {\n  /**\n   * Retrieves services from the catalog that match the given filters, each enriched with availability data.\n   *\n   * Applies location, resource type, and attribute filters, then narrows the catalog using the provided\n   * WQL query. When a date range is specified in `serviceFilters`, only services with bookable slots in\n   * that window are returned. Without a date range, all filtered services are returned, each marked as\n   * available.\n   *\n   * To get complete result pages when filtering by availability, specify `query.cursorPaging`. Without it,\n   * a single page of filtered results is returned without backfilling to the requested page size.\n   */\n  (options?: QueryServicesByFiltersOptions): Promise<\n    NonNullablePaths<\n      QueryServicesByFiltersResponse,\n      | `results`\n      | `results.${number}.service.type`\n      | `results.${number}.service.category._id`\n      | `results.${number}.service.form._id`\n      | `results.${number}.service.payment.rateType`\n      | `results.${number}.service.payment.addOnOption`\n      | `results.${number}.service.bookingPolicy._id`\n      | `results.${number}.service.taxableAddress.taxableAddressType`\n      | `results.${number}.available`,\n      6\n    >\n  >;\n}\n\nexport {\n  AddOnDetails,\n  AddOnGroup,\n  AddOnPaymentOptions,\n  Address,\n  AddressLocation,\n  AddressStreetOneOf,\n  Attribute,\n  AttributeValueOneOf,\n  AvailabilityConstraints,\n  BookAfterStartPolicy,\n  BookingPolicy,\n  BusinessLocationOptions,\n  CancellationFeePolicy,\n  CancellationPolicy,\n  CancellationWindow,\n  CancellationWindowFeeOneOf,\n  CatalogSearchResult,\n  Category,\n  CompletionRequirement,\n  Conferencing,\n  CursorPaging,\n  CursorPagingMetadata,\n  CursorQuery,\n  CursorQueryPagingMethodOneOf,\n  Cursors,\n  CustomLocationOptions,\n  CustomOptions,\n  CustomPayment,\n  DailyConfig,\n  DepositDetails,\n  DepositDetailsValueOneOf,\n  DiscountInfo,\n  Duration,\n  DurationRange,\n  DurationRangeConfigOneOf,\n  ExtendedFields,\n  FirstChargeDateType,\n  FixedPayment,\n  Form,\n  FormSettings,\n  FrequencyType,\n  FullUpfrontPayment,\n  HourlyConfig,\n  IntakeFormPolicy,\n  Keyword,\n  LimitEarlyBookingPolicy,\n  LimitLateBookingPolicy,\n  LimitRebookingPolicy,\n  Location,\n  LocationOptionsOneOf,\n  LocationType,\n  Media,\n  MediaItem,\n  MediaItemItemOneOf,\n  Mode,\n  Money,\n  NumberRange,\n  NumberValues,\n  OnlineBooking,\n  ParticipantsPolicy,\n  Payment,\n  PaymentOptions,\n  PaymentRateOneOf,\n  PhoneCall,\n  PolicyDescription,\n  QueryServicesByFiltersOptions,\n  QueryServicesByFiltersRequest,\n  QueryServicesByFiltersResponse,\n  RankingOptions,\n  RankingOrder,\n  RateType,\n  ReschedulePolicy,\n  ResourceDetails,\n  ResourceGroup,\n  ResourceIds,\n  ResourceInfo,\n  ResourceType,\n  ResourcesPolicy,\n  SaveCreditCardPolicy,\n  Schedule,\n  SeoSchema,\n  Service,\n  ServiceFilters,\n  ServiceResource,\n  ServiceResourceSelectionOneOf,\n  ServiceType,\n  ServiceWithAvailability,\n  Settings,\n  Slug,\n  SortOrder,\n  Sorting,\n  SortingMethodType,\n  StaffMediaItem,\n  StaffMediaItemItemOneOf,\n  StaffMember,\n  StaffMemberDetails,\n  StaffSortingPolicy,\n  StaffSortingPolicyOptionsOneOf,\n  StreetAddress,\n  SubscriptionPayment,\n  Tag,\n  TaxableAddress,\n  TaxableAddressType,\n  Timing,\n  URLs,\n  UnitType,\n  VariedPayment,\n  WaitlistPolicy,\n  WorkingHours,\n  WorkingHoursLocationCoverage,\n} from './bookings-catalog-search-v1-catalog-search-catalog-search.universal.js';\n","import { queryServicesByFilters as publicQueryServicesByFilters } from './bookings-catalog-search-v1-catalog-search-catalog-search.public.js';\nimport { createRESTModule } from '@wix/sdk-runtime/rest-modules';\nimport { BuildRESTFunction, MaybeContext } from '@wix/sdk-types';\n\nexport const queryServicesByFilters: MaybeContext<\n  BuildRESTFunction<typeof publicQueryServicesByFilters> &\n    typeof publicQueryServicesByFilters\n> = /*#__PURE__*/ createRESTModule(publicQueryServicesByFilters);\n\nexport {\n  SortOrder,\n  ServiceType,\n  RateType,\n  FrequencyType,\n  FirstChargeDateType,\n  AddOnPaymentOptions,\n  LocationType,\n  RankingOrder,\n  SortingMethodType,\n  Timing,\n  CompletionRequirement,\n  UnitType,\n  Mode,\n  TaxableAddressType,\n} from './bookings-catalog-search-v1-catalog-search-catalog-search.universal.js';\nexport {\n  CatalogSearchResult,\n  QueryServicesByFiltersRequest,\n  CursorQuery,\n  CursorQueryPagingMethodOneOf,\n  Sorting,\n  CursorPaging,\n  ServiceFilters,\n  Attribute,\n  AttributeValueOneOf,\n  NumberRange,\n  NumberValues,\n  QueryServicesByFiltersResponse,\n  ServiceWithAvailability,\n  Service,\n  Media,\n  MediaItem,\n  MediaItemItemOneOf,\n  Category,\n  Form,\n  FormSettings,\n  Payment,\n  PaymentRateOneOf,\n  FixedPayment,\n  Money,\n  DepositDetails,\n  DepositDetailsValueOneOf,\n  CustomPayment,\n  VariedPayment,\n  SubscriptionPayment,\n  FullUpfrontPayment,\n  PaymentOptions,\n  DiscountInfo,\n  OnlineBooking,\n  Conferencing,\n  Location,\n  LocationOptionsOneOf,\n  Address,\n  AddressStreetOneOf,\n  StreetAddress,\n  AddressLocation,\n  BusinessLocationOptions,\n  CustomLocationOptions,\n  BookingPolicy,\n  PolicyDescription,\n  LimitEarlyBookingPolicy,\n  LimitLateBookingPolicy,\n  BookAfterStartPolicy,\n  CancellationPolicy,\n  ReschedulePolicy,\n  WaitlistPolicy,\n  ParticipantsPolicy,\n  ResourcesPolicy,\n  CancellationFeePolicy,\n  CancellationWindow,\n  CancellationWindowFeeOneOf,\n  SaveCreditCardPolicy,\n  StaffSortingPolicy,\n  StaffSortingPolicyOptionsOneOf,\n  RankingOptions,\n  CustomOptions,\n  IntakeFormPolicy,\n  LimitRebookingPolicy,\n  Schedule,\n  AvailabilityConstraints,\n  Duration,\n  DurationRange,\n  DurationRangeConfigOneOf,\n  HourlyConfig,\n  DailyConfig,\n  WorkingHours,\n  StaffMember,\n  StaffMediaItem,\n  StaffMediaItemItemOneOf,\n  WorkingHoursLocationCoverage,\n  StaffMemberDetails,\n  ResourceGroup,\n  ResourceIds,\n  ServiceResource,\n  ServiceResourceSelectionOneOf,\n  ResourceType,\n  ResourceDetails,\n  ResourceInfo,\n  Slug,\n  URLs,\n  ExtendedFields,\n  SeoSchema,\n  Keyword,\n  Tag,\n  Settings,\n  AddOnGroup,\n  AddOnDetails,\n  TaxableAddress,\n  PhoneCall,\n  CursorPagingMetadata,\n  Cursors,\n  QueryServicesByFiltersOptions,\n} from './bookings-catalog-search-v1-catalog-search-catalog-search.universal.js';\nexport {\n  SortOrderWithLiterals,\n  ServiceTypeWithLiterals,\n  RateTypeWithLiterals,\n  FrequencyTypeWithLiterals,\n  FirstChargeDateTypeWithLiterals,\n  AddOnPaymentOptionsWithLiterals,\n  LocationTypeWithLiterals,\n  RankingOrderWithLiterals,\n  SortingMethodTypeWithLiterals,\n  TimingWithLiterals,\n  CompletionRequirementWithLiterals,\n  UnitTypeWithLiterals,\n  ModeWithLiterals,\n  TaxableAddressTypeWithLiterals,\n} from './bookings-catalog-search-v1-catalog-search-catalog-search.universal.js';\n"],"mappings":"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","names":["payload","transformPaths","SortOrder","ServiceType","RateType","FrequencyType","FirstChargeDateType","AddOnPaymentOptions","LocationType","RankingOrder","SortingMethodType","Timing","CompletionRequirement","UnitType","Mode","TaxableAddressType","queryServicesByFilters","queryServicesByFilters","queryServicesByFilters"]}