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