order3000 1.9.0 → 1.11.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.
@@ -0,0 +1,3648 @@
1
+ interface components {
2
+ schemas: {
3
+ /** FetchAdsResponse */
4
+ FetchAdsResponse: {
5
+ id: string;
6
+ venueId: string;
7
+ ownerEntityType: components["schemas"]["AdOwnerType"];
8
+ ownerEntityId: string;
9
+ channel: components["schemas"]["AdChannel"];
10
+ status: components["schemas"]["AdStatus"];
11
+ campaignId: string | null;
12
+ content: (string | number | boolean | (null)) | {
13
+ [key: string]: unknown;
14
+ } | unknown[];
15
+ metaContent: ((string | number | boolean | (null)) | {
16
+ [key: string]: unknown;
17
+ } | unknown[]) | null;
18
+ metaRefs: ((string | number | boolean | (null)) | {
19
+ [key: string]: unknown;
20
+ } | unknown[]) | null;
21
+ servedMarket: ((string | number | boolean | (null)) | {
22
+ [key: string]: unknown;
23
+ } | unknown[]) | null;
24
+ keywords: (string | number | boolean | (null)) | {
25
+ [key: string]: unknown;
26
+ } | unknown[];
27
+ negativeKeywords: (string | number | boolean | (null)) | {
28
+ [key: string]: unknown;
29
+ } | unknown[];
30
+ disabledVenueKeywords: (string | number | boolean | (null)) | {
31
+ [key: string]: unknown;
32
+ } | unknown[];
33
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
34
+ [key: string]: unknown;
35
+ } | unknown[];
36
+ dismissedKeywords: (string | number | boolean | (null)) | {
37
+ [key: string]: unknown;
38
+ } | unknown[];
39
+ keywordMetrics: (string | number | boolean | (null)) | {
40
+ [key: string]: unknown;
41
+ } | unknown[];
42
+ websitePageIds: (string | number | boolean | (null)) | {
43
+ [key: string]: unknown;
44
+ } | unknown[];
45
+ calloutIds: (string | number | boolean | (null)) | {
46
+ [key: string]: unknown;
47
+ } | unknown[];
48
+ publishedContentHash: string | null;
49
+ publishedAt: unknown;
50
+ pushedKeywords: ((string | number | boolean | (null)) | {
51
+ [key: string]: unknown;
52
+ } | unknown[]) | null;
53
+ dailyBudget: number | null;
54
+ createdBy: string | null;
55
+ updatedBy: string | null;
56
+ createdAt: unknown;
57
+ updatedAt: unknown;
58
+ }[];
59
+ /** FetchAdResponse */
60
+ FetchAdResponse: {
61
+ id: string;
62
+ venueId: string;
63
+ ownerEntityType: components["schemas"]["AdOwnerType"];
64
+ ownerEntityId: string;
65
+ channel: components["schemas"]["AdChannel"];
66
+ status: components["schemas"]["AdStatus"];
67
+ campaignId: string | null;
68
+ content: (string | number | boolean | (null)) | {
69
+ [key: string]: unknown;
70
+ } | unknown[];
71
+ metaContent: ((string | number | boolean | (null)) | {
72
+ [key: string]: unknown;
73
+ } | unknown[]) | null;
74
+ metaRefs: ((string | number | boolean | (null)) | {
75
+ [key: string]: unknown;
76
+ } | unknown[]) | null;
77
+ servedMarket: ((string | number | boolean | (null)) | {
78
+ [key: string]: unknown;
79
+ } | unknown[]) | null;
80
+ keywords: (string | number | boolean | (null)) | {
81
+ [key: string]: unknown;
82
+ } | unknown[];
83
+ negativeKeywords: (string | number | boolean | (null)) | {
84
+ [key: string]: unknown;
85
+ } | unknown[];
86
+ disabledVenueKeywords: (string | number | boolean | (null)) | {
87
+ [key: string]: unknown;
88
+ } | unknown[];
89
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
90
+ [key: string]: unknown;
91
+ } | unknown[];
92
+ dismissedKeywords: (string | number | boolean | (null)) | {
93
+ [key: string]: unknown;
94
+ } | unknown[];
95
+ keywordMetrics: (string | number | boolean | (null)) | {
96
+ [key: string]: unknown;
97
+ } | unknown[];
98
+ websitePageIds: (string | number | boolean | (null)) | {
99
+ [key: string]: unknown;
100
+ } | unknown[];
101
+ calloutIds: (string | number | boolean | (null)) | {
102
+ [key: string]: unknown;
103
+ } | unknown[];
104
+ publishedContentHash: string | null;
105
+ publishedAt: unknown;
106
+ pushedKeywords: ((string | number | boolean | (null)) | {
107
+ [key: string]: unknown;
108
+ } | unknown[]) | null;
109
+ dailyBudget: number | null;
110
+ createdBy: string | null;
111
+ updatedBy: string | null;
112
+ createdAt: unknown;
113
+ updatedAt: unknown;
114
+ };
115
+ /**
116
+ * CreateAdRequest
117
+ * @description Request payload for creating a new ad
118
+ */
119
+ CreateAdRequest: {
120
+ venueAccessor: string;
121
+ ownerEntityType: components["schemas"]["AdOwnerType"];
122
+ ownerEntityId: string;
123
+ channel: components["schemas"]["AdChannel"];
124
+ };
125
+ /**
126
+ * CreateAdResponse
127
+ * @description Successfully created ad
128
+ */
129
+ CreateAdResponse: {
130
+ id: string;
131
+ venueId: string;
132
+ ownerEntityType: components["schemas"]["AdOwnerType"];
133
+ ownerEntityId: string;
134
+ channel: components["schemas"]["AdChannel"];
135
+ status: components["schemas"]["AdStatus"];
136
+ campaignId: string | null;
137
+ content: (string | number | boolean | (null)) | {
138
+ [key: string]: unknown;
139
+ } | unknown[];
140
+ metaContent: ((string | number | boolean | (null)) | {
141
+ [key: string]: unknown;
142
+ } | unknown[]) | null;
143
+ metaRefs: ((string | number | boolean | (null)) | {
144
+ [key: string]: unknown;
145
+ } | unknown[]) | null;
146
+ servedMarket: ((string | number | boolean | (null)) | {
147
+ [key: string]: unknown;
148
+ } | unknown[]) | null;
149
+ keywords: (string | number | boolean | (null)) | {
150
+ [key: string]: unknown;
151
+ } | unknown[];
152
+ negativeKeywords: (string | number | boolean | (null)) | {
153
+ [key: string]: unknown;
154
+ } | unknown[];
155
+ disabledVenueKeywords: (string | number | boolean | (null)) | {
156
+ [key: string]: unknown;
157
+ } | unknown[];
158
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
159
+ [key: string]: unknown;
160
+ } | unknown[];
161
+ dismissedKeywords: (string | number | boolean | (null)) | {
162
+ [key: string]: unknown;
163
+ } | unknown[];
164
+ keywordMetrics: (string | number | boolean | (null)) | {
165
+ [key: string]: unknown;
166
+ } | unknown[];
167
+ websitePageIds: (string | number | boolean | (null)) | {
168
+ [key: string]: unknown;
169
+ } | unknown[];
170
+ calloutIds: (string | number | boolean | (null)) | {
171
+ [key: string]: unknown;
172
+ } | unknown[];
173
+ publishedContentHash: string | null;
174
+ publishedAt: unknown;
175
+ pushedKeywords: ((string | number | boolean | (null)) | {
176
+ [key: string]: unknown;
177
+ } | unknown[]) | null;
178
+ dailyBudget: number | null;
179
+ createdBy: string | null;
180
+ updatedBy: string | null;
181
+ createdAt: unknown;
182
+ updatedAt: unknown;
183
+ };
184
+ /**
185
+ * EditAdRequest
186
+ * @description Partial-update body for an existing ad
187
+ */
188
+ EditAdRequest: {
189
+ venueAccessor: string;
190
+ id: string;
191
+ content?: {
192
+ businessName: {
193
+ [key: string]: string;
194
+ };
195
+ headlines: {
196
+ [key: string]: string[];
197
+ };
198
+ descriptions: {
199
+ [key: string]: string[];
200
+ };
201
+ paths: {
202
+ [key: string]: string[];
203
+ };
204
+ /** Format: uri */
205
+ finalUrl: string;
206
+ };
207
+ status?: components["schemas"]["AdStatus"];
208
+ };
209
+ /**
210
+ * EditAdResponse
211
+ * @description Successfully updated ad
212
+ */
213
+ EditAdResponse: {
214
+ id: string;
215
+ venueId: string;
216
+ ownerEntityType: components["schemas"]["AdOwnerType"];
217
+ ownerEntityId: string;
218
+ channel: components["schemas"]["AdChannel"];
219
+ status: components["schemas"]["AdStatus"];
220
+ campaignId: string | null;
221
+ content: (string | number | boolean | (null)) | {
222
+ [key: string]: unknown;
223
+ } | unknown[];
224
+ metaContent: ((string | number | boolean | (null)) | {
225
+ [key: string]: unknown;
226
+ } | unknown[]) | null;
227
+ metaRefs: ((string | number | boolean | (null)) | {
228
+ [key: string]: unknown;
229
+ } | unknown[]) | null;
230
+ servedMarket: ((string | number | boolean | (null)) | {
231
+ [key: string]: unknown;
232
+ } | unknown[]) | null;
233
+ keywords: (string | number | boolean | (null)) | {
234
+ [key: string]: unknown;
235
+ } | unknown[];
236
+ negativeKeywords: (string | number | boolean | (null)) | {
237
+ [key: string]: unknown;
238
+ } | unknown[];
239
+ disabledVenueKeywords: (string | number | boolean | (null)) | {
240
+ [key: string]: unknown;
241
+ } | unknown[];
242
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
243
+ [key: string]: unknown;
244
+ } | unknown[];
245
+ dismissedKeywords: (string | number | boolean | (null)) | {
246
+ [key: string]: unknown;
247
+ } | unknown[];
248
+ keywordMetrics: (string | number | boolean | (null)) | {
249
+ [key: string]: unknown;
250
+ } | unknown[];
251
+ websitePageIds: (string | number | boolean | (null)) | {
252
+ [key: string]: unknown;
253
+ } | unknown[];
254
+ calloutIds: (string | number | boolean | (null)) | {
255
+ [key: string]: unknown;
256
+ } | unknown[];
257
+ publishedContentHash: string | null;
258
+ publishedAt: unknown;
259
+ pushedKeywords: ((string | number | boolean | (null)) | {
260
+ [key: string]: unknown;
261
+ } | unknown[]) | null;
262
+ dailyBudget: number | null;
263
+ createdBy: string | null;
264
+ updatedBy: string | null;
265
+ createdAt: unknown;
266
+ updatedAt: unknown;
267
+ };
268
+ /**
269
+ * EditMetaAdRequest
270
+ * @description Partial-update body for an existing Meta ad
271
+ */
272
+ EditMetaAdRequest: {
273
+ venueAccessor: string;
274
+ id: string;
275
+ metaContent?: {
276
+ primaryText: {
277
+ [key: string]: string;
278
+ };
279
+ headline: {
280
+ [key: string]: string;
281
+ };
282
+ description: {
283
+ [key: string]: string;
284
+ };
285
+ /** Format: uri */
286
+ finalUrl: string;
287
+ callToAction: string;
288
+ creatives: {
289
+ [key: string]: {
290
+ assetId: string;
291
+ };
292
+ };
293
+ };
294
+ status?: components["schemas"]["AdStatus"];
295
+ };
296
+ /**
297
+ * EditMetaAdResponse
298
+ * @description Successfully updated Meta ad
299
+ */
300
+ EditMetaAdResponse: {
301
+ id: string;
302
+ venueId: string;
303
+ ownerEntityType: components["schemas"]["AdOwnerType"];
304
+ ownerEntityId: string;
305
+ channel: components["schemas"]["AdChannel"];
306
+ status: components["schemas"]["AdStatus"];
307
+ campaignId: string | null;
308
+ content: (string | number | boolean | (null)) | {
309
+ [key: string]: unknown;
310
+ } | unknown[];
311
+ metaContent: ((string | number | boolean | (null)) | {
312
+ [key: string]: unknown;
313
+ } | unknown[]) | null;
314
+ metaRefs: ((string | number | boolean | (null)) | {
315
+ [key: string]: unknown;
316
+ } | unknown[]) | null;
317
+ servedMarket: ((string | number | boolean | (null)) | {
318
+ [key: string]: unknown;
319
+ } | unknown[]) | null;
320
+ keywords: (string | number | boolean | (null)) | {
321
+ [key: string]: unknown;
322
+ } | unknown[];
323
+ negativeKeywords: (string | number | boolean | (null)) | {
324
+ [key: string]: unknown;
325
+ } | unknown[];
326
+ disabledVenueKeywords: (string | number | boolean | (null)) | {
327
+ [key: string]: unknown;
328
+ } | unknown[];
329
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
330
+ [key: string]: unknown;
331
+ } | unknown[];
332
+ dismissedKeywords: (string | number | boolean | (null)) | {
333
+ [key: string]: unknown;
334
+ } | unknown[];
335
+ keywordMetrics: (string | number | boolean | (null)) | {
336
+ [key: string]: unknown;
337
+ } | unknown[];
338
+ websitePageIds: (string | number | boolean | (null)) | {
339
+ [key: string]: unknown;
340
+ } | unknown[];
341
+ calloutIds: (string | number | boolean | (null)) | {
342
+ [key: string]: unknown;
343
+ } | unknown[];
344
+ publishedContentHash: string | null;
345
+ publishedAt: unknown;
346
+ pushedKeywords: ((string | number | boolean | (null)) | {
347
+ [key: string]: unknown;
348
+ } | unknown[]) | null;
349
+ dailyBudget: number | null;
350
+ createdBy: string | null;
351
+ updatedBy: string | null;
352
+ createdAt: unknown;
353
+ updatedAt: unknown;
354
+ };
355
+ /** SaveAdKeywordsRequest */
356
+ SaveAdKeywordsRequest: {
357
+ venueAccessor: string;
358
+ adId: string;
359
+ keywords: string[];
360
+ dismissedKeywords: string[];
361
+ disabledVenueKeywords: string[];
362
+ };
363
+ /** SaveAdKeywordsResponse */
364
+ SaveAdKeywordsResponse: {
365
+ success: boolean;
366
+ keywords: string[];
367
+ dismissedKeywords: string[];
368
+ disabledVenueKeywords: string[];
369
+ };
370
+ /** SaveAdCalloutsRequest */
371
+ SaveAdCalloutsRequest: {
372
+ venueAccessor: string;
373
+ adId: string;
374
+ calloutIds: string[];
375
+ };
376
+ /** SaveAdCalloutsResponse */
377
+ SaveAdCalloutsResponse: {
378
+ success: boolean;
379
+ calloutIds: string[];
380
+ };
381
+ /** SaveAdNegativeKeywordsRequest */
382
+ SaveAdNegativeKeywordsRequest: {
383
+ venueAccessor: string;
384
+ adId: string;
385
+ negativeKeywords: string[];
386
+ /** @default [] */
387
+ disabledVenueNegativeKeywords: string[];
388
+ };
389
+ /** SaveAdNegativeKeywordsResponse */
390
+ SaveAdNegativeKeywordsResponse: {
391
+ success: boolean;
392
+ negativeKeywords: string[];
393
+ disabledVenueNegativeKeywords: string[];
394
+ syncedToGoogle: boolean;
395
+ };
396
+ /** SaveAdWebsitePagesRequest */
397
+ SaveAdWebsitePagesRequest: {
398
+ venueAccessor: string;
399
+ adId: string;
400
+ websitePageIds: string[];
401
+ };
402
+ /** SaveAdWebsitePagesResponse */
403
+ SaveAdWebsitePagesResponse: {
404
+ success: boolean;
405
+ websitePageIds: string[];
406
+ };
407
+ /** SetAdBudgetRequest */
408
+ SetAdBudgetRequest: {
409
+ venueAccessor: string;
410
+ adId: string;
411
+ dailyBudget: number;
412
+ };
413
+ /** SetAdBudgetResponse */
414
+ SetAdBudgetResponse: {
415
+ id: string;
416
+ venueId: string;
417
+ ownerEntityType: components["schemas"]["AdOwnerType"];
418
+ ownerEntityId: string;
419
+ channel: components["schemas"]["AdChannel"];
420
+ status: components["schemas"]["AdStatus"];
421
+ campaignId: string | null;
422
+ content: (string | number | boolean | (null)) | {
423
+ [key: string]: unknown;
424
+ } | unknown[];
425
+ metaContent: ((string | number | boolean | (null)) | {
426
+ [key: string]: unknown;
427
+ } | unknown[]) | null;
428
+ metaRefs: ((string | number | boolean | (null)) | {
429
+ [key: string]: unknown;
430
+ } | unknown[]) | null;
431
+ servedMarket: ((string | number | boolean | (null)) | {
432
+ [key: string]: unknown;
433
+ } | unknown[]) | null;
434
+ keywords: (string | number | boolean | (null)) | {
435
+ [key: string]: unknown;
436
+ } | unknown[];
437
+ negativeKeywords: (string | number | boolean | (null)) | {
438
+ [key: string]: unknown;
439
+ } | unknown[];
440
+ disabledVenueKeywords: (string | number | boolean | (null)) | {
441
+ [key: string]: unknown;
442
+ } | unknown[];
443
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
444
+ [key: string]: unknown;
445
+ } | unknown[];
446
+ dismissedKeywords: (string | number | boolean | (null)) | {
447
+ [key: string]: unknown;
448
+ } | unknown[];
449
+ keywordMetrics: (string | number | boolean | (null)) | {
450
+ [key: string]: unknown;
451
+ } | unknown[];
452
+ websitePageIds: (string | number | boolean | (null)) | {
453
+ [key: string]: unknown;
454
+ } | unknown[];
455
+ calloutIds: (string | number | boolean | (null)) | {
456
+ [key: string]: unknown;
457
+ } | unknown[];
458
+ publishedContentHash: string | null;
459
+ publishedAt: unknown;
460
+ pushedKeywords: ((string | number | boolean | (null)) | {
461
+ [key: string]: unknown;
462
+ } | unknown[]) | null;
463
+ dailyBudget: number | null;
464
+ createdBy: string | null;
465
+ updatedBy: string | null;
466
+ createdAt: unknown;
467
+ updatedAt: unknown;
468
+ };
469
+ /** DeleteAdResponse */
470
+ DeleteAdResponse: {
471
+ id: string;
472
+ venueId: string;
473
+ ownerEntityType: components["schemas"]["AdOwnerType"];
474
+ ownerEntityId: string;
475
+ channel: components["schemas"]["AdChannel"];
476
+ status: components["schemas"]["AdStatus"];
477
+ campaignId: string | null;
478
+ content: (string | number | boolean | (null)) | {
479
+ [key: string]: unknown;
480
+ } | unknown[];
481
+ metaContent: ((string | number | boolean | (null)) | {
482
+ [key: string]: unknown;
483
+ } | unknown[]) | null;
484
+ metaRefs: ((string | number | boolean | (null)) | {
485
+ [key: string]: unknown;
486
+ } | unknown[]) | null;
487
+ servedMarket: ((string | number | boolean | (null)) | {
488
+ [key: string]: unknown;
489
+ } | unknown[]) | null;
490
+ keywords: (string | number | boolean | (null)) | {
491
+ [key: string]: unknown;
492
+ } | unknown[];
493
+ negativeKeywords: (string | number | boolean | (null)) | {
494
+ [key: string]: unknown;
495
+ } | unknown[];
496
+ disabledVenueKeywords: (string | number | boolean | (null)) | {
497
+ [key: string]: unknown;
498
+ } | unknown[];
499
+ disabledVenueNegativeKeywords: (string | number | boolean | (null)) | {
500
+ [key: string]: unknown;
501
+ } | unknown[];
502
+ dismissedKeywords: (string | number | boolean | (null)) | {
503
+ [key: string]: unknown;
504
+ } | unknown[];
505
+ keywordMetrics: (string | number | boolean | (null)) | {
506
+ [key: string]: unknown;
507
+ } | unknown[];
508
+ websitePageIds: (string | number | boolean | (null)) | {
509
+ [key: string]: unknown;
510
+ } | unknown[];
511
+ calloutIds: (string | number | boolean | (null)) | {
512
+ [key: string]: unknown;
513
+ } | unknown[];
514
+ publishedContentHash: string | null;
515
+ publishedAt: unknown;
516
+ pushedKeywords: ((string | number | boolean | (null)) | {
517
+ [key: string]: unknown;
518
+ } | unknown[]) | null;
519
+ dailyBudget: number | null;
520
+ createdBy: string | null;
521
+ updatedBy: string | null;
522
+ createdAt: unknown;
523
+ updatedAt: unknown;
524
+ };
525
+ /**
526
+ * Area
527
+ * @description A bookable + public area for a venue. Assets are only included when the request expands them. Operational flags (`isActive`, `isPublic`, `isBookable`) and audit columns are only populated for authenticated venue staff.
528
+ */
529
+ Area: {
530
+ id: string;
531
+ venueId: string;
532
+ accessor: string;
533
+ name: {
534
+ [key: string]: string;
535
+ };
536
+ description: {
537
+ [key: string]: string;
538
+ } | null;
539
+ longDescription: {
540
+ [key: string]: string;
541
+ } | null;
542
+ minCapacity: number | null;
543
+ maxCapacity: number;
544
+ currency: components["schemas"]["Currency"];
545
+ basePrice: number | null;
546
+ perPersonPrice: number | null;
547
+ features: {
548
+ icon: string;
549
+ label: {
550
+ [key: string]: string;
551
+ };
552
+ description?: {
553
+ [key: string]: string;
554
+ };
555
+ }[] | null;
556
+ bookingMode: components["schemas"]["AreaBookingMode"];
557
+ isBookable?: boolean;
558
+ isPublic?: boolean;
559
+ isActive?: boolean;
560
+ areaType?: components["schemas"]["AreaType"];
561
+ turnTimes?: {
562
+ [key: string]: number;
563
+ } | null;
564
+ cleanup?: number | null;
565
+ assets?: {
566
+ id: string;
567
+ type: components["schemas"]["AssetType"];
568
+ tags: string[] | null;
569
+ filename: string;
570
+ contentType: string;
571
+ metadata: {
572
+ width?: number;
573
+ height?: number;
574
+ duration?: number;
575
+ } | null;
576
+ cropArea: {
577
+ x: number;
578
+ y: number;
579
+ width: number;
580
+ height: number;
581
+ } | null;
582
+ /** Format: uri */
583
+ publicUrl: string;
584
+ }[];
585
+ closures?: {
586
+ id: string;
587
+ date: string;
588
+ reason: {
589
+ [key: string]: string;
590
+ } | null;
591
+ isActive: boolean;
592
+ }[];
593
+ };
594
+ /** FetchAreasResponse */
595
+ FetchAreasResponse: components["schemas"]["Area"][];
596
+ /**
597
+ * FetchAreaResponse
598
+ * @description A bookable + public area for a venue. Assets are only included when the request expands them. Operational flags (`isActive`, `isPublic`, `isBookable`) and audit columns are only populated for authenticated venue staff.
599
+ */
600
+ FetchAreaResponse: {
601
+ id: string;
602
+ venueId: string;
603
+ accessor: string;
604
+ name: {
605
+ [key: string]: string;
606
+ };
607
+ description: {
608
+ [key: string]: string;
609
+ } | null;
610
+ longDescription: {
611
+ [key: string]: string;
612
+ } | null;
613
+ minCapacity: number | null;
614
+ maxCapacity: number;
615
+ currency: components["schemas"]["Currency"];
616
+ basePrice: number | null;
617
+ perPersonPrice: number | null;
618
+ features: {
619
+ icon: string;
620
+ label: {
621
+ [key: string]: string;
622
+ };
623
+ description?: {
624
+ [key: string]: string;
625
+ };
626
+ }[] | null;
627
+ bookingMode: components["schemas"]["AreaBookingMode"];
628
+ isBookable?: boolean;
629
+ isPublic?: boolean;
630
+ isActive?: boolean;
631
+ areaType?: components["schemas"]["AreaType"];
632
+ turnTimes?: {
633
+ [key: string]: number;
634
+ } | null;
635
+ cleanup?: number | null;
636
+ assets?: {
637
+ id: string;
638
+ type: components["schemas"]["AssetType"];
639
+ tags: string[] | null;
640
+ filename: string;
641
+ contentType: string;
642
+ metadata: {
643
+ width?: number;
644
+ height?: number;
645
+ duration?: number;
646
+ } | null;
647
+ cropArea: {
648
+ x: number;
649
+ y: number;
650
+ width: number;
651
+ height: number;
652
+ } | null;
653
+ /** Format: uri */
654
+ publicUrl: string;
655
+ }[];
656
+ closures?: {
657
+ id: string;
658
+ date: string;
659
+ reason: {
660
+ [key: string]: string;
661
+ } | null;
662
+ isActive: boolean;
663
+ }[];
664
+ };
665
+ /** GetAreaAvailabilityResponse */
666
+ GetAreaAvailabilityResponse: {
667
+ from: string;
668
+ to: string;
669
+ bookingMode: components["schemas"]["AreaBookingMode"];
670
+ occupied: {
671
+ date: string;
672
+ startTime: string | null;
673
+ endTime: string | null;
674
+ }[];
675
+ };
676
+ /** FetchAreaBookingsResponse */
677
+ FetchAreaBookingsResponse: {
678
+ id: string;
679
+ areaId: string;
680
+ bookingDate: string;
681
+ startTime: string | null;
682
+ endTime: string | null;
683
+ partySize: number;
684
+ status: components["schemas"]["AreaBookingStatus"];
685
+ guestFirstName?: string;
686
+ guestLastName?: string;
687
+ totalPrice?: number;
688
+ currency?: components["schemas"]["Currency"];
689
+ confirmationCode?: string | null;
690
+ }[];
691
+ /** SubmitAreaBookingPayload */
692
+ SubmitAreaBookingPayload: {
693
+ requestedDate: string;
694
+ requestedStartTime?: string;
695
+ requestedEndTime?: string;
696
+ partySize: number;
697
+ guestFirstName: string;
698
+ guestLastName: string;
699
+ /** Format: email */
700
+ guestEmail: string;
701
+ guestPhone?: string;
702
+ message?: string;
703
+ source?: components["schemas"]["AreaBookingRequestSource"];
704
+ };
705
+ /** SubmitAreaBookingRequestResponse */
706
+ SubmitAreaBookingRequestResponse: {
707
+ id: string;
708
+ venueId: string;
709
+ areaId: string;
710
+ requestedDate: string;
711
+ requestedStartTime: string | null;
712
+ requestedEndTime: string | null;
713
+ partySize: number;
714
+ guestFirstName: string;
715
+ guestLastName: string;
716
+ guestEmail: string;
717
+ guestPhone: string | null;
718
+ message: string | null;
719
+ source: components["schemas"]["AreaBookingRequestSource"];
720
+ status: components["schemas"]["AreaBookingRequestStatus"];
721
+ areaBookingId: string | null;
722
+ createdAt: string | null;
723
+ updatedAt: string | null;
724
+ };
725
+ /**
726
+ * FeatureImage
727
+ * @description An article's resolved feature image. `caption` / `alt` are per-locale TipTap docs (PATCH accepts plain strings — server normalises). `captionByLocale` / `altByLocale` expose the raw per-locale records for editor surfaces.
728
+ */
729
+ FeatureImage: {
730
+ id: string;
731
+ publicUrl: string | null;
732
+ locale: string;
733
+ caption: {
734
+ [key: string]: unknown;
735
+ } | null;
736
+ alt: {
737
+ [key: string]: unknown;
738
+ } | null;
739
+ captionByLocale: {
740
+ [key: string]: unknown;
741
+ };
742
+ altByLocale: {
743
+ [key: string]: unknown;
744
+ };
745
+ };
746
+ /** OgImage */
747
+ OgImage: {
748
+ id: string;
749
+ publicUrl: string | null;
750
+ locale: string;
751
+ };
752
+ /** ArticleMentionCounts */
753
+ ArticleMentionCounts: {
754
+ dishes: number;
755
+ beverages: number;
756
+ ingredients: number;
757
+ menus: number;
758
+ rituals: number;
759
+ };
760
+ /** FetchArticlesResponse */
761
+ FetchArticlesResponse: {
762
+ id: string;
763
+ venueId: string;
764
+ accessor: string;
765
+ slug: {
766
+ [key: string]: {
767
+ [key: string]: unknown;
768
+ };
769
+ };
770
+ title: {
771
+ [key: string]: {
772
+ [key: string]: unknown;
773
+ };
774
+ };
775
+ excerpt: {
776
+ [key: string]: {
777
+ [key: string]: unknown;
778
+ };
779
+ };
780
+ content: {
781
+ [key: string]: unknown;
782
+ } | null;
783
+ metaTitle: {
784
+ [key: string]: string;
785
+ } | null;
786
+ metaDescription: {
787
+ [key: string]: string;
788
+ } | null;
789
+ tags: string[];
790
+ isActive: boolean;
791
+ isFeatured: boolean;
792
+ priority: number;
793
+ status: components["schemas"]["ArticleStatus"];
794
+ publishedAt: string | null;
795
+ createdAt: string | null;
796
+ updatedAt: string | null;
797
+ featureImage: components["schemas"]["FeatureImage"] | null;
798
+ ogImage?: components["schemas"]["OgImage"] | null;
799
+ mentionCounts?: components["schemas"]["ArticleMentionCounts"];
800
+ }[];
801
+ /**
802
+ * FetchArticleResponse
803
+ * @description A venue's article. `content` is a TipTap JSON document; treat it as opaque on the wire. `featureImage` is resolved per-locale with a fallback to the venue's primary locale. `ogImage` overrides the social-card image when set; `null` means it falls back to `featureImage`.
804
+ */
805
+ FetchArticleResponse: {
806
+ id: string;
807
+ venueId: string;
808
+ accessor: string;
809
+ slug: {
810
+ [key: string]: {
811
+ [key: string]: unknown;
812
+ };
813
+ };
814
+ title: {
815
+ [key: string]: {
816
+ [key: string]: unknown;
817
+ };
818
+ };
819
+ excerpt: {
820
+ [key: string]: {
821
+ [key: string]: unknown;
822
+ };
823
+ };
824
+ content: {
825
+ [key: string]: unknown;
826
+ } | null;
827
+ metaTitle: {
828
+ [key: string]: string;
829
+ } | null;
830
+ metaDescription: {
831
+ [key: string]: string;
832
+ } | null;
833
+ tags: string[];
834
+ isActive: boolean;
835
+ isFeatured: boolean;
836
+ priority: number;
837
+ status: components["schemas"]["ArticleStatus"];
838
+ publishedAt: string | null;
839
+ createdAt: string | null;
840
+ updatedAt: string | null;
841
+ featureImage: components["schemas"]["FeatureImage"] | null;
842
+ ogImage?: components["schemas"]["OgImage"] | null;
843
+ };
844
+ /** EditArticleRequest */
845
+ EditArticleRequest: {
846
+ slug?: {
847
+ [key: string]: unknown;
848
+ };
849
+ title?: {
850
+ [key: string]: unknown;
851
+ };
852
+ excerpt?: {
853
+ [key: string]: unknown;
854
+ };
855
+ content?: {
856
+ [key: string]: unknown;
857
+ };
858
+ metaTitle?: {
859
+ [key: string]: string;
860
+ };
861
+ metaDescription?: {
862
+ [key: string]: string;
863
+ };
864
+ tags?: string[];
865
+ isActive?: boolean;
866
+ isFeatured?: boolean;
867
+ priority?: number;
868
+ };
869
+ /**
870
+ * EditArticleResponse
871
+ * @description A venue's article. `content` is a TipTap JSON document; treat it as opaque on the wire. `featureImage` is resolved per-locale with a fallback to the venue's primary locale. `ogImage` overrides the social-card image when set; `null` means it falls back to `featureImage`.
872
+ */
873
+ EditArticleResponse: {
874
+ id: string;
875
+ venueId: string;
876
+ accessor: string;
877
+ slug: {
878
+ [key: string]: {
879
+ [key: string]: unknown;
880
+ };
881
+ };
882
+ title: {
883
+ [key: string]: {
884
+ [key: string]: unknown;
885
+ };
886
+ };
887
+ excerpt: {
888
+ [key: string]: {
889
+ [key: string]: unknown;
890
+ };
891
+ };
892
+ content: {
893
+ [key: string]: unknown;
894
+ } | null;
895
+ metaTitle: {
896
+ [key: string]: string;
897
+ } | null;
898
+ metaDescription: {
899
+ [key: string]: string;
900
+ } | null;
901
+ tags: string[];
902
+ isActive: boolean;
903
+ isFeatured: boolean;
904
+ priority: number;
905
+ status: components["schemas"]["ArticleStatus"];
906
+ publishedAt: string | null;
907
+ createdAt: string | null;
908
+ updatedAt: string | null;
909
+ featureImage: components["schemas"]["FeatureImage"] | null;
910
+ ogImage?: components["schemas"]["OgImage"] | null;
911
+ };
912
+ /** SetArticleFeatureImageUploadBody */
913
+ SetArticleFeatureImageUploadBody: {
914
+ /** @description Image file (multipart/form-data field) */
915
+ file: string;
916
+ };
917
+ /**
918
+ * PatchArticleFeatureImageBody
919
+ * @description Locale-keyed merge of the asset-side `caption` and `alt` records. Each locale value may be a plain string OR a TipTap doc; strings are wrapped server-side. Setting `en` does not touch `de`.
920
+ */
921
+ PatchArticleFeatureImageBody: {
922
+ caption?: {
923
+ [key: string]: unknown;
924
+ };
925
+ alt?: {
926
+ [key: string]: unknown;
927
+ };
928
+ };
929
+ /** FetchAssetsByTagResponse */
930
+ FetchAssetsByTagResponse: {
931
+ id: string;
932
+ type: components["schemas"]["AssetType"];
933
+ metadata: {
934
+ width?: number;
935
+ height?: number;
936
+ duration?: number;
937
+ } | null;
938
+ isActive: boolean;
939
+ sortIndex: string | null;
940
+ updatedAt: unknown;
941
+ updatedBy: string | null;
942
+ createdAt: unknown;
943
+ createdBy: string | null;
944
+ venueId: string | null;
945
+ tags: string[] | null;
946
+ bucket: string;
947
+ storagePath: string;
948
+ filename: string;
949
+ contentType: string;
950
+ sizeBytes: number;
951
+ caption: {
952
+ [key: string]: unknown;
953
+ };
954
+ alt: {
955
+ [key: string]: unknown;
956
+ };
957
+ cropArea: {
958
+ x: number;
959
+ y: number;
960
+ width: number;
961
+ height: number;
962
+ } | null;
963
+ publicUrl: string;
964
+ }[];
965
+ /** BasketTotals */
966
+ BasketTotals: {
967
+ currency: components["schemas"]["Currency"];
968
+ itemsTotal: number;
969
+ taxAmount: number;
970
+ depositCharge: number;
971
+ grossTotal: number;
972
+ depositCredit: number;
973
+ effectiveTotal: number;
974
+ cashRefund: number;
975
+ returnable: {
976
+ depositwareTemplateId: string;
977
+ count: number;
978
+ }[];
979
+ };
980
+ /** FetchBasketResponse */
981
+ FetchBasketResponse: {
982
+ /** Format: uuid */
983
+ id: string;
984
+ sessionId: string;
985
+ status: components["schemas"]["BasketStatus"];
986
+ currency: components["schemas"]["Currency"];
987
+ items: {
988
+ /** Format: uuid */
989
+ id: string;
990
+ metadata: {
991
+ [key: string]: unknown;
992
+ } | null;
993
+ deposit: {
994
+ depositwareTemplateId: string;
995
+ name: {
996
+ [key: string]: string;
997
+ };
998
+ amount: number;
999
+ currency: components["schemas"]["Currency"];
1000
+ } | null;
1001
+ menuItems: {
1002
+ menuItemId: string;
1003
+ role: string | null;
1004
+ quantity: number;
1005
+ unit: components["schemas"]["Unit"];
1006
+ }[];
1007
+ }[];
1008
+ itemCount: number;
1009
+ totals: components["schemas"]["BasketTotals"];
1010
+ declaredReturns: {
1011
+ depositwareTemplateId: string;
1012
+ count: number;
1013
+ }[];
1014
+ expiresAt: string;
1015
+ createdAt: string | null;
1016
+ updatedAt: string | null;
1017
+ };
1018
+ /**
1019
+ * AddToBasketRequest
1020
+ * @description Add an item to the shopping basket
1021
+ */
1022
+ AddToBasketRequest: {
1023
+ /** Format: uuid */
1024
+ venueId: string;
1025
+ sessionId: string;
1026
+ menuItems: {
1027
+ menuItemId: string;
1028
+ role?: string;
1029
+ quantity?: number;
1030
+ unit?: components["schemas"]["Unit"];
1031
+ }[];
1032
+ metadata?: {
1033
+ [key: string]: unknown;
1034
+ };
1035
+ };
1036
+ /** AddToBasketResponse */
1037
+ AddToBasketResponse: {
1038
+ /** Format: uuid */
1039
+ basketItemId: string;
1040
+ itemCount: number;
1041
+ deposit: {
1042
+ depositwareTemplateId: string;
1043
+ name: {
1044
+ [key: string]: string;
1045
+ };
1046
+ amount: number;
1047
+ currency: components["schemas"]["Currency"];
1048
+ } | null;
1049
+ totals: components["schemas"]["BasketTotals"];
1050
+ };
1051
+ /** RemoveFromBasketResponse */
1052
+ RemoveFromBasketResponse: {
1053
+ success: boolean;
1054
+ /** Format: uuid */
1055
+ basketItemId: string;
1056
+ itemCount: number;
1057
+ totals: components["schemas"]["BasketTotals"] | null;
1058
+ };
1059
+ /** GetBasketTotalsRequest */
1060
+ GetBasketTotalsRequest: {
1061
+ venueAccessor: string;
1062
+ basketId: string;
1063
+ declaredReturns?: {
1064
+ depositwareTemplateId: string;
1065
+ count: number;
1066
+ }[];
1067
+ };
1068
+ /** GetBasketTotalsResponse */
1069
+ GetBasketTotalsResponse: {
1070
+ currency: components["schemas"]["Currency"];
1071
+ itemsTotal: number;
1072
+ taxAmount: number;
1073
+ depositCharge: number;
1074
+ grossTotal: number;
1075
+ depositCredit: number;
1076
+ effectiveTotal: number;
1077
+ cashRefund: number;
1078
+ returnable: {
1079
+ depositwareTemplateId: string;
1080
+ count: number;
1081
+ }[];
1082
+ };
1083
+ /** AbandonBasketRequest */
1084
+ AbandonBasketRequest: {
1085
+ sessionId: string;
1086
+ };
1087
+ /** AbandonBasketResponse */
1088
+ AbandonBasketResponse: {
1089
+ abandonedCount: number;
1090
+ };
1091
+ /** SetBasketDeclaredReturnsRequest */
1092
+ SetBasketDeclaredReturnsRequest: {
1093
+ venueAccessor: string;
1094
+ basketId: string;
1095
+ sessionId: string;
1096
+ declaredReturns: {
1097
+ depositwareTemplateId: string;
1098
+ count: number;
1099
+ }[];
1100
+ };
1101
+ /** SetBasketDeclaredReturnsResponse */
1102
+ SetBasketDeclaredReturnsResponse: {
1103
+ basketId: string;
1104
+ declaredReturns: {
1105
+ depositwareTemplateId: string;
1106
+ count: number;
1107
+ }[];
1108
+ };
1109
+ /** GetCalloutsResponse */
1110
+ GetCalloutsResponse: {
1111
+ id: string;
1112
+ venueId: string;
1113
+ label: (string | number | boolean | (null)) | {
1114
+ [key: string]: unknown;
1115
+ } | unknown[];
1116
+ createdBy: string | null;
1117
+ updatedBy: string | null;
1118
+ createdAt: unknown;
1119
+ updatedAt: unknown;
1120
+ }[];
1121
+ /** CreateCalloutRequest */
1122
+ CreateCalloutRequest: {
1123
+ venueAccessor: string;
1124
+ id?: string;
1125
+ label: {
1126
+ [key: string]: string;
1127
+ };
1128
+ };
1129
+ /** CreateCalloutResponse */
1130
+ CreateCalloutResponse: {
1131
+ id: string;
1132
+ venueId: string;
1133
+ label: (string | number | boolean | (null)) | {
1134
+ [key: string]: unknown;
1135
+ } | unknown[];
1136
+ createdBy: string | null;
1137
+ updatedBy: string | null;
1138
+ createdAt: unknown;
1139
+ updatedAt: unknown;
1140
+ };
1141
+ /** UpdateCalloutRequest */
1142
+ UpdateCalloutRequest: {
1143
+ venueAccessor: string;
1144
+ id: string;
1145
+ label: {
1146
+ [key: string]: string;
1147
+ };
1148
+ };
1149
+ /** UpdateCalloutResponse */
1150
+ UpdateCalloutResponse: {
1151
+ id: string;
1152
+ venueId: string;
1153
+ label: (string | number | boolean | (null)) | {
1154
+ [key: string]: unknown;
1155
+ } | unknown[];
1156
+ createdBy: string | null;
1157
+ updatedBy: string | null;
1158
+ createdAt: unknown;
1159
+ updatedAt: unknown;
1160
+ };
1161
+ /** DeleteCalloutResponse */
1162
+ DeleteCalloutResponse: {
1163
+ id: string;
1164
+ venueId: string;
1165
+ label: (string | number | boolean | (null)) | {
1166
+ [key: string]: unknown;
1167
+ } | unknown[];
1168
+ createdBy: string | null;
1169
+ updatedBy: string | null;
1170
+ createdAt: unknown;
1171
+ updatedAt: unknown;
1172
+ };
1173
+ /** FetchDishResponse */
1174
+ FetchDishResponse: {
1175
+ id: string;
1176
+ venueId: string;
1177
+ accessor: string;
1178
+ name: (string | number | boolean | (null)) | {
1179
+ [key: string]: unknown;
1180
+ } | unknown[];
1181
+ shortName: ((string | number | boolean | (null)) | {
1182
+ [key: string]: unknown;
1183
+ } | unknown[]) | null;
1184
+ description: ((string | number | boolean | (null)) | {
1185
+ [key: string]: unknown;
1186
+ } | unknown[]) | null;
1187
+ longDescription: ((string | number | boolean | (null)) | {
1188
+ [key: string]: unknown;
1189
+ } | unknown[]) | null;
1190
+ isVegan: boolean | null;
1191
+ isVegetarian: boolean | null;
1192
+ isGlutenFree: boolean | null;
1193
+ isDairyFree: boolean | null;
1194
+ spiciness: number | null;
1195
+ suggestedPrice: number | null;
1196
+ currency: components["schemas"]["Currency"];
1197
+ isActive: boolean;
1198
+ sortIndex: string | null;
1199
+ updatedAt: unknown;
1200
+ updatedBy: string | null;
1201
+ createdAt: unknown;
1202
+ createdBy: string | null;
1203
+ assets: {
1204
+ id: string;
1205
+ type: components["schemas"]["AssetType"];
1206
+ tags: string[] | null;
1207
+ bucket: string;
1208
+ storagePath: string;
1209
+ filename: string;
1210
+ contentType: string;
1211
+ sizeBytes: number;
1212
+ caption: (string | number | boolean | (null)) | {
1213
+ [key: string]: unknown;
1214
+ } | unknown[];
1215
+ alt: (string | number | boolean | (null)) | {
1216
+ [key: string]: unknown;
1217
+ } | unknown[];
1218
+ metadata: ((string | number | boolean | (null)) | {
1219
+ [key: string]: unknown;
1220
+ } | unknown[]) | null;
1221
+ cropArea: ((string | number | boolean | (null)) | {
1222
+ [key: string]: unknown;
1223
+ } | unknown[]) | null;
1224
+ isActive: boolean;
1225
+ sortIndex: string | null;
1226
+ createdAt: unknown;
1227
+ updatedAt: unknown;
1228
+ createdBy: string | null;
1229
+ updatedBy: string | null;
1230
+ venueId: string | null;
1231
+ contentHash: string | null;
1232
+ publicUrl: string | null;
1233
+ }[];
1234
+ };
1235
+ /** EditDishRequest */
1236
+ EditDishRequest: {
1237
+ venueAccessor: string;
1238
+ id: string;
1239
+ name: {
1240
+ [key: string]: string;
1241
+ };
1242
+ shortName?: {
1243
+ [key: string]: string;
1244
+ } | null;
1245
+ description?: {
1246
+ [key: string]: string;
1247
+ } | null;
1248
+ longDescription?: {
1249
+ [key: string]: string;
1250
+ } | null;
1251
+ suggestedPrice?: number | null;
1252
+ currency: components["schemas"]["Currency"];
1253
+ /** @default false */
1254
+ isVegan: boolean;
1255
+ /** @default false */
1256
+ isVegetarian: boolean;
1257
+ /** @default false */
1258
+ isGlutenFree: boolean;
1259
+ /** @default false */
1260
+ isDairyFree: boolean;
1261
+ /** @default 0 */
1262
+ spiciness: number;
1263
+ /** @default true */
1264
+ isActive: boolean;
1265
+ };
1266
+ /** EditDishResponse */
1267
+ EditDishResponse: {
1268
+ id: string;
1269
+ venueId: string;
1270
+ accessor: string;
1271
+ name: (string | number | boolean | (null)) | {
1272
+ [key: string]: unknown;
1273
+ } | unknown[];
1274
+ shortName: ((string | number | boolean | (null)) | {
1275
+ [key: string]: unknown;
1276
+ } | unknown[]) | null;
1277
+ description: ((string | number | boolean | (null)) | {
1278
+ [key: string]: unknown;
1279
+ } | unknown[]) | null;
1280
+ longDescription: ((string | number | boolean | (null)) | {
1281
+ [key: string]: unknown;
1282
+ } | unknown[]) | null;
1283
+ isVegan: boolean | null;
1284
+ isVegetarian: boolean | null;
1285
+ isGlutenFree: boolean | null;
1286
+ isDairyFree: boolean | null;
1287
+ spiciness: number | null;
1288
+ suggestedPrice: number | null;
1289
+ currency: components["schemas"]["Currency"];
1290
+ isActive: boolean;
1291
+ sortIndex: string | null;
1292
+ updatedAt: unknown;
1293
+ updatedBy: string | null;
1294
+ createdAt: unknown;
1295
+ createdBy: string | null;
1296
+ };
1297
+ /** FetchEventsResponse */
1298
+ FetchEventsResponse: {
1299
+ id: string;
1300
+ venueId: string;
1301
+ accessor: string | null;
1302
+ name: {
1303
+ [key: string]: string;
1304
+ };
1305
+ description: {
1306
+ [key: string]: string;
1307
+ } | null;
1308
+ scheduleId: string | null;
1309
+ ritualId: string | null;
1310
+ occurrenceDate: string | null;
1311
+ ritualType: components["schemas"]["RitualType"];
1312
+ maxBookings: number | null;
1313
+ maxGuests: number | null;
1314
+ minPartySize: number | null;
1315
+ maxPartySize: number | null;
1316
+ isPublic: boolean;
1317
+ isRecurring: boolean;
1318
+ reservationsEnabled: boolean;
1319
+ bookingOpensAtDays: number | null;
1320
+ bookingClosesAtOffset: number | null;
1321
+ isActive: boolean;
1322
+ isFeatured: boolean;
1323
+ takesOverDay: boolean;
1324
+ createdBy: string | null;
1325
+ updatedBy: string | null;
1326
+ createdAt: unknown;
1327
+ updatedAt: unknown;
1328
+ schedule: {
1329
+ id: string;
1330
+ duration: number | null;
1331
+ name: {
1332
+ [key: string]: string;
1333
+ };
1334
+ timezone: string;
1335
+ description: {
1336
+ [key: string]: string;
1337
+ } | null;
1338
+ rrule: string | null;
1339
+ exdates: string[] | null;
1340
+ validFrom: string | null;
1341
+ validTo: string | null;
1342
+ slotMode: components["schemas"]["SlotMode"];
1343
+ intervalDuration: number | null;
1344
+ isActive: boolean;
1345
+ sortIndex: string | null;
1346
+ updatedAt: unknown;
1347
+ updatedBy: string | null;
1348
+ createdAt: unknown;
1349
+ createdBy: string | null;
1350
+ scheduleOverrides: {
1351
+ id: string;
1352
+ date: string;
1353
+ isActive: boolean;
1354
+ updatedAt: unknown;
1355
+ updatedBy: string | null;
1356
+ createdAt: unknown;
1357
+ createdBy: string | null;
1358
+ scheduleId: string;
1359
+ reason: {
1360
+ [key: string]: string;
1361
+ } | null;
1362
+ scheduleOverrideTimeSlots: {
1363
+ sortIndex: string | null;
1364
+ overrideId: string;
1365
+ timeSlotId: string;
1366
+ timeSlot: {
1367
+ id: string;
1368
+ isActive: boolean | null;
1369
+ sortIndex: string | null;
1370
+ updatedAt: unknown;
1371
+ updatedBy: string | null;
1372
+ createdAt: unknown;
1373
+ createdBy: string | null;
1374
+ startTime: string;
1375
+ endTime: string | null;
1376
+ isSchedulable: boolean | null;
1377
+ };
1378
+ }[];
1379
+ }[];
1380
+ scheduleTimeSlots: {
1381
+ sortIndex: string | null;
1382
+ scheduleId: string | null;
1383
+ timeSlotId: string | null;
1384
+ dayOfWeek: components["schemas"]["DayOfWeek"];
1385
+ timeSlot: {
1386
+ id: string;
1387
+ isActive: boolean | null;
1388
+ sortIndex: string | null;
1389
+ updatedAt: unknown;
1390
+ updatedBy: string | null;
1391
+ createdAt: unknown;
1392
+ createdBy: string | null;
1393
+ startTime: string;
1394
+ endTime: string | null;
1395
+ isSchedulable: boolean | null;
1396
+ } | null;
1397
+ }[];
1398
+ } | null;
1399
+ nextOccurrence: string | null;
1400
+ assets: {
1401
+ id: string;
1402
+ type: components["schemas"]["AssetType"];
1403
+ metadata: {
1404
+ width?: number;
1405
+ height?: number;
1406
+ duration?: number;
1407
+ } | null;
1408
+ isActive: boolean;
1409
+ sortIndex: string | null;
1410
+ updatedAt: unknown;
1411
+ updatedBy: string | null;
1412
+ createdAt: unknown;
1413
+ createdBy: string | null;
1414
+ venueId: string | null;
1415
+ tags: string[] | null;
1416
+ bucket: string;
1417
+ storagePath: string;
1418
+ filename: string;
1419
+ contentType: string;
1420
+ sizeBytes: number;
1421
+ caption: {
1422
+ [key: string]: unknown;
1423
+ };
1424
+ alt: {
1425
+ [key: string]: unknown;
1426
+ };
1427
+ cropArea: {
1428
+ x: number;
1429
+ y: number;
1430
+ width: number;
1431
+ height: number;
1432
+ } | null;
1433
+ publicUrl: string;
1434
+ }[];
1435
+ timeSlots: {
1436
+ id?: string;
1437
+ startTime?: string;
1438
+ endTime?: string | null;
1439
+ dayOfWeek?: components["schemas"]["DayOfWeek"];
1440
+ isSchedulable?: boolean | null;
1441
+ }[];
1442
+ scheduleOverrides: {
1443
+ id: string;
1444
+ date: string;
1445
+ reason: {
1446
+ [key: string]: string;
1447
+ } | null;
1448
+ timeSlots: {
1449
+ id?: string;
1450
+ startTime?: string;
1451
+ endTime?: string | null;
1452
+ dayOfWeek?: components["schemas"]["DayOfWeek"];
1453
+ isSchedulable?: boolean | null;
1454
+ }[];
1455
+ }[];
1456
+ promotions: {
1457
+ id: string;
1458
+ name: {
1459
+ [key: string]: string;
1460
+ };
1461
+ description: {
1462
+ [key: string]: string;
1463
+ } | null;
1464
+ validFrom: string | null;
1465
+ validTo: string | null;
1466
+ isActive: boolean;
1467
+ updatedAt: unknown;
1468
+ updatedBy: string | null;
1469
+ createdAt: unknown;
1470
+ createdBy: string | null;
1471
+ venueId: string;
1472
+ benefitType: components["schemas"]["PromotionBenefitType"];
1473
+ benefitValue: {
1474
+ [key: string]: unknown;
1475
+ };
1476
+ conditions: {
1477
+ [key: string]: unknown;
1478
+ } | null;
1479
+ maxRedemptions: number | null;
1480
+ currentRedemptions: number | null;
1481
+ timeSlotIds: string[] | null;
1482
+ }[];
1483
+ }[];
1484
+ /**
1485
+ * FetchEventResponse
1486
+ * @description Event details. Nested objects (schedule, timeSlots, menus, assets, nextOccurrence) pass through; their shape follows the SDK Event interface.
1487
+ */
1488
+ FetchEventResponse: {
1489
+ id: string;
1490
+ venueId: string;
1491
+ accessor: string | null;
1492
+ name: {
1493
+ [key: string]: string;
1494
+ };
1495
+ description: {
1496
+ [key: string]: string;
1497
+ } | null;
1498
+ scheduleId: string | null;
1499
+ maxBookings: number | null;
1500
+ maxGuests: number | null;
1501
+ minPartySize: number | null;
1502
+ maxPartySize: number | null;
1503
+ isPublic: boolean;
1504
+ isRecurring: boolean;
1505
+ reservationsEnabled: boolean;
1506
+ bookingOpensAtDays: number | null;
1507
+ bookingClosesAtOffset: number | null;
1508
+ isActive: boolean;
1509
+ isFeatured: boolean;
1510
+ takesOverDay: boolean;
1511
+ createdAt: unknown;
1512
+ updatedAt: unknown;
1513
+ nextOccurrence?: string | null;
1514
+ schedule?: {
1515
+ id: string;
1516
+ name: {
1517
+ [key: string]: string;
1518
+ };
1519
+ description: {
1520
+ [key: string]: string;
1521
+ } | null;
1522
+ timezone: string;
1523
+ rrule: string | null;
1524
+ exdates: string[] | null;
1525
+ validFrom: string | null;
1526
+ validTo: string | null;
1527
+ isActive: boolean;
1528
+ slotMode: components["schemas"]["SlotMode"];
1529
+ intervalDuration: number | null;
1530
+ duration: number | null;
1531
+ scheduleTimeSlots?: {
1532
+ dayOfWeek: components["schemas"]["DayOfWeek"];
1533
+ timeSlot: {
1534
+ id: string;
1535
+ startTime: string;
1536
+ endTime: string | null;
1537
+ isActive: boolean | null;
1538
+ isSchedulable: boolean | null;
1539
+ };
1540
+ }[];
1541
+ };
1542
+ menus?: {
1543
+ id: string;
1544
+ accessor: string;
1545
+ name: {
1546
+ [key: string]: string;
1547
+ };
1548
+ category: string;
1549
+ }[];
1550
+ assets?: {
1551
+ id: string;
1552
+ bucket: string;
1553
+ storagePath: string;
1554
+ filename: string;
1555
+ contentType: string;
1556
+ sizeBytes: number;
1557
+ sortIndex: string | null;
1558
+ publicUrl: string;
1559
+ }[];
1560
+ };
1561
+ /** FetchSlotAvailabilityResponse */
1562
+ FetchSlotAvailabilityResponse: {
1563
+ /** @description Slot start time in HH:MM:SS format */
1564
+ startTime: string;
1565
+ /** @description Whether a party of this size can be booked at this slot */
1566
+ acceptable: boolean;
1567
+ /** @description Whether the public widget should offer this slot — passive: always; auto_steer: only when acceptable */
1568
+ offered: boolean;
1569
+ reason: components["schemas"]["OccupancyReason"];
1570
+ }[];
1571
+ /**
1572
+ * CreateEventRequest
1573
+ * @description Request payload for creating a new event
1574
+ */
1575
+ CreateEventRequest: {
1576
+ accessor?: string | null;
1577
+ name: (string | number | boolean | (null)) | {
1578
+ [key: string]: unknown;
1579
+ } | unknown[];
1580
+ description?: ((string | number | boolean | (null)) | {
1581
+ [key: string]: unknown;
1582
+ } | unknown[]) | null;
1583
+ scheduleId?: string | null;
1584
+ occurrenceDate?: string | null;
1585
+ maxBookings?: number | null;
1586
+ maxGuests?: number | null;
1587
+ minPartySize?: number | null;
1588
+ maxPartySize?: number | null;
1589
+ staffByRole?: ((string | number | boolean | (null)) | {
1590
+ [key: string]: unknown;
1591
+ } | unknown[]) | null;
1592
+ isPublic?: boolean;
1593
+ reservationsEnabled?: boolean;
1594
+ bookingOpensAtDays?: number | null;
1595
+ bookingClosesAtOffset?: number | null;
1596
+ isActive?: boolean;
1597
+ isFeatured?: boolean;
1598
+ takesOverDay?: boolean;
1599
+ servedMarket?: ((string | number | boolean | (null)) | {
1600
+ [key: string]: unknown;
1601
+ } | unknown[]) | null;
1602
+ schedule?: {
1603
+ rrule?: string | null;
1604
+ timezone?: string | null;
1605
+ validFrom?: string | null;
1606
+ validTo?: string | null;
1607
+ timeRanges: {
1608
+ startTime: string;
1609
+ endTime: string;
1610
+ lastSeatingTime?: string | null;
1611
+ }[];
1612
+ slotMode?: components["schemas"]["SlotMode"];
1613
+ intervalDuration?: number | null;
1614
+ duration?: number | null;
1615
+ } | null;
1616
+ ritualAccessor?: string | null;
1617
+ venueAccessor: string;
1618
+ };
1619
+ /**
1620
+ * CreateEventResponse
1621
+ * @description Successfully created event
1622
+ */
1623
+ CreateEventResponse: {
1624
+ id: string;
1625
+ venueId: string;
1626
+ accessor: string | null;
1627
+ name: (string | number | boolean | (null)) | {
1628
+ [key: string]: unknown;
1629
+ } | unknown[];
1630
+ description: ((string | number | boolean | (null)) | {
1631
+ [key: string]: unknown;
1632
+ } | unknown[]) | null;
1633
+ scheduleId: string | null;
1634
+ ritualId: string | null;
1635
+ occurrenceDate: string | null;
1636
+ maxBookings: number | null;
1637
+ maxGuests: number | null;
1638
+ minPartySize: number | null;
1639
+ maxPartySize: number | null;
1640
+ staffByRole: ((string | number | boolean | (null)) | {
1641
+ [key: string]: unknown;
1642
+ } | unknown[]) | null;
1643
+ isPublic: boolean;
1644
+ reservationsEnabled: boolean;
1645
+ bookingOpensAtDays: number | null;
1646
+ bookingClosesAtOffset: number | null;
1647
+ isActive: boolean;
1648
+ isFeatured: boolean;
1649
+ takesOverDay: boolean;
1650
+ servedMarket: ((string | number | boolean | (null)) | {
1651
+ [key: string]: unknown;
1652
+ } | unknown[]) | null;
1653
+ createdBy: string | null;
1654
+ updatedBy: string | null;
1655
+ createdAt: unknown;
1656
+ updatedAt: unknown;
1657
+ };
1658
+ /**
1659
+ * EditEventRequest
1660
+ * @description Partial-update body for an existing event
1661
+ */
1662
+ EditEventRequest: {
1663
+ accessor?: string | null;
1664
+ name?: (string | number | boolean | (null)) | {
1665
+ [key: string]: unknown;
1666
+ } | unknown[];
1667
+ description?: ((string | number | boolean | (null)) | {
1668
+ [key: string]: unknown;
1669
+ } | unknown[]) | null;
1670
+ scheduleId?: string | null;
1671
+ occurrenceDate?: string | null;
1672
+ maxBookings?: number | null;
1673
+ maxGuests?: number | null;
1674
+ minPartySize?: number | null;
1675
+ maxPartySize?: number | null;
1676
+ staffByRole?: ((string | number | boolean | (null)) | {
1677
+ [key: string]: unknown;
1678
+ } | unknown[]) | null;
1679
+ isPublic?: boolean;
1680
+ reservationsEnabled?: boolean;
1681
+ bookingOpensAtDays?: number | null;
1682
+ bookingClosesAtOffset?: number | null;
1683
+ isActive?: boolean;
1684
+ isFeatured?: boolean;
1685
+ takesOverDay?: boolean;
1686
+ servedMarket?: ((string | number | boolean | (null)) | {
1687
+ [key: string]: unknown;
1688
+ } | unknown[]) | null;
1689
+ schedule?: {
1690
+ rrule?: string | null;
1691
+ timezone?: string | null;
1692
+ validFrom?: string | null;
1693
+ validTo?: string | null;
1694
+ timeRanges: {
1695
+ startTime: string;
1696
+ endTime: string;
1697
+ lastSeatingTime?: string | null;
1698
+ }[];
1699
+ slotMode?: components["schemas"]["SlotMode"];
1700
+ intervalDuration?: number | null;
1701
+ duration?: number | null;
1702
+ } | null;
1703
+ ritualAccessor?: string | null;
1704
+ };
1705
+ /** Schedule */
1706
+ Schedule: {
1707
+ id: string;
1708
+ name: (string | number | boolean | (null)) | {
1709
+ [key: string]: unknown;
1710
+ } | unknown[];
1711
+ description: ((string | number | boolean | (null)) | {
1712
+ [key: string]: unknown;
1713
+ } | unknown[]) | null;
1714
+ timezone: string;
1715
+ rrule: string | null;
1716
+ exdates: string[] | null;
1717
+ validFrom: string | null;
1718
+ validTo: string | null;
1719
+ slotMode: components["schemas"]["SlotMode"];
1720
+ intervalDuration: number | null;
1721
+ duration: number | null;
1722
+ isActive: boolean;
1723
+ sortIndex: string | null;
1724
+ updatedAt: unknown;
1725
+ updatedBy: string | null;
1726
+ createdAt: unknown;
1727
+ createdBy: string | null;
1728
+ scheduleTimeSlots?: {
1729
+ scheduleId: string | null;
1730
+ timeSlotId: string | null;
1731
+ dayOfWeek: components["schemas"]["DayOfWeek"];
1732
+ sortIndex: string | null;
1733
+ timeSlot: {
1734
+ id: string;
1735
+ startTime: string;
1736
+ endTime: string | null;
1737
+ isActive: boolean | null;
1738
+ isSchedulable: boolean | null;
1739
+ maxBookings: number | null;
1740
+ maxGuests: number | null;
1741
+ overflowBookings: number | null;
1742
+ overflowGuests: number | null;
1743
+ sortIndex: string | null;
1744
+ updatedAt: unknown;
1745
+ updatedBy: string | null;
1746
+ createdAt: unknown;
1747
+ createdBy: string | null;
1748
+ } | null;
1749
+ }[];
1750
+ scheduleOverrides?: {
1751
+ id: string;
1752
+ scheduleId: string;
1753
+ date: string;
1754
+ reason: ((string | number | boolean | (null)) | {
1755
+ [key: string]: unknown;
1756
+ } | unknown[]) | null;
1757
+ isActive: boolean;
1758
+ updatedAt: unknown;
1759
+ updatedBy: string | null;
1760
+ createdAt: unknown;
1761
+ createdBy: string | null;
1762
+ scheduleOverrideTimeSlots: {
1763
+ overrideId: string;
1764
+ timeSlotId: string;
1765
+ sortIndex: string | null;
1766
+ timeSlot: {
1767
+ id: string;
1768
+ startTime: string;
1769
+ endTime: string | null;
1770
+ isActive: boolean | null;
1771
+ isSchedulable: boolean | null;
1772
+ maxBookings: number | null;
1773
+ maxGuests: number | null;
1774
+ overflowBookings: number | null;
1775
+ overflowGuests: number | null;
1776
+ sortIndex: string | null;
1777
+ updatedAt: unknown;
1778
+ updatedBy: string | null;
1779
+ createdAt: unknown;
1780
+ createdBy: string | null;
1781
+ };
1782
+ }[];
1783
+ }[];
1784
+ };
1785
+ /**
1786
+ * EditEventResponse
1787
+ * @description Successfully updated event with schedule
1788
+ */
1789
+ EditEventResponse: {
1790
+ id: string;
1791
+ venueId: string;
1792
+ accessor: string | null;
1793
+ name: (string | number | boolean | (null)) | {
1794
+ [key: string]: unknown;
1795
+ } | unknown[];
1796
+ description: ((string | number | boolean | (null)) | {
1797
+ [key: string]: unknown;
1798
+ } | unknown[]) | null;
1799
+ scheduleId: string | null;
1800
+ ritualId: string | null;
1801
+ occurrenceDate: string | null;
1802
+ maxBookings: number | null;
1803
+ maxGuests: number | null;
1804
+ minPartySize: number | null;
1805
+ maxPartySize: number | null;
1806
+ staffByRole: ((string | number | boolean | (null)) | {
1807
+ [key: string]: unknown;
1808
+ } | unknown[]) | null;
1809
+ isPublic: boolean;
1810
+ reservationsEnabled: boolean;
1811
+ bookingOpensAtDays: number | null;
1812
+ bookingClosesAtOffset: number | null;
1813
+ isActive: boolean;
1814
+ isFeatured: boolean;
1815
+ takesOverDay: boolean;
1816
+ servedMarket: ((string | number | boolean | (null)) | {
1817
+ [key: string]: unknown;
1818
+ } | unknown[]) | null;
1819
+ createdBy: string | null;
1820
+ updatedBy: string | null;
1821
+ createdAt: unknown;
1822
+ updatedAt: unknown;
1823
+ schedule: components["schemas"]["Schedule"] | null;
1824
+ };
1825
+ /** DeleteEventResponse */
1826
+ DeleteEventResponse: {
1827
+ id: string;
1828
+ venueId: string;
1829
+ accessor: string | null;
1830
+ name: (string | number | boolean | (null)) | {
1831
+ [key: string]: unknown;
1832
+ } | unknown[];
1833
+ description: ((string | number | boolean | (null)) | {
1834
+ [key: string]: unknown;
1835
+ } | unknown[]) | null;
1836
+ scheduleId: string | null;
1837
+ ritualId: string | null;
1838
+ occurrenceDate: string | null;
1839
+ maxBookings: number | null;
1840
+ maxGuests: number | null;
1841
+ minPartySize: number | null;
1842
+ maxPartySize: number | null;
1843
+ staffByRole: ((string | number | boolean | (null)) | {
1844
+ [key: string]: unknown;
1845
+ } | unknown[]) | null;
1846
+ isPublic: boolean;
1847
+ reservationsEnabled: boolean;
1848
+ bookingOpensAtDays: number | null;
1849
+ bookingClosesAtOffset: number | null;
1850
+ isActive: boolean;
1851
+ isFeatured: boolean;
1852
+ takesOverDay: boolean;
1853
+ servedMarket: ((string | number | boolean | (null)) | {
1854
+ [key: string]: unknown;
1855
+ } | unknown[]) | null;
1856
+ createdBy: string | null;
1857
+ updatedBy: string | null;
1858
+ createdAt: unknown;
1859
+ updatedAt: unknown;
1860
+ };
1861
+ /** UploadAssetResponse */
1862
+ UploadAssetResponse: {
1863
+ asset: {
1864
+ id: string;
1865
+ type: components["schemas"]["AssetType"];
1866
+ tags: string[] | null;
1867
+ bucket: string;
1868
+ storagePath: string;
1869
+ filename: string;
1870
+ contentType: string;
1871
+ sizeBytes: number;
1872
+ caption: (string | number | boolean | (null)) | {
1873
+ [key: string]: unknown;
1874
+ } | unknown[];
1875
+ alt: (string | number | boolean | (null)) | {
1876
+ [key: string]: unknown;
1877
+ } | unknown[];
1878
+ metadata: ((string | number | boolean | (null)) | {
1879
+ [key: string]: unknown;
1880
+ } | unknown[]) | null;
1881
+ cropArea: ((string | number | boolean | (null)) | {
1882
+ [key: string]: unknown;
1883
+ } | unknown[]) | null;
1884
+ isActive: boolean;
1885
+ sortIndex: string | null;
1886
+ createdAt: unknown;
1887
+ updatedAt: unknown;
1888
+ createdBy: string | null;
1889
+ updatedBy: string | null;
1890
+ venueId: string | null;
1891
+ contentHash: string | null;
1892
+ };
1893
+ publicUrl: string | null;
1894
+ };
1895
+ /** DeleteAssetResponse */
1896
+ DeleteAssetResponse: {
1897
+ success: boolean;
1898
+ deleted: boolean;
1899
+ };
1900
+ /**
1901
+ * FetchMenuResponse
1902
+ * @description Menu details. `assets[]` is always hydrated with public URLs; `items[]` (with nested dish/beverage) is included when `expand=items` is requested. Each dish/beverage always carries its flat, hydrated `assets[]` (public URLs resolved) — the raw junction relations are never surfaced.
1903
+ */
1904
+ FetchMenuResponse: {
1905
+ id: string;
1906
+ name: {
1907
+ [key: string]: string;
1908
+ };
1909
+ accessor: string;
1910
+ metadata: {
1911
+ orderingEnabled?: boolean;
1912
+ compactTags?: string[];
1913
+ showDepositware?: boolean;
1914
+ tagSortOrder?: string[];
1915
+ subscriptionsEnabled?: boolean;
1916
+ isDeliveryEnabled?: boolean;
1917
+ assetsEnabled?: boolean;
1918
+ } | null;
1919
+ description: {
1920
+ [key: string]: string;
1921
+ } | null;
1922
+ sortIndex: string | null;
1923
+ updatedAt: unknown;
1924
+ updatedBy: string | null;
1925
+ createdAt: unknown;
1926
+ createdBy: string | null;
1927
+ venueId: string;
1928
+ deliveryThresholdAmount: number | null;
1929
+ deliveryThresholdQuantity: number | null;
1930
+ assets: {
1931
+ id: string;
1932
+ type: components["schemas"]["AssetType"];
1933
+ metadata: {
1934
+ width?: number;
1935
+ height?: number;
1936
+ duration?: number;
1937
+ } | null;
1938
+ isActive: boolean;
1939
+ sortIndex: string | null;
1940
+ updatedAt: unknown;
1941
+ updatedBy: string | null;
1942
+ createdAt: unknown;
1943
+ createdBy: string | null;
1944
+ venueId: string | null;
1945
+ tags: string[] | null;
1946
+ bucket: string;
1947
+ storagePath: string;
1948
+ filename: string;
1949
+ contentType: string;
1950
+ sizeBytes: number;
1951
+ caption: {
1952
+ [key: string]: unknown;
1953
+ };
1954
+ alt: {
1955
+ [key: string]: unknown;
1956
+ };
1957
+ cropArea: {
1958
+ x: number;
1959
+ y: number;
1960
+ width: number;
1961
+ height: number;
1962
+ } | null;
1963
+ contentHash: string | null;
1964
+ publicUrl: string;
1965
+ }[];
1966
+ items?: {
1967
+ id: string;
1968
+ type: components["schemas"]["MenuItemType"];
1969
+ tags: string[] | null;
1970
+ priceAdjustment: number;
1971
+ currency: components["schemas"]["Currency"];
1972
+ isActive: boolean;
1973
+ isFeatured: boolean;
1974
+ sortIndex: string | null;
1975
+ availableDays: components["schemas"]["DayOfWeek"][] | null;
1976
+ availableWeeks: number[] | null;
1977
+ dish: {
1978
+ id: string;
1979
+ accessor: string;
1980
+ name: {
1981
+ [key: string]: string;
1982
+ };
1983
+ shortName?: {
1984
+ [key: string]: string;
1985
+ };
1986
+ description: {
1987
+ [key: string]: string;
1988
+ } | null;
1989
+ longDescription?: {
1990
+ [key: string]: string;
1991
+ } | null;
1992
+ isVegetarian: boolean | null;
1993
+ isVegan: boolean | null;
1994
+ isGlutenFree: boolean | null;
1995
+ isDairyFree: boolean | null;
1996
+ spiciness: number | null;
1997
+ assets?: {
1998
+ id: string;
1999
+ type: components["schemas"]["AssetType"];
2000
+ metadata: {
2001
+ width?: number;
2002
+ height?: number;
2003
+ duration?: number;
2004
+ } | null;
2005
+ isActive: boolean;
2006
+ sortIndex: string | null;
2007
+ updatedAt: unknown;
2008
+ updatedBy: string | null;
2009
+ createdAt: unknown;
2010
+ createdBy: string | null;
2011
+ venueId: string | null;
2012
+ tags: string[] | null;
2013
+ bucket: string;
2014
+ storagePath: string;
2015
+ filename: string;
2016
+ contentType: string;
2017
+ sizeBytes: number;
2018
+ caption: {
2019
+ [key: string]: unknown;
2020
+ };
2021
+ alt: {
2022
+ [key: string]: unknown;
2023
+ };
2024
+ cropArea: {
2025
+ x: number;
2026
+ y: number;
2027
+ width: number;
2028
+ height: number;
2029
+ } | null;
2030
+ contentHash: string | null;
2031
+ publicUrl: string;
2032
+ }[];
2033
+ } | null;
2034
+ beverage: {
2035
+ id: string;
2036
+ accessor: string;
2037
+ name: {
2038
+ [key: string]: string;
2039
+ };
2040
+ shortName?: {
2041
+ [key: string]: string;
2042
+ };
2043
+ description: {
2044
+ [key: string]: string;
2045
+ } | null;
2046
+ longDescription?: {
2047
+ [key: string]: string;
2048
+ } | null;
2049
+ assets?: {
2050
+ id: string;
2051
+ type: components["schemas"]["AssetType"];
2052
+ metadata: {
2053
+ width?: number;
2054
+ height?: number;
2055
+ duration?: number;
2056
+ } | null;
2057
+ isActive: boolean;
2058
+ sortIndex: string | null;
2059
+ updatedAt: unknown;
2060
+ updatedBy: string | null;
2061
+ createdAt: unknown;
2062
+ createdBy: string | null;
2063
+ venueId: string | null;
2064
+ tags: string[] | null;
2065
+ bucket: string;
2066
+ storagePath: string;
2067
+ filename: string;
2068
+ contentType: string;
2069
+ sizeBytes: number;
2070
+ caption: {
2071
+ [key: string]: unknown;
2072
+ };
2073
+ alt: {
2074
+ [key: string]: unknown;
2075
+ };
2076
+ cropArea: {
2077
+ x: number;
2078
+ y: number;
2079
+ width: number;
2080
+ height: number;
2081
+ } | null;
2082
+ contentHash: string | null;
2083
+ publicUrl: string;
2084
+ }[];
2085
+ } | null;
2086
+ }[];
2087
+ };
2088
+ /** FetchMenuBundlesResponse */
2089
+ FetchMenuBundlesResponse: {
2090
+ id: string;
2091
+ menuId: string;
2092
+ name: {
2093
+ [key: string]: string;
2094
+ };
2095
+ shortName: {
2096
+ [key: string]: string;
2097
+ } | null;
2098
+ description: {
2099
+ [key: string]: string;
2100
+ } | null;
2101
+ tags: string[];
2102
+ price: {
2103
+ amount: number;
2104
+ currency: components["schemas"]["Currency"];
2105
+ };
2106
+ currency: components["schemas"]["Currency"];
2107
+ taxRateId: string;
2108
+ isActive: boolean;
2109
+ sortIndex: string | null;
2110
+ depositwareTemplateId: string | null;
2111
+ depositwareTemplate: {
2112
+ name: {
2113
+ [key: string]: string;
2114
+ };
2115
+ } | null;
2116
+ deposit: {
2117
+ depositwareTemplateId: string;
2118
+ accessor: string;
2119
+ amount: number;
2120
+ currency: components["schemas"]["Currency"];
2121
+ } | null;
2122
+ }[];
2123
+ /** FetchMenuSubscriptionsResponse */
2124
+ FetchMenuSubscriptionsResponse: {
2125
+ id: string;
2126
+ menuId: string;
2127
+ accessor: string;
2128
+ name: {
2129
+ [key: string]: string;
2130
+ };
2131
+ shortName: {
2132
+ [key: string]: string;
2133
+ } | null;
2134
+ description: {
2135
+ [key: string]: string;
2136
+ } | null;
2137
+ scheduleId: string | null;
2138
+ allowance: number;
2139
+ billingPeriod: components["schemas"]["SubscriptionPeriod"];
2140
+ allowancePeriod: components["schemas"]["SubscriptionPeriod"];
2141
+ expiryInDays: number;
2142
+ price: number;
2143
+ currency: components["schemas"]["Currency"];
2144
+ stripeProductId: string | null;
2145
+ stripePriceId: string | null;
2146
+ isActive: boolean;
2147
+ sortIndex: string | null;
2148
+ subscriberCount: number;
2149
+ redeemableTagSets: string[][];
2150
+ posters: {
2151
+ id: string;
2152
+ menuSubscriptionId: string;
2153
+ storagePath: string;
2154
+ publicUrl: string;
2155
+ filename: string;
2156
+ contentType: string;
2157
+ sizeBytes: number;
2158
+ sortIndex: string | null;
2159
+ createdBy: string | null;
2160
+ createdAt: string | null;
2161
+ }[];
2162
+ }[];
2163
+ /**
2164
+ * PlaceOrderRequest
2165
+ * @description Place a new order for a specific venue
2166
+ */
2167
+ PlaceOrderRequest: {
2168
+ venueAccessor: string;
2169
+ basketId: string;
2170
+ sessionId: string;
2171
+ paymentMethod: components["schemas"]["PaymentMethod"];
2172
+ fulfillmentType: components["schemas"]["FulfillmentType"];
2173
+ /** Format: date-time */
2174
+ fulfillmentAt?: string | null;
2175
+ guestFirstName?: string;
2176
+ guestLastName?: string;
2177
+ guestEmail?: string;
2178
+ declaredReturns?: {
2179
+ depositwareTemplateId: string;
2180
+ count: number;
2181
+ }[];
2182
+ };
2183
+ /** PlaceOrderResponse */
2184
+ PlaceOrderResponse: {
2185
+ id: string;
2186
+ status: string;
2187
+ publicId: string | null;
2188
+ orderId: string;
2189
+ quickReferenceNumber: number | null;
2190
+ currency: components["schemas"]["Currency"];
2191
+ };
2192
+ /** ConfirmOrderRequest */
2193
+ ConfirmOrderRequest: {
2194
+ venueAccessor: string;
2195
+ orderId: string;
2196
+ paymentIntentId: string;
2197
+ };
2198
+ /** ConfirmOrderResponse */
2199
+ ConfirmOrderResponse: {
2200
+ id: string;
2201
+ status: string;
2202
+ publicId: string | null;
2203
+ quickReferenceNumber: number | null;
2204
+ guestId?: string;
2205
+ };
2206
+ /** FetchLatestOrderResponse */
2207
+ FetchLatestOrderResponse: {
2208
+ /** Format: uuid */
2209
+ id: string;
2210
+ publicId: string | null;
2211
+ quickReferenceNumber: number | null;
2212
+ status: components["schemas"]["OrderStatus"];
2213
+ paymentStatus: components["schemas"]["PaymentStatus"];
2214
+ fulfillmentType: components["schemas"]["FulfillmentType"];
2215
+ fulfillmentAt: string | null;
2216
+ orderedAt: string;
2217
+ totalAmount: number;
2218
+ currency: components["schemas"]["Currency"];
2219
+ items: {
2220
+ /** Format: uuid */
2221
+ id: string;
2222
+ metadata: {
2223
+ [key: string]: unknown;
2224
+ } | null;
2225
+ deposit: {
2226
+ depositwareTemplateId: string;
2227
+ name: {
2228
+ [key: string]: string;
2229
+ };
2230
+ amount: number;
2231
+ currency: components["schemas"]["Currency"];
2232
+ } | null;
2233
+ menuItems: {
2234
+ menuItemId: string;
2235
+ role: string | null;
2236
+ quantity: number;
2237
+ unit: components["schemas"]["Unit"];
2238
+ }[];
2239
+ }[];
2240
+ itemCount: number;
2241
+ totals: components["schemas"]["BasketTotals"];
2242
+ declaredReturns: {
2243
+ depositwareTemplateId: string;
2244
+ count: number;
2245
+ }[];
2246
+ };
2247
+ /** CreatePaymentIntentRequest */
2248
+ CreatePaymentIntentRequest: {
2249
+ venueAccessor: string;
2250
+ basketId: string;
2251
+ currency: components["schemas"]["Currency"];
2252
+ sessionId: string;
2253
+ fulfillmentType: components["schemas"]["FulfillmentType"];
2254
+ /** Format: date-time */
2255
+ fulfillmentAt?: string | null;
2256
+ guestFirstName?: string;
2257
+ guestLastName?: string;
2258
+ teamOrderPublicId?: string;
2259
+ declaredReturns?: {
2260
+ depositwareTemplateId: string;
2261
+ count: number;
2262
+ }[];
2263
+ };
2264
+ /** CreatePaymentIntentResponse */
2265
+ CreatePaymentIntentResponse: {
2266
+ clientSecret: string | null;
2267
+ paymentIntentId: string;
2268
+ orderId: string;
2269
+ };
2270
+ /** CreateDeltaPaymentIntentRequest */
2271
+ CreateDeltaPaymentIntentRequest: {
2272
+ venueAccessor: string;
2273
+ basketId: string;
2274
+ sessionId: string;
2275
+ currency: components["schemas"]["Currency"];
2276
+ declaredReturns?: {
2277
+ depositwareTemplateId: string;
2278
+ count: number;
2279
+ }[];
2280
+ };
2281
+ /** CreateDeltaPaymentIntentResponse */
2282
+ CreateDeltaPaymentIntentResponse: {
2283
+ clientSecret: string | null;
2284
+ paymentIntentId: string;
2285
+ orderId: string;
2286
+ amount: number;
2287
+ /** @enum {string} */
2288
+ status: "requires_payment_method" | "requires_confirmation" | "requires_action" | "processing" | "requires_capture" | "canceled" | "succeeded";
2289
+ };
2290
+ /** ReduceDeltaPaymentIntentRequest */
2291
+ ReduceDeltaPaymentIntentRequest: {
2292
+ venueAccessor: string;
2293
+ basketId: string;
2294
+ sessionId: string;
2295
+ currency: components["schemas"]["Currency"];
2296
+ declaredReturns?: {
2297
+ depositwareTemplateId: string;
2298
+ count: number;
2299
+ }[];
2300
+ };
2301
+ /** ReduceDeltaPaymentIntentResponse */
2302
+ ReduceDeltaPaymentIntentResponse: {
2303
+ orderId: string;
2304
+ paidTotal: number;
2305
+ released: number;
2306
+ };
2307
+ /**
2308
+ * MakeReservationRequest
2309
+ * @description Request payload for making a new reservation
2310
+ */
2311
+ MakeReservationRequest: {
2312
+ /** @description Venue identifier — UUID or URL-friendly slug (accessor). Resolved server-side. */
2313
+ venueAccessor: string;
2314
+ /**
2315
+ * Format: uuid
2316
+ * @description UUID of the event this reservation is for
2317
+ */
2318
+ eventId: string;
2319
+ /**
2320
+ * Format: uuid
2321
+ * @description UUID of the area to seat this party in. Defaults to the event's primary area (the one with the most tables) when omitted; the occupancy gate evaluates capacity against this area.
2322
+ */
2323
+ areaId?: string | null;
2324
+ /** @description Date of the reservation in YYYY-MM-DD format */
2325
+ reservationDate: string;
2326
+ /** @description Time of the reservation in HH:MM:SS format */
2327
+ reservationTime: string;
2328
+ /** @description Number of guests in the party. Must be between 1 and 20. */
2329
+ partySize: number;
2330
+ /** @description Reservation duration in minutes. Defaults to 120 minutes if not specified. Range: 30-300 minutes. */
2331
+ duration?: number | null;
2332
+ /**
2333
+ * Format: uuid
2334
+ * @description UUID of existing customer profile if available
2335
+ */
2336
+ guestId?: string | null;
2337
+ /** @description First name of the customer making the reservation */
2338
+ guestFirstName: string;
2339
+ /** @description Last name of the customer making the reservation */
2340
+ guestLastName: string;
2341
+ /**
2342
+ * Format: email
2343
+ * @description Email address for reservation confirmations and updates
2344
+ */
2345
+ guestEmail?: string | null;
2346
+ /** @description Phone number for reservation confirmations and updates. Include country code for international numbers. */
2347
+ guestPhone?: string | null;
2348
+ contactPreference?: components["schemas"]["ContactPreference"];
2349
+ source?: components["schemas"]["AreaBookingRequestSource"];
2350
+ /** @description Any dietary restrictions, allergies, or special occasions (max 500 characters) */
2351
+ specialRequests?: string | null;
2352
+ /** @description Preferred seating area or table type (e.g., "window seat", "quiet area", "patio") */
2353
+ tablePreference?: string | null;
2354
+ /** @description Google Ads click identifier from the landing URL (auto-tagging). Stored for server-side conversion reporting. */
2355
+ gclid?: string | null;
2356
+ /** @description Google Ads click identifier for app/web (iOS) where `gclid` is unavailable. */
2357
+ gbraid?: string | null;
2358
+ /** @description Google Ads click identifier for web-to-app (iOS) where `gclid` is unavailable. */
2359
+ wbraid?: string | null;
2360
+ /** @description Meta (Facebook/Instagram) click identifier from the landing URL. Stored for server-side Conversions API reporting. */
2361
+ fbclid?: string | null;
2362
+ };
2363
+ /**
2364
+ * MakeReservationResponse
2365
+ * @description Successfully created reservation
2366
+ */
2367
+ MakeReservationResponse: {
2368
+ /**
2369
+ * Format: uuid
2370
+ * @description Unique identifier for the reservation
2371
+ */
2372
+ id: string;
2373
+ /**
2374
+ * Format: uuid
2375
+ * @description Restaurant/tenant identifier
2376
+ */
2377
+ venueId: string;
2378
+ /**
2379
+ * Format: uuid
2380
+ * @description Event identifier for this reservation
2381
+ */
2382
+ eventId: string;
2383
+ areaId: string | null;
2384
+ quickReferenceNumber: number | null;
2385
+ /** @description Date of the reservation in YYYY-MM-DD format */
2386
+ reservationDate: string;
2387
+ /** @description Time of the reservation in HH:MM:SS format */
2388
+ reservationTime: string;
2389
+ /** @description Number of guests in the party */
2390
+ partySize: number;
2391
+ /** @description Reservation duration in minutes */
2392
+ duration: number | null;
2393
+ /**
2394
+ * Format: uuid
2395
+ * @description Link to customer profile if exists
2396
+ */
2397
+ guestId: string | null;
2398
+ /** @description First name of the customer */
2399
+ guestFirstName: string;
2400
+ /** @description Last name of the customer */
2401
+ guestLastName: string;
2402
+ /** @description Customer email address */
2403
+ guestEmail: string | null;
2404
+ /** @description Customer phone number */
2405
+ guestPhone: string | null;
2406
+ contactPreference: components["schemas"]["ContactPreference"];
2407
+ status: components["schemas"]["ReservationStatus"];
2408
+ /** @description 6-character confirmation code for the reservation */
2409
+ confirmationCode: string | null;
2410
+ /** @description When the reservation was confirmed */
2411
+ confirmedAt: unknown;
2412
+ /** @description When the guest arrived */
2413
+ arrivedAt: unknown;
2414
+ /** @description When the guest was seated */
2415
+ seatedAt: unknown;
2416
+ /** @description When the dining was completed */
2417
+ completedAt: unknown;
2418
+ /** @description When the reservation was cancelled */
2419
+ cancelledAt: unknown;
2420
+ cancellationReason: components["schemas"]["CancellationReason"];
2421
+ /** @description Additional cancellation details */
2422
+ cancellationNote: string | null;
2423
+ source: components["schemas"]["AreaBookingRequestSource"];
2424
+ gclid: string | null;
2425
+ gbraid: string | null;
2426
+ wbraid: string | null;
2427
+ fbclid: string | null;
2428
+ /** @description Any special requirements or notes */
2429
+ specialRequests: string | null;
2430
+ /** @description Preferred seating location */
2431
+ tablePreference: string | null;
2432
+ /** @description User ID who created the reservation */
2433
+ createdBy: string | null;
2434
+ /** @description User ID who last updated the reservation */
2435
+ updatedBy: string | null;
2436
+ /** @description Reservation creation timestamp */
2437
+ createdAt: unknown;
2438
+ /** @description Last update timestamp */
2439
+ updatedAt: unknown;
2440
+ };
2441
+ /** FetchRitualResponse */
2442
+ FetchRitualResponse: {
2443
+ id: string;
2444
+ venueId: string;
2445
+ accessor: string;
2446
+ ritualType: components["schemas"]["RitualType"];
2447
+ scheduleId: string | null;
2448
+ name: (string | number | boolean | (null)) | {
2449
+ [key: string]: unknown;
2450
+ } | unknown[];
2451
+ description: ((string | number | boolean | (null)) | {
2452
+ [key: string]: unknown;
2453
+ } | unknown[]) | null;
2454
+ playbook: ((string | number | boolean | (null)) | {
2455
+ [key: string]: unknown;
2456
+ } | unknown[]) | null;
2457
+ maxBookings: number | null;
2458
+ maxGuests: number | null;
2459
+ minPartySize: number | null;
2460
+ maxPartySize: number | null;
2461
+ isPublic: boolean;
2462
+ reservationsEnabled: boolean;
2463
+ bookingOpensAtDays: number | null;
2464
+ bookingClosesAtOffset: number | null;
2465
+ isActive: boolean;
2466
+ isFeatured: boolean;
2467
+ servedMarket: ((string | number | boolean | (null)) | {
2468
+ [key: string]: unknown;
2469
+ } | unknown[]) | null;
2470
+ createdBy: string | null;
2471
+ updatedBy: string | null;
2472
+ createdAt: unknown;
2473
+ updatedAt: unknown;
2474
+ assets: {
2475
+ id: string;
2476
+ type: components["schemas"]["AssetType"];
2477
+ tags: string[] | null;
2478
+ bucket: string;
2479
+ storagePath: string;
2480
+ filename: string;
2481
+ contentType: string;
2482
+ sizeBytes: number;
2483
+ caption: (string | number | boolean | (null)) | {
2484
+ [key: string]: unknown;
2485
+ } | unknown[];
2486
+ alt: (string | number | boolean | (null)) | {
2487
+ [key: string]: unknown;
2488
+ } | unknown[];
2489
+ metadata: ((string | number | boolean | (null)) | {
2490
+ [key: string]: unknown;
2491
+ } | unknown[]) | null;
2492
+ cropArea: ((string | number | boolean | (null)) | {
2493
+ [key: string]: unknown;
2494
+ } | unknown[]) | null;
2495
+ isActive: boolean;
2496
+ sortIndex: string | null;
2497
+ createdAt: unknown;
2498
+ updatedAt: unknown;
2499
+ createdBy: string | null;
2500
+ updatedBy: string | null;
2501
+ venueId: string | null;
2502
+ contentHash: string | null;
2503
+ publicUrl: string;
2504
+ }[];
2505
+ events: {
2506
+ id: string;
2507
+ venueId: string;
2508
+ accessor: string | null;
2509
+ name: (string | number | boolean | (null)) | {
2510
+ [key: string]: unknown;
2511
+ } | unknown[];
2512
+ description: ((string | number | boolean | (null)) | {
2513
+ [key: string]: unknown;
2514
+ } | unknown[]) | null;
2515
+ scheduleId: string | null;
2516
+ ritualId: string | null;
2517
+ occurrenceDate: string | null;
2518
+ maxBookings: number | null;
2519
+ maxGuests: number | null;
2520
+ minPartySize: number | null;
2521
+ maxPartySize: number | null;
2522
+ staffByRole: ((string | number | boolean | (null)) | {
2523
+ [key: string]: unknown;
2524
+ } | unknown[]) | null;
2525
+ isPublic: boolean;
2526
+ reservationsEnabled: boolean;
2527
+ bookingOpensAtDays: number | null;
2528
+ bookingClosesAtOffset: number | null;
2529
+ isActive: boolean;
2530
+ isFeatured: boolean;
2531
+ takesOverDay: boolean;
2532
+ servedMarket: ((string | number | boolean | (null)) | {
2533
+ [key: string]: unknown;
2534
+ } | unknown[]) | null;
2535
+ createdBy: string | null;
2536
+ updatedBy: string | null;
2537
+ createdAt: unknown;
2538
+ updatedAt: unknown;
2539
+ covers: number;
2540
+ }[];
2541
+ schedule: components["schemas"]["Schedule"] | null;
2542
+ };
2543
+ /** GetSubscriptionResponse */
2544
+ GetSubscriptionResponse: {
2545
+ id: string;
2546
+ menuId: string;
2547
+ accessor: string;
2548
+ name: {
2549
+ [key: string]: string;
2550
+ };
2551
+ shortName: {
2552
+ [key: string]: string;
2553
+ } | null;
2554
+ description: {
2555
+ [key: string]: string;
2556
+ } | null;
2557
+ scheduleId: string | null;
2558
+ allowance: number;
2559
+ billingPeriod: components["schemas"]["SubscriptionPeriod"];
2560
+ allowancePeriod: components["schemas"]["SubscriptionPeriod"];
2561
+ redeemableTagSets: string[][];
2562
+ expiryInDays: number | null;
2563
+ price: number;
2564
+ currency: components["schemas"]["Currency"];
2565
+ isActive: boolean;
2566
+ sortIndex: string | null;
2567
+ posters: {
2568
+ id: string;
2569
+ menuSubscriptionId: string;
2570
+ storagePath: string;
2571
+ /** Format: uri */
2572
+ publicUrl: string;
2573
+ filename: string;
2574
+ contentType: string;
2575
+ sizeBytes: number;
2576
+ sortIndex: string | null;
2577
+ createdBy: string | null;
2578
+ createdAt: string | null;
2579
+ }[];
2580
+ };
2581
+ /** SubscribeToSubscriptionBody */
2582
+ SubscribeToSubscriptionBody: {
2583
+ /** Format: email */
2584
+ email: string;
2585
+ firstName?: string;
2586
+ lastName?: string;
2587
+ sessionId?: string;
2588
+ /** Format: uri */
2589
+ successUrl: string;
2590
+ /** Format: uri */
2591
+ cancelUrl: string;
2592
+ };
2593
+ /** SubscribeToSubscriptionResponse */
2594
+ SubscribeToSubscriptionResponse: {
2595
+ /** Format: uri */
2596
+ checkoutUrl: string | null;
2597
+ sessionId: string;
2598
+ };
2599
+ /** CancelSubscriptionRequest */
2600
+ CancelSubscriptionRequest: {
2601
+ subscriberId: string;
2602
+ };
2603
+ /** CancelSubscriptionResponse */
2604
+ CancelSubscriptionResponse: {
2605
+ /** @enum {boolean} */
2606
+ success: true;
2607
+ };
2608
+ /** GetSubscriptionCreditsResponse */
2609
+ GetSubscriptionCreditsResponse: {
2610
+ id: string;
2611
+ subscriberId: string;
2612
+ periodStart: string;
2613
+ periodEnd: string;
2614
+ expiresAt: string | null;
2615
+ status: components["schemas"]["SubscriptionCreditStatus"];
2616
+ redeemedAt: string | null;
2617
+ orderId: string | null;
2618
+ createdAt: string | null;
2619
+ }[];
2620
+ /** DeliveryAddress */
2621
+ DeliveryAddress: {
2622
+ street: string;
2623
+ city: string;
2624
+ state: string;
2625
+ postalCode: string;
2626
+ country: string;
2627
+ };
2628
+ /**
2629
+ * CreateTeamOrderRequest
2630
+ * @description Create a team order: promotes the lead's active basket into a shared team basket and returns the share token.
2631
+ */
2632
+ CreateTeamOrderRequest: {
2633
+ venueAccessor: string;
2634
+ sessionId: string;
2635
+ /** Format: uuid */
2636
+ menuId: string;
2637
+ leadDisplayName: string;
2638
+ teamName?: string;
2639
+ /** Format: uri */
2640
+ logoUrl?: string;
2641
+ /** Format: date-time */
2642
+ deadlineAt?: string | null;
2643
+ fulfillmentType: components["schemas"]["FulfillmentType"];
2644
+ /** Format: date-time */
2645
+ fulfillmentAt?: string | null;
2646
+ deliveryAddress?: components["schemas"]["DeliveryAddress"];
2647
+ allowedPaymentMethods: components["schemas"]["PaymentMethod"][];
2648
+ /** Format: uuid */
2649
+ eventId?: string;
2650
+ };
2651
+ /** CreateTeamOrderResponse */
2652
+ CreateTeamOrderResponse: {
2653
+ publicId: string;
2654
+ /** Format: uuid */
2655
+ teamOrderId: string;
2656
+ };
2657
+ /** FetchTeamOrderResponse */
2658
+ FetchTeamOrderResponse: {
2659
+ teamOrder: {
2660
+ id: string;
2661
+ publicId: string;
2662
+ venueId: string;
2663
+ menuId: string;
2664
+ eventId: string | null;
2665
+ teamName: string | null;
2666
+ logoUrl: string | null;
2667
+ leadDisplayName: string;
2668
+ status: components["schemas"]["TeamOrderStatus"];
2669
+ allowedPaymentMethods: components["schemas"]["PaymentMethod"][];
2670
+ fulfillmentType: components["schemas"]["FulfillmentType"];
2671
+ /** Format: date-time */
2672
+ fulfillmentAt: string | null;
2673
+ /** Format: date-time */
2674
+ deadlineAt: string | null;
2675
+ /** Format: date-time */
2676
+ lockedAt: string | null;
2677
+ /** Format: date-time */
2678
+ placedAt: string | null;
2679
+ /** Format: date-time */
2680
+ cancelledAt: string | null;
2681
+ cancelReason: string | null;
2682
+ deliveryAddressId: string | null;
2683
+ diningLocation: string | null;
2684
+ diningTime: string | null;
2685
+ isDeliveryEnabled: boolean;
2686
+ quickReferenceNumber: number | null;
2687
+ };
2688
+ deliveryThreshold: {
2689
+ amount: number | null;
2690
+ quantity: number | null;
2691
+ };
2692
+ participants: {
2693
+ guestId: string;
2694
+ basketId: string | null;
2695
+ orderId: string | null;
2696
+ participantNumber: number | null;
2697
+ displayName: string | null;
2698
+ status: components["schemas"]["ParticipantStatus"];
2699
+ bundleCount: number;
2700
+ amount: number;
2701
+ paymentMethod: components["schemas"]["PaymentMethod"];
2702
+ isLead: boolean;
2703
+ isMe: boolean;
2704
+ /** Format: date-time */
2705
+ joinedAt: string;
2706
+ items: {
2707
+ id: string;
2708
+ metadata: {
2709
+ [key: string]: unknown;
2710
+ } | null;
2711
+ menuItems: {
2712
+ menuItemId: string;
2713
+ role: string | null;
2714
+ quantity: number;
2715
+ unit: components["schemas"]["Unit"];
2716
+ }[];
2717
+ isPaid: boolean;
2718
+ }[];
2719
+ payments: {
2720
+ amount: number;
2721
+ method: components["schemas"]["PaymentMethod"];
2722
+ /** @enum {string} */
2723
+ status: "authorized" | "captured" | "cash_pending" | "cash_received";
2724
+ /** Format: date-time */
2725
+ createdAt: string;
2726
+ cardLast4: string | null;
2727
+ }[];
2728
+ paidTotal: number;
2729
+ amountDue: number;
2730
+ declaredReturns: {
2731
+ depositwareTemplateId: string;
2732
+ count: number;
2733
+ }[];
2734
+ leadSettledAt: string | null;
2735
+ }[];
2736
+ aggregatedTotals: {
2737
+ confirmedBundleCount: number;
2738
+ confirmedAmount: number;
2739
+ totalBundleCount: number;
2740
+ };
2741
+ thresholdCheck: {
2742
+ meets: boolean;
2743
+ failedConstraints: ("quantity" | "amount")[];
2744
+ requiredQuantity: number | null;
2745
+ currentQuantity: number;
2746
+ requiredAmount: number | null;
2747
+ currentAmount: number;
2748
+ };
2749
+ isLead: boolean;
2750
+ };
2751
+ /** JoinTeamOrderRequest */
2752
+ JoinTeamOrderRequest: {
2753
+ publicId: string;
2754
+ sessionId: string;
2755
+ displayName?: string;
2756
+ };
2757
+ /** JoinTeamOrderResponse */
2758
+ JoinTeamOrderResponse: {
2759
+ /** Format: uuid */
2760
+ teamOrderId: string;
2761
+ basketId: string;
2762
+ guestId: string;
2763
+ status: components["schemas"]["TeamOrderStatus"];
2764
+ isLead: boolean;
2765
+ alreadyJoined: boolean;
2766
+ };
2767
+ /** SubmitTeamOrderRequest */
2768
+ SubmitTeamOrderRequest: {
2769
+ publicId: string;
2770
+ sessionId: string;
2771
+ };
2772
+ /** SubmitTeamOrderResponse */
2773
+ SubmitTeamOrderResponse: {
2774
+ /** Format: uuid */
2775
+ teamOrderId: string;
2776
+ status: components["schemas"]["TeamOrderStatus"];
2777
+ capturedOrderIds: string[];
2778
+ cashPendingOrderIds: string[];
2779
+ droppedBasketIds: string[];
2780
+ /** Format: date-time */
2781
+ placedAt: string;
2782
+ };
2783
+ /** CancelTeamOrderRequest */
2784
+ CancelTeamOrderRequest: {
2785
+ publicId: string;
2786
+ sessionId: string;
2787
+ reason?: string;
2788
+ };
2789
+ /** CancelTeamOrderResponse */
2790
+ CancelTeamOrderResponse: {
2791
+ /** Format: uuid */
2792
+ teamOrderId: string;
2793
+ status: components["schemas"]["TeamOrderStatus"];
2794
+ voidedPaymentIntentIds: string[];
2795
+ /** Format: date-time */
2796
+ cancelledAt: string;
2797
+ };
2798
+ /** ExtendDeadlineTeamOrderRequest */
2799
+ ExtendDeadlineTeamOrderRequest: {
2800
+ publicId: string;
2801
+ sessionId: string;
2802
+ /** Format: date-time */
2803
+ newDeadlineAt: string;
2804
+ };
2805
+ /** ExtendDeadlineTeamOrderResponse */
2806
+ ExtendDeadlineTeamOrderResponse: {
2807
+ /** Format: uuid */
2808
+ teamOrderId: string;
2809
+ status: components["schemas"]["TeamOrderStatus"];
2810
+ /** Format: date-time */
2811
+ deadlineAt: string | null;
2812
+ };
2813
+ /** SetFulfillmentAtTeamOrderRequest */
2814
+ SetFulfillmentAtTeamOrderRequest: {
2815
+ publicId: string;
2816
+ sessionId: string;
2817
+ /** Format: date-time */
2818
+ fulfillmentAt: string;
2819
+ };
2820
+ /** SetFulfillmentAtTeamOrderResponse */
2821
+ SetFulfillmentAtTeamOrderResponse: {
2822
+ /** Format: uuid */
2823
+ teamOrderId: string;
2824
+ status: components["schemas"]["TeamOrderStatus"];
2825
+ /** Format: date-time */
2826
+ fulfillmentAt: string;
2827
+ /** Format: date-time */
2828
+ deadlineAt: string | null;
2829
+ };
2830
+ /** SetDiningLocationTeamOrderRequest */
2831
+ SetDiningLocationTeamOrderRequest: {
2832
+ publicId: string;
2833
+ sessionId: string;
2834
+ diningLocation: string;
2835
+ };
2836
+ /** SetDiningLocationTeamOrderResponse */
2837
+ SetDiningLocationTeamOrderResponse: {
2838
+ /** Format: uuid */
2839
+ teamOrderId: string;
2840
+ status: components["schemas"]["TeamOrderStatus"];
2841
+ diningLocation: string | null;
2842
+ };
2843
+ /** SetDiningTimeTeamOrderRequest */
2844
+ SetDiningTimeTeamOrderRequest: {
2845
+ publicId: string;
2846
+ sessionId: string;
2847
+ diningTime: string;
2848
+ };
2849
+ /** SetDiningTimeTeamOrderResponse */
2850
+ SetDiningTimeTeamOrderResponse: {
2851
+ /** Format: uuid */
2852
+ teamOrderId: string;
2853
+ status: components["schemas"]["TeamOrderStatus"];
2854
+ diningTime: string;
2855
+ diningOffset: number;
2856
+ };
2857
+ /** SetOrderLeadSettledRequest */
2858
+ SetOrderLeadSettledRequest: {
2859
+ publicId: string;
2860
+ sessionId: string;
2861
+ /** Format: uuid */
2862
+ orderId: string;
2863
+ settled: boolean;
2864
+ };
2865
+ /** SetOrderLeadSettledResponse */
2866
+ SetOrderLeadSettledResponse: {
2867
+ /** Format: uuid */
2868
+ orderId: string;
2869
+ leadSettledAt: string | null;
2870
+ };
2871
+ /** AutoExtendFulfillmentIfExpiredRequest */
2872
+ AutoExtendFulfillmentIfExpiredRequest: {
2873
+ publicId: string;
2874
+ sessionId: string;
2875
+ /** Format: date-time */
2876
+ proposedFulfillmentAt: string;
2877
+ };
2878
+ /** AutoExtendFulfillmentIfExpiredResponse */
2879
+ AutoExtendFulfillmentIfExpiredResponse: {
2880
+ extended: boolean;
2881
+ teamOrderId: string;
2882
+ status: string;
2883
+ /** Format: date-time */
2884
+ fulfillmentAt: string;
2885
+ /** Format: date-time */
2886
+ deadlineAt: string | null;
2887
+ /** Format: date-time */
2888
+ previousFulfillmentAt: string;
2889
+ waitingCount: number;
2890
+ };
2891
+ /** SwitchFulfillmentTeamOrderRequest */
2892
+ SwitchFulfillmentTeamOrderRequest: {
2893
+ publicId: string;
2894
+ sessionId: string;
2895
+ fulfillmentType: components["schemas"]["FulfillmentType"];
2896
+ deliveryAddress?: components["schemas"]["DeliveryAddress"];
2897
+ };
2898
+ /** SwitchFulfillmentTeamOrderResponse */
2899
+ SwitchFulfillmentTeamOrderResponse: {
2900
+ /** Format: uuid */
2901
+ teamOrderId: string;
2902
+ status: components["schemas"]["TeamOrderStatus"];
2903
+ fulfillmentType: components["schemas"]["FulfillmentType"];
2904
+ deliveryAddressId: string | null;
2905
+ };
2906
+ /** UpdateDeliveryAddressTeamOrderRequest */
2907
+ UpdateDeliveryAddressTeamOrderRequest: {
2908
+ publicId: string;
2909
+ sessionId: string;
2910
+ deliveryAddress: components["schemas"]["DeliveryAddress"];
2911
+ };
2912
+ /** UpdateDeliveryAddressTeamOrderResponse */
2913
+ UpdateDeliveryAddressTeamOrderResponse: {
2914
+ /** Format: uuid */
2915
+ teamOrderId: string;
2916
+ deliveryAddressId: string;
2917
+ };
2918
+ /**
2919
+ * GetVenueResponse
2920
+ * @description A venue. The public API exposes only the minimal id + accessor + naming + locale fields the CLI's `venues use` / `auth whoami` consume.
2921
+ */
2922
+ GetVenueResponse: {
2923
+ id: string;
2924
+ accessor: string;
2925
+ officialName: string;
2926
+ legalName: string;
2927
+ shortName: string;
2928
+ brandName: string;
2929
+ primaryLocale: string;
2930
+ supportedLocales: string[];
2931
+ timezone: string;
2932
+ createdAt: unknown;
2933
+ updatedAt: unknown;
2934
+ };
2935
+ /** GetWebsitePagesResponse */
2936
+ GetWebsitePagesResponse: {
2937
+ id: string;
2938
+ venueId: string;
2939
+ ownerType: components["schemas"]["WebsitePageOwnerType"];
2940
+ ownerId: string | null;
2941
+ label: ((string | number | boolean | (null)) | {
2942
+ [key: string]: unknown;
2943
+ } | unknown[]) | null;
2944
+ path: string | null;
2945
+ externalUrl: string | null;
2946
+ createdBy: string | null;
2947
+ updatedBy: string | null;
2948
+ createdAt: unknown;
2949
+ updatedAt: unknown;
2950
+ }[];
2951
+ /** CreateWebsitePageRequest */
2952
+ CreateWebsitePageRequest: {
2953
+ venueAccessor: string;
2954
+ id?: string;
2955
+ ownerType?: components["schemas"]["WebsitePageOwnerType"];
2956
+ ownerId?: string | null;
2957
+ label?: {
2958
+ [key: string]: string;
2959
+ } | null;
2960
+ target: string;
2961
+ };
2962
+ /** CreateWebsitePageResponse */
2963
+ CreateWebsitePageResponse: {
2964
+ id: string;
2965
+ venueId: string;
2966
+ ownerType: components["schemas"]["WebsitePageOwnerType"];
2967
+ ownerId: string | null;
2968
+ label: ((string | number | boolean | (null)) | {
2969
+ [key: string]: unknown;
2970
+ } | unknown[]) | null;
2971
+ path: string | null;
2972
+ externalUrl: string | null;
2973
+ createdBy: string | null;
2974
+ updatedBy: string | null;
2975
+ createdAt: unknown;
2976
+ updatedAt: unknown;
2977
+ };
2978
+ /** UpdateWebsitePageRequest */
2979
+ UpdateWebsitePageRequest: {
2980
+ venueAccessor: string;
2981
+ id: string;
2982
+ label?: {
2983
+ [key: string]: string;
2984
+ } | null;
2985
+ target: string;
2986
+ };
2987
+ /** UpdateWebsitePageResponse */
2988
+ UpdateWebsitePageResponse: {
2989
+ id: string;
2990
+ venueId: string;
2991
+ ownerType: components["schemas"]["WebsitePageOwnerType"];
2992
+ ownerId: string | null;
2993
+ label: ((string | number | boolean | (null)) | {
2994
+ [key: string]: unknown;
2995
+ } | unknown[]) | null;
2996
+ path: string | null;
2997
+ externalUrl: string | null;
2998
+ createdBy: string | null;
2999
+ updatedBy: string | null;
3000
+ createdAt: unknown;
3001
+ updatedAt: unknown;
3002
+ };
3003
+ /** DeleteWebsitePageResponse */
3004
+ DeleteWebsitePageResponse: {
3005
+ id: string;
3006
+ venueId: string;
3007
+ ownerType: components["schemas"]["WebsitePageOwnerType"];
3008
+ ownerId: string | null;
3009
+ label: ((string | number | boolean | (null)) | {
3010
+ [key: string]: unknown;
3011
+ } | unknown[]) | null;
3012
+ path: string | null;
3013
+ externalUrl: string | null;
3014
+ createdBy: string | null;
3015
+ updatedBy: string | null;
3016
+ createdAt: unknown;
3017
+ updatedAt: unknown;
3018
+ };
3019
+ /** @enum {string} */
3020
+ ActorType: "human" | "robot";
3021
+ /** @enum {string} */
3022
+ AdditiveFunction: "acid" | "acidity_regulator" | "anti_caking_agent" | "anti_foaming_agent" | "antioxidant" | "bulking_agent" | "carrier" | "colour" | "emulsifier" | "emulsifying_salt" | "firming_agent" | "flavour_enhancer" | "flour_treatment_agent" | "foaming_agent" | "gelling_agent" | "glazing_agent" | "humectant" | "modified_starch" | "preservative" | "packaging_gas" | "propellant_gas" | "raising_agent" | "sequestrant" | "stabiliser" | "sweetener" | "thickener";
3023
+ /** @enum {string} */
3024
+ AreaBookingMode: "slot" | "day";
3025
+ /** @enum {string} */
3026
+ AreaBookingRequestSource: "website" | "phone" | "walk_in";
3027
+ /** @enum {string} */
3028
+ AreaBookingRequestStatus: "pending" | "approved" | "rejected" | "cancelled";
3029
+ /** @enum {string} */
3030
+ AreaBookingStatus: "confirmed" | "arrived" | "completed" | "cancelled" | "no_show";
3031
+ /** @enum {string} */
3032
+ AreaType: "indoor" | "outdoor";
3033
+ /** @enum {string} */
3034
+ ArticleEditorSaveState: "idle" | "saving" | "saved" | "error";
3035
+ /** @enum {string} */
3036
+ ArticleStatus: "draft" | "published";
3037
+ /** @enum {string} */
3038
+ BasketStatus: "active" | "abandoned" | "converted";
3039
+ /** @enum {string} */
3040
+ BeverageCategory: "wine" | "beer" | "coffee" | "tea" | "cocktail" | "juice" | "soft_drink" | "dairy_drink" | "spirit" | "water";
3041
+ /** @enum {string} */
3042
+ CancellationReason: "guest_request" | "restaurant_request";
3043
+ /** @enum {string} */
3044
+ ContactPreference: "email" | "phone" | "sms" | "none";
3045
+ /** @enum {string} */
3046
+ CountryCode: "AD" | "AE" | "AF" | "AG" | "AI" | "AL" | "AM" | "AO" | "AQ" | "AR" | "AS" | "AT" | "AU" | "AW" | "AX" | "AZ" | "BA" | "BB" | "BD" | "BE" | "BF" | "BG" | "BH" | "BI" | "BJ" | "BL" | "BM" | "BN" | "BO" | "BQ" | "BR" | "BS" | "BT" | "BV" | "BW" | "BY" | "BZ" | "CA" | "CC" | "CD" | "CF" | "CG" | "CH" | "CI" | "CK" | "CL" | "CM" | "CN" | "CO" | "CR" | "CU" | "CV" | "CW" | "CX" | "CY" | "CZ" | "DE" | "DJ" | "DK" | "DM" | "DO" | "DZ" | "EC" | "EE" | "EG" | "EH" | "ER" | "ES" | "ET" | "FI" | "FJ" | "FK" | "FM" | "FO" | "FR" | "GA" | "GB" | "GD" | "GE" | "GF" | "GG" | "GH" | "GI" | "GL" | "GM" | "GN" | "GP" | "GQ" | "GR" | "GS" | "GT" | "GU" | "GW" | "GY" | "HK" | "HM" | "HN" | "HR" | "HT" | "HU" | "ID" | "IE" | "IL" | "IM" | "IN" | "IO" | "IQ" | "IR" | "IS" | "IT" | "JE" | "JM" | "JO" | "JP" | "KE" | "KG" | "KH" | "KI" | "KM" | "KN" | "KP" | "KR" | "KW" | "KY" | "KZ" | "LA" | "LB" | "LC" | "LI" | "LK" | "LR" | "LS" | "LT" | "LU" | "LV" | "LY" | "MA" | "MC" | "MD" | "ME" | "MF" | "MG" | "MH" | "MK" | "ML" | "MM" | "MN" | "MO" | "MP" | "MQ" | "MR" | "MS" | "MT" | "MU" | "MV" | "MW" | "MX" | "MY" | "MZ" | "NA" | "NC" | "NE" | "NF" | "NG" | "NI" | "NL" | "NO" | "NP" | "NR" | "NU" | "NZ" | "OM" | "PA" | "PE" | "PF" | "PG" | "PH" | "PK" | "PL" | "PM" | "PN" | "PR" | "PS" | "PT" | "PW" | "PY" | "QA" | "RE" | "RO" | "RS" | "RU" | "RW" | "SA" | "SB" | "SC" | "SD" | "SE" | "SG" | "SH" | "SI" | "SJ" | "SK" | "SL" | "SM" | "SN" | "SO" | "SR" | "SS" | "ST" | "SV" | "SX" | "SY" | "SZ" | "TC" | "TD" | "TF" | "TG" | "TH" | "TJ" | "TK" | "TL" | "TM" | "TN" | "TO" | "TR" | "TT" | "TV" | "TW" | "TZ" | "UA" | "UG" | "UM" | "US" | "UY" | "UZ" | "VA" | "VC" | "VE" | "VG" | "VI" | "VN" | "VU" | "WF" | "WS" | "YE" | "YT" | "ZA" | "ZM" | "ZW";
3047
+ /** @enum {string} */
3048
+ Currency: "EUR" | "CHF";
3049
+ /** @enum {string} */
3050
+ DayOfWeek: "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday";
3051
+ /** @enum {string} */
3052
+ DepositTransactionType: "charged" | "refunded" | "forfeited" | "waived" | "credit_used";
3053
+ /** @enum {string} */
3054
+ DepositwareStatus: "available" | "issued" | "returned" | "lost" | "damaged" | "retired";
3055
+ /** @enum {string} */
3056
+ EntityOwnerType: "event" | "dish" | "beverage" | "venue" | "menu" | "menuSubscription" | "ritual";
3057
+ /** @enum {string} */
3058
+ IntegrationNotificationType: "order_created" | "order_cancelled" | "order_completed" | "team_order_created" | "reservation_created" | "reservation_confirmed" | "reservation_cancelled";
3059
+ /** @enum {string} */
3060
+ IntegrationType: "telegram" | "google_ads" | "google_business_profile" | "meta_ads";
3061
+ /** @enum {string} */
3062
+ InventoryAssetStatus: "available" | "in_use" | "maintenance" | "retired";
3063
+ /** @enum {string} */
3064
+ InventoryCategory: "depositware" | "furniture" | "equipment" | "utensil";
3065
+ /** @enum {string} */
3066
+ InvitationScenario: "new_user" | "already_member" | "former_employee";
3067
+ /** @enum {string} */
3068
+ Locale: "aa" | "ab" | "ae" | "af" | "ak" | "am" | "an" | "ar" | "as" | "av" | "ay" | "az" | "ba" | "be" | "bg" | "bh" | "bi" | "bm" | "bn" | "bo" | "br" | "bs" | "ca" | "ce" | "ch" | "co" | "cr" | "cs" | "cu" | "cv" | "cy" | "da" | "de" | "dv" | "dz" | "ee" | "el" | "en" | "eo" | "es" | "et" | "eu" | "fa" | "ff" | "fi" | "fj" | "fo" | "fr" | "fy" | "ga" | "gd" | "gl" | "gn" | "gu" | "gv" | "ha" | "he" | "hi" | "ho" | "hr" | "ht" | "hu" | "hy" | "hz" | "ia" | "id" | "ie" | "ig" | "ii" | "ik" | "io" | "is" | "it" | "iu" | "ja" | "jv" | "ka" | "kg" | "ki" | "kj" | "kk" | "kl" | "km" | "kn" | "ko" | "kr" | "ks" | "ku" | "kv" | "kw" | "ky" | "la" | "lb" | "lg" | "li" | "ln" | "lo" | "lt" | "lu" | "lv" | "mg" | "mh" | "mi" | "mk" | "ml" | "mn" | "mr" | "ms" | "mt" | "my" | "na" | "nb" | "nd" | "ne" | "ng" | "nl" | "nn" | "no" | "nr" | "nv" | "ny" | "oc" | "oj" | "om" | "or" | "os" | "pa" | "pi" | "pl" | "ps" | "pt" | "qu" | "rm" | "rn" | "ro" | "ru" | "rw" | "sa" | "sc" | "sd" | "se" | "sg" | "si" | "sk" | "sl" | "sm" | "sn" | "so" | "sq" | "sr" | "ss" | "st" | "su" | "sv" | "sw" | "ta" | "te" | "tg" | "th" | "ti" | "tk" | "tl" | "tn" | "to" | "tr" | "ts" | "tt" | "tw" | "ty" | "ug" | "uk" | "ur" | "uz" | "ve" | "vi" | "vo" | "wa" | "wo" | "xh" | "yi" | "yo" | "za" | "zh" | "zu";
3069
+ /** @enum {string} */
3070
+ MenuItemType: "dish" | "beverage";
3071
+ /** @enum {string} */
3072
+ OccupancyReason: "ok" | "tables" | "personnel";
3073
+ /** @enum {string} */
3074
+ FulfillmentType: "pickup" | "delivery";
3075
+ /** @enum {string} */
3076
+ OrderStatus: "pending" | "in_progress" | "ready" | "completed" | "cancelled";
3077
+ /** @enum {string} */
3078
+ PaxBand: "1-2" | "3-4" | "5-6" | "7+";
3079
+ /** @enum {string} */
3080
+ PaymentMethod: "card" | "cash" | "voucher";
3081
+ /** @enum {string} */
3082
+ PaymentStatus: "unpaid" | "paid" | "refunded" | "authorized" | "cash_pending";
3083
+ /** @enum {string} */
3084
+ PlatformRole: "platform_maintainer";
3085
+ /** @enum {string} */
3086
+ ReservationMode: "passive" | "auto_steer";
3087
+ /** @enum {string} */
3088
+ Role: "superadmin" | "admin" | "manager" | "chef" | "cook" | "waiter" | "rider";
3089
+ /** @enum {string} */
3090
+ ScanTokenEntityType: "order" | "depositware";
3091
+ /** @enum {string} */
3092
+ SortOrder: "asc" | "desc";
3093
+ /** @enum {string} */
3094
+ SubscriberStatus: "active" | "paused" | "cancelled" | "past_due" | "trialing";
3095
+ /** @enum {string} */
3096
+ SubscriptionCreditStatus: "available" | "redeemed" | "expired";
3097
+ /** @enum {string} */
3098
+ SubscriptionPeriod: "week" | "month" | "year";
3099
+ /** @enum {string} */
3100
+ TeamOrderStatus: "draft" | "collecting" | "locked" | "placed" | "ready" | "completed" | "cancelled";
3101
+ /** @enum {string} */
3102
+ Unit: "grams" | "kilograms" | "liters" | "milliliters" | "pieces";
3103
+ /** @enum {string} */
3104
+ AdChannel: "google" | "facebook" | "instagram";
3105
+ /** @enum {string} */
3106
+ AdOwnerType: "event" | "ritual" | "venue" | "dish" | "beverage" | "menu";
3107
+ /** @enum {string} */
3108
+ AdStatus: "draft" | "ready" | "archived";
3109
+ /** @enum {string} */
3110
+ GoogleAdsAssetFamily: "sitelinks" | "callouts";
3111
+ /** @enum {string} */
3112
+ MentionEntityType: "dish" | "beverage" | "ingredient" | "menu" | "ritual";
3113
+ /** @enum {string} */
3114
+ MentionType: "link" | "value";
3115
+ /** @enum {string} */
3116
+ PendingSuperadminTransferStatus: "pending_invite" | "accepted_awaiting_payment" | "completed" | "cancelled" | "expired";
3117
+ /** @enum {string} */
3118
+ BillingMode: "single_anchor" | "split";
3119
+ /** @enum {string} */
3120
+ VenueChargeType: "base" | "addon";
3121
+ /** @enum {string} */
3122
+ AssetType: "image" | "video" | "document";
3123
+ /** @enum {string} */
3124
+ GbpMediaCategory: "cover" | "logo" | "gallery" | "video";
3125
+ /** @enum {string} */
3126
+ GbpSyncStatus: "processing" | "live" | "rejected" | "failed" | "removed";
3127
+ /** @enum {string} */
3128
+ GeoAreaType: "postcode" | "city" | "region";
3129
+ /** @enum {string} */
3130
+ Jurisdiction: "DE" | "CH" | "FR" | "IT";
3131
+ /** @enum {string} */
3132
+ EventAssetSource: "inherited" | "manual";
3133
+ /** @enum {string} */
3134
+ RitualType: "service" | "special";
3135
+ /** @enum {string} */
3136
+ SlotMode: "interval" | "duration";
3137
+ /** @enum {string} */
3138
+ TeamOrderPaymentStatus: "authorized" | "captured" | "cash_pending" | "cash_received" | "voided" | "failed";
3139
+ /** @enum {string} */
3140
+ FeatureCategory: "articles" | "auth" | "billing" | "core" | "guests" | "events" | "inventory" | "menus" | "orders" | "platform" | "promotions" | "reservations" | "settings" | "venues";
3141
+ /** @enum {string} */
3142
+ FeatureStatus: "backlog" | "in_development" | "released";
3143
+ /** @enum {string} */
3144
+ MentionFieldFormatter: "text" | "currency" | "integer" | "percentage" | "boolean";
3145
+ /** @enum {string} */
3146
+ KeywordPolarity: "positive" | "negative";
3147
+ /** @enum {string} */
3148
+ PromotionBenefitType: "free_item" | "discount_percentage" | "discount_amount" | "buy_x_get_y";
3149
+ /** @enum {string} */
3150
+ ReservationPromotionStatus: "applied" | "redeemed" | "expired";
3151
+ /** @enum {string} */
3152
+ ReservationStatus: "pending" | "confirmed" | "arrived" | "seated" | "completed" | "cancelled" | "no_show";
3153
+ /** @enum {string} */
3154
+ ReservationMessageStatus: "draft" | "sent";
3155
+ /** @enum {string} */
3156
+ VenueEmailSenderStatus: "pending" | "verified" | "failed" | "temporary_failure";
3157
+ /** @enum {string} */
3158
+ WebsitePageOwnerType: "venue" | "menu" | "dish" | "beverage" | "ingredient" | "event" | "ritual";
3159
+ /** @enum {string} */
3160
+ VenueAssetType: "logomark" | "wordmark" | "combinationmark_horizontal" | "combinationmark_vertical";
3161
+ /** @enum {string} */
3162
+ VenueUserStatus: "pending" | "confirmed" | "revoked";
3163
+ /** @enum {string} */
3164
+ VenueType: "restaurant" | "fine_dining_restaurant" | "ghost_kitchen" | "food_truck";
3165
+ /** @enum {string} */
3166
+ ParticipantStatus: "browsing" | "authorized" | "cash_pending" | "placed" | "completed" | "cancelled";
3167
+ /** @enum {string} */
3168
+ EnumTrue: "true";
3169
+ /** @enum {string} */
3170
+ EnumFalse: "false";
3171
+ };
3172
+ responses: never;
3173
+ parameters: never;
3174
+ requestBodies: never;
3175
+ headers: never;
3176
+ pathItems: never;
3177
+ }
3178
+
3179
+ type schemas = components['schemas'];
3180
+ type CreateEventRequest = schemas['CreateEventRequest'];
3181
+ type CreateEventResponse = schemas['CreateEventResponse'];
3182
+ type PatchEventRequest = schemas['EditEventRequest'];
3183
+ type PatchEventResponse = schemas['EditEventResponse'];
3184
+ type DeleteEventResponse = schemas['DeleteEventResponse'];
3185
+ type UploadEventAssetResponse = schemas['UploadAssetResponse'];
3186
+ /**
3187
+ * Args for `client.events.uploadPoster()`. Mirrors
3188
+ * {@link UploadFeatureImageArgs} — the SDK accepts a `Buffer` /
3189
+ * `Uint8Array` payload + filename + content-type and builds the
3190
+ * multipart FormData internally. Client ergonomics, no wire equivalent.
3191
+ */
3192
+ interface UploadEventAssetArgs {
3193
+ data: Buffer | Uint8Array;
3194
+ filename: string;
3195
+ contentType: string;
3196
+ }
3197
+ /**
3198
+ * Args for `client.dishes.uploadAsset()` / `client.beverages.uploadAsset()`.
3199
+ * Like {@link UploadEventAssetArgs} but with optional discovery `tags` applied
3200
+ * to the new asset row (e.g. `['lunch-menu']` to surface the image in the lunch
3201
+ * carousel). The SDK builds the multipart FormData internally.
3202
+ */
3203
+ interface UploadAssetArgs {
3204
+ data: Buffer | Uint8Array;
3205
+ filename: string;
3206
+ contentType: string;
3207
+ tags?: string[];
3208
+ }
3209
+ /** `uploadAsset` response — the new asset + its public URL. Shared by the dish, beverage, and event upload methods. */
3210
+ type UploadAssetResponse = schemas['UploadAssetResponse'];
3211
+ /**
3212
+ * A single ad row — generated-bound to the `FetchAdResponse` component
3213
+ * (`createSelectSchema(ads)` server-side). Carries the polymorphic owner
3214
+ * (`ownerEntityType` / `ownerEntityId`), the `channel`, the paste-ready
3215
+ * Google Search Ad `content` document, and the lifecycle `status`.
3216
+ */
3217
+ type Ad = schemas['FetchAdResponse'];
3218
+ /**
3219
+ * The ads list response — generated-bound to `FetchAdsResponse` (an array
3220
+ * of {@link Ad}), ordered by `createdAt`. Never hand-rolled.
3221
+ */
3222
+ type ListAdsResponse = schemas['FetchAdsResponse'];
3223
+ type CreateAdRequest = schemas['CreateAdRequest'];
3224
+ type CreateAdResponse = schemas['CreateAdResponse'];
3225
+ type PatchAdRequest = schemas['EditAdRequest'];
3226
+ type PatchAdResponse = schemas['EditAdResponse'];
3227
+ type DeleteAdResponse = schemas['DeleteAdResponse'];
3228
+ type EditMetaAdRequest = schemas['EditMetaAdRequest'];
3229
+ type EditMetaAdResponse = schemas['EditMetaAdResponse'];
3230
+ type SaveAdCalloutsRequest = schemas['SaveAdCalloutsRequest'];
3231
+ type SaveAdCalloutsResponse = schemas['SaveAdCalloutsResponse'];
3232
+ type SaveAdKeywordsRequest = schemas['SaveAdKeywordsRequest'];
3233
+ type SaveAdKeywordsResponse = schemas['SaveAdKeywordsResponse'];
3234
+ type SaveAdNegativeKeywordsRequest = schemas['SaveAdNegativeKeywordsRequest'];
3235
+ type SaveAdNegativeKeywordsResponse = schemas['SaveAdNegativeKeywordsResponse'];
3236
+ type SaveAdWebsitePagesRequest = schemas['SaveAdWebsitePagesRequest'];
3237
+ type SaveAdWebsitePagesResponse = schemas['SaveAdWebsitePagesResponse'];
3238
+ type SetAdBudgetRequest = schemas['SetAdBudgetRequest'];
3239
+ type SetAdBudgetResponse = schemas['SetAdBudgetResponse'];
3240
+ type GetCalloutsResponse = schemas['GetCalloutsResponse'];
3241
+ type CreateCalloutRequest = schemas['CreateCalloutRequest'];
3242
+ type CreateCalloutResponse = schemas['CreateCalloutResponse'];
3243
+ type UpdateCalloutRequest = schemas['UpdateCalloutRequest'];
3244
+ type UpdateCalloutResponse = schemas['UpdateCalloutResponse'];
3245
+ type DeleteCalloutResponse = schemas['DeleteCalloutResponse'];
3246
+ /**
3247
+ * A dish read by accessor: localized name/description, dietary flags, price,
3248
+ * and assets with public URLs. Generated-bound to `FetchDishResponse`
3249
+ * (`createSelectSchema(dishes)` + assets, server-side).
3250
+ */
3251
+ type FetchDishResponse = schemas['FetchDishResponse'];
3252
+ type EditDishRequest = schemas['EditDishRequest'];
3253
+ type EditDishResponse = schemas['EditDishResponse'];
3254
+ type GetWebsitePagesResponse = schemas['GetWebsitePagesResponse'];
3255
+ type CreateWebsitePageRequest = schemas['CreateWebsitePageRequest'];
3256
+ type CreateWebsitePageResponse = schemas['CreateWebsitePageResponse'];
3257
+ type UpdateWebsitePageRequest = schemas['UpdateWebsitePageRequest'];
3258
+ type UpdateWebsitePageResponse = schemas['UpdateWebsitePageResponse'];
3259
+ type DeleteWebsitePageResponse = schemas['DeleteWebsitePageResponse'];
3260
+ /**
3261
+ * Optional filters for `client.ads.list()`. Each narrows the venue's ad
3262
+ * set; omit all to list every ad. Client ergonomics, mapped to the wire
3263
+ * query string by the resource layer.
3264
+ */
3265
+ interface ListAdsOptions {
3266
+ /** Filter to ads owning this entity type (e.g. `event`). */
3267
+ ownerEntityType?: string;
3268
+ /** Filter to ads owning this specific entity id. */
3269
+ ownerEntityId?: string;
3270
+ /** Filter to ads on this channel (e.g. `google`). */
3271
+ channel?: string;
3272
+ }
3273
+ type Article = schemas['FetchArticleResponse'];
3274
+ type ListArticlesResponse = schemas['FetchArticlesResponse'];
3275
+ type GetArticleResponse = schemas['FetchArticleResponse'];
3276
+ type PatchArticleRequest = schemas['EditArticleRequest'];
3277
+ type PatchArticleResponse = schemas['EditArticleResponse'];
3278
+ type FeatureImage = schemas['FeatureImage'];
3279
+ type PatchFeatureImageRequest = schemas['PatchArticleFeatureImageBody'];
3280
+ /**
3281
+ * Args for `client.articles.uploadFeatureImage()`. The SDK accepts a
3282
+ * `Buffer` or `Uint8Array` payload + filename + content-type — it
3283
+ * builds the FormData internally so callers don't have to know about
3284
+ * multipart wire encoding. Client ergonomics, no wire equivalent.
3285
+ */
3286
+ interface UploadFeatureImageArgs {
3287
+ data: Buffer | Uint8Array;
3288
+ filename: string;
3289
+ contentType: string;
3290
+ }
3291
+ interface ListArticlesOptions {
3292
+ /** Only return articles whose `tags` array contains this value. */
3293
+ tag?: string;
3294
+ /** When `true`, include articles whose `publishedAt` is null. Default `false`. */
3295
+ includeDrafts?: boolean;
3296
+ /** When `true`, include articles whose `isActive` is `false`. Default `false`. */
3297
+ includeInactive?: boolean;
3298
+ }
3299
+ type Venue = schemas['GetVenueResponse'];
3300
+ type GetVenueResponse = schemas['GetVenueResponse'];
3301
+ /**
3302
+ * Order fulfillment type — bound to the generated `FulfillmentType`
3303
+ * component (order3000's `order_fulfillment_type` enum, surfaced via
3304
+ * `openapi-typescript`). Never hand-rolled.
3305
+ */
3306
+ type OrderFulfillmentType = schemas['FulfillmentType'];
3307
+ type PlaceOrderRequest = Omit<schemas['PlaceOrderRequest'], 'fulfillmentAt'> & {
3308
+ /**
3309
+ * When the order should be fulfilled (ISO 8601 datetime or Date).
3310
+ * Null / omitted in team-order mode — the Lead's pickup-time decision
3311
+ * is attached to the team row and backfilled onto each child order at
3312
+ * submit time.
3313
+ */
3314
+ fulfillmentAt?: Date | string | null;
3315
+ };
3316
+ type PlaceOrderResponse = schemas['PlaceOrderResponse'];
3317
+ type MakeReservationRequest = schemas['MakeReservationRequest'];
3318
+ type MakeReservationResponse = schemas['MakeReservationResponse'];
3319
+ /**
3320
+ * Day of week — generated-bound to the `dayOfWeek` enum carried by the
3321
+ * events list schedule time-slot rows. The order3000 events output
3322
+ * schema is now precise (no more `.passthrough()`), so this derives
3323
+ * straight from the wire contract.
3324
+ */
3325
+ type DayOfWeek = NonNullable<NonNullable<schemas['FetchEventsResponse'][number]['schedule']>['scheduleTimeSlots'][number]['dayOfWeek']>;
3326
+ /**
3327
+ * A single event time slot — the one slot shape, used by both the weekly
3328
+ * recurring `timeSlots[]` and the per-date `scheduleOverrides[].timeSlots[]`.
3329
+ * `dayOfWeek` is present only on weekly slots (optional); every field is
3330
+ * optional because the underlying join row may be absent, so consumers
3331
+ * resolving "the slots bookable on date X" must guard. Generated-bound to
3332
+ * the events list response's `timeSlots[]` element.
3333
+ */
3334
+ type TimeSlot = schemas['FetchEventsResponse'][number]['timeSlots'][number];
3335
+ /**
3336
+ * A date-specific schedule override for an event. Generated-bound to the
3337
+ * events list response's `scheduleOverrides[]` element.
3338
+ */
3339
+ type ScheduleOverride = schemas['FetchEventsResponse'][number]['scheduleOverrides'][number];
3340
+ /**
3341
+ * An event's schedule (rrule, validity window, slot-generation settings,
3342
+ * plus the nested override / time-slot rows). Generated-bound to the
3343
+ * non-null `schedule` object on the events list response.
3344
+ *
3345
+ * `intervalDuration` / `duration` are milliseconds (codebase convention).
3346
+ */
3347
+ type Schedule = NonNullable<schemas['FetchEventsResponse'][number]['schedule']>;
3348
+ /**
3349
+ * An asset (image/video/document) attached to an event. Generated-bound to the
3350
+ * events list response's `assets[]` element. Use the asset's `tags` (e.g.
3351
+ * `'poster'`) to classify how it's used.
3352
+ */
3353
+ type EventAsset = schemas['FetchEventsResponse'][number]['assets'][number];
3354
+ /**
3355
+ * A promotion attached to an event. Generated-bound to the events list
3356
+ * response's `promotions[]` element.
3357
+ */
3358
+ type Promotion = schemas['FetchEventsResponse'][number]['promotions'][number];
3359
+ /**
3360
+ * A single event as returned by the list endpoint, with schedule,
3361
+ * posters, promotions, time slots and overrides inlined. Generated-bound
3362
+ * to the events list response element — request-shape drift is now
3363
+ * impossible.
3364
+ */
3365
+ type Event = schemas['FetchEventsResponse'][number];
3366
+ interface ListEventsOptions {
3367
+ /** Include private events in the response */
3368
+ includePrivate?: boolean;
3369
+ /** Include inactive events in the response */
3370
+ includeInactive?: boolean;
3371
+ /** Filter by isPublic status */
3372
+ isPublic?: boolean;
3373
+ /** Filter by isRecurring status */
3374
+ isRecurring?: boolean;
3375
+ /** Filter by isClosed status */
3376
+ isClosed?: boolean;
3377
+ /** Filter for events occurring within N days from today */
3378
+ upcomingWithinDays?: number;
3379
+ }
3380
+ /**
3381
+ * The events list response — generated-bound to `FetchEventsResponse`
3382
+ * (an array of {@link Event}). Never hand-rolled.
3383
+ */
3384
+ type ListEventsResponse = schemas['FetchEventsResponse'];
3385
+ /**
3386
+ * An asset (image/video/document) as returned by the assets-by-tag endpoint,
3387
+ * with its resolved Supabase `publicUrl`. Generated-bound to
3388
+ * `FetchAssetsByTagResponse`'s element — never hand-rolled.
3389
+ */
3390
+ type Asset = schemas['FetchAssetsByTagResponse'][number];
3391
+ interface ListAssetsOptions {
3392
+ /** Required. Only assets carrying this tag are returned. */
3393
+ tag: string;
3394
+ /** Optional asset-type filter. */
3395
+ type?: 'image' | 'video' | 'document';
3396
+ }
3397
+ /**
3398
+ * The assets-by-tag list response — generated-bound to
3399
+ * `FetchAssetsByTagResponse` (an array of {@link Asset}). Never hand-rolled.
3400
+ */
3401
+ type ListAssetsResponse = schemas['FetchAssetsByTagResponse'];
3402
+ /**
3403
+ * Menu item discriminant — generated-bound to the `type` enum on the
3404
+ * menu response's `items[]` element. The `fetchMenu` output schema is
3405
+ * now precise; never hand-rolled.
3406
+ */
3407
+ type MenuItemType = NonNullable<schemas['FetchMenuResponse']['items']>[number]['type'];
3408
+ /**
3409
+ * Crop area coordinates for assets. Shared UI helper (mirrors the
3410
+ * `@kolaveri/molecules` Cropper type) — not a wire DTO.
3411
+ */
3412
+ interface CropArea {
3413
+ x: number;
3414
+ y: number;
3415
+ width: number;
3416
+ height: number;
3417
+ }
3418
+ /**
3419
+ * A menu — generated-bound to `FetchMenuResponse`. order3000's
3420
+ * `fetchMenu` action always projects the flat, hydrated client view:
3421
+ * `assets[]` (menu-level) and every `items[].dish.assets[]` /
3422
+ * `items[].beverage.assets[]` are resolved to flat assets carrying
3423
+ * their Supabase `publicUrl`; the raw `*_assets` junction relations are
3424
+ * stripped at source and never surface on the wire. Bound here via the
3425
+ * same alias-derivation style as `Basket`/`BasketItem`.
3426
+ */
3427
+ type Menu = NonNullable<schemas['FetchMenuResponse']>;
3428
+ /**
3429
+ * A single menu item — generated-bound to the element type of
3430
+ * `Menu.items[]` (present when `expand=items`).
3431
+ */
3432
+ type MenuItem = NonNullable<Menu['items']>[number];
3433
+ /**
3434
+ * The dish carried by a menu item — generated-bound to `MenuItem.dish`.
3435
+ */
3436
+ type MenuDish = NonNullable<MenuItem['dish']>;
3437
+ /**
3438
+ * The beverage carried by a menu item — generated-bound to
3439
+ * `MenuItem.beverage`.
3440
+ */
3441
+ type MenuBeverage = NonNullable<MenuItem['beverage']>;
3442
+ /**
3443
+ * A flat, hydrated asset — generated-bound to the element type of the
3444
+ * always-present menu-level `Menu.assets[]`. Identical in shape to the
3445
+ * per-item `dish.assets[]` / `beverage.assets[]` elements (all are the
3446
+ * same hydrated asset projection with a resolved `publicUrl`).
3447
+ */
3448
+ type MenuAsset = NonNullable<Menu['assets']>[number];
3449
+ interface GetMenuOptions {
3450
+ /** Expand related resources (items, assets) */
3451
+ expand?: ('items' | 'assets')[];
3452
+ }
3453
+ /**
3454
+ * Wire shape for a single menu bundle, bound to the generated OpenAPI
3455
+ * schema (`FetchMenuBundlesResponse`) — never hand-rolled. The
3456
+ * authoritative contract is order3000's `fetchMenuBundles` output
3457
+ * schema, surfaced here via `openapi-typescript`. Notably `price` is
3458
+ * `{ amount, currency }`, not a bare number.
3459
+ */
3460
+ type MenuBundle = schemas['FetchMenuBundlesResponse'][number];
3461
+ type MenuBundleDeposit = NonNullable<MenuBundle['deposit']>;
3462
+ /**
3463
+ * A single event as returned by the `events.get` endpoint, with
3464
+ * optional schedule / menus / posters expansions. Generated-bound to the
3465
+ * `FetchEventResponse` component (the order3000 `fetchEvent` output
3466
+ * schema is now precise) — request-shape drift is impossible.
3467
+ */
3468
+ type EventByAccessor = schemas['FetchEventResponse'];
3469
+ /**
3470
+ * The fetched event's schedule sub-object, including the optional
3471
+ * `scheduleTimeSlots[]` expansion. Generated-bound to the non-null
3472
+ * `schedule` on `FetchEventResponse`. Kept as a distinct public SDK type
3473
+ * name (re-exported as `O3KScheduleWithTimeSlots`) for downstream
3474
+ * stability; structurally it is the single-event-fetch schedule shape.
3475
+ */
3476
+ type ScheduleWithTimeSlots = NonNullable<EventByAccessor['schedule']>;
3477
+ /**
3478
+ * A single regular time slot on the by-accessor event's schedule.
3479
+ * Generated-bound to the element type of the (optional)
3480
+ * `schedule.scheduleTimeSlots[]` array on `FetchEventResponse`.
3481
+ */
3482
+ type ScheduleTimeSlot = NonNullable<ScheduleWithTimeSlots['scheduleTimeSlots']>[number];
3483
+ /**
3484
+ * A menu summary attached to a by-accessor event. Generated-bound to the
3485
+ * element type of `FetchEventResponse`'s optional `menus[]` array.
3486
+ */
3487
+ type EventMenu = NonNullable<EventByAccessor['menus']>[number];
3488
+ /**
3489
+ * A single ritual as returned by the `rituals.get` endpoint — its template
3490
+ * schedule (time slots + date overrides), media, and the events materialised
3491
+ * from it (with per-day covers). Generated-bound to the `FetchRitualResponse`
3492
+ * component (the order3000 `fetchRitual` output schema), so request-shape drift
3493
+ * is impossible. The component is nullable on the wire (the action returns the
3494
+ * ritual or throws); `get()` resolves on success, so the SDK type is non-null.
3495
+ */
3496
+ type RitualByAccessor = NonNullable<schemas['FetchRitualResponse']>;
3497
+ interface GetEventOptions {
3498
+ /** Expand related resources (schedule, timeSlots, menus, posters) */
3499
+ expand?: ('schedule' | 'timeSlots' | 'menus' | 'assets')[];
3500
+ }
3501
+ type AreaBookingMode = schemas['FetchAreaResponse']['bookingMode'];
3502
+ type AreaBookingRequestStatus = schemas['SubmitAreaBookingRequestResponse']['status'];
3503
+ type AreaBookingRequestSource = schemas['SubmitAreaBookingRequestResponse']['source'];
3504
+ type AreaBookingStatus = schemas['FetchAreaBookingsResponse'][number]['status'];
3505
+ type AreaAsset = NonNullable<schemas['FetchAreaResponse']['assets']>[number];
3506
+ type AreaFeature = NonNullable<schemas['FetchAreaResponse']['features']>[number];
3507
+ type Area = schemas['FetchAreaResponse'];
3508
+ interface GetAreaOptions {
3509
+ expand?: 'assets'[];
3510
+ }
3511
+ type AreaAvailabilityWindow = schemas['GetAreaAvailabilityResponse']['occupied'][number];
3512
+ type AreaAvailabilityResponse = schemas['GetAreaAvailabilityResponse'];
3513
+ type EventSlotAvailabilityResponse = schemas['FetchSlotAvailabilityResponse'];
3514
+ interface GetEventSlotAvailabilityOptions {
3515
+ reservationDate: string;
3516
+ partySize: number;
3517
+ areaId?: string;
3518
+ }
3519
+ interface GetAreaAvailabilityOptions {
3520
+ /** YYYY-MM-DD — defaults to today */
3521
+ from?: string;
3522
+ /** YYYY-MM-DD — defaults to today + 90d */
3523
+ to?: string;
3524
+ }
3525
+ type SubmitAreaBookingRequestPayload = schemas['SubmitAreaBookingPayload'];
3526
+ type AreaBookingRequestResponse = schemas['SubmitAreaBookingRequestResponse'];
3527
+ /**
3528
+ * Canonical basket — generated-bound to the `FetchBasketResponse`
3529
+ * component (the order3000 `fetchBasket` output schema is now precise).
3530
+ * Returned by `baskets.get(sessionId)`.
3531
+ */
3532
+ type Basket = NonNullable<schemas['FetchBasketResponse']>;
3533
+ /**
3534
+ * Basket lifecycle status — generated-bound to the `status` enum on
3535
+ * `FetchBasketResponse`. No longer a bare wire `string`.
3536
+ */
3537
+ type BasketStatus = Basket['status'];
3538
+ type Currency = schemas['BasketTotals']['currency'];
3539
+ /**
3540
+ * Unit of measurement for portion tracking. Bound to the generated
3541
+ * add-to-basket request shape.
3542
+ */
3543
+ type Unit = NonNullable<schemas['AddToBasketRequest']['menuItems'][number]['unit']>;
3544
+ /**
3545
+ * A single basket item — generated-bound to the element type of
3546
+ * `FetchBasketResponse.items[]`. One physical product (e.g. a TiffinBox
3547
+ * with rice, curry, and sides); `Basket.itemCount` is the COUNT of basket
3548
+ * items, not a sum of menu-item quantities.
3549
+ */
3550
+ type BasketItem = Basket['items'][number];
3551
+ /**
3552
+ * Reference to a menu item within a basket item — generated-bound to the
3553
+ * element type of `BasketItem.menuItems[]`. Each ref carries its own
3554
+ * portion size (quantity + unit) for precise tracking like
3555
+ * "100g rice, 80g curry".
3556
+ */
3557
+ type BasketItemMenuItemRef = BasketItem['menuItems'][number];
3558
+ /**
3559
+ * Free-form per-basket-item metadata bag — generated-bound to the
3560
+ * (nullable) `metadata` object on `FetchBasketResponse.items[]`. The wire
3561
+ * contract types this as an open `{ [key: string]: unknown }` record;
3562
+ * thamarai narrows individual keys (`type`, `mode`, `upsell`, `price`) at
3563
+ * its own transform boundary.
3564
+ */
3565
+ type BasketItemMetadata = NonNullable<BasketItem['metadata']>;
3566
+ /**
3567
+ * Deposit info on a basket item — generated-bound to the (nullable)
3568
+ * `deposit` object on `FetchBasketResponse.items[]`. order3000 refuses
3569
+ * any inbound deposit money amount; this object is outbound-only, for UI
3570
+ * display.
3571
+ */
3572
+ type BasketItemDeposit = NonNullable<BasketItem['deposit']>;
3573
+ /**
3574
+ * Order workflow status — generated-bound to the `status` enum on
3575
+ * `FetchLatestOrderResponse` (order3000's `order_status`). No longer a
3576
+ * bare wire `string`.
3577
+ */
3578
+ type OrderStatus = NonNullable<schemas['FetchLatestOrderResponse']>['status'];
3579
+ /**
3580
+ * Payment workflow status — generated-bound to the `paymentStatus` enum
3581
+ * on `FetchLatestOrderResponse` (order3000's `payment_status`). No longer
3582
+ * a bare wire `string`.
3583
+ */
3584
+ type PaymentStatus = NonNullable<schemas['FetchLatestOrderResponse']>['paymentStatus'];
3585
+ /**
3586
+ * The most recent non-team order for a guest session, with the captured
3587
+ * basket items + totals + declared returns inlined. Returned by
3588
+ * `orders.getLatest(sessionId)` — `null` when the session has no
3589
+ * qualifying order (fresh sessionIds and team-only sessions both fall
3590
+ * through to `null`). Generated-bound to the `FetchLatestOrderResponse`
3591
+ * component (the order3000 `fetchLatestOrder` output schema is now
3592
+ * precise).
3593
+ */
3594
+ type LatestOrder = NonNullable<schemas['FetchLatestOrderResponse']>;
3595
+ /**
3596
+ * One "I'll return N of this template" declaration. Bound to the
3597
+ * generated basket-totals `returnable` element — clients never specify
3598
+ * a deposit money amount.
3599
+ */
3600
+ type DeclaredReturn = schemas['BasketTotals']['returnable'][number];
3601
+ /**
3602
+ * Canonical basket totals (all cents), bound to the generated
3603
+ * `BasketTotals` component. The single figure clients read for every
3604
+ * displayed monetary value.
3605
+ */
3606
+ type BasketTotals = schemas['BasketTotals'];
3607
+ /**
3608
+ * Request to add an item to the basket.
3609
+ *
3610
+ * Menu items can optionally include portion information (quantity/unit).
3611
+ * If not provided, defaults to the menu item's configured portion size.
3612
+ * `venueAccessor` is injected by the SDK resource layer, so it's omitted
3613
+ * from the public caller shape.
3614
+ */
3615
+ type AddToBasketRequest = Omit<schemas['AddToBasketRequest'], 'venueId'>;
3616
+ type AddToBasketResponse = schemas['AddToBasketResponse'];
3617
+ type RemoveFromBasketResponse = schemas['RemoveFromBasketResponse'];
3618
+ type CreatePaymentIntentRequest = Omit<schemas['CreatePaymentIntentRequest'], 'venueAccessor' | 'fulfillmentAt'> & {
3619
+ /**
3620
+ * Optional — null / omitted in team-order mode. The Lead's pickup-time
3621
+ * decision is stored on the team row and backfilled onto each child
3622
+ * order at submit time.
3623
+ */
3624
+ fulfillmentAt?: Date | string | null;
3625
+ };
3626
+ type CreatePaymentIntentResponse = schemas['CreatePaymentIntentResponse'];
3627
+ type CreateDeltaPaymentIntentRequest = Omit<schemas['CreateDeltaPaymentIntentRequest'], 'venueAccessor'>;
3628
+ type CreateDeltaPaymentIntentResponse = schemas['CreateDeltaPaymentIntentResponse'];
3629
+ type ReduceDeltaPaymentIntentRequest = Omit<schemas['ReduceDeltaPaymentIntentRequest'], 'venueAccessor'>;
3630
+ type ReduceDeltaPaymentIntentResponse = schemas['ReduceDeltaPaymentIntentResponse'];
3631
+ type ConfirmOrderRequest = Omit<schemas['ConfirmOrderRequest'], 'venueAccessor' | 'orderId'>;
3632
+ type ConfirmOrderResponse = schemas['ConfirmOrderResponse'];
3633
+ type SubscriptionPeriod = schemas['GetSubscriptionResponse']['billingPeriod'];
3634
+ /**
3635
+ * Subscriber lifecycle status — generated-bound to the `subscriber_status`
3636
+ * pgEnum, surfaced via order3000's `FetchSubscribersResponse[].status`
3637
+ * (and `fetchMenuSubscription`). openapi-typescript hoists the shared
3638
+ * enum into `components.schemas['SubscriberStatus']`.
3639
+ */
3640
+ type SubscriberStatus = schemas['SubscriberStatus'];
3641
+ type SubscriptionCreditStatus = schemas['GetSubscriptionCreditsResponse'][number]['status'];
3642
+ type MenuSubscriptionPoster = NonNullable<schemas['GetSubscriptionResponse']['posters']>[number];
3643
+ type MenuSubscription = schemas['GetSubscriptionResponse'];
3644
+ type SubscribeRequest = schemas['SubscribeToSubscriptionBody'];
3645
+ type SubscribeResponse = schemas['SubscribeToSubscriptionResponse'];
3646
+ type SubscriptionCredit = schemas['GetSubscriptionCreditsResponse'][number];
3647
+
3648
+ export type { FeatureImage as $, Ad as A, Basket as B, ConfirmOrderRequest as C, CreateDeltaPaymentIntentResponse as D, CreateEventRequest as E, CreateEventResponse as F, CreatePaymentIntentRequest as G, CreatePaymentIntentResponse as H, CreateWebsitePageRequest as I, CreateWebsitePageResponse as J, CropArea as K, Currency as L, DayOfWeek as M, DeclaredReturn as N, DeleteAdResponse as O, DeleteCalloutResponse as P, DeleteEventResponse as Q, DeleteWebsitePageResponse as R, EditDishRequest as S, EditDishResponse as T, EditMetaAdRequest as U, EditMetaAdResponse as V, Event as W, EventAsset as X, EventByAccessor as Y, EventMenu as Z, EventSlotAvailabilityResponse as _, AddToBasketRequest as a, SubscribeRequest as a$, FetchDishResponse as a0, GetAreaAvailabilityOptions as a1, GetAreaOptions as a2, GetArticleResponse as a3, GetCalloutsResponse as a4, GetEventOptions as a5, GetEventSlotAvailabilityOptions as a6, GetMenuOptions as a7, GetVenueResponse as a8, GetWebsitePagesResponse as a9, PatchArticleResponse as aA, PatchEventRequest as aB, PatchEventResponse as aC, PatchFeatureImageRequest as aD, PaymentStatus as aE, PlaceOrderRequest as aF, PlaceOrderResponse as aG, Promotion as aH, ReduceDeltaPaymentIntentRequest as aI, ReduceDeltaPaymentIntentResponse as aJ, RemoveFromBasketResponse as aK, RitualByAccessor as aL, SaveAdCalloutsRequest as aM, SaveAdCalloutsResponse as aN, SaveAdKeywordsRequest as aO, SaveAdKeywordsResponse as aP, SaveAdNegativeKeywordsRequest as aQ, SaveAdNegativeKeywordsResponse as aR, SaveAdWebsitePagesRequest as aS, SaveAdWebsitePagesResponse as aT, Schedule as aU, ScheduleOverride as aV, ScheduleTimeSlot as aW, ScheduleWithTimeSlots as aX, SetAdBudgetRequest as aY, SetAdBudgetResponse as aZ, SubmitAreaBookingRequestPayload as a_, LatestOrder as aa, ListAdsOptions as ab, ListAdsResponse as ac, ListArticlesOptions as ad, ListArticlesResponse as ae, ListAssetsOptions as af, ListAssetsResponse as ag, ListEventsOptions as ah, ListEventsResponse as ai, MakeReservationRequest as aj, MakeReservationResponse as ak, Menu as al, MenuAsset as am, MenuBeverage as an, MenuBundle as ao, MenuBundleDeposit as ap, MenuDish as aq, MenuItem as ar, MenuItemType as as, MenuSubscription as at, MenuSubscriptionPoster as au, OrderFulfillmentType as av, OrderStatus as aw, PatchAdRequest as ax, PatchAdResponse as ay, PatchArticleRequest as az, AddToBasketResponse as b, SubscribeResponse as b0, SubscriberStatus as b1, SubscriptionCredit as b2, SubscriptionCreditStatus as b3, SubscriptionPeriod as b4, TimeSlot as b5, Unit as b6, UpdateCalloutRequest as b7, UpdateCalloutResponse as b8, UpdateWebsitePageRequest as b9, UpdateWebsitePageResponse as ba, UploadAssetArgs as bb, UploadAssetResponse as bc, UploadEventAssetArgs as bd, UploadEventAssetResponse as be, UploadFeatureImageArgs as bf, Venue as bg, Area as c, AreaAsset as d, AreaAvailabilityResponse as e, AreaAvailabilityWindow as f, AreaBookingMode as g, AreaBookingRequestResponse as h, AreaBookingRequestSource as i, AreaBookingRequestStatus as j, AreaBookingStatus as k, AreaFeature as l, Article as m, Asset as n, BasketItem as o, BasketItemDeposit as p, BasketItemMenuItemRef as q, BasketItemMetadata as r, BasketStatus as s, BasketTotals as t, ConfirmOrderResponse as u, CreateAdRequest as v, CreateAdResponse as w, CreateCalloutRequest as x, CreateCalloutResponse as y, CreateDeltaPaymentIntentRequest as z };