@wix/auto_sdk_bookings_catalog-search 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/build/cjs/index.d.ts +1784 -0
  2. package/build/cjs/index.js +304 -0
  3. package/build/cjs/index.js.map +1 -0
  4. package/build/cjs/index.typings.d.ts +1 -0
  5. package/build/cjs/index.typings.js +291 -0
  6. package/build/cjs/index.typings.js.map +1 -0
  7. package/build/cjs/meta.d.ts +1825 -0
  8. package/build/cjs/meta.js +240 -0
  9. package/build/cjs/meta.js.map +1 -0
  10. package/build/es/index.d.mts +1784 -0
  11. package/build/es/index.mjs +267 -0
  12. package/build/es/index.mjs.map +1 -0
  13. package/build/es/index.typings.d.mts +1 -0
  14. package/build/es/index.typings.mjs +254 -0
  15. package/build/es/index.typings.mjs.map +1 -0
  16. package/build/es/meta.d.mts +1825 -0
  17. package/build/es/meta.mjs +200 -0
  18. package/build/es/meta.mjs.map +1 -0
  19. package/build/es/package.json +3 -0
  20. package/build/internal/cjs/index.d.ts +22 -0
  21. package/build/internal/cjs/index.js +304 -0
  22. package/build/internal/cjs/index.js.map +1 -0
  23. package/build/internal/cjs/index.typings.d.ts +1862 -0
  24. package/build/internal/cjs/index.typings.js +291 -0
  25. package/build/internal/cjs/index.typings.js.map +1 -0
  26. package/build/internal/cjs/meta.d.ts +1826 -0
  27. package/build/internal/cjs/meta.js +240 -0
  28. package/build/internal/cjs/meta.js.map +1 -0
  29. package/build/internal/es/index.d.mts +22 -0
  30. package/build/internal/es/index.mjs +267 -0
  31. package/build/internal/es/index.mjs.map +1 -0
  32. package/build/internal/es/index.typings.d.mts +1862 -0
  33. package/build/internal/es/index.typings.mjs +254 -0
  34. package/build/internal/es/index.typings.mjs.map +1 -0
  35. package/build/internal/es/meta.d.mts +1826 -0
  36. package/build/internal/es/meta.mjs +200 -0
  37. package/build/internal/es/meta.mjs.map +1 -0
  38. package/meta/package.json +3 -0
  39. package/package.json +55 -0
