@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,1825 @@
1
+ import { QueryServicesByAvailabilityRequest as QueryServicesByAvailabilityRequest$1, QueryServicesByAvailabilityResponse as QueryServicesByAvailabilityResponse$1 } from './index.js';
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
+ /** Whether to inherit resource locations for availability resolution. */
350
+ inheritResourceLocations?: boolean | null;
351
+ }
352
+ declare enum ServiceType {
353
+ /** Appointment-based service. */
354
+ APPOINTMENT = "APPOINTMENT",
355
+ /** Class service. */
356
+ CLASS = "CLASS",
357
+ /** Course service. */
358
+ COURSE = "COURSE"
359
+ }
360
+ /** @enumType */
361
+ type ServiceTypeWithLiterals = ServiceType | 'APPOINTMENT' | 'CLASS' | 'COURSE';
362
+ interface Media {
363
+ /**
364
+ * Media items associated with the service.
365
+ * @maxSize 100
366
+ */
367
+ items?: MediaItem[];
368
+ /** Primary media associated with the service. */
369
+ mainMedia?: MediaItem;
370
+ /** Cover media associated with the service. */
371
+ coverMedia?: MediaItem;
372
+ }
373
+ interface MediaItem extends MediaItemItemOneOf {
374
+ /** Details of the image associated with the service, such as URL and size. */
375
+ image?: Image;
376
+ }
377
+ /** @oneof */
378
+ interface MediaItemItemOneOf {
379
+ /** Details of the image associated with the service, such as URL and size. */
380
+ image?: Image;
381
+ }
382
+ interface Image {
383
+ /**
384
+ * WixMedia image ID. (e.g. "4b3901ffcb8d7ad81a613779d92c9702.jpg")
385
+ * @maxLength 2048
386
+ */
387
+ id?: string;
388
+ /**
389
+ * Image URL. (similar to image.id e.g. "4b3901ffcb8d7ad81a613779d92c9702.jpg")
390
+ * @maxLength 2048
391
+ */
392
+ url?: string;
393
+ /** Original image height. */
394
+ height?: number;
395
+ /** Original image width. */
396
+ width?: number;
397
+ /**
398
+ * Image alt text.
399
+ * @maxLength 134061
400
+ */
401
+ altText?: string | null;
402
+ /**
403
+ * Image file name.
404
+ * @readonly
405
+ * @maxLength 2048
406
+ */
407
+ filename?: string | null;
408
+ }
409
+ interface Category {
410
+ /**
411
+ * Category ID.
412
+ * @format GUID
413
+ */
414
+ id?: string;
415
+ /**
416
+ * Category name.
417
+ * @maxLength 500
418
+ * @readonly
419
+ */
420
+ name?: string | null;
421
+ /**
422
+ * Order of a category within a category list.
423
+ * @readonly
424
+ */
425
+ sortOrder?: number | null;
426
+ }
427
+ interface Form {
428
+ /**
429
+ * ID of the form associated with the service.
430
+ * The form information that you submit when booking includes contact details, participants, and other form fields set up for the service.
431
+ * You can manage the service booking form fields using the Bookings Forms API.
432
+ * @format GUID
433
+ */
434
+ id?: string;
435
+ }
436
+ interface FormSettings {
437
+ /** Whether the service booking form should be hidden from the site. */
438
+ hidden?: boolean | null;
439
+ }
440
+ interface Payment extends PaymentRateOneOf {
441
+ /**
442
+ * The details for the fixed price of the service.
443
+ *
444
+ * Required when: `rateType` is `FIXED`
445
+ */
446
+ fixed?: FixedPayment;
447
+ /**
448
+ * The details for the custom price of the service.
449
+ *
450
+ * Required when: `rateType` is `CUSTOM`
451
+ */
452
+ custom?: CustomPayment;
453
+ /**
454
+ * The details for the varied pricing of the service.
455
+ * Read more about [varied price options](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online#offering-varied-price-options).
456
+ *
457
+ * Required when: `rateType` is `VARIED`
458
+ */
459
+ varied?: VariedPayment;
460
+ /** The rate the customer is expected to pay for the service. */
461
+ rateType?: RateTypeWithLiterals;
462
+ /** The payment options a customer can use to pay for the service. */
463
+ options?: PaymentOptions;
464
+ /**
465
+ * IDs of pricing plans that can be used as payment for the service.
466
+ * Read more about [service payment options](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/about-service-payments).
467
+ * @readonly
468
+ * @maxSize 75
469
+ * @format GUID
470
+ */
471
+ pricingPlanIds?: string[];
472
+ /**
473
+ * 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).
474
+ * If customers pay for the booking using any method other than a pricing plan, the value of this field is ignored.
475
+ */
476
+ addOnOption?: AddOnPaymentOptionsWithLiterals;
477
+ /**
478
+ * Estimated discount information for the service based on active [eCommerce discounts](https://dev.wix.com/docs/rest/business-solutions/e-commerce/extensions/discounts/introduction).
479
+ * The final discount is determined during eCommerce checkout and may differ from the estimate,
480
+ * for example when discounts depend on cart totals.
481
+ *
482
+ * A discount is considered active when its start time has passed and its end time hasn't.
483
+ * If multiple active discounts apply, the most recently created one is returned.
484
+ *
485
+ * Returned only when `DISCOUNT_INFO_DETAILS` is requested.
486
+ * @readonly
487
+ */
488
+ discountInfo?: DiscountInfo;
489
+ }
490
+ /** @oneof */
491
+ interface PaymentRateOneOf {
492
+ /**
493
+ * The details for the fixed price of the service.
494
+ *
495
+ * Required when: `rateType` is `FIXED`
496
+ */
497
+ fixed?: FixedPayment;
498
+ /**
499
+ * The details for the custom price of the service.
500
+ *
501
+ * Required when: `rateType` is `CUSTOM`
502
+ */
503
+ custom?: CustomPayment;
504
+ /**
505
+ * The details for the varied pricing of the service.
506
+ * Read more about [varied price options](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online#offering-varied-price-options).
507
+ *
508
+ * Required when: `rateType` is `VARIED`
509
+ */
510
+ varied?: VariedPayment;
511
+ }
512
+ declare enum RateType {
513
+ /** The service has a fixed price. */
514
+ FIXED = "FIXED",
515
+ /** The service has a custom price, expressed as a price description. */
516
+ CUSTOM = "CUSTOM",
517
+ /** This service is offered with a set of different prices based on different terms. */
518
+ VARIED = "VARIED",
519
+ /** This service is offered free of charge. */
520
+ NO_FEE = "NO_FEE"
521
+ }
522
+ /** @enumType */
523
+ type RateTypeWithLiterals = RateType | 'FIXED' | 'CUSTOM' | 'VARIED' | 'NO_FEE';
524
+ interface FixedPayment {
525
+ /**
526
+ * The fixed price required to book the service.
527
+ *
528
+ * Required when: `rateType` is `FIXED`
529
+ */
530
+ price?: Money;
531
+ /**
532
+ * The deposit price required to book the service.
533
+ *
534
+ * Required when: `rateType` is `FIXED` and `paymentOptions.deposit` is `true`
535
+ */
536
+ deposit?: Money;
537
+ /**
538
+ * Whether customers can choose to pay the full service price upfront instead of only the deposit.
539
+ *
540
+ * Used only when a `deposit` amount is set.
541
+ *
542
+ * Default: `false`.
543
+ */
544
+ fullUpfrontPaymentAllowed?: boolean | null;
545
+ }
546
+ /**
547
+ * Money.
548
+ * Default format to use. Sufficiently compliant with majority of standards: w3c, ISO 4217, ISO 20022, ISO 8583:2003.
549
+ */
550
+ interface Money {
551
+ /**
552
+ * Monetary amount. Decimal string with a period as a decimal separator. For example `25.05`.
553
+ * @format DECIMAL_VALUE
554
+ * @decimalValue options { gt:0, maxScale:2 }
555
+ */
556
+ value?: string;
557
+ /**
558
+ * Currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217). For example, `USD`.
559
+ * @format CURRENCY
560
+ * @readonly
561
+ */
562
+ currency?: string;
563
+ /**
564
+ * Monetary amount. Decimal string in local format. For example, `1 000,30`.
565
+ * @maxLength 50
566
+ */
567
+ formattedValue?: string | null;
568
+ }
569
+ interface CustomPayment {
570
+ /**
571
+ * A custom description explaining to the customer how to pay for the service.
572
+ * @maxLength 50
573
+ */
574
+ description?: string | null;
575
+ }
576
+ interface VariedPayment {
577
+ /** The default price for the service without any variants. It will also be used as the default price for any new variant. */
578
+ defaultPrice?: Money;
579
+ /**
580
+ * The deposit price required to book the service.
581
+ *
582
+ * Required when: `rateType` is `VARIED` and `paymentOptions.deposit` is `true`
583
+ */
584
+ deposit?: Money;
585
+ /**
586
+ * The minimal price a customer may pay for this service, based on its variants.
587
+ * @readonly
588
+ */
589
+ minPrice?: Money;
590
+ /**
591
+ * The maximum price a customer may pay for this service, based on its variants.
592
+ * @readonly
593
+ */
594
+ maxPrice?: Money;
595
+ /**
596
+ * Whether customers can choose to pay the full service price upfront instead of only the deposit.
597
+ *
598
+ * Used only when a `deposit` amount is set.
599
+ *
600
+ * Default: `false`.
601
+ */
602
+ fullUpfrontPaymentAllowed?: boolean | null;
603
+ }
604
+ interface SubscriptionPayment {
605
+ /** Amount charged each billing cycle. */
606
+ amountPerBillingCycle?: Money;
607
+ /** Billing frequency used for recurring subscription charges. */
608
+ frequency?: FrequencyTypeWithLiterals;
609
+ /**
610
+ * Total number of recurring payments in the subscription.
611
+ * Value must be greater than `1`.
612
+ * Required when: `rateType` is `SUBSCRIPTION`
613
+ * @min 2
614
+ */
615
+ totalPayments?: number | null;
616
+ /** When the first recurring payment is charged. */
617
+ firstChargeDate?: FirstChargeDateTypeWithLiterals;
618
+ /**
619
+ * Date and time when recurring payments start in `YYYY-MM-DDThh:mm:ss.sssZ` format.
620
+ * When `firstChargeDate` is `SCHEDULED`, the first charge occurs on this date.
621
+ * When `firstChargeDate` is `CHECKOUT`, the first charge occurs at checkout and recurring billing begins on this date.
622
+ * Required when: `rateType` is `SUBSCRIPTION`. Sets the future billing cycle dates.
623
+ */
624
+ recurringStartDate?: Date | null;
625
+ /**
626
+ * Deprecated.
627
+ * @deprecated Deprecated.
628
+ * @targetRemovalDate 2026-07-01
629
+ */
630
+ enrollmentFeeAmount?: Money;
631
+ /**
632
+ * Deprecated.
633
+ * @deprecated Deprecated.
634
+ * @targetRemovalDate 2026-07-01
635
+ */
636
+ fullUpfrontPayment?: FullUpfrontPayment;
637
+ }
638
+ declare enum FrequencyType {
639
+ /** Payment is charged once every month. */
640
+ MONTHLY = "MONTHLY"
641
+ }
642
+ /** @enumType */
643
+ type FrequencyTypeWithLiterals = FrequencyType | 'MONTHLY';
644
+ declare enum FirstChargeDateType {
645
+ /** Charge the first billing cycle at checkout. */
646
+ CHECKOUT = "CHECKOUT",
647
+ /** Charge the first billing cycle on the `recurringStartDate`. */
648
+ SCHEDULED = "SCHEDULED"
649
+ }
650
+ /** @enumType */
651
+ type FirstChargeDateTypeWithLiterals = FirstChargeDateType | 'CHECKOUT' | 'SCHEDULED';
652
+ interface FullUpfrontPayment {
653
+ /** Whether customers can choose a one-time full payment instead of recurring subscription payments. */
654
+ supported?: boolean | null;
655
+ /**
656
+ * Percentage discount applied when a customer chooses the full payment option.
657
+ * Min: `0.01` percent
658
+ * Max: `100` percent
659
+ * @format DECIMAL_VALUE
660
+ * @decimalValue options { gte:0.01, lte:100, maxScale:2 }
661
+ */
662
+ discountPercent?: string | null;
663
+ }
664
+ interface PaymentOptions {
665
+ /**
666
+ * Customers can pay for the service online.
667
+ * When `true`:
668
+ * + `rateType` must be `FIXED` or `VARIED`.
669
+ * + `fixed.price` or `varied.defaultPrice` must be specified respectively.
670
+ * Read more about [getting paid online](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online).
671
+ */
672
+ online?: boolean | null;
673
+ /** Customers can pay for the service in person. */
674
+ inPerson?: boolean | null;
675
+ /**
676
+ * This service requires a deposit to be made online in order to book it.
677
+ * When `true`:
678
+ * + `rateType` must be `VARIED` or `FIXED`.
679
+ * + A `deposit` must be specified.
680
+ */
681
+ deposit?: boolean | null;
682
+ /**
683
+ * Whether customers can pay for the service using a pricing plan.
684
+ * Read more about [service payment options](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/about-service-payments).
685
+ */
686
+ pricingPlan?: boolean | null;
687
+ }
688
+ declare enum AddOnPaymentOptions {
689
+ /** Customers are required to pay online for add-ons when the booking is paid for with a pricing plan. */
690
+ ONLINE = "ONLINE",
691
+ /** Customers are required to pay in person for add-ons when the booking is paid for with a pricing plan. */
692
+ IN_PERSON = "IN_PERSON"
693
+ }
694
+ /** @enumType */
695
+ type AddOnPaymentOptionsWithLiterals = AddOnPaymentOptions | 'ONLINE' | 'IN_PERSON';
696
+ /** Estimated discount information for a service based on active eCommerce discounts. */
697
+ interface DiscountInfo {
698
+ /**
699
+ * Name of the discount. For example, `Summer Sale - 20% Off`.
700
+ * @minLength 1
701
+ * @maxLength 50
702
+ */
703
+ discountName?: string;
704
+ /**
705
+ * 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.
706
+ *
707
+ * 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.
708
+ */
709
+ priceAfterDiscount?: Money;
710
+ }
711
+ interface OnlineBooking {
712
+ /**
713
+ * Whether the service can be booked online.
714
+ * When set to `true`, customers can book the service online. Configure the payment options via the `service.payment` property.
715
+ * When set to `false`, customers cannot book the service online, and the service can only be paid for in person.
716
+ */
717
+ enabled?: boolean | null;
718
+ /** Booking the service requires approval by the Wix user. */
719
+ requireManualApproval?: boolean | null;
720
+ /** Multiple customers can request to book the same time slot. This is relevant when `requireManualApproval` is `true`. */
721
+ allowMultipleRequests?: boolean | null;
722
+ }
723
+ interface Conferencing {
724
+ /** Whether a conference link is generated for the service's sessions. */
725
+ enabled?: boolean | null;
726
+ }
727
+ interface Location extends LocationOptionsOneOf {
728
+ /** Information about business locations. */
729
+ business?: BusinessLocationOptions;
730
+ /** Information about custom locations. */
731
+ custom?: CustomLocationOptions;
732
+ /**
733
+ * Location ID.
734
+ * @format GUID
735
+ * @readonly
736
+ */
737
+ id?: string;
738
+ /**
739
+ * Location type.
740
+ *
741
+ * Default: `CUSTOM`
742
+ */
743
+ type?: LocationTypeWithLiterals;
744
+ /**
745
+ * Location address. Empty for `{"type": "CUSTOMER"}`.
746
+ * @readonly
747
+ */
748
+ calculatedAddress?: Address;
749
+ }
750
+ /** @oneof */
751
+ interface LocationOptionsOneOf {
752
+ /** Information about business locations. */
753
+ business?: BusinessLocationOptions;
754
+ /** Information about custom locations. */
755
+ custom?: CustomLocationOptions;
756
+ }
757
+ declare enum LocationType {
758
+ /** Location set by the business that is not a standard business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction). */
759
+ CUSTOM = "CUSTOM",
760
+ /** Business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction). */
761
+ BUSINESS = "BUSINESS",
762
+ /**
763
+ * The customer specifies any address when booking. Available only for
764
+ * appointment-based services.
765
+ */
766
+ CUSTOMER = "CUSTOMER"
767
+ }
768
+ /** @enumType */
769
+ type LocationTypeWithLiterals = LocationType | 'CUSTOM' | 'BUSINESS' | 'CUSTOMER';
770
+ interface Address extends AddressStreetOneOf {
771
+ /** Street name and number. */
772
+ streetAddress?: StreetAddress;
773
+ /** @maxLength 255 */
774
+ addressLine?: string | null;
775
+ /**
776
+ * 2-letter country code in an [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.
777
+ * @format COUNTRY
778
+ */
779
+ country?: string | null;
780
+ /**
781
+ * Code for a subdivision (such as state, prefecture, or province) in [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) format.
782
+ * @maxLength 255
783
+ */
784
+ subdivision?: string | null;
785
+ /**
786
+ * City name.
787
+ * @maxLength 255
788
+ */
789
+ city?: string | null;
790
+ /**
791
+ * Postal or zip code.
792
+ * @maxLength 255
793
+ */
794
+ postalCode?: string | null;
795
+ /**
796
+ * Full address of the location.
797
+ * @maxLength 512
798
+ */
799
+ formattedAddress?: string | null;
800
+ }
801
+ /** @oneof */
802
+ interface AddressStreetOneOf {
803
+ /** Street name and number. */
804
+ streetAddress?: StreetAddress;
805
+ /** @maxLength 255 */
806
+ addressLine?: string | null;
807
+ }
808
+ /** Street address. Includes street name, number, and apartment number in separate fields. */
809
+ interface StreetAddress {
810
+ /**
811
+ * Street number.
812
+ * @maxLength 255
813
+ */
814
+ number?: string;
815
+ /**
816
+ * Street name.
817
+ * @maxLength 255
818
+ */
819
+ name?: string;
820
+ /**
821
+ * Apartment number.
822
+ * @maxLength 255
823
+ */
824
+ apt?: string;
825
+ }
826
+ interface AddressLocation {
827
+ /** Address latitude. */
828
+ latitude?: number | null;
829
+ /** Address longitude. */
830
+ longitude?: number | null;
831
+ }
832
+ interface BusinessLocationOptions {
833
+ /**
834
+ * ID of the business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction).
835
+ * When setting a business location, specify only the location ID. Other location details are overwritten.
836
+ * @format GUID
837
+ */
838
+ id?: string;
839
+ /**
840
+ * Business location name.
841
+ * @readonly
842
+ * @maxLength 150
843
+ */
844
+ name?: string;
845
+ /**
846
+ * Whether this is the default location. There can only be a single default location per site.
847
+ * @readonly
848
+ */
849
+ default?: boolean | null;
850
+ /**
851
+ * Business location address.
852
+ * @readonly
853
+ */
854
+ address?: Address;
855
+ /**
856
+ * Business location email.
857
+ * @format EMAIL
858
+ * @readonly
859
+ */
860
+ email?: string | null;
861
+ /**
862
+ * Business location phone.
863
+ * @format PHONE
864
+ * @readonly
865
+ */
866
+ phone?: string | null;
867
+ }
868
+ interface CustomLocationOptions {
869
+ /**
870
+ * ID of the custom location.
871
+ * @format GUID
872
+ * @readonly
873
+ */
874
+ id?: string;
875
+ /** Address of the custom location. */
876
+ address?: Address;
877
+ }
878
+ /**
879
+ * `BookingPolicy` is the main entity of `BookingPolicyService` and specifies a set of rules for booking a service
880
+ * by visitors and members.
881
+ *
882
+ * Each `BookingPolicy` consists of a number of sub-policies. When the Bookings App is provisioned to a meta site then a
883
+ * default `BookingPolicy` will be created with defaults for each of these sub-policies. This also applies when a request
884
+ * is received to create a new `BookingPolicy` and one or more of these sub-policies are not provided.
885
+ *
886
+ * Sub-policies are defined in separate objects as specified below.
887
+ *
888
+ * - The `LimitEarlyBookingPolicy` object defines the policy for limiting early bookings.
889
+ * - The `LimitLateBookingPolicy` object defines the policy for limiting late bookings.
890
+ * - The `BookAfterStartPolicy` object defines the policy for booking after the start of the schedule.
891
+ * - The `CancellationPolicy` object defines the policy for canceling a booked entity.
892
+ * - The `ReschedulePolicy` object defines the policy for rescheduling booked entity.
893
+ * - The `WaitlistPolicy` object defines the policy for a waitlist.
894
+ * - The `ParticipantsPolicy` object defines the policy regarding the participants per booking.
895
+ * - The `ResourcesPolicy` object defines the policy regarding the resources per booking.
896
+ * - The `CancellationFeePolicy` object defines the policy regarding cancellation fees.
897
+ * - The `SaveCreditCardPolicy` object defines the policy for saving credit card details.
898
+ *
899
+ * By default each sub-policy is disabled. A more detailed specification of the default settings of each sub-policy
900
+ * can be found in the description of the corresponding object.
901
+ *
902
+ * 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.
903
+ */
904
+ interface BookingPolicy {
905
+ /**
906
+ * The ID to the policy for the booking.
907
+ * @format GUID
908
+ */
909
+ id?: string;
910
+ /**
911
+ * Date and time the policy was created.
912
+ * @readonly
913
+ */
914
+ createdDate?: Date | null;
915
+ /**
916
+ * Date and time the policy was updated.
917
+ * @readonly
918
+ */
919
+ updatedDate?: Date | null;
920
+ /**
921
+ * Name of the policy.
922
+ * @maxLength 400
923
+ * @readonly
924
+ */
925
+ name?: string | null;
926
+ /**
927
+ * Custom description for the policy. This policy is displayed to the participant.
928
+ * @readonly
929
+ */
930
+ customPolicyDescription?: PolicyDescription;
931
+ /**
932
+ * Whether the policy is the default for the meta site.
933
+ * @readonly
934
+ */
935
+ default?: boolean | null;
936
+ /**
937
+ * Policy for limiting early bookings.
938
+ * @readonly
939
+ */
940
+ limitEarlyBookingPolicy?: LimitEarlyBookingPolicy;
941
+ /**
942
+ * Policy for limiting late bookings.
943
+ * @readonly
944
+ */
945
+ limitLateBookingPolicy?: LimitLateBookingPolicy;
946
+ /**
947
+ * Policy on booking an entity after the start of the schedule.
948
+ * @readonly
949
+ */
950
+ bookAfterStartPolicy?: BookAfterStartPolicy;
951
+ /**
952
+ * Policy for canceling a booked entity.
953
+ * @readonly
954
+ */
955
+ cancellationPolicy?: CancellationPolicy;
956
+ /**
957
+ * Policy for rescheduling a booked entity.
958
+ * @readonly
959
+ */
960
+ reschedulePolicy?: ReschedulePolicy;
961
+ /**
962
+ * Waitlist policy for the service.
963
+ * @readonly
964
+ */
965
+ waitlistPolicy?: WaitlistPolicy;
966
+ /**
967
+ * Policy regarding the participants per booking.
968
+ * @readonly
969
+ */
970
+ participantsPolicy?: ParticipantsPolicy;
971
+ /**
972
+ * Policy for allocating resources.
973
+ * @readonly
974
+ */
975
+ resourcesPolicy?: ResourcesPolicy;
976
+ /**
977
+ * Rules for cancellation fees.
978
+ * @readonly
979
+ */
980
+ cancellationFeePolicy?: CancellationFeePolicy;
981
+ /**
982
+ * Rule for saving credit card.
983
+ * @readonly
984
+ */
985
+ saveCreditCardPolicy?: SaveCreditCardPolicy;
986
+ }
987
+ /** A description of the policy to display to participants. */
988
+ interface PolicyDescription {
989
+ /**
990
+ * Whether the description should be displayed. If `true`, the description is displayed.
991
+ *
992
+ * Default: `false`
993
+ */
994
+ enabled?: boolean;
995
+ /**
996
+ * The description to display.
997
+ *
998
+ * Default: Empty
999
+ * Max length: 2500 characters
1000
+ * @maxLength 2500
1001
+ */
1002
+ description?: string;
1003
+ }
1004
+ /** The policy for limiting early bookings. */
1005
+ interface LimitEarlyBookingPolicy {
1006
+ /**
1007
+ * Whether there is a limit on how early a customer
1008
+ * can book. When `false`, there is no limit on the earliest
1009
+ * booking time and customers can book in advance, as early as they like.
1010
+ *
1011
+ * Default: `false`
1012
+ */
1013
+ enabled?: boolean;
1014
+ /**
1015
+ * Maximum number of minutes before the start of the session that a booking can be made. This value must be greater
1016
+ * than `latest_booking_in_minutes` in the `LimitLateBookingPolicy` policy.
1017
+ *
1018
+ * Default: 10080 minutes (7 days)
1019
+ * Min: 1 minute
1020
+ * @min 1
1021
+ */
1022
+ earliestBookingInMinutes?: number;
1023
+ }
1024
+ /**
1025
+ * The policy for limiting late bookings.
1026
+ *
1027
+ * This policy and the `BookAfterStartPolicy` policy cannot be enabled at the same time. So if this policy
1028
+ * is enabled, `BookAfterStartPolicy` must be disabled.
1029
+ */
1030
+ interface LimitLateBookingPolicy {
1031
+ /**
1032
+ * Whether there is a limit on how late a customer
1033
+ * can book. When `false`, there is no limit on the latest
1034
+ * booking time and customers can book up to the last minute.
1035
+ *
1036
+ * Default: `false`
1037
+ */
1038
+ enabled?: boolean;
1039
+ /**
1040
+ * Minimum number of minutes before the start of the session that a booking can be made.
1041
+ * For a schedule, this is relative to the start time of the next booked session, excluding past-booked sessions.
1042
+ * This value must be less than `earliest_booking_in_minutes` in the `LimitEarlyBookingPolicy` policy.
1043
+ *
1044
+ * Default: 1440 minutes (1 day)
1045
+ * Min: 1 minute
1046
+ * @min 1
1047
+ */
1048
+ latestBookingInMinutes?: number;
1049
+ }
1050
+ /**
1051
+ * The policy for whether a session can be booked after the start of the schedule.
1052
+ * This policy and `LimitLateBookingPolicy` cannot be enabled at the same time. So if this policy
1053
+ * is enabled, the `LimitLateBookingPolicy` policy must be disabled.
1054
+ */
1055
+ interface BookAfterStartPolicy {
1056
+ /**
1057
+ * Whether booking is allowed after the start of the schedule. When `true`,
1058
+ * customers can book after the start of the schedule.
1059
+ *
1060
+ * Default: `false`
1061
+ */
1062
+ enabled?: boolean;
1063
+ }
1064
+ /** The policy for canceling a booked session. */
1065
+ interface CancellationPolicy {
1066
+ /**
1067
+ * Whether canceling a booking is allowed. When `true`, customers
1068
+ * can cancel the booking.
1069
+ *
1070
+ * Default: `false`
1071
+ */
1072
+ enabled?: boolean;
1073
+ /**
1074
+ * Whether there is a limit on the latest cancellation time. When `true`,
1075
+ * a time limit is enforced.
1076
+ *
1077
+ * Default: `false`
1078
+ */
1079
+ limitLatestCancellation?: boolean;
1080
+ /**
1081
+ * Minimum number of minutes before the start of the booked session that the booking can be canceled.
1082
+ *
1083
+ * Default: 1440 minutes (1 day)
1084
+ * Min: 1 minute
1085
+ * @min 1
1086
+ */
1087
+ latestCancellationInMinutes?: number;
1088
+ /**
1089
+ * Whether this cancellation policy allows anonymous cancellations.
1090
+ *
1091
+ * **Important**: This flag only applies when `enabled` is `true`. If the cancellation
1092
+ * policy itself is disabled (`enabled` = `false`), anonymous users cannot cancel
1093
+ * regardless of this flag's value.
1094
+ *
1095
+ * When not set (null), defaults to enabled. Anonymous cancellations are allowed by default
1096
+ * so that customers aren't required to be site members to cancel their bookings.
1097
+ *
1098
+ * Default: `null` (treated as `true`)
1099
+ */
1100
+ allowAnonymous?: boolean | null;
1101
+ }
1102
+ /** The policy for rescheduling a booked session. */
1103
+ interface ReschedulePolicy {
1104
+ /**
1105
+ * Whether rescheduling a booking is allowed. When `true`, customers
1106
+ * can reschedule the booking.
1107
+ *
1108
+ * Default: `false`
1109
+ */
1110
+ enabled?: boolean;
1111
+ /**
1112
+ * Whether there is a limit on the latest reschedule time. When `true`,
1113
+ * a time limit is enforced.
1114
+ *
1115
+ * Default: `false`
1116
+ */
1117
+ limitLatestReschedule?: boolean;
1118
+ /**
1119
+ * Minimum number of minutes before the start of the booked session that the booking can be rescheduled.
1120
+ *
1121
+ * Default: 1440 minutes (1 day)
1122
+ * Min: 1 minute
1123
+ * @min 1
1124
+ */
1125
+ latestRescheduleInMinutes?: number;
1126
+ /**
1127
+ * Whether this reschedule policy allows anonymous rescheduling.
1128
+ *
1129
+ * **Important**: This flag only applies when `enabled` is `true`. If the reschedule
1130
+ * policy itself is disabled (`enabled` = `false`), anonymous users cannot reschedule
1131
+ * regardless of this flag's value.
1132
+ *
1133
+ * When not set (null), defaults to enabled. Anonymous rescheduling is allowed by default
1134
+ * so that customers aren't required to be site members to reschedule their bookings.
1135
+ *
1136
+ * Default: `null` (treated as `true`)
1137
+ */
1138
+ allowAnonymous?: boolean | null;
1139
+ }
1140
+ /** The policy for the waitlist. */
1141
+ interface WaitlistPolicy {
1142
+ /**
1143
+ * Whether the session has a waitlist. If `true`, there is a waitlist.
1144
+ *
1145
+ * Default: `false`
1146
+ */
1147
+ enabled?: boolean;
1148
+ /**
1149
+ * Number of spots available in the waitlist.
1150
+ *
1151
+ * Default: 10 spots
1152
+ * Min: 1 spot
1153
+ * @min 1
1154
+ */
1155
+ capacity?: number;
1156
+ /**
1157
+ * Amount of time a participant is given to book, once notified that a spot is available.
1158
+ *
1159
+ * Default: 10 minutes
1160
+ * Min: 1 spot
1161
+ * @min 1
1162
+ */
1163
+ reservationTimeInMinutes?: number;
1164
+ }
1165
+ /** The policy for the maximum number of participants per booking. */
1166
+ interface ParticipantsPolicy {
1167
+ /**
1168
+ * Maximum number of participants allowed.
1169
+ *
1170
+ * Default: 1 participant
1171
+ * Min: 1 participant
1172
+ * @min 1
1173
+ */
1174
+ maxParticipantsPerBooking?: number;
1175
+ }
1176
+ /** The policy regarding the allocation of resources (e.g. staff members). */
1177
+ interface ResourcesPolicy {
1178
+ /**
1179
+ * `true` if this policy is enabled, `false` otherwise.
1180
+ * When `false` then the client must always select a resource when booking an appointment.
1181
+ */
1182
+ enabled?: boolean;
1183
+ /**
1184
+ * `true`, if it is allowed to automatically assign a resource when booking an appointment,
1185
+ * `false`, if the client must always select a resource.
1186
+ *
1187
+ * Default: `false`
1188
+ */
1189
+ autoAssignAllowed?: boolean;
1190
+ }
1191
+ interface CancellationFeePolicy {
1192
+ /**
1193
+ * Whether canceling a booking will result in a cancellation fee
1194
+ *
1195
+ * Default: `false`
1196
+ */
1197
+ enabled?: boolean;
1198
+ /**
1199
+ * Cancellation windows describing the time of cancellation and the fee to charge.
1200
+ * @maxSize 2
1201
+ */
1202
+ cancellationWindows?: CancellationWindow[];
1203
+ /**
1204
+ * Whether the cancellation fee should not be automatically collected when customer cancels the booking.
1205
+ *
1206
+ * Default: `true`
1207
+ */
1208
+ autoCollectFeeEnabled?: boolean | null;
1209
+ }
1210
+ interface CancellationWindow extends CancellationWindowFeeOneOf {
1211
+ /** Amount to be charged as a cancellation fee. */
1212
+ amount?: Money;
1213
+ /**
1214
+ * Percentage of the original price to be charged as a cancellation fee.
1215
+ * @decimalValue options { gt:0, lte:100, maxScale:2 }
1216
+ */
1217
+ percentage?: string;
1218
+ /**
1219
+ * The fee will be applied if the booked session starts within this start time in minutes.
1220
+ * @min 1
1221
+ */
1222
+ startInMinutes?: number | null;
1223
+ }
1224
+ /** @oneof */
1225
+ interface CancellationWindowFeeOneOf {
1226
+ /** Amount to be charged as a cancellation fee. */
1227
+ amount?: Money;
1228
+ /**
1229
+ * Percentage of the original price to be charged as a cancellation fee.
1230
+ * @decimalValue options { gt:0, lte:100, maxScale:2 }
1231
+ */
1232
+ percentage?: string;
1233
+ }
1234
+ interface SaveCreditCardPolicy {
1235
+ /** Default: `false` */
1236
+ enabled?: boolean;
1237
+ }
1238
+ /**
1239
+ * Policy for determining how staff members are sorted and selected during the booking process.
1240
+ * This affects which staff member is chosen when multiple staff members are available for a service.
1241
+ */
1242
+ interface StaffSortingPolicy extends StaffSortingPolicyOptionsOneOf {
1243
+ rankingOptions?: RankingOptions;
1244
+ customOptions?: CustomOptions;
1245
+ /**
1246
+ * Method used for sorting and selecting staff members.
1247
+ *
1248
+ * Default: `RANDOM`
1249
+ */
1250
+ sortingMethodType?: SortingMethodTypeWithLiterals;
1251
+ }
1252
+ /** @oneof */
1253
+ interface StaffSortingPolicyOptionsOneOf {
1254
+ rankingOptions?: RankingOptions;
1255
+ customOptions?: CustomOptions;
1256
+ }
1257
+ /** Order for ranking-based staff selection. */
1258
+ declare enum RankingOrder {
1259
+ /** Staff members with lower priority values are selected first. */
1260
+ LOWEST_TO_HIGHEST = "LOWEST_TO_HIGHEST",
1261
+ /** Staff members with higher priority values are selected first. */
1262
+ HIGHEST_TO_LOWEST = "HIGHEST_TO_LOWEST"
1263
+ }
1264
+ /** @enumType */
1265
+ type RankingOrderWithLiterals = RankingOrder | 'LOWEST_TO_HIGHEST' | 'HIGHEST_TO_LOWEST';
1266
+ /** Method used to sort and select staff members. */
1267
+ declare enum SortingMethodType {
1268
+ /** Staff members are selected randomly from available options. */
1269
+ RANDOM = "RANDOM",
1270
+ /** Staff members are selected based on their priority ranking. */
1271
+ RANKING = "RANKING",
1272
+ /**
1273
+ * Staff members are selected using a custom implementation provided by SortStaffSPI.
1274
+ * This allows third-party apps to implement custom staff sorting logic.
1275
+ */
1276
+ CUSTOM = "CUSTOM"
1277
+ }
1278
+ /** @enumType */
1279
+ type SortingMethodTypeWithLiterals = SortingMethodType | 'RANDOM' | 'RANKING' | 'CUSTOM';
1280
+ /**
1281
+ * Configuration options for ranking-based staff selection.
1282
+ * Used when `sorting_method_type` is set to `RANKING`.
1283
+ */
1284
+ interface RankingOptions {
1285
+ /**
1286
+ * Order in which staff members are sorted by their priority ranking.
1287
+ *
1288
+ * Default: `LOWEST_TO_HIGHEST`
1289
+ */
1290
+ order?: RankingOrderWithLiterals;
1291
+ }
1292
+ /**
1293
+ * Configuration options for custom staff selection methods.
1294
+ * Used when `sorting_method_type` is set to `CUSTOM`.
1295
+ */
1296
+ interface CustomOptions {
1297
+ /**
1298
+ * ID of the custom sorting method implemented in SortStaffSPI.
1299
+ * This identifies which custom sorting algorithm to use.
1300
+ * @format GUID
1301
+ */
1302
+ implementationId?: string;
1303
+ /**
1304
+ * ID of the app that provides the custom sorting method.
1305
+ * @format GUID
1306
+ */
1307
+ appId?: string;
1308
+ }
1309
+ /** Policy for integrating with Intake form. Stores which form to use and when to present it. */
1310
+ interface IntakeFormPolicy {
1311
+ /**
1312
+ * Whether intake form integration is enabled for the service.
1313
+ * Default: `false`
1314
+ */
1315
+ enabled?: boolean;
1316
+ /**
1317
+ * ID of the intake form to integrate with the service.
1318
+ * @format GUID
1319
+ */
1320
+ formId?: string | null;
1321
+ /** When to present the intake form to the customer. */
1322
+ timing?: TimingWithLiterals;
1323
+ completionRequirement?: CompletionRequirementWithLiterals;
1324
+ }
1325
+ declare enum Timing {
1326
+ /** Send form after booking. */
1327
+ AFTER_BOOKING = "AFTER_BOOKING",
1328
+ /** Show form during booking flow. */
1329
+ BEFORE_BOOKING = "BEFORE_BOOKING"
1330
+ }
1331
+ /** @enumType */
1332
+ type TimingWithLiterals = Timing | 'AFTER_BOOKING' | 'BEFORE_BOOKING';
1333
+ /** Requirement for completing the intake form. */
1334
+ declare enum CompletionRequirement {
1335
+ /** Form completion is optional and can be skipped entirely. */
1336
+ OPTIONAL = "OPTIONAL",
1337
+ /**
1338
+ * Form must be completed before the booking can be finalized.
1339
+ * can used only if timing is BEFORE_BOOKING.
1340
+ */
1341
+ REQUIRED_BEFORE_BOOKING = "REQUIRED_BEFORE_BOOKING"
1342
+ }
1343
+ /** @enumType */
1344
+ type CompletionRequirementWithLiterals = CompletionRequirement | 'OPTIONAL' | 'REQUIRED_BEFORE_BOOKING';
1345
+ interface Schedule {
1346
+ /**
1347
+ * ID of the [schedule](https://dev.wix.com/docs/api-reference/business-management/calendar/schedules-v3/introduction)
1348
+ * to which the service's events belong.
1349
+ * @format GUID
1350
+ * @readonly
1351
+ */
1352
+ id?: string | null;
1353
+ /**
1354
+ * Start time of the first session in the schedule. For courses only.
1355
+ * @readonly
1356
+ */
1357
+ firstSessionStart?: Date | null;
1358
+ /**
1359
+ * End time of the last session in the schedule. For courses only.
1360
+ * @readonly
1361
+ */
1362
+ lastSessionEnd?: Date | null;
1363
+ /** Limitations affecting the service availability. */
1364
+ availabilityConstraints?: AvailabilityConstraints;
1365
+ }
1366
+ interface AvailabilityConstraints {
1367
+ /**
1368
+ * Calculated list of all supported session durations for the service. For
1369
+ * appointment-based services without varied pricing based on session length, it
1370
+ * matches the single value in the `sessionDurations` array. For appointment-based
1371
+ * services with varied pricing based on session length, it includes session
1372
+ * durations for all [variants](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/service-options-and-variants/introduction),
1373
+ * while ignoring `sessionDurations`.
1374
+ * For courses and classes, it includes durations for all future
1375
+ * recurring sessions but excludes durations for one-off or past recurring sessions.
1376
+ * @readonly
1377
+ * @maxSize 50
1378
+ */
1379
+ durations?: Duration[];
1380
+ /**
1381
+ * List of supported session durations in minutes.
1382
+ *
1383
+ * - For appointment-based services, specify `sessionDurations` when creating a service.
1384
+ * - 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).
1385
+ * - For classes or courses, don't specify `sessionDurations` when creating a service.
1386
+ *
1387
+ * Min: `1` minute
1388
+ * Max: `44639` minutes (30 days, 23 hours, and 59 minutes)
1389
+ * @min 1
1390
+ * @max 44639
1391
+ * @maxSize 50
1392
+ */
1393
+ sessionDurations?: number[];
1394
+ /**
1395
+ * The number of minutes between the end of a session and the start of the next.
1396
+ *
1397
+ *
1398
+ * Min: `0` minutes
1399
+ * Max: `720` minutes
1400
+ * @max 720
1401
+ */
1402
+ timeBetweenSessions?: number;
1403
+ }
1404
+ interface Duration {
1405
+ /**
1406
+ * The duration of the service in minutes.
1407
+ *
1408
+ * Min: `1` minute
1409
+ * Max: `44639` minutes (30 days, 23 hours, and 59 minutes)
1410
+ * @min 1
1411
+ * @max 44639
1412
+ */
1413
+ minutes?: number;
1414
+ }
1415
+ /** Duration range configuration for a service. */
1416
+ interface DurationRange extends DurationRangeConfigOneOf {
1417
+ /** Configuration for hourly duration. Set when `unit_type` is `HOUR`. */
1418
+ hourOptions?: HourlyConfig;
1419
+ /** Configuration for daily duration. Set when `unit_type` is `DAY`. */
1420
+ dayOptions?: DailyConfig;
1421
+ /** The unit type for this duration range. */
1422
+ unitType?: UnitTypeWithLiterals;
1423
+ }
1424
+ /** @oneof */
1425
+ interface DurationRangeConfigOneOf {
1426
+ /** Configuration for hourly duration. Set when `unit_type` is `HOUR`. */
1427
+ hourOptions?: HourlyConfig;
1428
+ /** Configuration for daily duration. Set when `unit_type` is `DAY`. */
1429
+ dayOptions?: DailyConfig;
1430
+ }
1431
+ /** The booking unit for the duration range. */
1432
+ declare enum UnitType {
1433
+ }
1434
+ /** @enumType */
1435
+ type UnitTypeWithLiterals = UnitType;
1436
+ /** Hourly duration configuration. Values are in minutes. */
1437
+ interface HourlyConfig {
1438
+ /**
1439
+ * Minimum bookable duration in minutes.
1440
+ *
1441
+ * Min: `30` minutes
1442
+ * Max: `1440` minutes (24 hours)
1443
+ * @min 30
1444
+ * @max 1440
1445
+ */
1446
+ minDurationInMinutes?: number;
1447
+ /**
1448
+ * Maximum bookable duration in minutes.
1449
+ *
1450
+ * Min: `30` minutes
1451
+ * Max: `1440` minutes (24 hours)
1452
+ * @min 30
1453
+ * @max 1440
1454
+ */
1455
+ maxDurationInMinutes?: number;
1456
+ }
1457
+ /** Daily duration configuration. Values are in days. */
1458
+ interface DailyConfig {
1459
+ /**
1460
+ * Minimum bookable duration in days.
1461
+ *
1462
+ * Min: `1` day
1463
+ * Max: `8` days
1464
+ * @min 1
1465
+ * @max 8
1466
+ */
1467
+ minDurationInDays?: number;
1468
+ /**
1469
+ * Maximum bookable duration in days.
1470
+ *
1471
+ * Min: `1` day
1472
+ * Max: `8` days
1473
+ * @min 1
1474
+ * @max 8
1475
+ */
1476
+ maxDurationInDays?: number;
1477
+ }
1478
+ interface StaffMember {
1479
+ /**
1480
+ * 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.
1481
+ * Despite the field name, this is the resource ID, not the staff member ID.
1482
+ * 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)
1483
+ * and corresponds to the IDs in the service's `staffMemberIds` field.
1484
+ * @format GUID
1485
+ * @readonly
1486
+ */
1487
+ staffMemberId?: string;
1488
+ /**
1489
+ * Name of the staff member
1490
+ * @maxLength 40
1491
+ * @readonly
1492
+ */
1493
+ name?: string | null;
1494
+ /**
1495
+ * Main media associated with the service.
1496
+ * @readonly
1497
+ */
1498
+ mainMedia?: StaffMediaItem;
1499
+ }
1500
+ interface StaffMediaItem extends StaffMediaItemItemOneOf {
1501
+ /** Details of the image associated with the staff, such as URL and size. */
1502
+ image?: Image;
1503
+ }
1504
+ /** @oneof */
1505
+ interface StaffMediaItemItemOneOf {
1506
+ /** Details of the image associated with the staff, such as URL and size. */
1507
+ image?: Image;
1508
+ }
1509
+ /**
1510
+ * Working hours location coverage derived from Calendar v3 WORKING_HOURS events
1511
+ * (`NONE` and `MASTER` recurrence types). The server paginates through Calendar results
1512
+ * (100 events per page) until all matching events are collected.
1513
+ *
1514
+ * Coverage states when enrichment is requested:
1515
+ * + `available_at_all_locations = true`: Staff applies to every business location. Set when the staff
1516
+ * uses default business working hours, or has any WORKING_HOURS event without a location ID
1517
+ * (including when mixed with location-specific events).
1518
+ * + `available_at_all_locations = false` with non-empty `location_ids`: Staff has location-specific
1519
+ * WORKING_HOURS only. Show the staff member only when the selected location is in `location_ids`.
1520
+ * + `available_at_all_locations = false` with empty `location_ids`: Staff has working-hours schedules
1521
+ * but no applicable location coverage was found.
1522
+ *
1523
+ * Recommended client filter:
1524
+ * `availableAtAllLocations || locationIds.includes(selectedLocationId)`
1525
+ *
1526
+ * Omitted when `STAFF_WORKING_HOURS_LOCATIONS` is not requested.
1527
+ */
1528
+ interface WorkingHoursLocationCoverage {
1529
+ }
1530
+ interface StaffMemberDetails {
1531
+ /**
1532
+ * Staff members providing the service. For appointments only.
1533
+ * @maxSize 220
1534
+ */
1535
+ staffMembers?: StaffMember[];
1536
+ }
1537
+ interface ResourceGroup {
1538
+ /**
1539
+ * An optional resource group ID. If specified, it references a resource group in the resource groups API.
1540
+ * TODO - referenced_entity annotation
1541
+ * @format GUID
1542
+ */
1543
+ resourceGroupId?: string | null;
1544
+ /**
1545
+ * Resource IDs. Each ID references a resource in the resources API and may be a subset of resources within a resource group.
1546
+ * TODO - referenced_entity annotation
1547
+ */
1548
+ resourceIds?: ResourceIds;
1549
+ /**
1550
+ * Specifies how many resources in the group / resource IDs are required to book the service.
1551
+ * Defaults to 1.
1552
+ * @min 1
1553
+ */
1554
+ requiredResourcesNumber?: number | null;
1555
+ /**
1556
+ * If set to `true`, the customer can select the specific resources while booking the service.
1557
+ * If set to `false`, the resources required to book the service will be auto-selected at the time of the booking.
1558
+ * Defaults to false.
1559
+ * @readonly
1560
+ */
1561
+ selectableResource?: boolean | null;
1562
+ }
1563
+ interface ResourceIds {
1564
+ /**
1565
+ * Values of the resource IDs.
1566
+ * @maxSize 100
1567
+ * @format GUID
1568
+ */
1569
+ values?: string[];
1570
+ }
1571
+ interface ServiceResource extends ServiceResourceSelectionOneOf {
1572
+ /** Details about the required [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction). */
1573
+ resourceType?: ResourceType;
1574
+ }
1575
+ /** @oneof */
1576
+ interface ServiceResourceSelectionOneOf {
1577
+ }
1578
+ interface ResourceType {
1579
+ /**
1580
+ * The type of the resource.
1581
+ * @format GUID
1582
+ */
1583
+ id?: string | null;
1584
+ /**
1585
+ * The name of the resource type.
1586
+ * @readonly
1587
+ * @maxLength 40
1588
+ * @minLength 1
1589
+ */
1590
+ name?: string | null;
1591
+ }
1592
+ /** Details about the individual resources assigned to a service resource. */
1593
+ interface ResourceDetails {
1594
+ /**
1595
+ * List of resources assigned to this service resource.
1596
+ * @maxSize 100
1597
+ */
1598
+ resources?: ResourceInfo[];
1599
+ }
1600
+ /** A resource assigned to a service resource. */
1601
+ interface ResourceInfo {
1602
+ /**
1603
+ * ID of the resource.
1604
+ * @format GUID
1605
+ * @readonly
1606
+ */
1607
+ id?: string;
1608
+ /**
1609
+ * Display name of the resource (for example, `"John Smith"` or `"Room A"`).
1610
+ * @readonly
1611
+ * @maxLength 100
1612
+ */
1613
+ name?: string | null;
1614
+ }
1615
+ interface Slug {
1616
+ /**
1617
+ * 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`.
1618
+ * @maxLength 500
1619
+ */
1620
+ name?: string;
1621
+ /**
1622
+ * 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.
1623
+ * @readonly
1624
+ */
1625
+ custom?: boolean | null;
1626
+ /**
1627
+ * Date and time the slug was created. This is a system field.
1628
+ * @readonly
1629
+ */
1630
+ createdDate?: Date | null;
1631
+ }
1632
+ interface URLs {
1633
+ /**
1634
+ * The URL for the service page.
1635
+ * @readonly
1636
+ */
1637
+ servicePage?: PageUrlV2;
1638
+ /**
1639
+ * The URL for the booking entry point. It can be either to the calendar or to the service page.
1640
+ * @readonly
1641
+ */
1642
+ bookingPage?: PageUrlV2;
1643
+ /**
1644
+ * The URL for the calendar. Can be empty if no calendar exists.
1645
+ * @readonly
1646
+ */
1647
+ calendarPage?: PageUrlV2;
1648
+ }
1649
+ interface PageUrlV2 {
1650
+ /**
1651
+ * The relative path for the page within the site. For example, `/product-page/a-product`.
1652
+ * @maxLength 2048
1653
+ */
1654
+ relativePath?: string;
1655
+ /**
1656
+ * The page's full URL. For example, `https://mysite.com/product-page/a-product`.
1657
+ * @maxLength 2048
1658
+ */
1659
+ url?: string | null;
1660
+ }
1661
+ interface ExtendedFields {
1662
+ /**
1663
+ * Extended field data. Each key corresponds to the namespace of the app that created the extended fields.
1664
+ * The value of each key is structured according to the schema defined when the extended fields were configured.
1665
+ *
1666
+ * You can only access fields for which you have the appropriate permissions.
1667
+ *
1668
+ * Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).
1669
+ */
1670
+ namespaces?: Record<string, Record<string, any>>;
1671
+ }
1672
+ /**
1673
+ * 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.
1674
+ * The search engines use this information for ranking purposes, or to display snippets in the search results.
1675
+ * 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.
1676
+ */
1677
+ interface SeoSchema {
1678
+ /** SEO tag information. */
1679
+ tags?: Tag[];
1680
+ /** SEO general settings. */
1681
+ settings?: Settings;
1682
+ }
1683
+ interface Keyword {
1684
+ /** Keyword value. */
1685
+ term?: string;
1686
+ /** Whether the keyword is the main focus keyword. */
1687
+ isMain?: boolean;
1688
+ /**
1689
+ * The source that added the keyword terms to the SEO settings.
1690
+ * @maxLength 1000
1691
+ */
1692
+ origin?: string | null;
1693
+ }
1694
+ interface Tag {
1695
+ /**
1696
+ * SEO tag type.
1697
+ *
1698
+ *
1699
+ * Supported values: `title`, `meta`, `script`, `link`.
1700
+ */
1701
+ type?: string;
1702
+ /**
1703
+ * A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value.
1704
+ * For example: `{"name": "description", "content": "the description itself"}`.
1705
+ */
1706
+ props?: Record<string, any> | null;
1707
+ /** SEO tag metadata. For example, `{"height": 300, "width": 240}`. */
1708
+ meta?: Record<string, any> | null;
1709
+ /** SEO tag inner content. For example, `<title> inner content </title>`. */
1710
+ children?: string;
1711
+ /** Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages). */
1712
+ custom?: boolean;
1713
+ /** Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines. */
1714
+ disabled?: boolean;
1715
+ }
1716
+ interface Settings {
1717
+ /**
1718
+ * 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.
1719
+ *
1720
+ *
1721
+ * Default: `false` (automatical redirect is enabled).
1722
+ */
1723
+ preventAutoRedirect?: boolean;
1724
+ /**
1725
+ * User-selected keyword terms for a specific page.
1726
+ * @maxSize 5
1727
+ */
1728
+ keywords?: Keyword[];
1729
+ }
1730
+ interface AddOnGroup {
1731
+ /**
1732
+ * ID of the add-on group.
1733
+ * Wix Bookings automatically populates this field when creating or updating an add-on group.
1734
+ * @readonly
1735
+ * @format GUID
1736
+ */
1737
+ id?: string | null;
1738
+ /**
1739
+ * Name of the add-on group.
1740
+ * @maxLength 100
1741
+ */
1742
+ name?: string | null;
1743
+ /**
1744
+ * 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.
1745
+ * When empty, there's no upper limit.
1746
+ */
1747
+ maxNumberOfAddOns?: number | null;
1748
+ /**
1749
+ * 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.
1750
+ * @format GUID
1751
+ * @maxSize 7
1752
+ */
1753
+ addOnIds?: string[] | null;
1754
+ /**
1755
+ * Description or instructional prompt of the add-on group that's displayed to customers when booking the service.
1756
+ * @maxLength 200
1757
+ */
1758
+ prompt?: string | null;
1759
+ }
1760
+ interface AddOnDetails {
1761
+ /**
1762
+ * ID of the add-on.
1763
+ * @format GUID
1764
+ */
1765
+ addOnId?: string | null;
1766
+ /**
1767
+ * Duration in minutes for add-ons that extend service time.
1768
+ * Empty for [quantity-based add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction#terminology).
1769
+ */
1770
+ durationInMinutes?: number | null;
1771
+ }
1772
+ /** `TaxableAddress` defines the taxable address used for the service. */
1773
+ interface TaxableAddress {
1774
+ /** Taxable address type. */
1775
+ taxableAddressType?: TaxableAddressTypeWithLiterals;
1776
+ }
1777
+ declare enum TaxableAddressType {
1778
+ BUSINESS = "BUSINESS",
1779
+ BILLING = "BILLING"
1780
+ }
1781
+ /** @enumType */
1782
+ type TaxableAddressTypeWithLiterals = TaxableAddressType | 'BUSINESS' | 'BILLING';
1783
+ interface PhoneCall {
1784
+ /** Whether the service is delivered via phone call. */
1785
+ enabled?: boolean | null;
1786
+ }
1787
+ interface CursorPagingMetadata {
1788
+ /** Number of items returned in the response. */
1789
+ count?: number | null;
1790
+ /** Cursor strings that point to the next page, previous page, or both. */
1791
+ cursors?: Cursors;
1792
+ /**
1793
+ * Whether there are more pages to retrieve following the current page.
1794
+ *
1795
+ * + `true`: Another page of results can be retrieved.
1796
+ * + `false`: This is the last page.
1797
+ */
1798
+ hasNext?: boolean | null;
1799
+ }
1800
+ interface Cursors {
1801
+ /**
1802
+ * Cursor string pointing to the next page in the list of results.
1803
+ * @maxLength 16000
1804
+ */
1805
+ next?: string | null;
1806
+ /**
1807
+ * Cursor pointing to the previous page in the list of results.
1808
+ * @maxLength 16000
1809
+ */
1810
+ prev?: string | null;
1811
+ }
1812
+
1813
+ type __PublicMethodMetaInfo<K = string, M = unknown, T = unknown, S = unknown, Q = unknown, R = unknown> = {
1814
+ getUrl: (context: any) => string;
1815
+ httpMethod: K;
1816
+ path: string;
1817
+ pathParams: M;
1818
+ __requestType: T;
1819
+ __originalRequestType: S;
1820
+ __responseType: Q;
1821
+ __originalResponseType: R;
1822
+ };
1823
+ declare function queryServicesByAvailability(): __PublicMethodMetaInfo<'POST', {}, QueryServicesByAvailabilityRequest$1, QueryServicesByAvailabilityRequest, QueryServicesByAvailabilityResponse$1, QueryServicesByAvailabilityResponse>;
1824
+
1825
+ export { type AddOnDetails as AddOnDetailsOriginal, type AddOnGroup as AddOnGroupOriginal, AddOnPaymentOptions as AddOnPaymentOptionsOriginal, type AddOnPaymentOptionsWithLiterals as AddOnPaymentOptionsWithLiteralsOriginal, type AddressLocation as AddressLocationOriginal, type Address as AddressOriginal, type AddressStreetOneOf as AddressStreetOneOfOriginal, type Attribute as AttributeOriginal, type AttributeValueOneOf as AttributeValueOneOfOriginal, type AvailabilityConstraints as AvailabilityConstraintsOriginal, type AvailabilityFilter as AvailabilityFilterOriginal, type BookAfterStartPolicy as BookAfterStartPolicyOriginal, type BookingPolicy as BookingPolicyOriginal, type BusinessLocationOptions as BusinessLocationOptionsOriginal, type CancellationFeePolicy as CancellationFeePolicyOriginal, type CancellationPolicy as CancellationPolicyOriginal, type CancellationWindowFeeOneOf as CancellationWindowFeeOneOfOriginal, type CancellationWindow as CancellationWindowOriginal, type CatalogSearchResult as CatalogSearchResultOriginal, type Category as CategoryOriginal, CompletionRequirement as CompletionRequirementOriginal, type CompletionRequirementWithLiterals as CompletionRequirementWithLiteralsOriginal, type Conferencing as ConferencingOriginal, type CursorPagingMetadata as CursorPagingMetadataOriginal, type CursorPaging as CursorPagingOriginal, type Cursors as CursorsOriginal, type CustomLocationOptions as CustomLocationOptionsOriginal, type CustomOptions as CustomOptionsOriginal, type CustomPayment as CustomPaymentOriginal, type DailyConfig as DailyConfigOriginal, type DiscountInfo as DiscountInfoOriginal, type Duration as DurationOriginal, type DurationRangeConfigOneOf as DurationRangeConfigOneOfOriginal, type DurationRange as DurationRangeOriginal, type ExtendedFields as ExtendedFieldsOriginal, FirstChargeDateType as FirstChargeDateTypeOriginal, type FirstChargeDateTypeWithLiterals as FirstChargeDateTypeWithLiteralsOriginal, type FixedPayment as FixedPaymentOriginal, type Form as FormOriginal, type FormSettings as FormSettingsOriginal, FrequencyType as FrequencyTypeOriginal, type FrequencyTypeWithLiterals as FrequencyTypeWithLiteralsOriginal, type FullUpfrontPayment as FullUpfrontPaymentOriginal, type HourlyConfig as HourlyConfigOriginal, type Image as ImageOriginal, type IntakeFormPolicy as IntakeFormPolicyOriginal, type Keyword as KeywordOriginal, type LimitEarlyBookingPolicy as LimitEarlyBookingPolicyOriginal, type LimitLateBookingPolicy as LimitLateBookingPolicyOriginal, type LocationOptionsOneOf as LocationOptionsOneOfOriginal, type Location as LocationOriginal, LocationType as LocationTypeOriginal, type LocationTypeWithLiterals as LocationTypeWithLiteralsOriginal, type MediaItemItemOneOf as MediaItemItemOneOfOriginal, type MediaItem as MediaItemOriginal, type Media as MediaOriginal, type Money as MoneyOriginal, type OnlineBooking as OnlineBookingOriginal, type PageUrlV2 as PageUrlV2Original, type Paging as PagingOriginal, type ParticipantsPolicy as ParticipantsPolicyOriginal, type PaymentOptions as PaymentOptionsOriginal, type Payment as PaymentOriginal, type PaymentRateOneOf as PaymentRateOneOfOriginal, type PhoneCall as PhoneCallOriginal, type PolicyDescription as PolicyDescriptionOriginal, type QueryServicesByAvailabilityRequest as QueryServicesByAvailabilityRequestOriginal, type QueryServicesByAvailabilityResponse as QueryServicesByAvailabilityResponseOriginal, type QueryV2 as QueryV2Original, type QueryV2PagingMethodOneOf as QueryV2PagingMethodOneOfOriginal, type RankingOptions as RankingOptionsOriginal, RankingOrder as RankingOrderOriginal, type RankingOrderWithLiterals as RankingOrderWithLiteralsOriginal, RateType as RateTypeOriginal, type RateTypeWithLiterals as RateTypeWithLiteralsOriginal, type ReschedulePolicy as ReschedulePolicyOriginal, type ResourceDetails as ResourceDetailsOriginal, type ResourceGroup as ResourceGroupOriginal, type ResourceIds as ResourceIdsOriginal, type ResourceInfo as ResourceInfoOriginal, type ResourceType as ResourceTypeOriginal, type ResourcesPolicy as ResourcesPolicyOriginal, type SaveCreditCardPolicy as SaveCreditCardPolicyOriginal, type Schedule as ScheduleOriginal, type SeoSchema as SeoSchemaOriginal, type Service as ServiceOriginal, type ServiceResource as ServiceResourceOriginal, type ServiceResourceSelectionOneOf as ServiceResourceSelectionOneOfOriginal, ServiceType as ServiceTypeOriginal, type ServiceTypeWithLiterals as ServiceTypeWithLiteralsOriginal, type ServiceWithAvailability as ServiceWithAvailabilityOriginal, type Settings as SettingsOriginal, type Slug as SlugOriginal, SortOrder as SortOrderOriginal, type SortOrderWithLiterals as SortOrderWithLiteralsOriginal, SortingMethodType as SortingMethodTypeOriginal, type SortingMethodTypeWithLiterals as SortingMethodTypeWithLiteralsOriginal, type Sorting as SortingOriginal, type StaffMediaItemItemOneOf as StaffMediaItemItemOneOfOriginal, type StaffMediaItem as StaffMediaItemOriginal, type StaffMemberDetails as StaffMemberDetailsOriginal, type StaffMember as StaffMemberOriginal, type StaffSortingPolicyOptionsOneOf as StaffSortingPolicyOptionsOneOfOriginal, type StaffSortingPolicy as StaffSortingPolicyOriginal, type StreetAddress as StreetAddressOriginal, type SubscriptionPayment as SubscriptionPaymentOriginal, type Tag as TagOriginal, type TaxableAddress as TaxableAddressOriginal, TaxableAddressType as TaxableAddressTypeOriginal, type TaxableAddressTypeWithLiterals as TaxableAddressTypeWithLiteralsOriginal, Timing as TimingOriginal, type TimingWithLiterals as TimingWithLiteralsOriginal, type URLs as URLsOriginal, UnitType as UnitTypeOriginal, type UnitTypeWithLiterals as UnitTypeWithLiteralsOriginal, type VariedPayment as VariedPaymentOriginal, type WaitlistPolicy as WaitlistPolicyOriginal, type WorkingHoursLocationCoverage as WorkingHoursLocationCoverageOriginal, type __PublicMethodMetaInfo, queryServicesByAvailability };