@@ -0,0 +1,1862 @@
1
+ import { NonNullablePaths } from '@wix/sdk-types';
2
+
3
+ interface CatalogSearchResult {
4
+ /** @format GUID */
5
+ _id?: string;
6
+ }
7
+ interface QueryServicesByAvailabilityRequest {
8
+ /**
9
+ * Query against the service catalog — WQL filter, sort, and cursor paging.
10
+ * Supports the same fields as QueryServices.
11
+ */
12
+ query?: QueryV2;
13
+ /**
14
+ * Availability and resource constraints applied on top of the service query.
15
+ * When absent, no availability check is performed and all pre-filtered services are returned.
16
+ */
17
+ availabilityFilter?: AvailabilityFilter;
18
+ }
19
+ interface QueryV2 extends QueryV2PagingMethodOneOf {
20
+ paging?: Paging;
21
+ filter?: Record<string, any> | null;
22
+ /** @maxSize 50 */
23
+ sort?: Sorting[];
24
+ }
25
+ /** @oneof */
26
+ interface QueryV2PagingMethodOneOf {
27
+ paging?: Paging;
28
+ }
29
+ interface Sorting {
30
+ /**
31
+ * Name of the field to sort by.
32
+ * @maxLength 512
33
+ */
34
+ fieldName?: string;
35
+ /** Sort order. */
36
+ order?: SortOrderWithLiterals;
37
+ }
38
+ declare enum SortOrder {
39
+ ASC = "ASC",
40
+ DESC = "DESC"
41
+ }
42
+ /** @enumType */
43
+ type SortOrderWithLiterals = SortOrder | 'ASC' | 'DESC';
44
+ interface Paging {
45
+ /** Number of items to load. */
46
+ limit?: number | null;
47
+ /** Number of items to skip in the current sort order. */
48
+ offset?: number | null;
49
+ }
50
+ interface CursorPaging {
51
+ /**
52
+ * Maximum number of items to return in the results.
53
+ * @max 100
54
+ */
55
+ limit?: number | null;
56
+ /**
57
+ * Pointer to the next or previous page in the list of results.
58
+ *
59
+ * Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response.
60
+ * Not relevant for the first request.
61
+ * @maxLength 16000
62
+ */
63
+ cursor?: string | null;
64
+ }
65
+ interface AvailabilityFilter {
66
+ /**
67
+ * Start of the availability window (ISO local date-time, e.g. "2024-03-25T09:00:00").
68
+ * Must be provided together with local_end_date.
69
+ * @format LOCAL_DATE_TIME
70
+ */
71
+ localStartDate?: string | null;
72
+ /**
73
+ * End of the availability window (ISO local date-time, e.g. "2024-03-25T17:00:00").
74
+ * Must be provided together with local_start_date.
75
+ * @format LOCAL_DATE_TIME
76
+ */
77
+ localEndDate?: string | null;
78
+ /**
79
+ * IANA time zone identifier (e.g. "America/New_York"). Required when a date range is provided.
80
+ * @maxLength 100
81
+ */
82
+ timeZone?: string | null;
83
+ /**
84
+ * When true: the service must be bookable for the entire requested range.
85
+ * - Hours range (< 2 days): a single booking must fit the full range duration.
86
+ * - Days range (≥ 2 days): the service must have available slots on every day.
87
+ * When false (default): the service needs at least one bookable slot anywhere within the range.
88
+ */
89
+ exactMatch?: boolean | null;
90
+ /**
91
+ * Filters services to those whose resources are available at these business locations.
92
+ * If empty, no location-based resource filtering is applied.
93
+ * Note: at most 200 matching resources are scanned for the location/resource_type pre-filter;
94
+ * beyond that the filtered set is truncated and results may be imprecise.
95
+ * @maxSize 100
96
+ * @format GUID
97
+ */
98
+ locationIds?: string[];
99
+ /**
100
+ * Filters services to those that have a resource matching the requested attributes. Values given
101
+ * for the same attribute are OR'd (match any); values for different attributes are AND'd (match all).
102
+ * If empty, no attribute filtering is applied.
103
+ * Note: at most 1,000 matching attribute values are scanned across all conditions; beyond that the
104
+ * set is truncated and results may be imprecise.
105
+ * @maxSize 10
106
+ */
107
+ attributes?: Attribute[];
108
+ /**
109
+ * Filters services to those that use resources of the given types (e.g. "STAFF", "ROOM").
110
+ * If empty, all resource types are included.
111
+ * Note: see `locations` for the 200-resource pre-filter scan limit.
112
+ * @maxSize 10
113
+ * @maxLength 100
114
+ */
115
+ resourceTypes?: string[];
116
+ /**
117
+ * When true, unavailable services are included in the response with available=false.
118
+ * When absent or false, only available services are returned.
119
+ */
120
+ includeUnavailable?: boolean | null;
121
+ }
122
+ /**
123
+ * Filters resources by a single attribute value.
124
+ * Exactly one value variant must be set, matching the attribute definition's value_type.
125
+ */
126
+ interface Attribute extends AttributeValueOneOf {
127
+ /**
128
+ * Exact enum value to match. Must be in the attribute's EnumConfig.allowed_values.
129
+ * @maxLength 40
130
+ */
131
+ enumValue?: string;
132
+ /** Exact number value to match. */
133
+ numberValue?: number;
134
+ /** Exact boolean value to match. */
135
+ boolValue?: boolean;
136
+ /**
137
+ * ID of the attribute definition to filter by.
138
+ * @format GUID
139
+ */
140
+ attributeId?: string;
141
+ }
142
+ /** @oneof */
143
+ interface AttributeValueOneOf {
144
+ /**
145
+ * Exact enum value to match. Must be in the attribute's EnumConfig.allowed_values.
146
+ * @maxLength 40
147
+ */
148
+ enumValue?: string;
149
+ /** Exact number value to match. */
150
+ numberValue?: number;
151
+ /** Exact boolean value to match. */
152
+ boolValue?: boolean;
153
+ }
154
+ interface QueryServicesByAvailabilityResponse {
155
+ /** Services matching the query, each enriched with availability data. */
156
+ results?: ServiceWithAvailability[];
157
+ /**
158
+ * Paging metadata. The cursor in `paging_metadata.cursors.next` is an opaque token owned by CatalogSearch.
159
+ * Pass it unchanged in the next request's `query.cursor_paging.cursor`.
160
+ * Do not assume any relationship between this cursor and the internal cursors of services-2 or other upstream services.
161
+ */
162
+ pagingMetadata?: CursorPagingMetadata;
163
+ }
164
+ /** A service enriched with availability data. */
165
+ interface ServiceWithAvailability {
166
+ /** The service entity. */
167
+ service?: Service;
168
+ /**
169
+ * Whether the service has available slots in the requested window.
170
+ * Always true when no date range was provided.
171
+ */
172
+ available?: boolean;
173
+ }
174
+ /** The `service` object represents an offering that a business provides to its customers. */
175
+ interface Service {
176
+ /**
177
+ * Service ID.
178
+ * @format GUID
179
+ * @readonly
180
+ */
181
+ _id?: string | null;
182
+ /**
183
+ * ID of the app associated with the service. You can't update `appId`.
184
+ * Services are displayed in Wix Bookings only if they are associated with the Wix Bookings appId or have no associated app ID.
185
+ * Default: `13d21c63-b5ec-5912-8397-c3a5ddb27a97` (Wix Bookings app ID)
186
+ * For services from Wix apps, the following values apply:
187
+ * - Wix Bookings: `"13d21c63-b5ec-5912-8397-c3a5ddb27a97"`
188
+ * - Wix Services: `"cc552162-24a4-45e0-9695-230c4931ef40"`
189
+ * - 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.-->
190
+ * [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).
191
+ * <!-- 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). -->
192
+ * @format GUID
193
+ * @immutable
194
+ */
195
+ appId?: string | null;
196
+ /**
197
+ * ID of the app that created the service. This field is used for analytics, auditing, and tracking creation sources.
198
+ * This read-only field is automatically populated during service creation by checking these sources in order:
199
+ * 1. The caller's App ID from the request identity context.
200
+ * 2. The service's `appId` field.
201
+ * 3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.
202
+ * <!-- 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). -->
203
+ * @format GUID
204
+ * @readonly
205
+ */
206
+ createdByAppId?: string | null;
207
+ /**
208
+ * Service type.
209
+ * Learn more about [service types](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-types).
210
+ */
211
+ type?: ServiceTypeWithLiterals;
212
+ /** Order of the service within a [category](https://dev.wix.com/docs/rest/business-solutions/bookings/services/categories-v1/category-object). */
213
+ sortOrder?: number | null;
214
+ /**
215
+ * Service name.
216
+ * @maxLength 400
217
+ * @minLength 1
218
+ */
219
+ name?: string | null;
220
+ /**
221
+ * Service description. For example, `High-class hair styling, cuts, straightening and color`.
222
+ * @maxLength 7000
223
+ */
224
+ description?: string | null;
225
+ /**
226
+ * Short service description, such as `Hair styling`.
227
+ * @maxLength 6000
228
+ */
229
+ tagLine?: string | null;
230
+ /**
231
+ * Default maximum number of customers that can book the service. The service cannot be booked beyond this capacity.
232
+ * @min 1
233
+ * @max 1000
234
+ */
235
+ defaultCapacity?: number | null;
236
+ /** Media associated with the service. */
237
+ media?: Media;
238
+ /** Whether the service is hidden from Wix Bookings pages and widgets. */
239
+ hidden?: boolean | null;
240
+ /**
241
+ * [Category](https://dev.wix.com/docs/rest/business-solutions/bookings/services/categories-v2/introduction)
242
+ * the service is associated with. Services aren't automatically assigned to a category.
243
+ * Without an associated category, the service isn't visible on the live site.
244
+ */
245
+ category?: Category;
246
+ /** Form the customer filled out when booking the service. */
247
+ form?: Form;
248
+ /**
249
+ * Payment options for booking the service.
250
+ * Learn more about [service payments](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-payments).
251
+ */
252
+ payment?: Payment;
253
+ /** Online booking settings. */
254
+ onlineBooking?: OnlineBooking;
255
+ /** Conferencing options for the service. */
256
+ conferencing?: Conferencing;
257
+ /**
258
+ * 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).
259
+ * @immutable
260
+ * @maxSize 500
261
+ */
262
+ locations?: Location[];
263
+ /**
264
+ * [Policy](https://dev.wix.com/docs/rest/business-solutions/bookings/policies/booking-policies/introduction)
265
+ * 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.
266
+ */
267
+ bookingPolicy?: BookingPolicy;
268
+ /**
269
+ * The service's [schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction),
270
+ * which can be used to manage the service's [events](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).
271
+ */
272
+ schedule?: Schedule;
273
+ /**
274
+ * 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.
275
+ * Note that these are the resource IDs, not the staff member IDs.
276
+ *
277
+ * For appointment-based services, set this field when creating or updating the service.
278
+ * For classes and courses, this field is read-only and is automatically derived from staff assigned to the service's recurring scheduled sessions.
279
+ * Staff assigned only to single, non-recurring events are not included.
280
+ * Once all of a staff member's upcoming recurring sessions have ended, their ID is removed from this field.
281
+ * To retrieve the full list of staff for classes or courses, query the service's calendar events instead.
282
+ * 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).
283
+ * @maxSize 220
284
+ * @format GUID
285
+ */
286
+ staffMemberIds?: string[];
287
+ /** Staff members details. Returned only if `STAFF_MEMBER_DETAILS` conditional field was specified. */
288
+ staffMemberDetails?: StaffMemberDetails;
289
+ /**
290
+ * Information about which resources must be available so customers can book the service.
291
+ * For example, a meeting room or equipment.
292
+ * Some nested fields are only returned when specific conditional fields are requested:
293
+ * pass `RESOURCE_TYPE_DETAILS` to retrieve `resourceType.name`, and `RESOURCE_DETAILS` to retrieve `resourceDetails.resources`.
294
+ * @maxSize 3
295
+ */
296
+ serviceResources?: ServiceResource[];
297
+ /**
298
+ * A slug is the last part of the URL address that serves as a unique identifier of the service.
299
+ * The list of supported slugs includes past service names for backwards compatibility, and a custom slug if one was set by the business owner.
300
+ * @readonly
301
+ * @maxSize 100
302
+ */
303
+ supportedSlugs?: Slug[];
304
+ /**
305
+ * Active slug for the service.
306
+ * Learn more about [service slugs](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-slugs).
307
+ * @readonly
308
+ */
309
+ mainSlug?: Slug;
310
+ /**
311
+ * URLs to various service-related pages, such as the calendar page and the booking page.
312
+ * @readonly
313
+ */
314
+ urls?: URLs;
315
+ /** Extensions enabling users to save custom data related to the service. */
316
+ extendedFields?: ExtendedFields;
317
+ /** Custom SEO data for the service. */
318
+ seoData?: SeoSchema;
319
+ /**
320
+ * Date and time the service was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.
321
+ * @readonly
322
+ */
323
+ _createdDate?: Date | null;
324
+ /**
325
+ * Date and time the service was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.
326
+ * @readonly
327
+ */
328
+ _updatedDate?: Date | null;
329
+ /**
330
+ * Revision number, which increments by 1 each time the service is updated. To
331
+ * prevent conflicting changes, the existing revision must be used when updating
332
+ * a service.
333
+ * @readonly
334
+ */
335
+ revision?: string | null;
336
+ /**
337
+ * 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.
338
+ * @maxSize 3
339
+ */
340
+ addOnGroups?: AddOnGroup[];
341
+ /**
342
+ * 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.
343
+ * @readonly
344
+ * @maxSize 50
345
+ */
346
+ addOnDetails?: AddOnDetails[];
347
+ /** Taxable address used to calculate tax */
348
+ taxableAddress?: TaxableAddress;
349
+ /**
350
+ * The resource type ID that serves as the primary resource for this appointment service.
351
+ * The resource type used as the primary resource for slot assignment and availability resolution.
352
+ * Defaults to the staff resource type ID for backward compatibility when not set.
353
+ * @internal
354
+ * @format GUID
355
+ */
356
+ primaryResourceType?: string | null;
357
+ /** Whether to inherit resource locations for availability resolution. */
358
+ inheritResourceLocations?: boolean | null;
359
+ }
360
+ declare enum ServiceType {
361
+ /** Appointment-based service. */
362
+ APPOINTMENT = "APPOINTMENT",
363
+ /** Class service. */
364
+ CLASS = "CLASS",
365
+ /** Course service. */
366
+ COURSE = "COURSE"
367
+ }
368
+ /** @enumType */
369
+ type ServiceTypeWithLiterals = ServiceType | 'APPOINTMENT' | 'CLASS' | 'COURSE';
370
+ interface Media {
371
+ /**
372
+ * Media items associated with the service.
373
+ * @maxSize 100
374
+ */
375
+ items?: MediaItem[];
376
+ /** Primary media associated with the service. */
377
+ mainMedia?: MediaItem;
378
+ /** Cover media associated with the service. */
379
+ coverMedia?: MediaItem;
380
+ }
381
+ interface MediaItem extends MediaItemItemOneOf {
382
+ /** Details of the image associated with the service, such as URL and size. */
383
+ image?: string;
384
+ }
385
+ /** @oneof */
386
+ interface MediaItemItemOneOf {
387
+ /** Details of the image associated with the service, such as URL and size. */
388
+ image?: string;
389
+ }
390
+ interface Category {
391
+ /**
392
+ * Category ID.
393
+ * @format GUID
394
+ */
395
+ _id?: string;
396
+ /**
397
+ * Category name.
398
+ * @maxLength 500
399
+ * @readonly
400
+ */
401
+ name?: string | null;
402
+ /**
403
+ * Order of a category within a category list.
404
+ * @readonly
405
+ */
406
+ sortOrder?: number | null;
407
+ }
408
+ interface Form {
409
+ /**
410
+ * ID of the form associated with the service.
411
+ * The form information that you submit when booking includes contact details, participants, and other form fields set up for the service.
412
+ * You can manage the service booking form fields using the Bookings Forms API.
413
+ * @format GUID
414
+ */
415
+ _id?: string;
416
+ }
417
+ interface FormSettings {
418
+ /** Whether the service booking form should be hidden from the site. */
419
+ hidden?: boolean | null;
420
+ }
421
+ interface Payment extends PaymentRateOneOf {
422
+ /**
423
+ * The details for the fixed price of the service.
424
+ *
425
+ * Required when: `rateType` is `FIXED`
426
+ */
427
+ fixed?: FixedPayment;
428
+ /**
429
+ * The details for the custom price of the service.
430
+ *
431
+ * Required when: `rateType` is `CUSTOM`
432
+ */
433
+ custom?: CustomPayment;
434
+ /**
435
+ * The details for the varied pricing of the service.
436
+ * Read more about [varied price options](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online#offering-varied-price-options).
437
+ *
438
+ * Required when: `rateType` is `VARIED`
439
+ */
440
+ varied?: VariedPayment;
441
+ /**
442
+ * The details for the subscription pricing of the service.
443
+ *
444
+ * Required when: `rateType` is `SUBSCRIPTION`
445
+ * @internal
446
+ */
447
+ subscription?: SubscriptionPayment;
448
+ /** The rate the customer is expected to pay for the service. */
449
+ rateType?: RateTypeWithLiterals;
450
+ /** The payment options a customer can use to pay for the service. */
451
+ options?: PaymentOptions;
452
+ /**
453
+ * IDs of pricing plans that can be used as payment for the service.
454
+ * Read more about [service payment options](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/about-service-payments).
455
+ * @readonly
456
+ * @maxSize 75
457
+ * @format GUID
458
+ */
459
+ pricingPlanIds?: string[];
460
+ /**
461
+ * 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).
462
+ * If customers pay for the booking using any method other than a pricing plan, the value of this field is ignored.
463
+ */
464
+ addOnOption?: AddOnPaymentOptionsWithLiterals;
465
+ /**
466
+ * Estimated discount information for the service based on active [eCommerce discounts](https://dev.wix.com/docs/rest/business-solutions/e-commerce/extensions/discounts/introduction).
467
+ * The final discount is determined during eCommerce checkout and may differ from the estimate,
468
+ * for example when discounts depend on cart totals.
469
+ *
470
+ * A discount is considered active when its start time has passed and its end time hasn't.
471
+ * If multiple active discounts apply, the most recently created one is returned.
472
+ *
473
+ * Returned only when `DISCOUNT_INFO_DETAILS` is requested.
474
+ * @readonly
475
+ */
476
+ discountInfo?: DiscountInfo;
477
+ }
478
+ /** @oneof */
479
+ interface PaymentRateOneOf {
480
+ /**
481
+ * The details for the fixed price of the service.
482
+ *
483
+ * Required when: `rateType` is `FIXED`
484
+ */
485
+ fixed?: FixedPayment;
486
+ /**
487
+ * The details for the custom price of the service.
488
+ *
489
+ * Required when: `rateType` is `CUSTOM`
490
+ */
491
+ custom?: CustomPayment;
492
+ /**
493
+ * The details for the varied pricing of the service.
494
+ * Read more about [varied price options](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online#offering-varied-price-options).
495
+ *
496
+ * Required when: `rateType` is `VARIED`
497
+ */
498
+ varied?: VariedPayment;
499
+ /**
500
+ * The details for the subscription pricing of the service.
501
+ *
502
+ * Required when: `rateType` is `SUBSCRIPTION`
503
+ * @internal
504
+ */
505
+ subscription?: SubscriptionPayment;
506
+ }
507
+ declare enum RateType {
508
+ /** The service has a fixed price. */
509
+ FIXED = "FIXED",
510
+ /** The service has a custom price, expressed as a price description. */
511
+ CUSTOM = "CUSTOM",
512
+ /** This service is offered with a set of different prices based on different terms. */
513
+ VARIED = "VARIED",
514
+ /** This service is offered free of charge. */
515
+ NO_FEE = "NO_FEE",
516
+ /**
517
+ * The service has a subscription-based pricing model.
518
+ * @documentationMaturity preview
519
+ * @internal
520
+ */
521
+ SUBSCRIPTION = "SUBSCRIPTION"
522
+ }
523
+ /** @enumType */
524
+ type RateTypeWithLiterals = RateType | 'FIXED' | 'CUSTOM' | 'VARIED' | 'NO_FEE';
525
+ interface FixedPayment {
526
+ /**
527
+ * The fixed price required to book the service.
528
+ *
529
+ * Required when: `rateType` is `FIXED`
530
+ */
531
+ price?: Money;
532
+ /**
533
+ * The deposit price required to book the service.
534
+ *
535
+ * Required when: `rateType` is `FIXED` and `paymentOptions.deposit` is `true`
536
+ */
537
+ deposit?: Money;
538
+ /**
539
+ * Whether customers can choose to pay the full service price upfront instead of only the deposit.
540
+ *
541
+ * Used only when a `deposit` amount is set.
542
+ *
543
+ * Default: `false`.
544
+ */
545
+ fullUpfrontPaymentAllowed?: boolean | null;
546
+ }
547
+ /**
548
+ * Money.
549
+ * Default format to use. Sufficiently compliant with majority of standards: w3c, ISO 4217, ISO 20022, ISO 8583:2003.
550
+ */
551
+ interface Money {
552
+ /**
553
+ * Monetary amount. Decimal string with a period as a decimal separator. For example `25.05`.
554
+ * @format DECIMAL_VALUE
555
+ * @decimalValue options { gt:0, maxScale:2 }
556
+ */
557
+ value?: string;
558
+ /**
559
+ * Currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217). For example, `USD`.
560
+ * @format CURRENCY
561
+ * @readonly
562
+ */
563
+ currency?: string;
564
+ /**
565
+ * Monetary amount. Decimal string in local format. For example, `1 000,30`.
566
+ * @maxLength 50
567
+ */
568
+ formattedValue?: string | null;
569
+ }
570
+ interface CustomPayment {
571
+ /**
572
+ * A custom description explaining to the customer how to pay for the service.
573
+ * @maxLength 50
574
+ */
575
+ description?: string | null;
576
+ }
577
+ interface VariedPayment {
578
+ /** The default price for the service without any variants. It will also be used as the default price for any new variant. */
579
+ defaultPrice?: Money;
580
+ /**
581
+ * The deposit price required to book the service.
582
+ *
583
+ * Required when: `rateType` is `VARIED` and `paymentOptions.deposit` is `true`
584
+ */
585
+ deposit?: Money;
586
+ /**
587
+ * The minimal price a customer may pay for this service, based on its variants.
588
+ * @readonly
589
+ */
590
+ minPrice?: Money;
591
+ /**
592
+ * The maximum price a customer may pay for this service, based on its variants.
593
+ * @readonly
594
+ */
595
+ maxPrice?: Money;
596
+ /**
597
+ * Whether customers can choose to pay the full service price upfront instead of only the deposit.
598
+ *
599
+ * Used only when a `deposit` amount is set.
600
+ *
601
+ * Default: `false`.
602
+ */
603
+ fullUpfrontPaymentAllowed?: boolean | null;
604
+ }
605
+ interface SubscriptionPayment {
606
+ /** Amount charged each billing cycle. */
607
+ amountPerBillingCycle?: Money;
608
+ /** Billing frequency used for recurring subscription charges. */
609
+ frequency?: FrequencyTypeWithLiterals;
610
+ /**
611
+ * Total number of recurring payments in the subscription.
612
+ * Value must be greater than `1`.
613
+ * Required when: `rateType` is `SUBSCRIPTION`
614
+ * @min 2
615
+ */
616
+ totalPayments?: number | null;
617
+ /** When the first recurring payment is charged. */
618
+ firstChargeDate?: FirstChargeDateTypeWithLiterals;
619
+ /**
620
+ * Date and time when recurring payments start in `YYYY-MM-DDThh:mm:ss.sssZ` format.
621
+ * When `firstChargeDate` is `SCHEDULED`, the first charge occurs on this date.
622
+ * When `firstChargeDate` is `CHECKOUT`, the first charge occurs at checkout and recurring billing begins on this date.
623
+ * Required when: `rateType` is `SUBSCRIPTION`. Sets the future billing cycle dates.
624
+ */
625
+ recurringStartDate?: Date | null;
626
+ /**
627
+ * Deprecated.
628
+ * @deprecated Deprecated.
629
+ * @targetRemovalDate 2026-07-01
630
+ */
631
+ enrollmentFeeAmount?: Money;
632
+ /**
633
+ * Deprecated.
634
+ * @deprecated Deprecated.
635
+ * @targetRemovalDate 2026-07-01
636
+ */
637
+ fullUpfrontPayment?: FullUpfrontPayment;
638
+ }
639
+ declare enum FrequencyType {
640
+ /** Payment is charged once every month. */
641
+ MONTHLY = "MONTHLY"
642
+ }
643
+ /** @enumType */
644
+ type FrequencyTypeWithLiterals = FrequencyType | 'MONTHLY';
645
+ declare enum FirstChargeDateType {
646
+ /** Charge the first billing cycle at checkout. */
647
+ CHECKOUT = "CHECKOUT",
648
+ /** Charge the first billing cycle on the `recurringStartDate`. */
649
+ SCHEDULED = "SCHEDULED"
650
+ }
651
+ /** @enumType */
652
+ type FirstChargeDateTypeWithLiterals = FirstChargeDateType | 'CHECKOUT' | 'SCHEDULED';
653
+ interface FullUpfrontPayment {
654
+ /** Whether customers can choose a one-time full payment instead of recurring subscription payments. */
655
+ supported?: boolean | null;
656
+ /**
657
+ * Percentage discount applied when a customer chooses the full payment option.
658
+ * Min: `0.01` percent
659
+ * Max: `100` percent
660
+ * @format DECIMAL_VALUE
661
+ * @decimalValue options { gte:0.01, lte:100, maxScale:2 }
662
+ */
663
+ discountPercent?: string | null;
664
+ }
665
+ interface PaymentOptions {
666
+ /**
667
+ * Customers can pay for the service online.
668
+ * When `true`:
669
+ * + `rateType` must be `FIXED` or `VARIED`.
670
+ * + `fixed.price` or `varied.defaultPrice` must be specified respectively.
671
+ * Read more about [getting paid online](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online).
672
+ */
673
+ online?: boolean | null;
674
+ /** Customers can pay for the service in person. */
675
+ inPerson?: boolean | null;
676
+ /**
677
+ * This service requires a deposit to be made online in order to book it.
678
+ * When `true`:
679
+ * + `rateType` must be `VARIED` or `FIXED`.
680
+ * + A `deposit` must be specified.
681
+ */
682
+ deposit?: boolean | null;
683
+ /**
684
+ * Whether customers can pay for the service using a pricing plan.
685
+ * Read more about [service payment options](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/about-service-payments).
686
+ */
687
+ pricingPlan?: boolean | null;
688
+ }
689
+ declare enum AddOnPaymentOptions {
690
+ /** Customers are required to pay online for add-ons when the booking is paid for with a pricing plan. */
691
+ ONLINE = "ONLINE",
692
+ /** Customers are required to pay in person for add-ons when the booking is paid for with a pricing plan. */
693
+ IN_PERSON = "IN_PERSON"
694
+ }
695
+ /** @enumType */
696
+ type AddOnPaymentOptionsWithLiterals = AddOnPaymentOptions | 'ONLINE' | 'IN_PERSON';
697
+ /** Estimated discount information for a service based on active eCommerce discounts. */
698
+ interface DiscountInfo {
699
+ /**
700
+ * Name of the discount. For example, `Summer Sale - 20% Off`.
701
+ * @minLength 1
702
+ * @maxLength 50
703
+ */
704
+ discountName?: string;
705
+ /**
706
+ * 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.
707
+ *
708
+ * 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.
709
+ */
710
+ priceAfterDiscount?: Money;
711
+ }
712
+ interface OnlineBooking {
713
+ /**
714
+ * Whether the service can be booked online.
715
+ * When set to `true`, customers can book the service online. Configure the payment options via the `service.payment` property.
716
+ * When set to `false`, customers cannot book the service online, and the service can only be paid for in person.
717
+ */
718
+ enabled?: boolean | null;
719
+ /** Booking the service requires approval by the Wix user. */
720
+ requireManualApproval?: boolean | null;
721
+ /** Multiple customers can request to book the same time slot. This is relevant when `requireManualApproval` is `true`. */
722
+ allowMultipleRequests?: boolean | null;
723
+ }
724
+ interface Conferencing {
725
+ /** Whether a conference link is generated for the service's sessions. */
726
+ enabled?: boolean | null;
727
+ }
728
+ interface Location extends LocationOptionsOneOf {
729
+ /** Information about business locations. */
730
+ business?: BusinessLocationOptions;
731
+ /** Information about custom locations. */
732
+ custom?: CustomLocationOptions;
733
+ /**
734
+ * Location ID.
735
+ * @format GUID
736
+ * @readonly
737
+ */
738
+ _id?: string;
739
+ /**
740
+ * Location type.
741
+ *
742
+ * Default: `CUSTOM`
743
+ */
744
+ type?: LocationTypeWithLiterals;
745
+ /**
746
+ * Location address. Empty for `{"type": "CUSTOMER"}`.
747
+ * @readonly
748
+ */
749
+ calculatedAddress?: Address;
750
+ }
751
+ /** @oneof */
752
+ interface LocationOptionsOneOf {
753
+ /** Information about business locations. */
754
+ business?: BusinessLocationOptions;
755
+ /** Information about custom locations. */
756
+ custom?: CustomLocationOptions;
757
+ }
758
+ declare enum LocationType {
759
+ /** Location set by the business that is not a standard business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction). */
760
+ CUSTOM = "CUSTOM",
761
+ /** Business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction). */
762
+ BUSINESS = "BUSINESS",
763
+ /**
764
+ * The customer specifies any address when booking. Available only for
765
+ * appointment-based services.
766
+ */
767
+ CUSTOMER = "CUSTOMER"
768
+ }
769
+ /** @enumType */
770
+ type LocationTypeWithLiterals = LocationType | 'CUSTOM' | 'BUSINESS' | 'CUSTOMER';
771
+ interface Address extends AddressStreetOneOf {
772
+ /** Street name and number. */
773
+ streetAddress?: StreetAddress;
774
+ /** @maxLength 255 */
775
+ addressLine1?: string | null;
776
+ /**
777
+ * 2-letter country code in an [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.
778
+ * @format COUNTRY
779
+ */
780
+ country?: string | null;
781
+ /**
782
+ * Code for a subdivision (such as state, prefecture, or province) in [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) format.
783
+ * @maxLength 255
784
+ */
785
+ subdivision?: string | null;
786
+ /**
787
+ * City name.
788
+ * @maxLength 255
789
+ */
790
+ city?: string | null;
791
+ /**
792
+ * Postal or zip code.
793
+ * @maxLength 255
794
+ */
795
+ postalCode?: string | null;
796
+ /**
797
+ * Full address of the location.
798
+ * @maxLength 512
799
+ */
800
+ formatted?: string | null;
801
+ }
802
+ /** @oneof */
803
+ interface AddressStreetOneOf {
804
+ /** Street name and number. */
805
+ streetAddress?: StreetAddress;
806
+ /** @maxLength 255 */
807
+ addressLine?: string | null;
808
+ }
809
+ /** Street address. Includes street name, number, and apartment number in separate fields. */
810
+ interface StreetAddress {
811
+ /**
812
+ * Street number.
813
+ * @maxLength 255
814
+ */
815
+ number?: string;
816
+ /**
817
+ * Street name.
818
+ * @maxLength 255
819
+ */
820
+ name?: string;
821
+ /**
822
+ * Apartment number.
823
+ * @maxLength 255
824
+ */
825
+ apt?: string;
826
+ }
827
+ interface AddressLocation {
828
+ /** Address latitude. */
829
+ latitude?: number | null;
830
+ /** Address longitude. */
831
+ longitude?: number | null;
832
+ }
833
+ interface BusinessLocationOptions {
834
+ /**
835
+ * ID of the business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction).
836
+ * When setting a business location, specify only the location ID. Other location details are overwritten.
837
+ * @format GUID
838
+ */
839
+ _id?: string;
840
+ /**
841
+ * Business location name.
842
+ * @readonly
843
+ * @maxLength 150
844
+ */
845
+ name?: string;
846
+ /**
847
+ * Whether this is the default location. There can only be a single default location per site.
848
+ * @readonly
849
+ */
850
+ default?: boolean | null;
851
+ /**
852
+ * Business location address.
853
+ * @readonly
854
+ */
855
+ address?: Address;
856
+ /**
857
+ * Business location email.
858
+ * @format EMAIL
859
+ * @readonly
860
+ */
861
+ email?: string | null;
862
+ /**
863
+ * Business location phone.
864
+ * @format PHONE
865
+ * @readonly
866
+ */
867
+ phone?: string | null;
868
+ }
869
+ interface CustomLocationOptions {
870
+ /**
871
+ * ID of the custom location.
872
+ * @format GUID
873
+ * @readonly
874
+ */
875
+ _id?: string;
876
+ /** Address of the custom location. */
877
+ address?: Address;
878
+ }
879
+ /**
880
+ * `BookingPolicy` is the main entity of `BookingPolicyService` and specifies a set of rules for booking a service
881
+ * by visitors and members.
882
+ *
883
+ * Each `BookingPolicy` consists of a number of sub-policies. When the Bookings App is provisioned to a meta site then a
884
+ * default `BookingPolicy` will be created with defaults for each of these sub-policies. This also applies when a request
885
+ * is received to create a new `BookingPolicy` and one or more of these sub-policies are not provided.
886
+ *
887
+ * Sub-policies are defined in separate objects as specified below.
888
+ *
889
+ * - The `LimitEarlyBookingPolicy` object defines the policy for limiting early bookings.
890
+ * - The `LimitLateBookingPolicy` object defines the policy for limiting late bookings.
891
+ * - The `BookAfterStartPolicy` object defines the policy for booking after the start of the schedule.
892
+ * - The `CancellationPolicy` object defines the policy for canceling a booked entity.
893
+ * - The `ReschedulePolicy` object defines the policy for rescheduling booked entity.
894
+ * - The `WaitlistPolicy` object defines the policy for a waitlist.
895
+ * - The `ParticipantsPolicy` object defines the policy regarding the participants per booking.
896
+ * - The `ResourcesPolicy` object defines the policy regarding the resources per booking.
897
+ * - The `CancellationFeePolicy` object defines the policy regarding cancellation fees.
898
+ * - The `SaveCreditCardPolicy` object defines the policy for saving credit card details.
899
+ *
900
+ * By default each sub-policy is disabled. A more detailed specification of the default settings of each sub-policy
901
+ * can be found in the description of the corresponding object.
902
+ *
903
+ * 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.
904
+ */
905
+ interface BookingPolicy {
906
+ /**
907
+ * The ID to the policy for the booking.
908
+ * @format GUID
909
+ */
910
+ _id?: string;
911
+ /**
912
+ * Date and time the policy was created.
913
+ * @readonly
914
+ */
915
+ _createdDate?: Date | null;
916
+ /**
917
+ * Date and time the policy was updated.
918
+ * @readonly
919
+ */
920
+ _updatedDate?: Date | null;
921
+ /**
922
+ * Name of the policy.
923
+ * @maxLength 400
924
+ * @readonly
925
+ */
926
+ name?: string | null;
927
+ /**
928
+ * Custom description for the policy. This policy is displayed to the participant.
929
+ * @readonly
930
+ */
931
+ customPolicyDescription?: PolicyDescription;
932
+ /**
933
+ * Whether the policy is the default for the meta site.
934
+ * @readonly
935
+ */
936
+ default?: boolean | null;
937
+ /**
938
+ * Policy for limiting early bookings.
939
+ * @readonly
940
+ */
941
+ limitEarlyBookingPolicy?: LimitEarlyBookingPolicy;
942
+ /**
943
+ * Policy for limiting late bookings.
944
+ * @readonly
945
+ */
946
+ limitLateBookingPolicy?: LimitLateBookingPolicy;
947
+ /**
948
+ * Policy on booking an entity after the start of the schedule.
949
+ * @readonly
950
+ */
951
+ bookAfterStartPolicy?: BookAfterStartPolicy;
952
+ /**
953
+ * Policy for canceling a booked entity.
954
+ * @readonly
955
+ */
956
+ cancellationPolicy?: CancellationPolicy;
957
+ /**
958
+ * Policy for rescheduling a booked entity.
959
+ * @readonly
960
+ */
961
+ reschedulePolicy?: ReschedulePolicy;
962
+ /**
963
+ * Waitlist policy for the service.
964
+ * @readonly
965
+ */
966
+ waitlistPolicy?: WaitlistPolicy;
967
+ /**
968
+ * Policy regarding the participants per booking.
969
+ * @readonly
970
+ */
971
+ participantsPolicy?: ParticipantsPolicy;
972
+ /**
973
+ * Policy for allocating resources.
974
+ * @readonly
975
+ */
976
+ resourcesPolicy?: ResourcesPolicy;
977
+ /**
978
+ * Rules for cancellation fees.
979
+ * @readonly
980
+ */
981
+ cancellationFeePolicy?: CancellationFeePolicy;
982
+ /**
983
+ * Rule for saving credit card.
984
+ * @readonly
985
+ */
986
+ saveCreditCardPolicy?: SaveCreditCardPolicy;
987
+ }
988
+ /** A description of the policy to display to participants. */
989
+ interface PolicyDescription {
990
+ /**
991
+ * Whether the description should be displayed. If `true`, the description is displayed.
992
+ *
993
+ * Default: `false`
994
+ */
995
+ enabled?: boolean;
996
+ /**
997
+ * The description to display.
998
+ *
999
+ * Default: Empty
1000
+ * Max length: 2500 characters
1001
+ * @maxLength 2500
1002
+ */
1003
+ description?: string;
1004
+ }
1005
+ /** The policy for limiting early bookings. */
1006
+ interface LimitEarlyBookingPolicy {
1007
+ /**
1008
+ * Whether there is a limit on how early a customer
1009
+ * can book. When `false`, there is no limit on the earliest
1010
+ * booking time and customers can book in advance, as early as they like.
1011
+ *
1012
+ * Default: `false`
1013
+ */
1014
+ enabled?: boolean;
1015
+ /**
1016
+ * Maximum number of minutes before the start of the session that a booking can be made. This value must be greater
1017
+ * than `latest_booking_in_minutes` in the `LimitLateBookingPolicy` policy.
1018
+ *
1019
+ * Default: 10080 minutes (7 days)
1020
+ * Min: 1 minute
1021
+ * @min 1
1022
+ */
1023
+ earliestBookingInMinutes?: number;
1024
+ }
1025
+ /**
1026
+ * The policy for limiting late bookings.
1027
+ *
1028
+ * This policy and the `BookAfterStartPolicy` policy cannot be enabled at the same time. So if this policy
1029
+ * is enabled, `BookAfterStartPolicy` must be disabled.
1030
+ */
1031
+ interface LimitLateBookingPolicy {
1032
+ /**
1033
+ * Whether there is a limit on how late a customer
1034
+ * can book. When `false`, there is no limit on the latest
1035
+ * booking time and customers can book up to the last minute.
1036
+ *
1037
+ * Default: `false`
1038
+ */
1039
+ enabled?: boolean;
1040
+ /**
1041
+ * Minimum number of minutes before the start of the session that a booking can be made.
1042
+ * For a schedule, this is relative to the start time of the next booked session, excluding past-booked sessions.
1043
+ * This value must be less than `earliest_booking_in_minutes` in the `LimitEarlyBookingPolicy` policy.
1044
+ *
1045
+ * Default: 1440 minutes (1 day)
1046
+ * Min: 1 minute
1047
+ * @min 1
1048
+ */
1049
+ latestBookingInMinutes?: number;
1050
+ }
1051
+ /**
1052
+ * The policy for whether a session can be booked after the start of the schedule.
1053
+ * This policy and `LimitLateBookingPolicy` cannot be enabled at the same time. So if this policy
1054
+ * is enabled, the `LimitLateBookingPolicy` policy must be disabled.
1055
+ */
1056
+ interface BookAfterStartPolicy {
1057
+ /**
1058
+ * Whether booking is allowed after the start of the schedule. When `true`,
1059
+ * customers can book after the start of the schedule.
1060
+ *
1061
+ * Default: `false`
1062
+ */
1063
+ enabled?: boolean;
1064
+ }
1065
+ /** The policy for canceling a booked session. */
1066
+ interface CancellationPolicy {
1067
+ /**
1068
+ * Whether canceling a booking is allowed. When `true`, customers
1069
+ * can cancel the booking.
1070
+ *
1071
+ * Default: `false`
1072
+ */
1073
+ enabled?: boolean;
1074
+ /**
1075
+ * Whether there is a limit on the latest cancellation time. When `true`,
1076
+ * a time limit is enforced.
1077
+ *
1078
+ * Default: `false`
1079
+ */
1080
+ limitLatestCancellation?: boolean;
1081
+ /**
1082
+ * Minimum number of minutes before the start of the booked session that the booking can be canceled.
1083
+ *
1084
+ * Default: 1440 minutes (1 day)
1085
+ * Min: 1 minute
1086
+ * @min 1
1087
+ */
1088
+ latestCancellationInMinutes?: number;
1089
+ /**
1090
+ * Whether this cancellation policy allows anonymous cancellations.
1091
+ *
1092
+ * **Important**: This flag only applies when `enabled` is `true`. If the cancellation
1093
+ * policy itself is disabled (`enabled` = `false`), anonymous users cannot cancel
1094
+ * regardless of this flag's value.
1095
+ *
1096
+ * When not set (null), defaults to enabled. Anonymous cancellations are allowed by default
1097
+ * so that customers aren't required to be site members to cancel their bookings.
1098
+ *
1099
+ * Default: `null` (treated as `true`)
1100
+ */
1101
+ allowAnonymous?: boolean | null;
1102
+ }
1103
+ /** The policy for rescheduling a booked session. */
1104
+ interface ReschedulePolicy {
1105
+ /**
1106
+ * Whether rescheduling a booking is allowed. When `true`, customers
1107
+ * can reschedule the booking.
1108
+ *
1109
+ * Default: `false`
1110
+ */
1111
+ enabled?: boolean;
1112
+ /**
1113
+ * Whether there is a limit on the latest reschedule time. When `true`,
1114
+ * a time limit is enforced.
1115
+ *
1116
+ * Default: `false`
1117
+ */
1118
+ limitLatestReschedule?: boolean;
1119
+ /**
1120
+ * Minimum number of minutes before the start of the booked session that the booking can be rescheduled.
1121
+ *
1122
+ * Default: 1440 minutes (1 day)
1123
+ * Min: 1 minute
1124
+ * @min 1
1125
+ */
1126
+ latestRescheduleInMinutes?: number;
1127
+ /**
1128
+ * Whether this reschedule policy allows anonymous rescheduling.
1129
+ *
1130
+ * **Important**: This flag only applies when `enabled` is `true`. If the reschedule
1131
+ * policy itself is disabled (`enabled` = `false`), anonymous users cannot reschedule
1132
+ * regardless of this flag's value.
1133
+ *
1134
+ * When not set (null), defaults to enabled. Anonymous rescheduling is allowed by default
1135
+ * so that customers aren't required to be site members to reschedule their bookings.
1136
+ *
1137
+ * Default: `null` (treated as `true`)
1138
+ */
1139
+ allowAnonymous?: boolean | null;
1140
+ }
1141
+ /** The policy for the waitlist. */
1142
+ interface WaitlistPolicy {
1143
+ /**
1144
+ * Whether the session has a waitlist. If `true`, there is a waitlist.
1145
+ *
1146
+ * Default: `false`
1147
+ */
1148
+ enabled?: boolean;
1149
+ /**
1150
+ * Number of spots available in the waitlist.
1151
+ *
1152
+ * Default: 10 spots
1153
+ * Min: 1 spot
1154
+ * @min 1
1155
+ */
1156
+ capacity?: number;
1157
+ /**
1158
+ * Amount of time a participant is given to book, once notified that a spot is available.
1159
+ *
1160
+ * Default: 10 minutes
1161
+ * Min: 1 spot
1162
+ * @min 1
1163
+ */
1164
+ reservationTimeInMinutes?: number;
1165
+ }
1166
+ /** The policy for the maximum number of participants per booking. */
1167
+ interface ParticipantsPolicy {
1168
+ /**
1169
+ * Maximum number of participants allowed.
1170
+ *
1171
+ * Default: 1 participant
1172
+ * Min: 1 participant
1173
+ * @min 1
1174
+ */
1175
+ maxParticipantsPerBooking?: number;
1176
+ }
1177
+ /** The policy regarding the allocation of resources (e.g. staff members). */
1178
+ interface ResourcesPolicy {
1179
+ /**
1180
+ * `true` if this policy is enabled, `false` otherwise.
1181
+ * When `false` then the client must always select a resource when booking an appointment.
1182
+ */
1183
+ enabled?: boolean;
1184
+ /**
1185
+ * `true`, if it is allowed to automatically assign a resource when booking an appointment,
1186
+ * `false`, if the client must always select a resource.
1187
+ *
1188
+ * Default: `false`
1189
+ */
1190
+ autoAssignAllowed?: boolean;
1191
+ }
1192
+ interface CancellationFeePolicy {
1193
+ /**
1194
+ * Whether canceling a booking will result in a cancellation fee
1195
+ *
1196
+ * Default: `false`
1197
+ */
1198
+ enabled?: boolean;
1199
+ /**
1200
+ * Cancellation windows describing the time of cancellation and the fee to charge.
1201
+ * @maxSize 2
1202
+ */
1203
+ cancellationWindows?: CancellationWindow[];
1204
+ /**
1205
+ * Whether the cancellation fee should not be automatically collected when customer cancels the booking.
1206
+ *
1207
+ * Default: `true`
1208
+ */
1209
+ autoCollectFeeEnabled?: boolean | null;
1210
+ }
1211
+ interface CancellationWindow extends CancellationWindowFeeOneOf {
1212
+ /** Amount to be charged as a cancellation fee. */
1213
+ amount?: Money;
1214
+ /**
1215
+ * Percentage of the original price to be charged as a cancellation fee.
1216
+ * @decimalValue options { gt:0, lte:100, maxScale:2 }
1217
+ */
1218
+ percentage?: string;
1219
+ /**
1220
+ * The fee will be applied if the booked session starts within this start time in minutes.
1221
+ * @min 1
1222
+ */
1223
+ startInMinutes?: number | null;
1224
+ }
1225
+ /** @oneof */
1226
+ interface CancellationWindowFeeOneOf {
1227
+ /** Amount to be charged as a cancellation fee. */
1228
+ amount?: Money;
1229
+ /**
1230
+ * Percentage of the original price to be charged as a cancellation fee.
1231
+ * @decimalValue options { gt:0, lte:100, maxScale:2 }
1232
+ */
1233
+ percentage?: string;
1234
+ }
1235
+ interface SaveCreditCardPolicy {
1236
+ /** Default: `false` */
1237
+ enabled?: boolean;
1238
+ }
1239
+ /**
1240
+ * Policy for determining how staff members are sorted and selected during the booking process.
1241
+ * This affects which staff member is chosen when multiple staff members are available for a service.
1242
+ */
1243
+ interface StaffSortingPolicy extends StaffSortingPolicyOptionsOneOf {
1244
+ rankingOptions?: RankingOptions;
1245
+ customOptions?: CustomOptions;
1246
+ /**
1247
+ * Method used for sorting and selecting staff members.
1248
+ *
1249
+ * Default: `RANDOM`
1250
+ */
1251
+ sortingMethodType?: SortingMethodTypeWithLiterals;
1252
+ }
1253
+ /** @oneof */
1254
+ interface StaffSortingPolicyOptionsOneOf {
1255
+ rankingOptions?: RankingOptions;
1256
+ customOptions?: CustomOptions;
1257
+ }
1258
+ /** Order for ranking-based staff selection. */
1259
+ declare enum RankingOrder {
1260
+ /** Staff members with lower priority values are selected first. */
1261
+ LOWEST_TO_HIGHEST = "LOWEST_TO_HIGHEST",
1262
+ /** Staff members with higher priority values are selected first. */
1263
+ HIGHEST_TO_LOWEST = "HIGHEST_TO_LOWEST"
1264
+ }
1265
+ /** @enumType */
1266
+ type RankingOrderWithLiterals = RankingOrder | 'LOWEST_TO_HIGHEST' | 'HIGHEST_TO_LOWEST';
1267
+ /** Method used to sort and select staff members. */
1268
+ declare enum SortingMethodType {
1269
+ /** Staff members are selected randomly from available options. */
1270
+ RANDOM = "RANDOM",
1271
+ /** Staff members are selected based on their priority ranking. */
1272
+ RANKING = "RANKING",
1273
+ /**
1274
+ * Staff members are selected using a custom implementation provided by SortStaffSPI.
1275
+ * This allows third-party apps to implement custom staff sorting logic.
1276
+ */
1277
+ CUSTOM = "CUSTOM"
1278
+ }
1279
+ /** @enumType */
1280
+ type SortingMethodTypeWithLiterals = SortingMethodType | 'RANDOM' | 'RANKING' | 'CUSTOM';
1281
+ /**
1282
+ * Configuration options for ranking-based staff selection.
1283
+ * Used when `sorting_method_type` is set to `RANKING`.
1284
+ */
1285
+ interface RankingOptions {
1286
+ /**
1287
+ * Order in which staff members are sorted by their priority ranking.
1288
+ *
1289
+ * Default: `LOWEST_TO_HIGHEST`
1290
+ */
1291
+ order?: RankingOrderWithLiterals;
1292
+ }
1293
+ /**
1294
+ * Configuration options for custom staff selection methods.
1295
+ * Used when `sorting_method_type` is set to `CUSTOM`.
1296
+ */
1297
+ interface CustomOptions {
1298
+ /**
1299
+ * ID of the custom sorting method implemented in SortStaffSPI.
1300
+ * This identifies which custom sorting algorithm to use.
1301
+ * @format GUID
1302
+ */
1303
+ implementationId?: string;
1304
+ /**
1305
+ * ID of the app that provides the custom sorting method.
1306
+ * @format GUID
1307
+ */
1308
+ appId?: string;
1309
+ }
1310
+ /** Policy for integrating with Intake form. Stores which form to use and when to present it. */
1311
+ interface IntakeFormPolicy {
1312
+ /**
1313
+ * Whether intake form integration is enabled for the service.
1314
+ * Default: `false`
1315
+ */
1316
+ enabled?: boolean;
1317
+ /**
1318
+ * ID of the intake form to integrate with the service.
1319
+ * @format GUID
1320
+ */
1321
+ formId?: string | null;
1322
+ /** When to present the intake form to the customer. */
1323
+ timing?: TimingWithLiterals;
1324
+ completionRequirement?: CompletionRequirementWithLiterals;
1325
+ }
1326
+ declare enum Timing {
1327
+ /** Send form after booking. */
1328
+ AFTER_BOOKING = "AFTER_BOOKING",
1329
+ /** Show form during booking flow. */
1330
+ BEFORE_BOOKING = "BEFORE_BOOKING"
1331
+ }
1332
+ /** @enumType */
1333
+ type TimingWithLiterals = Timing | 'AFTER_BOOKING' | 'BEFORE_BOOKING';
1334
+ /** Requirement for completing the intake form. */
1335
+ declare enum CompletionRequirement {
1336
+ /** Form completion is optional and can be skipped entirely. */
1337
+ OPTIONAL = "OPTIONAL",
1338
+ /**
1339
+ * Form must be completed before the booking can be finalized.
1340
+ * can used only if timing is BEFORE_BOOKING.
1341
+ */
1342
+ REQUIRED_BEFORE_BOOKING = "REQUIRED_BEFORE_BOOKING"
1343
+ }
1344
+ /** @enumType */
1345
+ type CompletionRequirementWithLiterals = CompletionRequirement | 'OPTIONAL' | 'REQUIRED_BEFORE_BOOKING';
1346
+ interface Schedule {
1347
+ /**
1348
+ * ID of the [schedule](https://dev.wix.com/docs/api-reference/business-management/calendar/schedules-v3/introduction)
1349
+ * to which the service's events belong.
1350
+ * @format GUID
1351
+ * @readonly
1352
+ */
1353
+ _id?: string | null;
1354
+ /**
1355
+ * Start time of the first session in the schedule. For courses only.
1356
+ * @readonly
1357
+ */
1358
+ firstSessionStart?: Date | null;
1359
+ /**
1360
+ * End time of the last session in the schedule. For courses only.
1361
+ * @readonly
1362
+ */
1363
+ lastSessionEnd?: Date | null;
1364
+ /** Limitations affecting the service availability. */
1365
+ availabilityConstraints?: AvailabilityConstraints;
1366
+ }
1367
+ interface AvailabilityConstraints {
1368
+ /**
1369
+ * Calculated list of all supported session durations for the service. For
1370
+ * appointment-based services without varied pricing based on session length, it
1371
+ * matches the single value in the `sessionDurations` array. For appointment-based
1372
+ * services with varied pricing based on session length, it includes session
1373
+ * durations for all [variants](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/service-options-and-variants/introduction),
1374
+ * while ignoring `sessionDurations`.
1375
+ * For courses and classes, it includes durations for all future
1376
+ * recurring sessions but excludes durations for one-off or past recurring sessions.
1377
+ * @readonly
1378
+ * @maxSize 50
1379
+ */
1380
+ durations?: Duration[];
1381
+ /**
1382
+ * List of supported session durations in minutes.
1383
+ *
1384
+ * - For appointment-based services, specify `sessionDurations` when creating a service.
1385
+ * - 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).
1386
+ * - For classes or courses, don't specify `sessionDurations` when creating a service.
1387
+ *
1388
+ * Min: `1` minute
1389
+ * Max: `44639` minutes (30 days, 23 hours, and 59 minutes)
1390
+ * @min 1
1391
+ * @max 44639
1392
+ * @maxSize 50
1393
+ */
1394
+ sessionDurations?: number[];
1395
+ /**
1396
+ * The number of minutes between the end of a session and the start of the next.
1397
+ *
1398
+ *
1399
+ * Min: `0` minutes
1400
+ * Max: `720` minutes
1401
+ * @max 720
1402
+ */
1403
+ timeBetweenSessions?: number;
1404
+ /**
1405
+ * Duration range for the service. When set, the customer picks a duration
1406
+ * within the configured min/max range instead of a fixed session duration.
1407
+ * Mutually exclusive with `session_durations` — a service has one or the other.
1408
+ * @internal
1409
+ */
1410
+ durationRange?: DurationRange;
1411
+ }
1412
+ interface Duration {
1413
+ /**
1414
+ * The duration of the service in minutes.
1415
+ *
1416
+ * Min: `1` minute
1417
+ * Max: `44639` minutes (30 days, 23 hours, and 59 minutes)
1418
+ * @min 1
1419
+ * @max 44639
1420
+ */
1421
+ minutes?: number;
1422
+ }
1423
+ /** Duration range configuration for a service. */
1424
+ interface DurationRange extends DurationRangeConfigOneOf {
1425
+ /** Configuration for hourly duration. Set when `unit_type` is `HOUR`. */
1426
+ hourOptions?: HourlyConfig;
1427
+ /** Configuration for daily duration. Set when `unit_type` is `DAY`. */
1428
+ dayOptions?: DailyConfig;
1429
+ /** The unit type for this duration range. */
1430
+ unitType?: UnitTypeWithLiterals;
1431
+ }
1432
+ /** @oneof */
1433
+ interface DurationRangeConfigOneOf {
1434
+ /** Configuration for hourly duration. Set when `unit_type` is `HOUR`. */
1435
+ hourOptions?: HourlyConfig;
1436
+ /** Configuration for daily duration. Set when `unit_type` is `DAY`. */
1437
+ dayOptions?: DailyConfig;
1438
+ }
1439
+ /** The booking unit for the duration range. */
1440
+ declare enum UnitType {
1441
+ /**
1442
+ * Booking unit is per hour.
1443
+ * @documentationMaturity preview
1444
+ * @internal
1445
+ */
1446
+ HOUR = "HOUR",
1447
+ /**
1448
+ * Booking unit is per day.
1449
+ * @documentationMaturity preview
1450
+ * @internal
1451
+ */
1452
+ DAY = "DAY"
1453
+ }
1454
+ /** @enumType */
1455
+ type UnitTypeWithLiterals = UnitType;
1456
+ /** Hourly duration configuration. Values are in minutes. */
1457
+ interface HourlyConfig {
1458
+ /**
1459
+ * Minimum bookable duration in minutes.
1460
+ *
1461
+ * Min: `30` minutes
1462
+ * Max: `1440` minutes (24 hours)
1463
+ * @min 30
1464
+ * @max 1440
1465
+ */
1466
+ minDurationInMinutes?: number;
1467
+ /**
1468
+ * Maximum bookable duration in minutes.
1469
+ *
1470
+ * Min: `30` minutes
1471
+ * Max: `1440` minutes (24 hours)
1472
+ * @min 30
1473
+ * @max 1440
1474
+ */
1475
+ maxDurationInMinutes?: number;
1476
+ }
1477
+ /** Daily duration configuration. Values are in days. */
1478
+ interface DailyConfig {
1479
+ /**
1480
+ * Minimum bookable duration in days.
1481
+ *
1482
+ * Min: `1` day
1483
+ * Max: `8` days
1484
+ * @min 1
1485
+ * @max 8
1486
+ */
1487
+ minDurationInDays?: number;
1488
+ /**
1489
+ * Maximum bookable duration in days.
1490
+ *
1491
+ * Min: `1` day
1492
+ * Max: `8` days
1493
+ * @min 1
1494
+ * @max 8
1495
+ */
1496
+ maxDurationInDays?: number;
1497
+ }
1498
+ interface StaffMember {
1499
+ /**
1500
+ * 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.
1501
+ * Despite the field name, this is the resource ID, not the staff member ID.
1502
+ * 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)
1503
+ * and corresponds to the IDs in the service's `staffMemberIds` field.
1504
+ * @format GUID
1505
+ * @readonly
1506
+ */
1507
+ staffMemberId?: string;
1508
+ /**
1509
+ * Name of the staff member
1510
+ * @maxLength 40
1511
+ * @readonly
1512
+ */
1513
+ name?: string | null;
1514
+ /**
1515
+ * Main media associated with the service.
1516
+ * @readonly
1517
+ */
1518
+ mainMedia?: StaffMediaItem;
1519
+ }
1520
+ interface StaffMediaItem extends StaffMediaItemItemOneOf {
1521
+ /** Details of the image associated with the staff, such as URL and size. */
1522
+ image?: string;
1523
+ }
1524
+ /** @oneof */
1525
+ interface StaffMediaItemItemOneOf {
1526
+ /** Details of the image associated with the staff, such as URL and size. */
1527
+ image?: string;
1528
+ }
1529
+ /**
1530
+ * Working hours location coverage derived from Calendar v3 WORKING_HOURS events
1531
+ * (`NONE` and `MASTER` recurrence types). The server paginates through Calendar results
1532
+ * (100 events per page) until all matching events are collected.
1533
+ *
1534
+ * Coverage states when enrichment is requested:
1535
+ * + `available_at_all_locations = true`: Staff applies to every business location. Set when the staff
1536
+ * uses default business working hours, or has any WORKING_HOURS event without a location ID
1537
+ * (including when mixed with location-specific events).
1538
+ * + `available_at_all_locations = false` with non-empty `location_ids`: Staff has location-specific
1539
+ * WORKING_HOURS only. Show the staff member only when the selected location is in `location_ids`.
1540
+ * + `available_at_all_locations = false` with empty `location_ids`: Staff has working-hours schedules
1541
+ * but no applicable location coverage was found.
1542
+ *
1543
+ * Recommended client filter:
1544
+ * `availableAtAllLocations || locationIds.includes(selectedLocationId)`
1545
+ *
1546
+ * Omitted when `STAFF_WORKING_HOURS_LOCATIONS` is not requested.
1547
+ */
1548
+ interface WorkingHoursLocationCoverage {
1549
+ }
1550
+ interface StaffMemberDetails {
1551
+ /**
1552
+ * Staff members providing the service. For appointments only.
1553
+ * @maxSize 220
1554
+ */
1555
+ staffMembers?: StaffMember[];
1556
+ }
1557
+ interface ResourceGroup {
1558
+ /**
1559
+ * An optional resource group ID. If specified, it references a resource group in the resource groups API.
1560
+ * TODO - referenced_entity annotation
1561
+ * @format GUID
1562
+ */
1563
+ resourceGroupId?: string | null;
1564
+ /**
1565
+ * Resource IDs. Each ID references a resource in the resources API and may be a subset of resources within a resource group.
1566
+ * TODO - referenced_entity annotation
1567
+ */
1568
+ resourceIds?: ResourceIds;
1569
+ /**
1570
+ * Specifies how many resources in the group / resource IDs are required to book the service.
1571
+ * Defaults to 1.
1572
+ * @min 1
1573
+ */
1574
+ requiredResourcesNumber?: number | null;
1575
+ /**
1576
+ * If set to `true`, the customer can select the specific resources while booking the service.
1577
+ * If set to `false`, the resources required to book the service will be auto-selected at the time of the booking.
1578
+ * Defaults to false.
1579
+ * @readonly
1580
+ */
1581
+ selectableResource?: boolean | null;
1582
+ }
1583
+ interface ResourceIds {
1584
+ /**
1585
+ * Values of the resource IDs.
1586
+ * @maxSize 100
1587
+ * @format GUID
1588
+ */
1589
+ values?: string[];
1590
+ }
1591
+ interface ServiceResource extends ServiceResourceSelectionOneOf {
1592
+ /**
1593
+ * Resource IDs, each referencing a resource in the Resources API. Must be a subset of resources within the specified resource type.
1594
+ * @internal
1595
+ */
1596
+ resourceIds?: ResourceIds;
1597
+ /** Details about the required [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction). */
1598
+ resourceType?: ResourceType;
1599
+ /**
1600
+ * Details about the individual resources assigned to this service resource, including their names.
1601
+ * Only returned when `RESOURCE_DETAILS` is passed in `conditionalFields`.
1602
+ * @internal
1603
+ */
1604
+ resourceDetails?: ResourceDetails;
1605
+ }
1606
+ /** @oneof */
1607
+ interface ServiceResourceSelectionOneOf {
1608
+ /**
1609
+ * Resource IDs, each referencing a resource in the Resources API. Must be a subset of resources within the specified resource type.
1610
+ * @internal
1611
+ */
1612
+ resourceIds?: ResourceIds;
1613
+ }
1614
+ interface ResourceType {
1615
+ /**
1616
+ * The type of the resource.
1617
+ * @format GUID
1618
+ */
1619
+ _id?: string | null;
1620
+ /**
1621
+ * The name of the resource type.
1622
+ * @readonly
1623
+ * @maxLength 40
1624
+ * @minLength 1
1625
+ */
1626
+ name?: string | null;
1627
+ }
1628
+ /** Details about the individual resources assigned to a service resource. */
1629
+ interface ResourceDetails {
1630
+ /**
1631
+ * List of resources assigned to this service resource.
1632
+ * @maxSize 100
1633
+ */
1634
+ resources?: ResourceInfo[];
1635
+ }
1636
+ /** A resource assigned to a service resource. */
1637
+ interface ResourceInfo {
1638
+ /**
1639
+ * ID of the resource.
1640
+ * @format GUID
1641
+ * @readonly
1642
+ */
1643
+ _id?: string;
1644
+ /**
1645
+ * Display name of the resource (for example, `"John Smith"` or `"Room A"`).
1646
+ * @readonly
1647
+ * @maxLength 100
1648
+ */
1649
+ name?: string | null;
1650
+ }
1651
+ interface Slug {
1652
+ /**
1653
+ * 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`.
1654
+ * @maxLength 500
1655
+ */
1656
+ name?: string;
1657
+ /**
1658
+ * 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.
1659
+ * @readonly
1660
+ */
1661
+ custom?: boolean | null;
1662
+ /**
1663
+ * Date and time the slug was created. This is a system field.
1664
+ * @readonly
1665
+ */
1666
+ _createdDate?: Date | null;
1667
+ }
1668
+ interface URLs {
1669
+ /**
1670
+ * The URL for the service page.
1671
+ * @readonly
1672
+ */
1673
+ servicePage?: string;
1674
+ /**
1675
+ * The URL for the booking entry point. It can be either to the calendar or to the service page.
1676
+ * @readonly
1677
+ */
1678
+ bookingPage?: string;
1679
+ /**
1680
+ * The URL for the calendar. Can be empty if no calendar exists.
1681
+ * @readonly
1682
+ */
1683
+ calendarPage?: string;
1684
+ }
1685
+ interface ExtendedFields {
1686
+ /**
1687
+ * Extended field data. Each key corresponds to the namespace of the app that created the extended fields.
1688
+ * The value of each key is structured according to the schema defined when the extended fields were configured.
1689
+ *
1690
+ * You can only access fields for which you have the appropriate permissions.
1691
+ *
1692
+ * Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).
1693
+ */
1694
+ namespaces?: Record<string, Record<string, any>>;
1695
+ }
1696
+ /**
1697
+ * 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.
1698
+ * The search engines use this information for ranking purposes, or to display snippets in the search results.
1699
+ * 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.
1700
+ */
1701
+ interface SeoSchema {
1702
+ /** SEO tag information. */
1703
+ tags?: Tag[];
1704
+ /** SEO general settings. */
1705
+ settings?: Settings;
1706
+ }
1707
+ interface Keyword {
1708
+ /** Keyword value. */
1709
+ term?: string;
1710
+ /** Whether the keyword is the main focus keyword. */
1711
+ isMain?: boolean;
1712
+ /**
1713
+ * The source that added the keyword terms to the SEO settings.
1714
+ * @maxLength 1000
1715
+ */
1716
+ origin?: string | null;
1717
+ }
1718
+ interface Tag {
1719
+ /**
1720
+ * SEO tag type.
1721
+ *
1722
+ *
1723
+ * Supported values: `title`, `meta`, `script`, `link`.
1724
+ */
1725
+ type?: string;
1726
+ /**
1727
+ * A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value.
1728
+ * For example: `{"name": "description", "content": "the description itself"}`.
1729
+ */
1730
+ props?: Record<string, any> | null;
1731
+ /** SEO tag metadata. For example, `{"height": 300, "width": 240}`. */
1732
+ meta?: Record<string, any> | null;
1733
+ /** SEO tag inner content. For example, `<title> inner content </title>`. */
1734
+ children?: string;
1735
+ /** Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages). */
1736
+ custom?: boolean;
1737
+ /** Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines. */
1738
+ disabled?: boolean;
1739
+ }
1740
+ interface Settings {
1741
+ /**
1742
+ * 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.
1743
+ *
1744
+ *
1745
+ * Default: `false` (automatical redirect is enabled).
1746
+ */
1747
+ preventAutoRedirect?: boolean;
1748
+ /**
1749
+ * User-selected keyword terms for a specific page.
1750
+ * @maxSize 5
1751
+ */
1752
+ keywords?: Keyword[];
1753
+ }
1754
+ interface AddOnGroup {
1755
+ /**
1756
+ * ID of the add-on group.
1757
+ * Wix Bookings automatically populates this field when creating or updating an add-on group.
1758
+ * @readonly
1759
+ * @format GUID
1760
+ */
1761
+ _id?: string | null;
1762
+ /**
1763
+ * Name of the add-on group.
1764
+ * @maxLength 100
1765
+ */
1766
+ name?: string | null;
1767
+ /**
1768
+ * 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.
1769
+ * When empty, there's no upper limit.
1770
+ */
1771
+ maxNumberOfAddOns?: number | null;
1772
+ /**
1773
+ * 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.
1774
+ * @format GUID
1775
+ * @maxSize 7
1776
+ */
1777
+ addOnIds?: string[] | null;
1778
+ /**
1779
+ * Description or instructional prompt of the add-on group that's displayed to customers when booking the service.
1780
+ * @maxLength 200
1781
+ */
1782
+ prompt?: string | null;
1783
+ }
1784
+ interface AddOnDetails {
1785
+ /**
1786
+ * ID of the add-on.
1787
+ * @format GUID
1788
+ */
1789
+ addOnId?: string | null;
1790
+ /**
1791
+ * Duration in minutes for add-ons that extend service time.
1792
+ * Empty for [quantity-based add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction#terminology).
1793
+ */
1794
+ durationInMinutes?: number | null;
1795
+ }
1796
+ /** `TaxableAddress` defines the taxable address used for the service. */
1797
+ interface TaxableAddress {
1798
+ /** Taxable address type. */
1799
+ taxableAddressType?: TaxableAddressTypeWithLiterals;
1800
+ }
1801
+ declare enum TaxableAddressType {
1802
+ BUSINESS = "BUSINESS",
1803
+ BILLING = "BILLING"
1804
+ }
1805
+ /** @enumType */
1806
+ type TaxableAddressTypeWithLiterals = TaxableAddressType | 'BUSINESS' | 'BILLING';
1807
+ interface PhoneCall {
1808
+ /** Whether the service is delivered via phone call. */
1809
+ enabled?: boolean | null;
1810
+ }
1811
+ interface CursorPagingMetadata {
1812
+ /** Number of items returned in the response. */
1813
+ count?: number | null;
1814
+ /** Cursor strings that point to the next page, previous page, or both. */
1815
+ cursors?: Cursors;
1816
+ /**
1817
+ * Whether there are more pages to retrieve following the current page.
1818
+ *
1819
+ * + `true`: Another page of results can be retrieved.
1820
+ * + `false`: This is the last page.
1821
+ */
1822
+ hasNext?: boolean | null;
1823
+ }
1824
+ interface Cursors {
1825
+ /**
1826
+ * Cursor string pointing to the next page in the list of results.
1827
+ * @maxLength 16000
1828
+ */
1829
+ next?: string | null;
1830
+ /**
1831
+ * Cursor pointing to the previous page in the list of results.
1832
+ * @maxLength 16000
1833
+ */
1834
+ prev?: string | null;
1835
+ }
1836
+ /**
1837
+ * Retrieves services enriched with availability data.
1838
+ *
1839
+ * Applies location, attribute, and WQL filters before calling the availability
1840
+ * engine. When a date range is provided, only services with bookable slots in
1841
+ * that window are returned. Without a date range, all pre-filtered services are
1842
+ * returned without an availability check.
1843
+ * @internal
1844
+ * @documentationMaturity preview
1845
+ * @permissionId bookings:catalog_search:v1:catalog_search:query_services_by_availability
1846
+ * @fqn wix.bookings.catalog.search.v1.CatalogSearch.QueryServicesByAvailability
1847
+ */
1848
+ declare function queryServicesByAvailability(options?: QueryServicesByAvailabilityOptions): Promise<NonNullablePaths<QueryServicesByAvailabilityResponse, `results` | `results.${number}.service.type` | `results.${number}.service.category._id` | `results.${number}.service.form._id` | `results.${number}.service.payment.rateType` | `results.${number}.service.payment.addOnOption` | `results.${number}.service.bookingPolicy._id` | `results.${number}.service.taxableAddress.taxableAddressType` | `results.${number}.available`, 6>>;
1849
+ interface QueryServicesByAvailabilityOptions {
1850
+ /**
1851
+ * Query against the service catalog — WQL filter, sort, and cursor paging.
1852
+ * Supports the same fields as QueryServices.
1853
+ */
1854
+ query?: QueryV2;
1855
+ /**
1856
+ * Availability and resource constraints applied on top of the service query.
1857
+ * When absent, no availability check is performed and all pre-filtered services are returned.
1858
+ */
1859
+ availabilityFilter?: AvailabilityFilter;
1860
+ }
1861
+
1862
+ export { type AddOnDetails, type AddOnGroup, AddOnPaymentOptions, type AddOnPaymentOptionsWithLiterals, type Address, type AddressLocation, type AddressStreetOneOf, type Attribute, type AttributeValueOneOf, type AvailabilityConstraints, type AvailabilityFilter, type BookAfterStartPolicy, type BookingPolicy, type BusinessLocationOptions, type CancellationFeePolicy, type CancellationPolicy, type CancellationWindow, type CancellationWindowFeeOneOf, type CatalogSearchResult, type Category, CompletionRequirement, type CompletionRequirementWithLiterals, type Conferencing, type CursorPaging, type CursorPagingMetadata, type Cursors, type CustomLocationOptions, type CustomOptions, type CustomPayment, type DailyConfig, type DiscountInfo, type Duration, type DurationRange, type DurationRangeConfigOneOf, type ExtendedFields, FirstChargeDateType, type FirstChargeDateTypeWithLiterals, type FixedPayment, type Form, type FormSettings, FrequencyType, type FrequencyTypeWithLiterals, type FullUpfrontPayment, type HourlyConfig, type IntakeFormPolicy, type Keyword, type LimitEarlyBookingPolicy, type LimitLateBookingPolicy, type Location, type LocationOptionsOneOf, LocationType, type LocationTypeWithLiterals, type Media, type MediaItem, type MediaItemItemOneOf, type Money, type OnlineBooking, type Paging, type ParticipantsPolicy, type Payment, type PaymentOptions, type PaymentRateOneOf, type PhoneCall, type PolicyDescription, type QueryServicesByAvailabilityOptions, type QueryServicesByAvailabilityRequest, type QueryServicesByAvailabilityResponse, type QueryV2, type QueryV2PagingMethodOneOf, type RankingOptions, RankingOrder, type RankingOrderWithLiterals, RateType, type RateTypeWithLiterals, type ReschedulePolicy, type ResourceDetails, type ResourceGroup, type ResourceIds, type ResourceInfo, type ResourceType, type ResourcesPolicy, type SaveCreditCardPolicy, type Schedule, type SeoSchema, type Service, type ServiceResource, type ServiceResourceSelectionOneOf, ServiceType, type ServiceTypeWithLiterals, type ServiceWithAvailability, type Settings, type Slug, SortOrder, type SortOrderWithLiterals, type Sorting, SortingMethodType, type SortingMethodTypeWithLiterals, type StaffMediaItem, type StaffMediaItemItemOneOf, type StaffMember, type StaffMemberDetails, type StaffSortingPolicy, type StaffSortingPolicyOptionsOneOf, type StreetAddress, type SubscriptionPayment, type Tag, type TaxableAddress, TaxableAddressType, type TaxableAddressTypeWithLiterals, Timing, type TimingWithLiterals, type URLs, UnitType, type UnitTypeWithLiterals, type VariedPayment, type WaitlistPolicy, type WorkingHoursLocationCoverage, queryServicesByAvailability };