order3000 0.24.5 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -4
- package/dist/client.cjs +22 -39
- package/dist/client.d.cts +1337 -1004
- package/dist/client.d.mts +1337 -1004
- package/dist/client.mjs +17 -34
- package/dist/deliveryAddressSchema-8YX7yh5X.mjs +34 -0
- package/dist/deliveryAddressSchema-DQJ8BDYX.cjs +40 -0
- package/dist/schemas.cjs +2765 -136
- package/dist/schemas.d.cts +2614 -3222
- package/dist/schemas.d.mts +2614 -3222
- package/dist/schemas.mjs +2765 -136
- package/package.json +11 -6
package/dist/client.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { z as z$1 } from 'zod';
|
|
2
|
+
import { z } from 'zod/v4';
|
|
2
3
|
import { RealtimePostgresChangesPayload, RealtimeChannel, SupabaseClient } from '@supabase/supabase-js';
|
|
3
4
|
|
|
4
5
|
declare class TokenManager {
|
|
@@ -64,7 +65,7 @@ interface components {
|
|
|
64
65
|
schemas: {
|
|
65
66
|
/**
|
|
66
67
|
* Area
|
|
67
|
-
* @description A bookable + public area for a venue. Assets are only included when the request expands them.
|
|
68
|
+
* @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.
|
|
68
69
|
*/
|
|
69
70
|
Area: {
|
|
70
71
|
id: string;
|
|
@@ -81,8 +82,7 @@ interface components {
|
|
|
81
82
|
} | null;
|
|
82
83
|
minCapacity: number | null;
|
|
83
84
|
maxCapacity: number;
|
|
84
|
-
|
|
85
|
-
currency: "EUR" | "CHF";
|
|
85
|
+
currency: components["schemas"]["Currency"];
|
|
86
86
|
basePrice: number | null;
|
|
87
87
|
perPersonPrice: number | null;
|
|
88
88
|
features: {
|
|
@@ -94,12 +94,13 @@ interface components {
|
|
|
94
94
|
[key: string]: string;
|
|
95
95
|
};
|
|
96
96
|
}[] | null;
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
bookingMode: components["schemas"]["AreaBookingMode"];
|
|
98
|
+
isBookable?: boolean;
|
|
99
|
+
isPublic?: boolean;
|
|
100
|
+
isActive?: boolean;
|
|
99
101
|
assets?: {
|
|
100
102
|
id: string;
|
|
101
|
-
|
|
102
|
-
type: "image" | "video" | "document";
|
|
103
|
+
type: components["schemas"]["AssetType"];
|
|
103
104
|
tags: string[] | null;
|
|
104
105
|
filename: string;
|
|
105
106
|
contentType: string;
|
|
@@ -118,13 +119,13 @@ interface components {
|
|
|
118
119
|
publicUrl: string;
|
|
119
120
|
}[];
|
|
120
121
|
};
|
|
121
|
-
/**
|
|
122
|
-
|
|
122
|
+
/** FetchAreasResponse */
|
|
123
|
+
FetchAreasResponse: components["schemas"]["Area"][];
|
|
123
124
|
/**
|
|
124
|
-
*
|
|
125
|
-
* @description A bookable + public area for a venue. Assets are only included when the request expands them.
|
|
125
|
+
* FetchAreaResponse
|
|
126
|
+
* @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.
|
|
126
127
|
*/
|
|
127
|
-
|
|
128
|
+
FetchAreaResponse: {
|
|
128
129
|
id: string;
|
|
129
130
|
venueId: string;
|
|
130
131
|
accessor: string;
|
|
@@ -139,8 +140,7 @@ interface components {
|
|
|
139
140
|
} | null;
|
|
140
141
|
minCapacity: number | null;
|
|
141
142
|
maxCapacity: number;
|
|
142
|
-
|
|
143
|
-
currency: "EUR" | "CHF";
|
|
143
|
+
currency: components["schemas"]["Currency"];
|
|
144
144
|
basePrice: number | null;
|
|
145
145
|
perPersonPrice: number | null;
|
|
146
146
|
features: {
|
|
@@ -152,12 +152,13 @@ interface components {
|
|
|
152
152
|
[key: string]: string;
|
|
153
153
|
};
|
|
154
154
|
}[] | null;
|
|
155
|
-
|
|
156
|
-
|
|
155
|
+
bookingMode: components["schemas"]["AreaBookingMode"];
|
|
156
|
+
isBookable?: boolean;
|
|
157
|
+
isPublic?: boolean;
|
|
158
|
+
isActive?: boolean;
|
|
157
159
|
assets?: {
|
|
158
160
|
id: string;
|
|
159
|
-
|
|
160
|
-
type: "image" | "video" | "document";
|
|
161
|
+
type: components["schemas"]["AssetType"];
|
|
161
162
|
tags: string[] | null;
|
|
162
163
|
filename: string;
|
|
163
164
|
contentType: string;
|
|
@@ -180,16 +181,30 @@ interface components {
|
|
|
180
181
|
GetAreaAvailabilityResponse: {
|
|
181
182
|
from: string;
|
|
182
183
|
to: string;
|
|
183
|
-
|
|
184
|
-
bookingMode: "slot" | "day";
|
|
184
|
+
bookingMode: components["schemas"]["AreaBookingMode"];
|
|
185
185
|
occupied: {
|
|
186
186
|
date: string;
|
|
187
187
|
startTime: string | null;
|
|
188
188
|
endTime: string | null;
|
|
189
189
|
}[];
|
|
190
190
|
};
|
|
191
|
-
/**
|
|
192
|
-
|
|
191
|
+
/** FetchAreaBookingsResponse */
|
|
192
|
+
FetchAreaBookingsResponse: {
|
|
193
|
+
id: string;
|
|
194
|
+
areaId: string;
|
|
195
|
+
bookingDate: string;
|
|
196
|
+
startTime: string | null;
|
|
197
|
+
endTime: string | null;
|
|
198
|
+
partySize: number;
|
|
199
|
+
status: components["schemas"]["AreaBookingStatus"];
|
|
200
|
+
customerFirstName?: string;
|
|
201
|
+
customerLastName?: string;
|
|
202
|
+
totalPrice?: number;
|
|
203
|
+
currency?: components["schemas"]["Currency"];
|
|
204
|
+
confirmationCode?: string | null;
|
|
205
|
+
}[];
|
|
206
|
+
/** SubmitAreaBookingPayload */
|
|
207
|
+
SubmitAreaBookingPayload: {
|
|
193
208
|
requestedDate: string;
|
|
194
209
|
requestedStartTime?: string;
|
|
195
210
|
requestedEndTime?: string;
|
|
@@ -200,11 +215,10 @@ interface components {
|
|
|
200
215
|
customerEmail: string;
|
|
201
216
|
customerPhone?: string;
|
|
202
217
|
message?: string;
|
|
203
|
-
|
|
204
|
-
source?: "website" | "phone" | "walk_in";
|
|
218
|
+
source?: components["schemas"]["AreaBookingRequestSource"];
|
|
205
219
|
};
|
|
206
|
-
/**
|
|
207
|
-
|
|
220
|
+
/** SubmitAreaBookingRequestResponse */
|
|
221
|
+
SubmitAreaBookingRequestResponse: {
|
|
208
222
|
id: string;
|
|
209
223
|
venueId: string;
|
|
210
224
|
areaId: string;
|
|
@@ -217,10 +231,8 @@ interface components {
|
|
|
217
231
|
customerEmail: string;
|
|
218
232
|
customerPhone: string | null;
|
|
219
233
|
message: string | null;
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
/** @enum {string} */
|
|
223
|
-
status: "pending" | "approved" | "rejected" | "cancelled";
|
|
234
|
+
source: components["schemas"]["AreaBookingRequestSource"];
|
|
235
|
+
status: components["schemas"]["AreaBookingRequestStatus"];
|
|
224
236
|
areaBookingId: string | null;
|
|
225
237
|
createdAt: string | null;
|
|
226
238
|
updatedAt: string | null;
|
|
@@ -246,11 +258,22 @@ interface components {
|
|
|
246
258
|
[key: string]: unknown;
|
|
247
259
|
};
|
|
248
260
|
};
|
|
249
|
-
/**
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
261
|
+
/** OgImage */
|
|
262
|
+
OgImage: {
|
|
263
|
+
id: string;
|
|
264
|
+
publicUrl: string | null;
|
|
265
|
+
locale: string;
|
|
266
|
+
};
|
|
267
|
+
/** ArticleMentionCounts */
|
|
268
|
+
ArticleMentionCounts: {
|
|
269
|
+
dishes: number;
|
|
270
|
+
beverages: number;
|
|
271
|
+
ingredients: number;
|
|
272
|
+
menus: number;
|
|
273
|
+
rituals: number;
|
|
274
|
+
};
|
|
275
|
+
/** FetchArticlesResponse */
|
|
276
|
+
FetchArticlesResponse: {
|
|
254
277
|
id: string;
|
|
255
278
|
venueId: string;
|
|
256
279
|
accessor: string;
|
|
@@ -272,22 +295,29 @@ interface components {
|
|
|
272
295
|
content: {
|
|
273
296
|
[key: string]: unknown;
|
|
274
297
|
} | null;
|
|
298
|
+
metaTitle: {
|
|
299
|
+
[key: string]: string;
|
|
300
|
+
} | null;
|
|
301
|
+
metaDescription: {
|
|
302
|
+
[key: string]: string;
|
|
303
|
+
} | null;
|
|
275
304
|
tags: string[];
|
|
276
305
|
isActive: boolean;
|
|
277
306
|
isFeatured: boolean;
|
|
278
307
|
priority: number;
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
308
|
+
status: components["schemas"]["ArticleStatus"];
|
|
309
|
+
publishedAt: string | null;
|
|
310
|
+
createdAt: string | null;
|
|
311
|
+
updatedAt: string | null;
|
|
282
312
|
featureImage: components["schemas"]["FeatureImage"] | null;
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
313
|
+
ogImage?: components["schemas"]["OgImage"] | null;
|
|
314
|
+
mentionCounts?: components["schemas"]["ArticleMentionCounts"];
|
|
315
|
+
}[];
|
|
286
316
|
/**
|
|
287
|
-
*
|
|
288
|
-
* @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.
|
|
317
|
+
* FetchArticleResponse
|
|
318
|
+
* @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`.
|
|
289
319
|
*/
|
|
290
|
-
|
|
320
|
+
FetchArticleResponse: {
|
|
291
321
|
id: string;
|
|
292
322
|
venueId: string;
|
|
293
323
|
accessor: string;
|
|
@@ -309,45 +339,53 @@ interface components {
|
|
|
309
339
|
content: {
|
|
310
340
|
[key: string]: unknown;
|
|
311
341
|
} | null;
|
|
342
|
+
metaTitle: {
|
|
343
|
+
[key: string]: string;
|
|
344
|
+
} | null;
|
|
345
|
+
metaDescription: {
|
|
346
|
+
[key: string]: string;
|
|
347
|
+
} | null;
|
|
312
348
|
tags: string[];
|
|
313
349
|
isActive: boolean;
|
|
314
350
|
isFeatured: boolean;
|
|
315
351
|
priority: number;
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
352
|
+
status: components["schemas"]["ArticleStatus"];
|
|
353
|
+
publishedAt: string | null;
|
|
354
|
+
createdAt: string | null;
|
|
355
|
+
updatedAt: string | null;
|
|
319
356
|
featureImage: components["schemas"]["FeatureImage"] | null;
|
|
357
|
+
ogImage?: components["schemas"]["OgImage"] | null;
|
|
320
358
|
};
|
|
321
|
-
/**
|
|
322
|
-
|
|
359
|
+
/** EditArticleRequest */
|
|
360
|
+
EditArticleRequest: {
|
|
323
361
|
slug?: {
|
|
324
|
-
[key: string]:
|
|
325
|
-
[key: string]: unknown;
|
|
326
|
-
};
|
|
362
|
+
[key: string]: unknown;
|
|
327
363
|
};
|
|
328
364
|
title?: {
|
|
329
|
-
[key: string]:
|
|
330
|
-
[key: string]: unknown;
|
|
331
|
-
};
|
|
365
|
+
[key: string]: unknown;
|
|
332
366
|
};
|
|
333
367
|
excerpt?: {
|
|
334
|
-
[key: string]:
|
|
335
|
-
[key: string]: unknown;
|
|
336
|
-
};
|
|
368
|
+
[key: string]: unknown;
|
|
337
369
|
};
|
|
338
370
|
content?: {
|
|
339
371
|
[key: string]: unknown;
|
|
340
372
|
};
|
|
373
|
+
metaTitle?: {
|
|
374
|
+
[key: string]: string;
|
|
375
|
+
};
|
|
376
|
+
metaDescription?: {
|
|
377
|
+
[key: string]: string;
|
|
378
|
+
};
|
|
341
379
|
tags?: string[];
|
|
342
380
|
isActive?: boolean;
|
|
343
381
|
isFeatured?: boolean;
|
|
344
382
|
priority?: number;
|
|
345
383
|
};
|
|
346
384
|
/**
|
|
347
|
-
*
|
|
348
|
-
* @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.
|
|
385
|
+
* EditArticleResponse
|
|
386
|
+
* @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`.
|
|
349
387
|
*/
|
|
350
|
-
|
|
388
|
+
EditArticleResponse: {
|
|
351
389
|
id: string;
|
|
352
390
|
venueId: string;
|
|
353
391
|
accessor: string;
|
|
@@ -369,25 +407,33 @@ interface components {
|
|
|
369
407
|
content: {
|
|
370
408
|
[key: string]: unknown;
|
|
371
409
|
} | null;
|
|
410
|
+
metaTitle: {
|
|
411
|
+
[key: string]: string;
|
|
412
|
+
} | null;
|
|
413
|
+
metaDescription: {
|
|
414
|
+
[key: string]: string;
|
|
415
|
+
} | null;
|
|
372
416
|
tags: string[];
|
|
373
417
|
isActive: boolean;
|
|
374
418
|
isFeatured: boolean;
|
|
375
419
|
priority: number;
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
420
|
+
status: components["schemas"]["ArticleStatus"];
|
|
421
|
+
publishedAt: string | null;
|
|
422
|
+
createdAt: string | null;
|
|
423
|
+
updatedAt: string | null;
|
|
379
424
|
featureImage: components["schemas"]["FeatureImage"] | null;
|
|
425
|
+
ogImage?: components["schemas"]["OgImage"] | null;
|
|
380
426
|
};
|
|
381
|
-
/**
|
|
382
|
-
|
|
427
|
+
/** SetArticleFeatureImageUploadBody */
|
|
428
|
+
SetArticleFeatureImageUploadBody: {
|
|
383
429
|
/** @description Image file (multipart/form-data field) */
|
|
384
|
-
file:
|
|
430
|
+
file: string;
|
|
385
431
|
};
|
|
386
432
|
/**
|
|
387
|
-
*
|
|
433
|
+
* PatchArticleFeatureImageBody
|
|
388
434
|
* @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`.
|
|
389
435
|
*/
|
|
390
|
-
|
|
436
|
+
PatchArticleFeatureImageBody: {
|
|
391
437
|
caption?: {
|
|
392
438
|
[key: string]: unknown;
|
|
393
439
|
};
|
|
@@ -395,6 +441,59 @@ interface components {
|
|
|
395
441
|
[key: string]: unknown;
|
|
396
442
|
};
|
|
397
443
|
};
|
|
444
|
+
/** BasketTotals */
|
|
445
|
+
BasketTotals: {
|
|
446
|
+
currency: components["schemas"]["Currency"];
|
|
447
|
+
itemsTotal: number;
|
|
448
|
+
taxAmount: number;
|
|
449
|
+
depositCharge: number;
|
|
450
|
+
grossTotal: number;
|
|
451
|
+
depositCredit: number;
|
|
452
|
+
effectiveTotal: number;
|
|
453
|
+
cashRefund: number;
|
|
454
|
+
returnable: {
|
|
455
|
+
depositwareTemplateId: string;
|
|
456
|
+
count: number;
|
|
457
|
+
}[];
|
|
458
|
+
};
|
|
459
|
+
/** FetchBasketResponse */
|
|
460
|
+
FetchBasketResponse: {
|
|
461
|
+
/** Format: uuid */
|
|
462
|
+
id: string;
|
|
463
|
+
sessionId: string;
|
|
464
|
+
status: components["schemas"]["BasketStatus"];
|
|
465
|
+
currency: components["schemas"]["Currency"];
|
|
466
|
+
items: {
|
|
467
|
+
/** Format: uuid */
|
|
468
|
+
id: string;
|
|
469
|
+
metadata: {
|
|
470
|
+
[key: string]: unknown;
|
|
471
|
+
} | null;
|
|
472
|
+
deposit: {
|
|
473
|
+
depositwareTemplateId: string;
|
|
474
|
+
name: {
|
|
475
|
+
[key: string]: string;
|
|
476
|
+
};
|
|
477
|
+
amount: number;
|
|
478
|
+
currency: components["schemas"]["Currency"];
|
|
479
|
+
} | null;
|
|
480
|
+
menuItems: {
|
|
481
|
+
menuItemId: string;
|
|
482
|
+
role: string | null;
|
|
483
|
+
quantity: number;
|
|
484
|
+
unit: components["schemas"]["Unit"];
|
|
485
|
+
}[];
|
|
486
|
+
}[];
|
|
487
|
+
itemCount: number;
|
|
488
|
+
totals: components["schemas"]["BasketTotals"];
|
|
489
|
+
declaredReturns: {
|
|
490
|
+
depositwareTemplateId: string;
|
|
491
|
+
count: number;
|
|
492
|
+
}[];
|
|
493
|
+
expiresAt: string;
|
|
494
|
+
createdAt: string | null;
|
|
495
|
+
updatedAt: string | null;
|
|
496
|
+
};
|
|
398
497
|
/**
|
|
399
498
|
* AddToBasketRequest
|
|
400
499
|
* @description Add an item to the shopping basket
|
|
@@ -407,8 +506,7 @@ interface components {
|
|
|
407
506
|
menuItemId: string;
|
|
408
507
|
role?: string;
|
|
409
508
|
quantity?: number;
|
|
410
|
-
|
|
411
|
-
unit?: "grams" | "kilograms" | "liters" | "milliliters" | "pieces";
|
|
509
|
+
unit?: components["schemas"]["Unit"];
|
|
412
510
|
}[];
|
|
413
511
|
metadata?: {
|
|
414
512
|
[key: string]: unknown;
|
|
@@ -425,24 +523,9 @@ interface components {
|
|
|
425
523
|
[key: string]: string;
|
|
426
524
|
};
|
|
427
525
|
amount: number;
|
|
428
|
-
|
|
429
|
-
currency: "EUR" | "CHF";
|
|
526
|
+
currency: components["schemas"]["Currency"];
|
|
430
527
|
} | null;
|
|
431
|
-
totals:
|
|
432
|
-
/** @enum {string} */
|
|
433
|
-
currency: "EUR" | "CHF";
|
|
434
|
-
itemsTotal: number;
|
|
435
|
-
taxAmount: number;
|
|
436
|
-
depositCharge: number;
|
|
437
|
-
grossTotal: number;
|
|
438
|
-
depositCredit: number;
|
|
439
|
-
effectiveTotal: number;
|
|
440
|
-
cashRefund: number;
|
|
441
|
-
returnable: {
|
|
442
|
-
depositwareTemplateId: string;
|
|
443
|
-
count: number;
|
|
444
|
-
}[];
|
|
445
|
-
};
|
|
528
|
+
totals: components["schemas"]["BasketTotals"];
|
|
446
529
|
};
|
|
447
530
|
/** RemoveFromBasketResponse */
|
|
448
531
|
RemoveFromBasketResponse: {
|
|
@@ -450,24 +533,12 @@ interface components {
|
|
|
450
533
|
/** Format: uuid */
|
|
451
534
|
basketItemId: string;
|
|
452
535
|
itemCount: number;
|
|
453
|
-
totals:
|
|
454
|
-
/** @enum {string} */
|
|
455
|
-
currency: "EUR" | "CHF";
|
|
456
|
-
itemsTotal: number;
|
|
457
|
-
taxAmount: number;
|
|
458
|
-
depositCharge: number;
|
|
459
|
-
grossTotal: number;
|
|
460
|
-
depositCredit: number;
|
|
461
|
-
effectiveTotal: number;
|
|
462
|
-
cashRefund: number;
|
|
463
|
-
returnable: {
|
|
464
|
-
depositwareTemplateId: string;
|
|
465
|
-
count: number;
|
|
466
|
-
}[];
|
|
467
|
-
} | null;
|
|
536
|
+
totals: components["schemas"]["BasketTotals"] | null;
|
|
468
537
|
};
|
|
469
538
|
/** GetBasketTotalsRequest */
|
|
470
539
|
GetBasketTotalsRequest: {
|
|
540
|
+
venueAccessor: string;
|
|
541
|
+
basketId: string;
|
|
471
542
|
declaredReturns?: {
|
|
472
543
|
depositwareTemplateId: string;
|
|
473
544
|
count: number;
|
|
@@ -475,8 +546,7 @@ interface components {
|
|
|
475
546
|
};
|
|
476
547
|
/** GetBasketTotalsResponse */
|
|
477
548
|
GetBasketTotalsResponse: {
|
|
478
|
-
|
|
479
|
-
currency: "EUR" | "CHF";
|
|
549
|
+
currency: components["schemas"]["Currency"];
|
|
480
550
|
itemsTotal: number;
|
|
481
551
|
taxAmount: number;
|
|
482
552
|
depositCharge: number;
|
|
@@ -489,8 +559,17 @@ interface components {
|
|
|
489
559
|
count: number;
|
|
490
560
|
}[];
|
|
491
561
|
};
|
|
562
|
+
/** AbandonBasketRequest */
|
|
563
|
+
AbandonBasketRequest: {
|
|
564
|
+
sessionId: string;
|
|
565
|
+
};
|
|
566
|
+
/** AbandonBasketResponse */
|
|
567
|
+
AbandonBasketResponse: {
|
|
568
|
+
abandonedCount: number;
|
|
569
|
+
};
|
|
492
570
|
/** SetBasketDeclaredReturnsRequest */
|
|
493
571
|
SetBasketDeclaredReturnsRequest: {
|
|
572
|
+
venueAccessor: string;
|
|
494
573
|
basketId: string;
|
|
495
574
|
sessionId: string;
|
|
496
575
|
declaredReturns: {
|
|
@@ -506,6 +585,270 @@ interface components {
|
|
|
506
585
|
count: number;
|
|
507
586
|
}[];
|
|
508
587
|
};
|
|
588
|
+
/** FetchEventsResponse */
|
|
589
|
+
FetchEventsResponse: {
|
|
590
|
+
id: string;
|
|
591
|
+
venueId: string;
|
|
592
|
+
accessor: string | null;
|
|
593
|
+
name: {
|
|
594
|
+
[key: string]: string;
|
|
595
|
+
};
|
|
596
|
+
description: {
|
|
597
|
+
[key: string]: string;
|
|
598
|
+
} | null;
|
|
599
|
+
scheduleId: string | null;
|
|
600
|
+
ritualId: string | null;
|
|
601
|
+
maxBookings: number | null;
|
|
602
|
+
maxGuests: number | null;
|
|
603
|
+
minPartySize: number | null;
|
|
604
|
+
maxPartySize: number | null;
|
|
605
|
+
isPublic: boolean;
|
|
606
|
+
isRecurring: boolean;
|
|
607
|
+
reservationsEnabled: boolean;
|
|
608
|
+
bookingOpensAtDays: number | null;
|
|
609
|
+
bookingClosesAtOffset: number | null;
|
|
610
|
+
isActive: boolean;
|
|
611
|
+
isFeatured: boolean;
|
|
612
|
+
priority: number;
|
|
613
|
+
createdBy: string | null;
|
|
614
|
+
updatedBy: string | null;
|
|
615
|
+
createdAt: unknown;
|
|
616
|
+
updatedAt: unknown;
|
|
617
|
+
schedule: {
|
|
618
|
+
id: string;
|
|
619
|
+
duration: number | null;
|
|
620
|
+
name: {
|
|
621
|
+
[key: string]: string;
|
|
622
|
+
};
|
|
623
|
+
timezone: string;
|
|
624
|
+
description: {
|
|
625
|
+
[key: string]: string;
|
|
626
|
+
} | null;
|
|
627
|
+
rrule: string | null;
|
|
628
|
+
exdates: string[] | null;
|
|
629
|
+
validFrom: string | null;
|
|
630
|
+
validTo: string | null;
|
|
631
|
+
priority: number | null;
|
|
632
|
+
slotMode: components["schemas"]["SlotMode"];
|
|
633
|
+
intervalDuration: number | null;
|
|
634
|
+
isActive: boolean;
|
|
635
|
+
sortIndex: string | null;
|
|
636
|
+
updatedAt: unknown;
|
|
637
|
+
updatedBy: string | null;
|
|
638
|
+
createdAt: unknown;
|
|
639
|
+
createdBy: string | null;
|
|
640
|
+
scheduleOverrides: {
|
|
641
|
+
id: string;
|
|
642
|
+
date: string;
|
|
643
|
+
priority: number | null;
|
|
644
|
+
isActive: boolean;
|
|
645
|
+
updatedAt: unknown;
|
|
646
|
+
updatedBy: string | null;
|
|
647
|
+
createdAt: unknown;
|
|
648
|
+
createdBy: string | null;
|
|
649
|
+
scheduleId: string;
|
|
650
|
+
reason: {
|
|
651
|
+
[key: string]: string;
|
|
652
|
+
} | null;
|
|
653
|
+
scheduleOverrideTimeSlots: {
|
|
654
|
+
sortIndex: string | null;
|
|
655
|
+
overrideId: string;
|
|
656
|
+
timeSlotId: string;
|
|
657
|
+
timeSlot: {
|
|
658
|
+
id: string;
|
|
659
|
+
isActive: boolean | null;
|
|
660
|
+
sortIndex: string | null;
|
|
661
|
+
updatedAt: unknown;
|
|
662
|
+
updatedBy: string | null;
|
|
663
|
+
createdAt: unknown;
|
|
664
|
+
createdBy: string | null;
|
|
665
|
+
startTime: string;
|
|
666
|
+
endTime: string | null;
|
|
667
|
+
isSchedulable: boolean | null;
|
|
668
|
+
};
|
|
669
|
+
}[];
|
|
670
|
+
}[];
|
|
671
|
+
scheduleTimeSlots: {
|
|
672
|
+
sortIndex: string | null;
|
|
673
|
+
scheduleId: string | null;
|
|
674
|
+
timeSlotId: string | null;
|
|
675
|
+
dayOfWeek: components["schemas"]["DayOfWeek"];
|
|
676
|
+
timeSlot: {
|
|
677
|
+
id: string;
|
|
678
|
+
isActive: boolean | null;
|
|
679
|
+
sortIndex: string | null;
|
|
680
|
+
updatedAt: unknown;
|
|
681
|
+
updatedBy: string | null;
|
|
682
|
+
createdAt: unknown;
|
|
683
|
+
createdBy: string | null;
|
|
684
|
+
startTime: string;
|
|
685
|
+
endTime: string | null;
|
|
686
|
+
isSchedulable: boolean | null;
|
|
687
|
+
} | null;
|
|
688
|
+
}[];
|
|
689
|
+
} | null;
|
|
690
|
+
nextOccurrence: string | null;
|
|
691
|
+
posters: {
|
|
692
|
+
id: string;
|
|
693
|
+
type: components["schemas"]["AssetType"];
|
|
694
|
+
metadata: {
|
|
695
|
+
width?: number;
|
|
696
|
+
height?: number;
|
|
697
|
+
duration?: number;
|
|
698
|
+
} | null;
|
|
699
|
+
isActive: boolean;
|
|
700
|
+
sortIndex: string | null;
|
|
701
|
+
updatedAt: unknown;
|
|
702
|
+
updatedBy: string | null;
|
|
703
|
+
createdAt: unknown;
|
|
704
|
+
createdBy: string | null;
|
|
705
|
+
venueId: string | null;
|
|
706
|
+
tags: string[] | null;
|
|
707
|
+
bucket: string;
|
|
708
|
+
storagePath: string;
|
|
709
|
+
filename: string;
|
|
710
|
+
contentType: string;
|
|
711
|
+
sizeBytes: number;
|
|
712
|
+
caption: {
|
|
713
|
+
[key: string]: unknown;
|
|
714
|
+
};
|
|
715
|
+
alt: {
|
|
716
|
+
[key: string]: unknown;
|
|
717
|
+
};
|
|
718
|
+
cropArea: {
|
|
719
|
+
x: number;
|
|
720
|
+
y: number;
|
|
721
|
+
width: number;
|
|
722
|
+
height: number;
|
|
723
|
+
} | null;
|
|
724
|
+
publicUrl: string;
|
|
725
|
+
}[];
|
|
726
|
+
timeSlots: {
|
|
727
|
+
id?: string;
|
|
728
|
+
startTime?: string;
|
|
729
|
+
endTime?: string | null;
|
|
730
|
+
dayOfWeek: components["schemas"]["DayOfWeek"];
|
|
731
|
+
isSchedulable?: boolean | null;
|
|
732
|
+
}[];
|
|
733
|
+
scheduleOverrides: {
|
|
734
|
+
id: string;
|
|
735
|
+
date: string;
|
|
736
|
+
reason: {
|
|
737
|
+
[key: string]: string;
|
|
738
|
+
} | null;
|
|
739
|
+
timeSlots: {
|
|
740
|
+
id: string;
|
|
741
|
+
startTime: string;
|
|
742
|
+
endTime: string | null;
|
|
743
|
+
isSchedulable: boolean | null;
|
|
744
|
+
}[];
|
|
745
|
+
}[];
|
|
746
|
+
promotions: {
|
|
747
|
+
id: string;
|
|
748
|
+
name: {
|
|
749
|
+
[key: string]: string;
|
|
750
|
+
};
|
|
751
|
+
description: {
|
|
752
|
+
[key: string]: string;
|
|
753
|
+
} | null;
|
|
754
|
+
validFrom: string | null;
|
|
755
|
+
validTo: string | null;
|
|
756
|
+
isActive: boolean;
|
|
757
|
+
updatedAt: unknown;
|
|
758
|
+
updatedBy: string | null;
|
|
759
|
+
createdAt: unknown;
|
|
760
|
+
createdBy: string | null;
|
|
761
|
+
venueId: string;
|
|
762
|
+
benefitType: components["schemas"]["PromotionBenefitType"];
|
|
763
|
+
benefitValue: {
|
|
764
|
+
[key: string]: unknown;
|
|
765
|
+
};
|
|
766
|
+
conditions: {
|
|
767
|
+
[key: string]: unknown;
|
|
768
|
+
} | null;
|
|
769
|
+
maxRedemptions: number | null;
|
|
770
|
+
currentRedemptions: number | null;
|
|
771
|
+
timeSlotIds: string[] | null;
|
|
772
|
+
}[];
|
|
773
|
+
}[];
|
|
774
|
+
/**
|
|
775
|
+
* FetchEventResponse
|
|
776
|
+
* @description Event details. Nested objects (schedule, timeSlots, menus, posters, nextOccurrence) pass through; their shape follows the SDK Event interface.
|
|
777
|
+
*/
|
|
778
|
+
FetchEventResponse: {
|
|
779
|
+
id: string;
|
|
780
|
+
venueId: string;
|
|
781
|
+
accessor: string | null;
|
|
782
|
+
name: {
|
|
783
|
+
[key: string]: string;
|
|
784
|
+
};
|
|
785
|
+
description: {
|
|
786
|
+
[key: string]: string;
|
|
787
|
+
} | null;
|
|
788
|
+
scheduleId: string | null;
|
|
789
|
+
maxBookings: number | null;
|
|
790
|
+
maxGuests: number | null;
|
|
791
|
+
minPartySize: number | null;
|
|
792
|
+
maxPartySize: number | null;
|
|
793
|
+
isPublic: boolean;
|
|
794
|
+
isRecurring: boolean;
|
|
795
|
+
reservationsEnabled: boolean;
|
|
796
|
+
bookingOpensAtDays: number | null;
|
|
797
|
+
bookingClosesAtOffset: number | null;
|
|
798
|
+
isActive: boolean;
|
|
799
|
+
isFeatured: boolean;
|
|
800
|
+
priority: number;
|
|
801
|
+
createdAt: unknown;
|
|
802
|
+
updatedAt: unknown;
|
|
803
|
+
nextOccurrence?: string | null;
|
|
804
|
+
schedule?: {
|
|
805
|
+
id: string;
|
|
806
|
+
name: {
|
|
807
|
+
[key: string]: string;
|
|
808
|
+
};
|
|
809
|
+
description: {
|
|
810
|
+
[key: string]: string;
|
|
811
|
+
} | null;
|
|
812
|
+
timezone: string;
|
|
813
|
+
rrule: string | null;
|
|
814
|
+
exdates: string[] | null;
|
|
815
|
+
validFrom: string | null;
|
|
816
|
+
validTo: string | null;
|
|
817
|
+
priority: number | null;
|
|
818
|
+
isActive: boolean;
|
|
819
|
+
slotMode: components["schemas"]["SlotMode"];
|
|
820
|
+
intervalDuration: number | null;
|
|
821
|
+
duration: number | null;
|
|
822
|
+
scheduleTimeSlots?: {
|
|
823
|
+
dayOfWeek: components["schemas"]["DayOfWeek"];
|
|
824
|
+
timeSlot: {
|
|
825
|
+
id: string;
|
|
826
|
+
startTime: string;
|
|
827
|
+
endTime: string | null;
|
|
828
|
+
isActive: boolean | null;
|
|
829
|
+
isSchedulable: boolean | null;
|
|
830
|
+
};
|
|
831
|
+
}[];
|
|
832
|
+
};
|
|
833
|
+
menus?: {
|
|
834
|
+
id: string;
|
|
835
|
+
accessor: string;
|
|
836
|
+
name: {
|
|
837
|
+
[key: string]: string;
|
|
838
|
+
};
|
|
839
|
+
category: string;
|
|
840
|
+
}[];
|
|
841
|
+
posters?: {
|
|
842
|
+
id: string;
|
|
843
|
+
bucket: string;
|
|
844
|
+
storagePath: string;
|
|
845
|
+
filename: string;
|
|
846
|
+
contentType: string;
|
|
847
|
+
sizeBytes: number;
|
|
848
|
+
sortIndex: string | null;
|
|
849
|
+
publicUrl: string;
|
|
850
|
+
}[];
|
|
851
|
+
};
|
|
509
852
|
/**
|
|
510
853
|
* CreateEventRequest
|
|
511
854
|
* @description Request payload for creating a new event
|
|
@@ -527,7 +870,7 @@ interface components {
|
|
|
527
870
|
isRecurring?: boolean;
|
|
528
871
|
reservationsEnabled?: boolean;
|
|
529
872
|
bookingOpensAtDays?: number | null;
|
|
530
|
-
|
|
873
|
+
bookingClosesAtOffset?: number | null;
|
|
531
874
|
isActive?: boolean;
|
|
532
875
|
isFeatured?: boolean;
|
|
533
876
|
priority?: number;
|
|
@@ -541,10 +884,9 @@ interface components {
|
|
|
541
884
|
endTime: string;
|
|
542
885
|
lastSeatingTime?: string | null;
|
|
543
886
|
}[];
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
durationMinutes?: number | null;
|
|
887
|
+
slotMode?: components["schemas"]["SlotMode"];
|
|
888
|
+
intervalDuration?: number | null;
|
|
889
|
+
duration?: number | null;
|
|
548
890
|
} | null;
|
|
549
891
|
ritualAccessor?: string | null;
|
|
550
892
|
venueAccessor: string;
|
|
@@ -573,7 +915,7 @@ interface components {
|
|
|
573
915
|
isRecurring: boolean;
|
|
574
916
|
reservationsEnabled: boolean;
|
|
575
917
|
bookingOpensAtDays: number | null;
|
|
576
|
-
|
|
918
|
+
bookingClosesAtOffset: number | null;
|
|
577
919
|
isActive: boolean;
|
|
578
920
|
isFeatured: boolean;
|
|
579
921
|
priority: number;
|
|
@@ -583,102 +925,354 @@ interface components {
|
|
|
583
925
|
updatedAt: unknown;
|
|
584
926
|
};
|
|
585
927
|
/**
|
|
586
|
-
*
|
|
587
|
-
* @description Menu details.
|
|
928
|
+
* FetchMenuResponse
|
|
929
|
+
* @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.
|
|
588
930
|
*/
|
|
589
|
-
|
|
931
|
+
FetchMenuResponse: {
|
|
590
932
|
id: string;
|
|
591
|
-
venueId: string;
|
|
592
|
-
accessor: string;
|
|
593
933
|
name: {
|
|
594
934
|
[key: string]: string;
|
|
595
935
|
};
|
|
596
|
-
|
|
597
|
-
|
|
936
|
+
accessor: string;
|
|
937
|
+
metadata: {
|
|
938
|
+
orderingEnabled?: boolean;
|
|
939
|
+
compactTags?: string[];
|
|
940
|
+
showDepositware?: boolean;
|
|
941
|
+
tagSortOrder?: string[];
|
|
942
|
+
subscriptionsEnabled?: boolean;
|
|
943
|
+
isDeliveryEnabled?: boolean;
|
|
944
|
+
assetsEnabled?: boolean;
|
|
945
|
+
} | null;
|
|
946
|
+
description: {
|
|
947
|
+
[key: string]: string;
|
|
948
|
+
} | null;
|
|
949
|
+
sortIndex: string | null;
|
|
950
|
+
updatedAt: unknown;
|
|
951
|
+
updatedBy: string | null;
|
|
952
|
+
createdAt: unknown;
|
|
953
|
+
createdBy: string | null;
|
|
954
|
+
venueId: string;
|
|
955
|
+
deliveryThresholdAmount: number | null;
|
|
956
|
+
deliveryThresholdQuantity: number | null;
|
|
957
|
+
assets: {
|
|
958
|
+
id: string;
|
|
959
|
+
type: components["schemas"]["AssetType"];
|
|
960
|
+
metadata: {
|
|
961
|
+
width?: number;
|
|
962
|
+
height?: number;
|
|
963
|
+
duration?: number;
|
|
964
|
+
} | null;
|
|
965
|
+
isActive: boolean;
|
|
966
|
+
sortIndex: string | null;
|
|
967
|
+
updatedAt: unknown;
|
|
968
|
+
updatedBy: string | null;
|
|
969
|
+
createdAt: unknown;
|
|
970
|
+
createdBy: string | null;
|
|
971
|
+
venueId: string | null;
|
|
972
|
+
tags: string[] | null;
|
|
973
|
+
bucket: string;
|
|
974
|
+
storagePath: string;
|
|
975
|
+
filename: string;
|
|
976
|
+
contentType: string;
|
|
977
|
+
sizeBytes: number;
|
|
978
|
+
caption: {
|
|
979
|
+
[key: string]: unknown;
|
|
980
|
+
};
|
|
981
|
+
alt: {
|
|
982
|
+
[key: string]: unknown;
|
|
983
|
+
};
|
|
984
|
+
cropArea: {
|
|
985
|
+
x: number;
|
|
986
|
+
y: number;
|
|
987
|
+
width: number;
|
|
988
|
+
height: number;
|
|
989
|
+
} | null;
|
|
990
|
+
publicUrl: string;
|
|
991
|
+
}[];
|
|
992
|
+
items?: {
|
|
993
|
+
id: string;
|
|
994
|
+
type: components["schemas"]["MenuItemType"];
|
|
995
|
+
tags: string[] | null;
|
|
996
|
+
priceAdjustment: number;
|
|
997
|
+
currency: components["schemas"]["Currency"];
|
|
998
|
+
isActive: boolean;
|
|
999
|
+
isFeatured: boolean;
|
|
1000
|
+
sortIndex: string | null;
|
|
1001
|
+
dish: {
|
|
1002
|
+
id: string;
|
|
1003
|
+
accessor: string;
|
|
1004
|
+
name: {
|
|
1005
|
+
[key: string]: string;
|
|
1006
|
+
};
|
|
1007
|
+
shortName?: {
|
|
1008
|
+
[key: string]: string;
|
|
1009
|
+
};
|
|
1010
|
+
description: {
|
|
1011
|
+
[key: string]: string;
|
|
1012
|
+
} | null;
|
|
1013
|
+
longDescription?: {
|
|
1014
|
+
[key: string]: string;
|
|
1015
|
+
} | null;
|
|
1016
|
+
isVegetarian: boolean | null;
|
|
1017
|
+
isVegan: boolean | null;
|
|
1018
|
+
isGlutenFree: boolean | null;
|
|
1019
|
+
isDairyFree: boolean | null;
|
|
1020
|
+
spiciness: number | null;
|
|
1021
|
+
assets?: {
|
|
1022
|
+
id: string;
|
|
1023
|
+
type: components["schemas"]["AssetType"];
|
|
1024
|
+
metadata: {
|
|
1025
|
+
width?: number;
|
|
1026
|
+
height?: number;
|
|
1027
|
+
duration?: number;
|
|
1028
|
+
} | null;
|
|
1029
|
+
isActive: boolean;
|
|
1030
|
+
sortIndex: string | null;
|
|
1031
|
+
updatedAt: unknown;
|
|
1032
|
+
updatedBy: string | null;
|
|
1033
|
+
createdAt: unknown;
|
|
1034
|
+
createdBy: string | null;
|
|
1035
|
+
venueId: string | null;
|
|
1036
|
+
tags: string[] | null;
|
|
1037
|
+
bucket: string;
|
|
1038
|
+
storagePath: string;
|
|
1039
|
+
filename: string;
|
|
1040
|
+
contentType: string;
|
|
1041
|
+
sizeBytes: number;
|
|
1042
|
+
caption: {
|
|
1043
|
+
[key: string]: unknown;
|
|
1044
|
+
};
|
|
1045
|
+
alt: {
|
|
1046
|
+
[key: string]: unknown;
|
|
1047
|
+
};
|
|
1048
|
+
cropArea: {
|
|
1049
|
+
x: number;
|
|
1050
|
+
y: number;
|
|
1051
|
+
width: number;
|
|
1052
|
+
height: number;
|
|
1053
|
+
} | null;
|
|
1054
|
+
publicUrl: string;
|
|
1055
|
+
}[];
|
|
1056
|
+
} | null;
|
|
1057
|
+
beverage: {
|
|
1058
|
+
id: string;
|
|
1059
|
+
accessor: string;
|
|
1060
|
+
name: {
|
|
1061
|
+
[key: string]: string;
|
|
1062
|
+
};
|
|
1063
|
+
shortName?: {
|
|
1064
|
+
[key: string]: string;
|
|
1065
|
+
};
|
|
1066
|
+
description: {
|
|
1067
|
+
[key: string]: string;
|
|
1068
|
+
} | null;
|
|
1069
|
+
longDescription?: {
|
|
1070
|
+
[key: string]: string;
|
|
1071
|
+
} | null;
|
|
1072
|
+
assets?: {
|
|
1073
|
+
id: string;
|
|
1074
|
+
type: components["schemas"]["AssetType"];
|
|
1075
|
+
metadata: {
|
|
1076
|
+
width?: number;
|
|
1077
|
+
height?: number;
|
|
1078
|
+
duration?: number;
|
|
1079
|
+
} | null;
|
|
1080
|
+
isActive: boolean;
|
|
1081
|
+
sortIndex: string | null;
|
|
1082
|
+
updatedAt: unknown;
|
|
1083
|
+
updatedBy: string | null;
|
|
1084
|
+
createdAt: unknown;
|
|
1085
|
+
createdBy: string | null;
|
|
1086
|
+
venueId: string | null;
|
|
1087
|
+
tags: string[] | null;
|
|
1088
|
+
bucket: string;
|
|
1089
|
+
storagePath: string;
|
|
1090
|
+
filename: string;
|
|
1091
|
+
contentType: string;
|
|
1092
|
+
sizeBytes: number;
|
|
1093
|
+
caption: {
|
|
1094
|
+
[key: string]: unknown;
|
|
1095
|
+
};
|
|
1096
|
+
alt: {
|
|
1097
|
+
[key: string]: unknown;
|
|
1098
|
+
};
|
|
1099
|
+
cropArea: {
|
|
1100
|
+
x: number;
|
|
1101
|
+
y: number;
|
|
1102
|
+
width: number;
|
|
1103
|
+
height: number;
|
|
1104
|
+
} | null;
|
|
1105
|
+
publicUrl: string;
|
|
1106
|
+
}[];
|
|
1107
|
+
} | null;
|
|
1108
|
+
}[];
|
|
598
1109
|
};
|
|
599
|
-
/**
|
|
600
|
-
|
|
1110
|
+
/** FetchMenuBundlesResponse */
|
|
1111
|
+
FetchMenuBundlesResponse: {
|
|
601
1112
|
id: string;
|
|
602
1113
|
menuId: string;
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
1114
|
+
name: {
|
|
1115
|
+
[key: string]: string;
|
|
1116
|
+
};
|
|
1117
|
+
shortName: {
|
|
1118
|
+
[key: string]: string;
|
|
1119
|
+
} | null;
|
|
1120
|
+
description: {
|
|
1121
|
+
[key: string]: string;
|
|
1122
|
+
} | null;
|
|
1123
|
+
tags: string[];
|
|
1124
|
+
price: {
|
|
1125
|
+
amount: number;
|
|
1126
|
+
currency: components["schemas"]["Currency"];
|
|
1127
|
+
};
|
|
1128
|
+
currency: components["schemas"]["Currency"];
|
|
1129
|
+
taxRateId: string;
|
|
1130
|
+
isActive: boolean;
|
|
1131
|
+
sortIndex: string | null;
|
|
1132
|
+
depositwareTemplateId: string | null;
|
|
1133
|
+
depositwareTemplate: {
|
|
1134
|
+
name: {
|
|
1135
|
+
[key: string]: string;
|
|
1136
|
+
};
|
|
1137
|
+
} | null;
|
|
1138
|
+
deposit: {
|
|
1139
|
+
depositwareTemplateId: string;
|
|
1140
|
+
accessor: string;
|
|
1141
|
+
amount: number;
|
|
1142
|
+
currency: components["schemas"]["Currency"];
|
|
1143
|
+
} | null;
|
|
1144
|
+
}[];
|
|
1145
|
+
/** FetchMenuSubscriptionsResponse */
|
|
1146
|
+
FetchMenuSubscriptionsResponse: {
|
|
608
1147
|
id: string;
|
|
609
1148
|
menuId: string;
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
1149
|
+
accessor: string;
|
|
1150
|
+
name: {
|
|
1151
|
+
[key: string]: string;
|
|
1152
|
+
};
|
|
1153
|
+
shortName: {
|
|
1154
|
+
[key: string]: string;
|
|
1155
|
+
} | null;
|
|
1156
|
+
description: {
|
|
1157
|
+
[key: string]: string;
|
|
1158
|
+
} | null;
|
|
1159
|
+
scheduleId: string | null;
|
|
1160
|
+
allowance: number;
|
|
1161
|
+
billingPeriod: components["schemas"]["SubscriptionPeriod"];
|
|
1162
|
+
allowancePeriod: components["schemas"]["SubscriptionPeriod"];
|
|
1163
|
+
expiryInDays: number;
|
|
1164
|
+
price: number;
|
|
1165
|
+
currency: components["schemas"]["Currency"];
|
|
1166
|
+
stripeProductId: string | null;
|
|
1167
|
+
stripePriceId: string | null;
|
|
1168
|
+
isActive: boolean;
|
|
1169
|
+
sortIndex: string | null;
|
|
1170
|
+
subscriberCount: number;
|
|
1171
|
+
redeemableTagSets: string[][];
|
|
1172
|
+
posters: {
|
|
1173
|
+
id: string;
|
|
1174
|
+
menuSubscriptionId: string;
|
|
1175
|
+
storagePath: string;
|
|
1176
|
+
publicUrl: string;
|
|
1177
|
+
filename: string;
|
|
1178
|
+
contentType: string;
|
|
1179
|
+
sizeBytes: number;
|
|
1180
|
+
sortIndex: string | null;
|
|
1181
|
+
createdBy: string | null;
|
|
1182
|
+
createdAt: string | null;
|
|
1183
|
+
}[];
|
|
1184
|
+
}[];
|
|
613
1185
|
/**
|
|
614
1186
|
* PlaceOrderRequest
|
|
615
1187
|
* @description Place a new order for a specific venue
|
|
616
1188
|
*/
|
|
617
1189
|
PlaceOrderRequest: {
|
|
618
|
-
|
|
619
|
-
venueId: string;
|
|
1190
|
+
venueAccessor: string;
|
|
620
1191
|
basketId: string;
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
currency?: "EUR" | "CHF";
|
|
634
|
-
/** @enum {string|null} */
|
|
635
|
-
fulfillmentType?: "pickup" | "delivery" | null;
|
|
636
|
-
fulfillmentAt?: unknown;
|
|
637
|
-
orderedAt?: unknown;
|
|
638
|
-
orderedBy: string;
|
|
639
|
-
updatedAt?: unknown;
|
|
640
|
-
updatedBy?: string | null;
|
|
641
|
-
teamOrderId?: string | null;
|
|
642
|
-
participantDisplayName?: string | null;
|
|
643
|
-
leadSettledAt?: unknown;
|
|
1192
|
+
sessionId: string;
|
|
1193
|
+
paymentMethod: components["schemas"]["PaymentMethod"];
|
|
1194
|
+
fulfillmentType: components["schemas"]["FulfillmentType"];
|
|
1195
|
+
/** Format: date-time */
|
|
1196
|
+
fulfillmentAt?: string | null;
|
|
1197
|
+
customerFirstName?: string;
|
|
1198
|
+
customerLastName?: string;
|
|
1199
|
+
customerEmail?: string;
|
|
1200
|
+
declaredReturns?: {
|
|
1201
|
+
depositwareTemplateId: string;
|
|
1202
|
+
count: number;
|
|
1203
|
+
}[];
|
|
644
1204
|
};
|
|
645
1205
|
/** PlaceOrderResponse */
|
|
646
1206
|
PlaceOrderResponse: {
|
|
647
1207
|
id: string;
|
|
648
|
-
|
|
649
|
-
|
|
1208
|
+
status: string;
|
|
1209
|
+
publicId: string | null;
|
|
1210
|
+
orderId: string;
|
|
1211
|
+
quickReferenceNumber: number | null;
|
|
1212
|
+
currency: components["schemas"]["Currency"];
|
|
1213
|
+
};
|
|
1214
|
+
/** ConfirmOrderRequest */
|
|
1215
|
+
ConfirmOrderRequest: {
|
|
1216
|
+
venueAccessor: string;
|
|
1217
|
+
orderId: string;
|
|
1218
|
+
paymentIntentId: string;
|
|
1219
|
+
};
|
|
1220
|
+
/** ConfirmOrderResponse */
|
|
1221
|
+
ConfirmOrderResponse: {
|
|
1222
|
+
id: string;
|
|
1223
|
+
status: string;
|
|
650
1224
|
publicId: string | null;
|
|
651
1225
|
quickReferenceNumber: number | null;
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
1226
|
+
customerId?: string;
|
|
1227
|
+
};
|
|
1228
|
+
/** FetchLatestOrderResponse */
|
|
1229
|
+
FetchLatestOrderResponse: {
|
|
1230
|
+
/** Format: uuid */
|
|
1231
|
+
id: string;
|
|
1232
|
+
publicId: string | null;
|
|
1233
|
+
quickReferenceNumber: number | null;
|
|
1234
|
+
status: components["schemas"]["OrderStatus"];
|
|
1235
|
+
paymentStatus: components["schemas"]["PaymentStatus"];
|
|
1236
|
+
fulfillmentType: components["schemas"]["FulfillmentType"];
|
|
1237
|
+
fulfillmentAt: string | null;
|
|
1238
|
+
orderedAt: string;
|
|
660
1239
|
totalAmount: number;
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
1240
|
+
currency: components["schemas"]["Currency"];
|
|
1241
|
+
items: {
|
|
1242
|
+
/** Format: uuid */
|
|
1243
|
+
id: string;
|
|
1244
|
+
metadata: {
|
|
1245
|
+
[key: string]: unknown;
|
|
1246
|
+
} | null;
|
|
1247
|
+
deposit: {
|
|
1248
|
+
depositwareTemplateId: string;
|
|
1249
|
+
name: {
|
|
1250
|
+
[key: string]: string;
|
|
1251
|
+
};
|
|
1252
|
+
amount: number;
|
|
1253
|
+
currency: components["schemas"]["Currency"];
|
|
1254
|
+
} | null;
|
|
1255
|
+
menuItems: {
|
|
1256
|
+
menuItemId: string;
|
|
1257
|
+
role: string | null;
|
|
1258
|
+
quantity: number;
|
|
1259
|
+
unit: components["schemas"]["Unit"];
|
|
1260
|
+
}[];
|
|
1261
|
+
}[];
|
|
1262
|
+
itemCount: number;
|
|
1263
|
+
totals: components["schemas"]["BasketTotals"];
|
|
1264
|
+
declaredReturns: {
|
|
1265
|
+
depositwareTemplateId: string;
|
|
1266
|
+
count: number;
|
|
1267
|
+
}[];
|
|
673
1268
|
};
|
|
674
1269
|
/** CreatePaymentIntentRequest */
|
|
675
1270
|
CreatePaymentIntentRequest: {
|
|
1271
|
+
venueAccessor: string;
|
|
676
1272
|
basketId: string;
|
|
677
|
-
|
|
678
|
-
currency: "EUR" | "CHF";
|
|
1273
|
+
currency: components["schemas"]["Currency"];
|
|
679
1274
|
sessionId: string;
|
|
680
|
-
|
|
681
|
-
fulfillmentType: "pickup" | "delivery";
|
|
1275
|
+
fulfillmentType: components["schemas"]["FulfillmentType"];
|
|
682
1276
|
/** Format: date-time */
|
|
683
1277
|
fulfillmentAt?: string | null;
|
|
684
1278
|
customerFirstName?: string;
|
|
@@ -697,10 +1291,10 @@ interface components {
|
|
|
697
1291
|
};
|
|
698
1292
|
/** CreateDeltaPaymentIntentRequest */
|
|
699
1293
|
CreateDeltaPaymentIntentRequest: {
|
|
1294
|
+
venueAccessor: string;
|
|
700
1295
|
basketId: string;
|
|
701
1296
|
sessionId: string;
|
|
702
|
-
|
|
703
|
-
currency: "EUR" | "CHF";
|
|
1297
|
+
currency: components["schemas"]["Currency"];
|
|
704
1298
|
declaredReturns?: {
|
|
705
1299
|
depositwareTemplateId: string;
|
|
706
1300
|
count: number;
|
|
@@ -717,10 +1311,10 @@ interface components {
|
|
|
717
1311
|
};
|
|
718
1312
|
/** ReduceDeltaPaymentIntentRequest */
|
|
719
1313
|
ReduceDeltaPaymentIntentRequest: {
|
|
1314
|
+
venueAccessor: string;
|
|
720
1315
|
basketId: string;
|
|
721
1316
|
sessionId: string;
|
|
722
|
-
|
|
723
|
-
currency: "EUR" | "CHF";
|
|
1317
|
+
currency: components["schemas"]["Currency"];
|
|
724
1318
|
declaredReturns?: {
|
|
725
1319
|
depositwareTemplateId: string;
|
|
726
1320
|
count: number;
|
|
@@ -737,12 +1331,13 @@ interface components {
|
|
|
737
1331
|
* @description Request payload for making a new reservation
|
|
738
1332
|
*/
|
|
739
1333
|
MakeReservationRequest: {
|
|
1334
|
+
/** @description Venue identifier — UUID or URL-friendly slug (accessor). Resolved server-side. */
|
|
1335
|
+
venueAccessor: string;
|
|
740
1336
|
/**
|
|
741
1337
|
* Format: uuid
|
|
742
1338
|
* @description UUID of the event this reservation is for
|
|
743
1339
|
*/
|
|
744
1340
|
eventId: string;
|
|
745
|
-
quickReferenceNumber?: number | null;
|
|
746
1341
|
/** @description Date of the reservation in YYYY-MM-DD format */
|
|
747
1342
|
reservationDate: string;
|
|
748
1343
|
/** @description Time of the reservation in HH:MM:SS format */
|
|
@@ -750,12 +1345,12 @@ interface components {
|
|
|
750
1345
|
/** @description Number of guests in the party. Must be between 1 and 20. */
|
|
751
1346
|
partySize: number;
|
|
752
1347
|
/** @description Reservation duration in minutes. Defaults to 120 minutes if not specified. Range: 30-300 minutes. */
|
|
753
|
-
duration
|
|
1348
|
+
duration?: number | null;
|
|
754
1349
|
/**
|
|
755
1350
|
* Format: uuid
|
|
756
1351
|
* @description UUID of existing customer profile if available
|
|
757
1352
|
*/
|
|
758
|
-
customerId
|
|
1353
|
+
customerId?: string | null;
|
|
759
1354
|
/** @description First name of the customer making the reservation */
|
|
760
1355
|
customerFirstName: string;
|
|
761
1356
|
/** @description Last name of the customer making the reservation */
|
|
@@ -767,21 +1362,12 @@ interface components {
|
|
|
767
1362
|
customerEmail?: string | null;
|
|
768
1363
|
/** @description Phone number for reservation confirmations and updates. Include country code for international numbers. */
|
|
769
1364
|
customerPhone?: string | null;
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
* @enum {string}
|
|
773
|
-
*/
|
|
774
|
-
contactPreference: "email" | "phone" | "sms" | "none";
|
|
775
|
-
/**
|
|
776
|
-
* @description Origin of the reservation request
|
|
777
|
-
* @enum {string}
|
|
778
|
-
*/
|
|
779
|
-
source: "website" | "phone" | "walk_in";
|
|
1365
|
+
contactPreference?: components["schemas"]["ContactPreference"];
|
|
1366
|
+
source?: components["schemas"]["AreaBookingRequestSource"];
|
|
780
1367
|
/** @description Any dietary restrictions, allergies, or special occasions (max 500 characters) */
|
|
781
|
-
specialRequests
|
|
1368
|
+
specialRequests?: string | null;
|
|
782
1369
|
/** @description Preferred seating area or table type (e.g., "window seat", "quiet area", "patio") */
|
|
783
|
-
tablePreference
|
|
784
|
-
venueAccessor: string;
|
|
1370
|
+
tablePreference?: string | null;
|
|
785
1371
|
};
|
|
786
1372
|
/**
|
|
787
1373
|
* MakeReservationResponse
|
|
@@ -825,16 +1411,8 @@ interface components {
|
|
|
825
1411
|
customerEmail: string | null;
|
|
826
1412
|
/** @description Customer phone number */
|
|
827
1413
|
customerPhone: string | null;
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
* @enum {string}
|
|
831
|
-
*/
|
|
832
|
-
contactPreference: "email" | "phone" | "sms" | "none";
|
|
833
|
-
/**
|
|
834
|
-
* @description Current status of the reservation
|
|
835
|
-
* @enum {string}
|
|
836
|
-
*/
|
|
837
|
-
status: "pending" | "confirmed" | "arrived" | "seated" | "completed" | "cancelled" | "no_show";
|
|
1414
|
+
contactPreference: components["schemas"]["ContactPreference"];
|
|
1415
|
+
status: components["schemas"]["ReservationStatus"];
|
|
838
1416
|
/** @description 6-character confirmation code for the reservation */
|
|
839
1417
|
confirmationCode: string | null;
|
|
840
1418
|
/** @description When the reservation was confirmed */
|
|
@@ -847,18 +1425,10 @@ interface components {
|
|
|
847
1425
|
completedAt: unknown;
|
|
848
1426
|
/** @description When the reservation was cancelled */
|
|
849
1427
|
cancelledAt: unknown;
|
|
850
|
-
|
|
851
|
-
* @description Who initiated the cancellation
|
|
852
|
-
* @enum {string|null}
|
|
853
|
-
*/
|
|
854
|
-
cancellationReason: "customer_request" | "restaurant_request" | null;
|
|
1428
|
+
cancellationReason: components["schemas"]["CancellationReason"];
|
|
855
1429
|
/** @description Additional cancellation details */
|
|
856
1430
|
cancellationNote: string | null;
|
|
857
|
-
|
|
858
|
-
* @description Origin of the reservation
|
|
859
|
-
* @enum {string}
|
|
860
|
-
*/
|
|
861
|
-
source: "website" | "phone" | "walk_in";
|
|
1431
|
+
source: components["schemas"]["AreaBookingRequestSource"];
|
|
862
1432
|
/** @description Any special requirements or notes */
|
|
863
1433
|
specialRequests: string | null;
|
|
864
1434
|
/** @description Preferred seating location */
|
|
@@ -888,17 +1458,14 @@ interface components {
|
|
|
888
1458
|
} | null;
|
|
889
1459
|
scheduleId: string | null;
|
|
890
1460
|
allowance: number;
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
allowancePeriod: "week" | "month" | "year";
|
|
895
|
-
redeemableTagSets: string[] | null;
|
|
1461
|
+
billingPeriod: components["schemas"]["SubscriptionPeriod"];
|
|
1462
|
+
allowancePeriod: components["schemas"]["SubscriptionPeriod"];
|
|
1463
|
+
redeemableTagSets: string[][];
|
|
896
1464
|
expiryInDays: number | null;
|
|
897
1465
|
price: number;
|
|
898
|
-
|
|
899
|
-
currency: "EUR" | "CHF";
|
|
1466
|
+
currency: components["schemas"]["Currency"];
|
|
900
1467
|
isActive: boolean;
|
|
901
|
-
sortIndex:
|
|
1468
|
+
sortIndex: string | null;
|
|
902
1469
|
posters: {
|
|
903
1470
|
id: string;
|
|
904
1471
|
menuSubscriptionId: string;
|
|
@@ -907,14 +1474,14 @@ interface components {
|
|
|
907
1474
|
publicUrl: string;
|
|
908
1475
|
filename: string;
|
|
909
1476
|
contentType: string;
|
|
910
|
-
sizeBytes: number
|
|
911
|
-
sortIndex:
|
|
1477
|
+
sizeBytes: number;
|
|
1478
|
+
sortIndex: string | null;
|
|
912
1479
|
createdBy: string | null;
|
|
913
1480
|
createdAt: string | null;
|
|
914
1481
|
}[];
|
|
915
1482
|
};
|
|
916
|
-
/**
|
|
917
|
-
|
|
1483
|
+
/** SubscribeToSubscriptionBody */
|
|
1484
|
+
SubscribeToSubscriptionBody: {
|
|
918
1485
|
/** Format: email */
|
|
919
1486
|
email: string;
|
|
920
1487
|
firstName?: string;
|
|
@@ -925,8 +1492,8 @@ interface components {
|
|
|
925
1492
|
/** Format: uri */
|
|
926
1493
|
cancelUrl: string;
|
|
927
1494
|
};
|
|
928
|
-
/**
|
|
929
|
-
|
|
1495
|
+
/** SubscribeToSubscriptionResponse */
|
|
1496
|
+
SubscribeToSubscriptionResponse: {
|
|
930
1497
|
/** Format: uri */
|
|
931
1498
|
checkoutUrl: string | null;
|
|
932
1499
|
sessionId: string;
|
|
@@ -947,19 +1514,25 @@ interface components {
|
|
|
947
1514
|
periodStart: string;
|
|
948
1515
|
periodEnd: string;
|
|
949
1516
|
expiresAt: string | null;
|
|
950
|
-
|
|
951
|
-
status: "available" | "redeemed" | "expired";
|
|
1517
|
+
status: components["schemas"]["SubscriptionCreditStatus"];
|
|
952
1518
|
redeemedAt: string | null;
|
|
953
1519
|
orderId: string | null;
|
|
954
1520
|
createdAt: string | null;
|
|
955
1521
|
}[];
|
|
1522
|
+
/** DeliveryAddress */
|
|
1523
|
+
DeliveryAddress: {
|
|
1524
|
+
street: string;
|
|
1525
|
+
city: string;
|
|
1526
|
+
state: string;
|
|
1527
|
+
postalCode: string;
|
|
1528
|
+
country: string;
|
|
1529
|
+
};
|
|
956
1530
|
/**
|
|
957
1531
|
* CreateTeamOrderRequest
|
|
958
1532
|
* @description Create a team order: promotes the lead's active basket into a shared team basket and returns the share token.
|
|
959
1533
|
*/
|
|
960
1534
|
CreateTeamOrderRequest: {
|
|
961
|
-
|
|
962
|
-
venueId: string;
|
|
1535
|
+
venueAccessor: string;
|
|
963
1536
|
sessionId: string;
|
|
964
1537
|
/** Format: uuid */
|
|
965
1538
|
menuId: string;
|
|
@@ -969,18 +1542,11 @@ interface components {
|
|
|
969
1542
|
logoUrl?: string;
|
|
970
1543
|
/** Format: date-time */
|
|
971
1544
|
deadlineAt?: string | null;
|
|
972
|
-
|
|
973
|
-
fulfillmentType: "pickup" | "delivery";
|
|
1545
|
+
fulfillmentType: components["schemas"]["FulfillmentType"];
|
|
974
1546
|
/** Format: date-time */
|
|
975
1547
|
fulfillmentAt?: string | null;
|
|
976
|
-
deliveryAddress?:
|
|
977
|
-
|
|
978
|
-
city: string;
|
|
979
|
-
state: string;
|
|
980
|
-
postalCode: string;
|
|
981
|
-
country: string;
|
|
982
|
-
};
|
|
983
|
-
allowedPaymentMethods: ("card" | "cash" | "voucher")[];
|
|
1548
|
+
deliveryAddress?: components["schemas"]["DeliveryAddress"];
|
|
1549
|
+
allowedPaymentMethods: components["schemas"]["PaymentMethod"][];
|
|
984
1550
|
/** Format: uuid */
|
|
985
1551
|
eventId?: string;
|
|
986
1552
|
};
|
|
@@ -1001,11 +1567,9 @@ interface components {
|
|
|
1001
1567
|
teamName: string | null;
|
|
1002
1568
|
logoUrl: string | null;
|
|
1003
1569
|
leadDisplayName: string;
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
/** @enum {string} */
|
|
1008
|
-
fulfillmentType: "pickup" | "delivery";
|
|
1570
|
+
status: components["schemas"]["TeamOrderStatus"];
|
|
1571
|
+
allowedPaymentMethods: components["schemas"]["PaymentMethod"][];
|
|
1572
|
+
fulfillmentType: components["schemas"]["FulfillmentType"];
|
|
1009
1573
|
/** Format: date-time */
|
|
1010
1574
|
fulfillmentAt: string | null;
|
|
1011
1575
|
/** Format: date-time */
|
|
@@ -1033,32 +1597,30 @@ interface components {
|
|
|
1033
1597
|
orderId: string | null;
|
|
1034
1598
|
participantNumber: number | null;
|
|
1035
1599
|
displayName: string | null;
|
|
1036
|
-
|
|
1037
|
-
status: "browsing" | "authorized" | "cash_pending" | "placed" | "completed" | "cancelled";
|
|
1600
|
+
status: components["schemas"]["ParticipantStatus"];
|
|
1038
1601
|
bundleCount: number;
|
|
1039
1602
|
amount: number;
|
|
1040
|
-
|
|
1041
|
-
paymentMethod: "card" | "cash" | "voucher" | null;
|
|
1603
|
+
paymentMethod: components["schemas"]["PaymentMethod"];
|
|
1042
1604
|
isLead: boolean;
|
|
1043
1605
|
isMe: boolean;
|
|
1044
1606
|
/** Format: date-time */
|
|
1045
1607
|
joinedAt: string;
|
|
1046
1608
|
items: {
|
|
1047
1609
|
id: string;
|
|
1048
|
-
metadata:
|
|
1610
|
+
metadata: {
|
|
1611
|
+
[key: string]: unknown;
|
|
1612
|
+
} | null;
|
|
1049
1613
|
menuItems: {
|
|
1050
1614
|
menuItemId: string;
|
|
1051
1615
|
role: string | null;
|
|
1052
1616
|
quantity: number;
|
|
1053
|
-
|
|
1054
|
-
unit: "grams" | "kilograms" | "liters" | "milliliters" | "pieces";
|
|
1617
|
+
unit: components["schemas"]["Unit"];
|
|
1055
1618
|
}[];
|
|
1056
1619
|
isPaid: boolean;
|
|
1057
1620
|
}[];
|
|
1058
1621
|
payments: {
|
|
1059
1622
|
amount: number;
|
|
1060
|
-
|
|
1061
|
-
method: "card" | "cash" | "voucher";
|
|
1623
|
+
method: components["schemas"]["PaymentMethod"];
|
|
1062
1624
|
/** @enum {string} */
|
|
1063
1625
|
status: "authorized" | "captured" | "cash_pending" | "cash_received";
|
|
1064
1626
|
/** Format: date-time */
|
|
@@ -1100,8 +1662,7 @@ interface components {
|
|
|
1100
1662
|
teamOrderId: string;
|
|
1101
1663
|
basketId: string;
|
|
1102
1664
|
customerId: string;
|
|
1103
|
-
|
|
1104
|
-
status: "draft" | "collecting" | "locked" | "placed" | "ready" | "completed" | "cancelled";
|
|
1665
|
+
status: components["schemas"]["TeamOrderStatus"];
|
|
1105
1666
|
isLead: boolean;
|
|
1106
1667
|
alreadyJoined: boolean;
|
|
1107
1668
|
};
|
|
@@ -1114,8 +1675,7 @@ interface components {
|
|
|
1114
1675
|
SubmitTeamOrderResponse: {
|
|
1115
1676
|
/** Format: uuid */
|
|
1116
1677
|
teamOrderId: string;
|
|
1117
|
-
|
|
1118
|
-
status: "draft" | "collecting" | "locked" | "placed" | "ready" | "completed" | "cancelled";
|
|
1678
|
+
status: components["schemas"]["TeamOrderStatus"];
|
|
1119
1679
|
capturedOrderIds: string[];
|
|
1120
1680
|
cashPendingOrderIds: string[];
|
|
1121
1681
|
droppedBasketIds: string[];
|
|
@@ -1132,8 +1692,7 @@ interface components {
|
|
|
1132
1692
|
CancelTeamOrderResponse: {
|
|
1133
1693
|
/** Format: uuid */
|
|
1134
1694
|
teamOrderId: string;
|
|
1135
|
-
|
|
1136
|
-
status: "draft" | "collecting" | "locked" | "placed" | "ready" | "completed" | "cancelled";
|
|
1695
|
+
status: components["schemas"]["TeamOrderStatus"];
|
|
1137
1696
|
voidedPaymentIntentIds: string[];
|
|
1138
1697
|
/** Format: date-time */
|
|
1139
1698
|
cancelledAt: string;
|
|
@@ -1149,8 +1708,7 @@ interface components {
|
|
|
1149
1708
|
ExtendDeadlineTeamOrderResponse: {
|
|
1150
1709
|
/** Format: uuid */
|
|
1151
1710
|
teamOrderId: string;
|
|
1152
|
-
|
|
1153
|
-
status: "draft" | "collecting" | "locked" | "placed" | "ready" | "completed" | "cancelled";
|
|
1711
|
+
status: components["schemas"]["TeamOrderStatus"];
|
|
1154
1712
|
/** Format: date-time */
|
|
1155
1713
|
deadlineAt: string | null;
|
|
1156
1714
|
};
|
|
@@ -1165,8 +1723,7 @@ interface components {
|
|
|
1165
1723
|
SetFulfillmentAtTeamOrderResponse: {
|
|
1166
1724
|
/** Format: uuid */
|
|
1167
1725
|
teamOrderId: string;
|
|
1168
|
-
|
|
1169
|
-
status: "draft" | "collecting" | "locked" | "placed" | "ready" | "completed" | "cancelled";
|
|
1726
|
+
status: components["schemas"]["TeamOrderStatus"];
|
|
1170
1727
|
/** Format: date-time */
|
|
1171
1728
|
fulfillmentAt: string;
|
|
1172
1729
|
/** Format: date-time */
|
|
@@ -1182,8 +1739,7 @@ interface components {
|
|
|
1182
1739
|
SetDiningLocationTeamOrderResponse: {
|
|
1183
1740
|
/** Format: uuid */
|
|
1184
1741
|
teamOrderId: string;
|
|
1185
|
-
|
|
1186
|
-
status: "draft" | "collecting" | "locked" | "placed" | "ready" | "completed" | "cancelled";
|
|
1742
|
+
status: components["schemas"]["TeamOrderStatus"];
|
|
1187
1743
|
diningLocation: string | null;
|
|
1188
1744
|
};
|
|
1189
1745
|
/** SetDiningTimeTeamOrderRequest */
|
|
@@ -1196,46 +1752,64 @@ interface components {
|
|
|
1196
1752
|
SetDiningTimeTeamOrderResponse: {
|
|
1197
1753
|
/** Format: uuid */
|
|
1198
1754
|
teamOrderId: string;
|
|
1199
|
-
|
|
1200
|
-
status: "draft" | "collecting" | "locked" | "placed" | "ready" | "completed" | "cancelled";
|
|
1755
|
+
status: components["schemas"]["TeamOrderStatus"];
|
|
1201
1756
|
diningTime: string;
|
|
1202
|
-
|
|
1757
|
+
diningOffset: number;
|
|
1758
|
+
};
|
|
1759
|
+
/** SetOrderLeadSettledRequest */
|
|
1760
|
+
SetOrderLeadSettledRequest: {
|
|
1761
|
+
publicId: string;
|
|
1762
|
+
sessionId: string;
|
|
1763
|
+
/** Format: uuid */
|
|
1764
|
+
orderId: string;
|
|
1765
|
+
settled: boolean;
|
|
1766
|
+
};
|
|
1767
|
+
/** SetOrderLeadSettledResponse */
|
|
1768
|
+
SetOrderLeadSettledResponse: {
|
|
1769
|
+
/** Format: uuid */
|
|
1770
|
+
orderId: string;
|
|
1771
|
+
leadSettledAt: string | null;
|
|
1772
|
+
};
|
|
1773
|
+
/** AutoExtendFulfillmentIfExpiredRequest */
|
|
1774
|
+
AutoExtendFulfillmentIfExpiredRequest: {
|
|
1775
|
+
publicId: string;
|
|
1776
|
+
sessionId: string;
|
|
1777
|
+
/** Format: date-time */
|
|
1778
|
+
proposedFulfillmentAt: string;
|
|
1779
|
+
};
|
|
1780
|
+
/** AutoExtendFulfillmentIfExpiredResponse */
|
|
1781
|
+
AutoExtendFulfillmentIfExpiredResponse: {
|
|
1782
|
+
extended: boolean;
|
|
1783
|
+
teamOrderId: string;
|
|
1784
|
+
status: string;
|
|
1785
|
+
/** Format: date-time */
|
|
1786
|
+
fulfillmentAt: string;
|
|
1787
|
+
/** Format: date-time */
|
|
1788
|
+
deadlineAt: string | null;
|
|
1789
|
+
/** Format: date-time */
|
|
1790
|
+
previousFulfillmentAt: string;
|
|
1791
|
+
waitingCount: number;
|
|
1203
1792
|
};
|
|
1204
1793
|
/** SwitchFulfillmentTeamOrderRequest */
|
|
1205
1794
|
SwitchFulfillmentTeamOrderRequest: {
|
|
1206
1795
|
publicId: string;
|
|
1207
|
-
sessionId: string;
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
deliveryAddress?: {
|
|
1211
|
-
street: string;
|
|
1212
|
-
city: string;
|
|
1213
|
-
state: string;
|
|
1214
|
-
postalCode: string;
|
|
1215
|
-
country: string;
|
|
1216
|
-
};
|
|
1796
|
+
sessionId: string;
|
|
1797
|
+
fulfillmentType: components["schemas"]["FulfillmentType"];
|
|
1798
|
+
deliveryAddress?: components["schemas"]["DeliveryAddress"];
|
|
1217
1799
|
};
|
|
1218
1800
|
/** SwitchFulfillmentTeamOrderResponse */
|
|
1219
1801
|
SwitchFulfillmentTeamOrderResponse: {
|
|
1220
1802
|
/** Format: uuid */
|
|
1221
1803
|
teamOrderId: string;
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
/** @enum {string} */
|
|
1225
|
-
fulfillmentType: "pickup" | "delivery";
|
|
1804
|
+
status: components["schemas"]["TeamOrderStatus"];
|
|
1805
|
+
fulfillmentType: components["schemas"]["FulfillmentType"];
|
|
1226
1806
|
deliveryAddressId: string | null;
|
|
1227
1807
|
};
|
|
1228
1808
|
/** UpdateDeliveryAddressTeamOrderRequest */
|
|
1229
1809
|
UpdateDeliveryAddressTeamOrderRequest: {
|
|
1230
1810
|
publicId: string;
|
|
1231
1811
|
sessionId: string;
|
|
1232
|
-
deliveryAddress:
|
|
1233
|
-
street: string;
|
|
1234
|
-
city: string;
|
|
1235
|
-
state: string;
|
|
1236
|
-
postalCode: string;
|
|
1237
|
-
country: string;
|
|
1238
|
-
};
|
|
1812
|
+
deliveryAddress: components["schemas"]["DeliveryAddress"];
|
|
1239
1813
|
};
|
|
1240
1814
|
/** UpdateDeliveryAddressTeamOrderResponse */
|
|
1241
1815
|
UpdateDeliveryAddressTeamOrderResponse: {
|
|
@@ -1260,6 +1834,120 @@ interface components {
|
|
|
1260
1834
|
createdAt: unknown;
|
|
1261
1835
|
updatedAt: unknown;
|
|
1262
1836
|
};
|
|
1837
|
+
/** @enum {string} */
|
|
1838
|
+
ActorType: "human" | "robot";
|
|
1839
|
+
/** @enum {string} */
|
|
1840
|
+
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";
|
|
1841
|
+
/** @enum {string} */
|
|
1842
|
+
AreaBookingMode: "slot" | "day";
|
|
1843
|
+
/** @enum {string} */
|
|
1844
|
+
AreaBookingRequestSource: "website" | "phone" | "walk_in";
|
|
1845
|
+
/** @enum {string} */
|
|
1846
|
+
AreaBookingRequestStatus: "pending" | "approved" | "rejected" | "cancelled";
|
|
1847
|
+
/** @enum {string} */
|
|
1848
|
+
AreaBookingStatus: "confirmed" | "arrived" | "completed" | "cancelled" | "no_show";
|
|
1849
|
+
/** @enum {string} */
|
|
1850
|
+
ArticleEditorSaveState: "idle" | "saving" | "saved" | "error";
|
|
1851
|
+
/** @enum {string} */
|
|
1852
|
+
ArticleStatus: "draft" | "published";
|
|
1853
|
+
/** @enum {string} */
|
|
1854
|
+
BasketStatus: "active" | "abandoned" | "converted";
|
|
1855
|
+
/** @enum {string} */
|
|
1856
|
+
BeverageCategory: "wine" | "beer" | "coffee" | "tea" | "cocktail" | "juice" | "soft_drink" | "dairy_drink" | "spirit" | "water";
|
|
1857
|
+
/** @enum {string} */
|
|
1858
|
+
CancellationReason: "customer_request" | "restaurant_request";
|
|
1859
|
+
/** @enum {string} */
|
|
1860
|
+
ContactPreference: "email" | "phone" | "sms" | "none";
|
|
1861
|
+
/** @enum {string} */
|
|
1862
|
+
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";
|
|
1863
|
+
/** @enum {string} */
|
|
1864
|
+
Currency: "EUR" | "CHF";
|
|
1865
|
+
/** @enum {string} */
|
|
1866
|
+
DepositTransactionType: "charged" | "refunded" | "forfeited" | "waived" | "credit_used";
|
|
1867
|
+
/** @enum {string} */
|
|
1868
|
+
DepositwareStatus: "available" | "issued" | "returned" | "lost" | "damaged" | "retired";
|
|
1869
|
+
/** @enum {string} */
|
|
1870
|
+
EntityOwnerType: "event" | "dish" | "beverage" | "venue" | "menu" | "menuSubscription" | "ritual";
|
|
1871
|
+
/** @enum {string} */
|
|
1872
|
+
IntegrationNotificationType: "order_created" | "order_cancelled" | "order_completed" | "team_order_created" | "reservation_created" | "reservation_confirmed" | "reservation_cancelled";
|
|
1873
|
+
/** @enum {string} */
|
|
1874
|
+
IntegrationType: "telegram";
|
|
1875
|
+
/** @enum {string} */
|
|
1876
|
+
InventoryAssetStatus: "available" | "in_use" | "maintenance" | "retired";
|
|
1877
|
+
/** @enum {string} */
|
|
1878
|
+
InventoryCategory: "depositware" | "furniture" | "equipment" | "utensil";
|
|
1879
|
+
/** @enum {string} */
|
|
1880
|
+
InvitationScenario: "new_user" | "already_member" | "former_employee";
|
|
1881
|
+
/** @enum {string} */
|
|
1882
|
+
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";
|
|
1883
|
+
/** @enum {string} */
|
|
1884
|
+
MenuItemType: "dish" | "beverage";
|
|
1885
|
+
/** @enum {string} */
|
|
1886
|
+
FulfillmentType: "pickup" | "delivery";
|
|
1887
|
+
/** @enum {string} */
|
|
1888
|
+
OrderStatus: "pending" | "in_progress" | "ready" | "completed" | "cancelled";
|
|
1889
|
+
/** @enum {string} */
|
|
1890
|
+
PaymentMethod: "card" | "cash" | "voucher";
|
|
1891
|
+
/** @enum {string} */
|
|
1892
|
+
PaymentStatus: "unpaid" | "paid" | "refunded" | "authorized" | "cash_pending";
|
|
1893
|
+
/** @enum {string} */
|
|
1894
|
+
ScanTokenEntityType: "order" | "depositware";
|
|
1895
|
+
/** @enum {string} */
|
|
1896
|
+
SortOrder: "asc" | "desc";
|
|
1897
|
+
/** @enum {string} */
|
|
1898
|
+
SubscriberStatus: "active" | "paused" | "cancelled" | "past_due" | "trialing";
|
|
1899
|
+
/** @enum {string} */
|
|
1900
|
+
SubscriptionCreditStatus: "available" | "redeemed" | "expired";
|
|
1901
|
+
/** @enum {string} */
|
|
1902
|
+
SubscriptionPeriod: "week" | "month" | "year";
|
|
1903
|
+
/** @enum {string} */
|
|
1904
|
+
TeamOrderStatus: "draft" | "collecting" | "locked" | "placed" | "ready" | "completed" | "cancelled";
|
|
1905
|
+
/** @enum {string} */
|
|
1906
|
+
Unit: "grams" | "kilograms" | "liters" | "milliliters" | "pieces";
|
|
1907
|
+
/** @enum {string} */
|
|
1908
|
+
MentionEntityType: "dish" | "beverage" | "ingredient" | "menu" | "ritual";
|
|
1909
|
+
/** @enum {string} */
|
|
1910
|
+
MentionKind: "link" | "value";
|
|
1911
|
+
/** @enum {string} */
|
|
1912
|
+
PendingSuperadminTransferStatus: "pending_invite" | "accepted_awaiting_payment" | "completed" | "cancelled" | "expired";
|
|
1913
|
+
/** @enum {string} */
|
|
1914
|
+
BillingMode: "single_anchor" | "split";
|
|
1915
|
+
/** @enum {string} */
|
|
1916
|
+
VenueChargeKind: "base" | "addon";
|
|
1917
|
+
/** @enum {string} */
|
|
1918
|
+
AssetType: "image" | "video" | "document";
|
|
1919
|
+
/** @enum {string} */
|
|
1920
|
+
Jurisdiction: "DE" | "CH" | "FR" | "IT";
|
|
1921
|
+
/** @enum {string} */
|
|
1922
|
+
DayOfWeek: "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday";
|
|
1923
|
+
/** @enum {string} */
|
|
1924
|
+
SlotMode: "interval" | "duration";
|
|
1925
|
+
/** @enum {string} */
|
|
1926
|
+
TeamOrderPaymentStatus: "authorized" | "captured" | "cash_pending" | "cash_received" | "voided" | "failed";
|
|
1927
|
+
/** @enum {string} */
|
|
1928
|
+
FeatureCategory: "articles" | "auth" | "billing" | "core" | "customers" | "events" | "inventory" | "menus" | "orders" | "platform" | "promotions" | "reservations" | "settings" | "venues";
|
|
1929
|
+
/** @enum {string} */
|
|
1930
|
+
FeatureStatus: "backlog" | "in_development" | "released";
|
|
1931
|
+
/** @enum {string} */
|
|
1932
|
+
MentionFieldFormatter: "text" | "currency" | "integer" | "percentage" | "boolean";
|
|
1933
|
+
/** @enum {string} */
|
|
1934
|
+
PromotionBenefitType: "free_item" | "discount_percentage" | "discount_amount" | "buy_x_get_y";
|
|
1935
|
+
/** @enum {string} */
|
|
1936
|
+
ReservationPromotionStatus: "applied" | "redeemed" | "expired";
|
|
1937
|
+
/** @enum {string} */
|
|
1938
|
+
ReservationStatus: "pending" | "confirmed" | "arrived" | "seated" | "completed" | "cancelled" | "no_show";
|
|
1939
|
+
/** @enum {string} */
|
|
1940
|
+
VenueAssetType: "logomark" | "wordmark" | "combinationmark_horizontal" | "combinationmark_vertical";
|
|
1941
|
+
/** @enum {string} */
|
|
1942
|
+
VenueUserStatus: "pending" | "confirmed" | "revoked";
|
|
1943
|
+
/** @enum {string} */
|
|
1944
|
+
VenueType: "restaurant" | "fine_dining_restaurant" | "ghost_kitchen" | "food_truck";
|
|
1945
|
+
/** @enum {string} */
|
|
1946
|
+
ParticipantStatus: "browsing" | "authorized" | "cash_pending" | "placed" | "completed" | "cancelled";
|
|
1947
|
+
/** @enum {string} */
|
|
1948
|
+
EnumTrue: "true";
|
|
1949
|
+
/** @enum {string} */
|
|
1950
|
+
EnumFalse: "false";
|
|
1263
1951
|
};
|
|
1264
1952
|
responses: never;
|
|
1265
1953
|
parameters: never;
|
|
@@ -1271,18 +1959,18 @@ interface components {
|
|
|
1271
1959
|
type schemas = components['schemas'];
|
|
1272
1960
|
type CreateEventRequest = schemas['CreateEventRequest'];
|
|
1273
1961
|
type CreateEventResponse = schemas['CreateEventResponse'];
|
|
1274
|
-
type Article = schemas['
|
|
1275
|
-
type ListArticlesResponse = schemas['
|
|
1276
|
-
type GetArticleResponse = schemas['
|
|
1277
|
-
type PatchArticleRequest = schemas['
|
|
1278
|
-
type PatchArticleResponse = schemas['
|
|
1962
|
+
type Article = schemas['FetchArticleResponse'];
|
|
1963
|
+
type ListArticlesResponse = schemas['FetchArticlesResponse'];
|
|
1964
|
+
type GetArticleResponse = schemas['FetchArticleResponse'];
|
|
1965
|
+
type PatchArticleRequest = schemas['EditArticleRequest'];
|
|
1966
|
+
type PatchArticleResponse = schemas['EditArticleResponse'];
|
|
1279
1967
|
type FeatureImage = schemas['FeatureImage'];
|
|
1280
|
-
type PatchFeatureImageRequest = schemas['
|
|
1968
|
+
type PatchFeatureImageRequest = schemas['PatchArticleFeatureImageBody'];
|
|
1281
1969
|
/**
|
|
1282
1970
|
* Args for `client.articles.uploadFeatureImage()`. The SDK accepts a
|
|
1283
1971
|
* `Buffer` or `Uint8Array` payload + filename + content-type — it
|
|
1284
1972
|
* builds the FormData internally so callers don't have to know about
|
|
1285
|
-
* multipart wire encoding.
|
|
1973
|
+
* multipart wire encoding. Client ergonomics, no wire equivalent.
|
|
1286
1974
|
*/
|
|
1287
1975
|
interface UploadFeatureImageArgs {
|
|
1288
1976
|
data: Buffer | Uint8Array;
|
|
@@ -1297,16 +1985,15 @@ interface ListArticlesOptions {
|
|
|
1297
1985
|
/** When `true`, include articles whose `isActive` is `false`. Default `false`. */
|
|
1298
1986
|
includeInactive?: boolean;
|
|
1299
1987
|
}
|
|
1300
|
-
type Venue = schemas['
|
|
1988
|
+
type Venue = schemas['GetVenueResponse'];
|
|
1301
1989
|
type GetVenueResponse = schemas['GetVenueResponse'];
|
|
1302
1990
|
/**
|
|
1303
|
-
* Order fulfillment type
|
|
1304
|
-
*
|
|
1991
|
+
* Order fulfillment type — bound to the generated `FulfillmentType`
|
|
1992
|
+
* component (order3000's `order_fulfillment_type` enum, surfaced via
|
|
1993
|
+
* `openapi-typescript`). Never hand-rolled.
|
|
1305
1994
|
*/
|
|
1306
|
-
type OrderFulfillmentType = '
|
|
1307
|
-
type PlaceOrderRequest = Omit<schemas['PlaceOrderRequest'], '
|
|
1308
|
-
/** Fulfillment type for the order (pickup or delivery) */
|
|
1309
|
-
fulfillmentType?: OrderFulfillmentType;
|
|
1995
|
+
type OrderFulfillmentType = schemas['FulfillmentType'];
|
|
1996
|
+
type PlaceOrderRequest = Omit<schemas['PlaceOrderRequest'], 'fulfillmentAt'> & {
|
|
1310
1997
|
/**
|
|
1311
1998
|
* When the order should be fulfilled (ISO 8601 datetime or Date).
|
|
1312
1999
|
* Null / omitted in team-order mode — the Lead's pickup-time decision
|
|
@@ -1314,126 +2001,52 @@ type PlaceOrderRequest = Omit<schemas['PlaceOrderRequest'], 'taxAmount' | 'total
|
|
|
1314
2001
|
* submit time.
|
|
1315
2002
|
*/
|
|
1316
2003
|
fulfillmentAt?: Date | string | null;
|
|
1317
|
-
/** Guest session identifier for customer lookup */
|
|
1318
|
-
sessionId?: string;
|
|
1319
|
-
/** Customer first name (for cash orders) */
|
|
1320
|
-
customerFirstName?: string;
|
|
1321
|
-
/** Customer last name (for cash orders) */
|
|
1322
|
-
customerLastName?: string;
|
|
1323
|
-
/** Customer email address (for cash orders) */
|
|
1324
|
-
customerEmail?: string;
|
|
1325
|
-
/**
|
|
1326
|
-
* Deposit containers the customer declares they will return at pickup.
|
|
1327
|
-
* Per-template references only — order3000 refuses any inbound deposit
|
|
1328
|
-
* money amount.
|
|
1329
|
-
*/
|
|
1330
|
-
declaredReturns?: DeclaredReturn[];
|
|
1331
2004
|
};
|
|
1332
2005
|
type PlaceOrderResponse = schemas['PlaceOrderResponse'];
|
|
1333
2006
|
type MakeReservationRequest = schemas['MakeReservationRequest'];
|
|
1334
2007
|
type MakeReservationResponse = schemas['MakeReservationResponse'];
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
sizeBytes: number;
|
|
1378
|
-
isPrimary: boolean;
|
|
1379
|
-
sortIndex: string | null;
|
|
1380
|
-
createdBy: string | null;
|
|
1381
|
-
createdAt: string | null;
|
|
1382
|
-
}
|
|
1383
|
-
interface Promotion {
|
|
1384
|
-
id: string;
|
|
1385
|
-
venueId: string;
|
|
1386
|
-
name: Record<string, string>;
|
|
1387
|
-
description: Record<string, string> | null;
|
|
1388
|
-
benefitType: 'free_item' | 'discount_percentage' | 'discount_amount' | 'buy_x_get_y';
|
|
1389
|
-
benefitValue: Record<string, unknown>;
|
|
1390
|
-
conditions: Record<string, unknown> | null;
|
|
1391
|
-
maxRedemptions: number | null;
|
|
1392
|
-
currentRedemptions: number | null;
|
|
1393
|
-
validFrom: string | null;
|
|
1394
|
-
validTo: string | null;
|
|
1395
|
-
isActive: boolean;
|
|
1396
|
-
createdBy: string | null;
|
|
1397
|
-
updatedBy: string | null;
|
|
1398
|
-
createdAt: string | null;
|
|
1399
|
-
updatedAt: string | null;
|
|
1400
|
-
timeSlotIds?: string[] | null;
|
|
1401
|
-
}
|
|
1402
|
-
interface Event {
|
|
1403
|
-
id: string;
|
|
1404
|
-
venueId: string;
|
|
1405
|
-
name: Record<string, string>;
|
|
1406
|
-
description: Record<string, string> | null;
|
|
1407
|
-
scheduleId: string | null;
|
|
1408
|
-
maxBookings: number | null;
|
|
1409
|
-
maxGuests: number | null;
|
|
1410
|
-
minPartySize: number | null;
|
|
1411
|
-
maxPartySize: number | null;
|
|
1412
|
-
isPublic: boolean;
|
|
1413
|
-
isRecurring: boolean;
|
|
1414
|
-
isClosed: boolean;
|
|
1415
|
-
reservationsEnabled: boolean;
|
|
1416
|
-
bookingOpensAtDays: number | null;
|
|
1417
|
-
bookingClosesAtHours: number | null;
|
|
1418
|
-
isActive: boolean;
|
|
1419
|
-
/** Whether this event should be displayed prominently in public-facing areas */
|
|
1420
|
-
isFeatured: boolean;
|
|
1421
|
-
/** Priority for conflict resolution (higher = takes precedence) */
|
|
1422
|
-
priority: number;
|
|
1423
|
-
createdBy: string | null;
|
|
1424
|
-
updatedBy: string | null;
|
|
1425
|
-
createdAt: string | null;
|
|
1426
|
-
updatedAt: string | null;
|
|
1427
|
-
schedule: Schedule | null;
|
|
1428
|
-
posters: EventPoster[];
|
|
1429
|
-
promotions: Promotion[];
|
|
1430
|
-
/** Regular time slots (by day of week) */
|
|
1431
|
-
timeSlots: TimeSlot[];
|
|
1432
|
-
/** Date-specific schedule overrides */
|
|
1433
|
-
scheduleOverrides: ScheduleOverride[];
|
|
1434
|
-
/** Next occurrence date for recurring events (YYYY-MM-DD format) */
|
|
1435
|
-
nextOccurrence?: string | null;
|
|
1436
|
-
}
|
|
2008
|
+
/**
|
|
2009
|
+
* Day of week — generated-bound to the `dayOfWeek` enum carried by the
|
|
2010
|
+
* events list schedule time-slot rows. The order3000 events output
|
|
2011
|
+
* schema is now precise (no more `.passthrough()`), so this derives
|
|
2012
|
+
* straight from the wire contract.
|
|
2013
|
+
*/
|
|
2014
|
+
type DayOfWeek = NonNullable<NonNullable<schemas['FetchEventsResponse'][number]['schedule']>['scheduleTimeSlots'][number]['dayOfWeek']>;
|
|
2015
|
+
/**
|
|
2016
|
+
* A single regular (by-day-of-week) time slot for an event. Generated-bound
|
|
2017
|
+
* to the events list response's `timeSlots[]` element.
|
|
2018
|
+
*/
|
|
2019
|
+
type TimeSlot = schemas['FetchEventsResponse'][number]['timeSlots'][number];
|
|
2020
|
+
/**
|
|
2021
|
+
* A date-specific schedule override for an event. Generated-bound to the
|
|
2022
|
+
* events list response's `scheduleOverrides[]` element.
|
|
2023
|
+
*/
|
|
2024
|
+
type ScheduleOverride = schemas['FetchEventsResponse'][number]['scheduleOverrides'][number];
|
|
2025
|
+
/**
|
|
2026
|
+
* An event's schedule (rrule, validity window, slot-generation settings,
|
|
2027
|
+
* plus the nested override / time-slot rows). Generated-bound to the
|
|
2028
|
+
* non-null `schedule` object on the events list response.
|
|
2029
|
+
*
|
|
2030
|
+
* `intervalDuration` / `duration` are milliseconds (codebase convention).
|
|
2031
|
+
*/
|
|
2032
|
+
type Schedule = NonNullable<schemas['FetchEventsResponse'][number]['schedule']>;
|
|
2033
|
+
/**
|
|
2034
|
+
* An event poster (image/video/document asset attached to an event).
|
|
2035
|
+
* Generated-bound to the events list response's `posters[]` element.
|
|
2036
|
+
*/
|
|
2037
|
+
type EventPoster = schemas['FetchEventsResponse'][number]['posters'][number];
|
|
2038
|
+
/**
|
|
2039
|
+
* A promotion attached to an event. Generated-bound to the events list
|
|
2040
|
+
* response's `promotions[]` element.
|
|
2041
|
+
*/
|
|
2042
|
+
type Promotion = schemas['FetchEventsResponse'][number]['promotions'][number];
|
|
2043
|
+
/**
|
|
2044
|
+
* A single event as returned by the list endpoint, with schedule,
|
|
2045
|
+
* posters, promotions, time slots and overrides inlined. Generated-bound
|
|
2046
|
+
* to the events list response element — request-shape drift is now
|
|
2047
|
+
* impossible.
|
|
2048
|
+
*/
|
|
2049
|
+
type Event = schemas['FetchEventsResponse'][number];
|
|
1437
2050
|
interface ListEventsOptions {
|
|
1438
2051
|
/** Include private events in the response */
|
|
1439
2052
|
includePrivate?: boolean;
|
|
@@ -1448,11 +2061,20 @@ interface ListEventsOptions {
|
|
|
1448
2061
|
/** Filter for events occurring within N days from today */
|
|
1449
2062
|
upcomingWithinDays?: number;
|
|
1450
2063
|
}
|
|
1451
|
-
type ListEventsResponse = Event[];
|
|
1452
|
-
type MenuItemType = 'dish' | 'beverage';
|
|
1453
2064
|
/**
|
|
1454
|
-
*
|
|
1455
|
-
*
|
|
2065
|
+
* The events list response — generated-bound to `FetchEventsResponse`
|
|
2066
|
+
* (an array of {@link Event}). Never hand-rolled.
|
|
2067
|
+
*/
|
|
2068
|
+
type ListEventsResponse = schemas['FetchEventsResponse'];
|
|
2069
|
+
/**
|
|
2070
|
+
* Menu item discriminant — generated-bound to the `type` enum on the
|
|
2071
|
+
* menu response's `items[]` element. The `fetchMenu` output schema is
|
|
2072
|
+
* now precise; never hand-rolled.
|
|
2073
|
+
*/
|
|
2074
|
+
type MenuItemType = NonNullable<schemas['FetchMenuResponse']['items']>[number]['type'];
|
|
2075
|
+
/**
|
|
2076
|
+
* Crop area coordinates for assets. Shared UI helper (mirrors the
|
|
2077
|
+
* `@kolaveri/molecules` Cropper type) — not a wire DTO.
|
|
1456
2078
|
*/
|
|
1457
2079
|
interface CropArea {
|
|
1458
2080
|
x: number;
|
|
@@ -1460,599 +2082,220 @@ interface CropArea {
|
|
|
1460
2082
|
width: number;
|
|
1461
2083
|
height: number;
|
|
1462
2084
|
}
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
accessor: string;
|
|
1495
|
-
name: Record<string, string>;
|
|
1496
|
-
shortName?: Record<string, string>;
|
|
1497
|
-
description: Record<string, string> | null;
|
|
1498
|
-
longDescription?: Record<string, string> | null;
|
|
1499
|
-
assets?: MenuAsset[];
|
|
1500
|
-
}
|
|
1501
|
-
interface MenuItem {
|
|
1502
|
-
id: string;
|
|
1503
|
-
type: MenuItemType;
|
|
1504
|
-
tags: string[] | null;
|
|
1505
|
-
/** Price adjustment in cents (adds to bundle base price) */
|
|
1506
|
-
priceAdjustment: number;
|
|
1507
|
-
currency: CurrencyCode;
|
|
1508
|
-
isActive: boolean;
|
|
1509
|
-
/** Whether this menu item should get a dedicated SEO detail page on consumer sites */
|
|
1510
|
-
isFeatured: boolean;
|
|
1511
|
-
sortIndex: string | null;
|
|
1512
|
-
dish: MenuDish | null;
|
|
1513
|
-
beverage: MenuBeverage | null;
|
|
1514
|
-
}
|
|
1515
|
-
interface Menu {
|
|
1516
|
-
id: string;
|
|
1517
|
-
venueId: string;
|
|
1518
|
-
accessor: string;
|
|
1519
|
-
name: Record<string, string>;
|
|
1520
|
-
description: Record<string, string> | null;
|
|
1521
|
-
items?: MenuItem[];
|
|
1522
|
-
/**
|
|
1523
|
-
* Menu-level assets surfaced via the `menu_assets` junction. Populated
|
|
1524
|
-
* when the caller passes `expand: ['assets']` (or `['items', 'assets']`)
|
|
1525
|
-
* to `menus.getByAccessor` / `menus.get`. These are distinct from the
|
|
1526
|
-
* per-item `dish.assets` / `beverage.assets` arrays — menu-level assets
|
|
1527
|
-
* are curated for the menu as a whole (e.g. blog carousel imagery).
|
|
1528
|
-
*/
|
|
1529
|
-
assets?: MenuAsset[];
|
|
1530
|
-
}
|
|
2085
|
+
/**
|
|
2086
|
+
* A menu — generated-bound to `FetchMenuResponse`. order3000's
|
|
2087
|
+
* `fetchMenu` action always projects the flat, hydrated client view:
|
|
2088
|
+
* `assets[]` (menu-level) and every `items[].dish.assets[]` /
|
|
2089
|
+
* `items[].beverage.assets[]` are resolved to flat assets carrying
|
|
2090
|
+
* their Supabase `publicUrl`; the raw `*_assets` junction relations are
|
|
2091
|
+
* stripped at source and never surface on the wire. Bound here via the
|
|
2092
|
+
* same alias-derivation style as `Basket`/`BasketItem`.
|
|
2093
|
+
*/
|
|
2094
|
+
type Menu = NonNullable<schemas['FetchMenuResponse']>;
|
|
2095
|
+
/**
|
|
2096
|
+
* A single menu item — generated-bound to the element type of
|
|
2097
|
+
* `Menu.items[]` (present when `expand=items`).
|
|
2098
|
+
*/
|
|
2099
|
+
type MenuItem = NonNullable<Menu['items']>[number];
|
|
2100
|
+
/**
|
|
2101
|
+
* The dish carried by a menu item — generated-bound to `MenuItem.dish`.
|
|
2102
|
+
*/
|
|
2103
|
+
type MenuDish = NonNullable<MenuItem['dish']>;
|
|
2104
|
+
/**
|
|
2105
|
+
* The beverage carried by a menu item — generated-bound to
|
|
2106
|
+
* `MenuItem.beverage`.
|
|
2107
|
+
*/
|
|
2108
|
+
type MenuBeverage = NonNullable<MenuItem['beverage']>;
|
|
2109
|
+
/**
|
|
2110
|
+
* A flat, hydrated asset — generated-bound to the element type of the
|
|
2111
|
+
* always-present menu-level `Menu.assets[]`. Identical in shape to the
|
|
2112
|
+
* per-item `dish.assets[]` / `beverage.assets[]` elements (all are the
|
|
2113
|
+
* same hydrated asset projection with a resolved `publicUrl`).
|
|
2114
|
+
*/
|
|
2115
|
+
type MenuAsset = NonNullable<Menu['assets']>[number];
|
|
1531
2116
|
interface GetMenuOptions {
|
|
1532
2117
|
/** Expand related resources (items, assets) */
|
|
1533
2118
|
expand?: ('items' | 'assets')[];
|
|
1534
2119
|
}
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
interface ScheduleTimeSlot {
|
|
1571
|
-
dayOfWeek: DayOfWeek | null;
|
|
1572
|
-
timeSlot: {
|
|
1573
|
-
id: string;
|
|
1574
|
-
startTime: string;
|
|
1575
|
-
endTime: string | null;
|
|
1576
|
-
isActive: boolean | null;
|
|
1577
|
-
isSchedulable: boolean | null;
|
|
1578
|
-
};
|
|
1579
|
-
}
|
|
1580
|
-
interface ScheduleWithTimeSlots extends Schedule {
|
|
1581
|
-
scheduleTimeSlots?: ScheduleTimeSlot[];
|
|
1582
|
-
}
|
|
1583
|
-
interface EventMenu {
|
|
1584
|
-
id: string;
|
|
1585
|
-
accessor: string;
|
|
1586
|
-
name: Record<string, string>;
|
|
1587
|
-
category: string;
|
|
1588
|
-
}
|
|
1589
|
-
interface EventByAccessor {
|
|
1590
|
-
id: string;
|
|
1591
|
-
venueId: string;
|
|
1592
|
-
accessor: string | null;
|
|
1593
|
-
name: Record<string, string>;
|
|
1594
|
-
description: Record<string, string> | null;
|
|
1595
|
-
scheduleId: string | null;
|
|
1596
|
-
maxBookings: number | null;
|
|
1597
|
-
maxGuests: number | null;
|
|
1598
|
-
minPartySize: number | null;
|
|
1599
|
-
maxPartySize: number | null;
|
|
1600
|
-
isPublic: boolean;
|
|
1601
|
-
isRecurring: boolean;
|
|
1602
|
-
reservationsEnabled: boolean;
|
|
1603
|
-
bookingOpensAtDays: number | null;
|
|
1604
|
-
bookingClosesAtHours: number | null;
|
|
1605
|
-
isActive: boolean;
|
|
1606
|
-
isFeatured: boolean;
|
|
1607
|
-
priority: number;
|
|
1608
|
-
createdAt: string | null;
|
|
1609
|
-
updatedAt: string | null;
|
|
1610
|
-
schedule?: ScheduleWithTimeSlots;
|
|
1611
|
-
menus?: EventMenu[];
|
|
1612
|
-
posters?: EventPoster[];
|
|
1613
|
-
/** Next occurrence date for recurring events (YYYY-MM-DD format) */
|
|
1614
|
-
nextOccurrence?: string | null;
|
|
1615
|
-
}
|
|
2120
|
+
/**
|
|
2121
|
+
* Wire shape for a single menu bundle, bound to the generated OpenAPI
|
|
2122
|
+
* schema (`FetchMenuBundlesResponse`) — never hand-rolled. The
|
|
2123
|
+
* authoritative contract is order3000's `fetchMenuBundles` output
|
|
2124
|
+
* schema, surfaced here via `openapi-typescript`. Notably `price` is
|
|
2125
|
+
* `{ amount, currency }`, not a bare number.
|
|
2126
|
+
*/
|
|
2127
|
+
type MenuBundle = schemas['FetchMenuBundlesResponse'][number];
|
|
2128
|
+
type MenuBundleDeposit = NonNullable<MenuBundle['deposit']>;
|
|
2129
|
+
/**
|
|
2130
|
+
* A single event as returned by the `getByAccessor` endpoint, with
|
|
2131
|
+
* optional schedule / menus / posters expansions. Generated-bound to the
|
|
2132
|
+
* `FetchEventResponse` component (the order3000 `fetchEvent` output
|
|
2133
|
+
* schema is now precise) — request-shape drift is impossible.
|
|
2134
|
+
*/
|
|
2135
|
+
type EventByAccessor = schemas['FetchEventResponse'];
|
|
2136
|
+
/**
|
|
2137
|
+
* The `getByAccessor` event's schedule sub-object, including the optional
|
|
2138
|
+
* `scheduleTimeSlots[]` expansion. Generated-bound to the non-null
|
|
2139
|
+
* `schedule` on `FetchEventResponse`. Kept as a distinct public SDK type
|
|
2140
|
+
* name (re-exported as `O3KScheduleWithTimeSlots`) for downstream
|
|
2141
|
+
* stability; structurally it is the by-accessor schedule shape.
|
|
2142
|
+
*/
|
|
2143
|
+
type ScheduleWithTimeSlots = NonNullable<EventByAccessor['schedule']>;
|
|
2144
|
+
/**
|
|
2145
|
+
* A single regular time slot on the by-accessor event's schedule.
|
|
2146
|
+
* Generated-bound to the element type of the (optional)
|
|
2147
|
+
* `schedule.scheduleTimeSlots[]` array on `FetchEventResponse`.
|
|
2148
|
+
*/
|
|
2149
|
+
type ScheduleTimeSlot = NonNullable<ScheduleWithTimeSlots['scheduleTimeSlots']>[number];
|
|
2150
|
+
/**
|
|
2151
|
+
* A menu summary attached to a by-accessor event. Generated-bound to the
|
|
2152
|
+
* element type of `FetchEventResponse`'s optional `menus[]` array.
|
|
2153
|
+
*/
|
|
2154
|
+
type EventMenu = NonNullable<EventByAccessor['menus']>[number];
|
|
1616
2155
|
interface GetEventOptions {
|
|
1617
2156
|
/** Expand related resources (schedule, timeSlots, menus, posters) */
|
|
1618
2157
|
expand?: ('schedule' | 'timeSlots' | 'menus' | 'posters')[];
|
|
1619
2158
|
}
|
|
1620
|
-
type AreaBookingMode = '
|
|
1621
|
-
type AreaBookingRequestStatus = '
|
|
1622
|
-
type AreaBookingRequestSource = '
|
|
1623
|
-
type AreaBookingStatus = '
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
tags: string[] | null;
|
|
1628
|
-
filename: string;
|
|
1629
|
-
contentType: string;
|
|
1630
|
-
metadata: {
|
|
1631
|
-
width?: number;
|
|
1632
|
-
height?: number;
|
|
1633
|
-
duration?: number;
|
|
1634
|
-
} | null;
|
|
1635
|
-
cropArea: CropArea | null;
|
|
1636
|
-
publicUrl: string;
|
|
1637
|
-
}
|
|
1638
|
-
interface AreaFeature {
|
|
1639
|
-
icon: string;
|
|
1640
|
-
label: Record<string, string>;
|
|
1641
|
-
description?: Record<string, string>;
|
|
1642
|
-
}
|
|
1643
|
-
interface Area {
|
|
1644
|
-
id: string;
|
|
1645
|
-
venueId: string;
|
|
1646
|
-
accessor: string;
|
|
1647
|
-
name: Record<string, string>;
|
|
1648
|
-
description: Record<string, string> | null;
|
|
1649
|
-
longDescription: Record<string, string> | null;
|
|
1650
|
-
minCapacity: number | null;
|
|
1651
|
-
maxCapacity: number;
|
|
1652
|
-
currency: Currency;
|
|
1653
|
-
/** Base price in cents (flat price per booking). Null when pricing is per-person only. */
|
|
1654
|
-
basePrice: number | null;
|
|
1655
|
-
/** Per-guest price in cents. Null when pricing is base-only. */
|
|
1656
|
-
perPersonPrice: number | null;
|
|
1657
|
-
features: AreaFeature[] | null;
|
|
1658
|
-
bookingMode: AreaBookingMode;
|
|
1659
|
-
assets?: AreaAsset[];
|
|
1660
|
-
}
|
|
2159
|
+
type AreaBookingMode = schemas['FetchAreaResponse']['bookingMode'];
|
|
2160
|
+
type AreaBookingRequestStatus = schemas['SubmitAreaBookingRequestResponse']['status'];
|
|
2161
|
+
type AreaBookingRequestSource = schemas['SubmitAreaBookingRequestResponse']['source'];
|
|
2162
|
+
type AreaBookingStatus = schemas['FetchAreaBookingsResponse'][number]['status'];
|
|
2163
|
+
type AreaAsset = NonNullable<schemas['FetchAreaResponse']['assets']>[number];
|
|
2164
|
+
type AreaFeature = NonNullable<schemas['FetchAreaResponse']['features']>[number];
|
|
2165
|
+
type Area = schemas['FetchAreaResponse'];
|
|
1661
2166
|
interface GetAreaOptions {
|
|
1662
2167
|
expand?: 'assets'[];
|
|
1663
2168
|
}
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
date: string;
|
|
1667
|
-
/** HH:MM:SS, null for day-mode bookings */
|
|
1668
|
-
startTime: string | null;
|
|
1669
|
-
endTime: string | null;
|
|
1670
|
-
}
|
|
1671
|
-
interface AreaAvailabilityResponse {
|
|
1672
|
-
from: string;
|
|
1673
|
-
to: string;
|
|
1674
|
-
bookingMode: AreaBookingMode;
|
|
1675
|
-
occupied: AreaAvailabilityWindow[];
|
|
1676
|
-
}
|
|
2169
|
+
type AreaAvailabilityWindow = schemas['GetAreaAvailabilityResponse']['occupied'][number];
|
|
2170
|
+
type AreaAvailabilityResponse = schemas['GetAreaAvailabilityResponse'];
|
|
1677
2171
|
interface GetAreaAvailabilityOptions {
|
|
1678
2172
|
/** YYYY-MM-DD — defaults to today */
|
|
1679
2173
|
from?: string;
|
|
1680
2174
|
/** YYYY-MM-DD — defaults to today + 90d */
|
|
1681
2175
|
to?: string;
|
|
1682
2176
|
}
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
requestedDate: string;
|
|
1686
|
-
/** HH:MM:SS — omit for day-mode bookings */
|
|
1687
|
-
requestedStartTime?: string;
|
|
1688
|
-
requestedEndTime?: string;
|
|
1689
|
-
partySize: number;
|
|
1690
|
-
customerFirstName: string;
|
|
1691
|
-
customerLastName: string;
|
|
1692
|
-
customerEmail: string;
|
|
1693
|
-
customerPhone?: string;
|
|
1694
|
-
message?: string;
|
|
1695
|
-
source?: AreaBookingRequestSource;
|
|
1696
|
-
}
|
|
1697
|
-
interface AreaBookingRequestResponse {
|
|
1698
|
-
id: string;
|
|
1699
|
-
venueId: string;
|
|
1700
|
-
areaId: string;
|
|
1701
|
-
requestedDate: string;
|
|
1702
|
-
requestedStartTime: string | null;
|
|
1703
|
-
requestedEndTime: string | null;
|
|
1704
|
-
partySize: number;
|
|
1705
|
-
customerFirstName: string;
|
|
1706
|
-
customerLastName: string;
|
|
1707
|
-
customerEmail: string;
|
|
1708
|
-
customerPhone: string | null;
|
|
1709
|
-
message: string | null;
|
|
1710
|
-
source: AreaBookingRequestSource;
|
|
1711
|
-
status: AreaBookingRequestStatus;
|
|
1712
|
-
areaBookingId: string | null;
|
|
1713
|
-
createdAt: string | null;
|
|
1714
|
-
updatedAt: string | null;
|
|
1715
|
-
}
|
|
1716
|
-
type BasketStatus = 'active' | 'abandoned' | 'converted';
|
|
1717
|
-
type Currency = 'EUR' | 'CHF';
|
|
2177
|
+
type SubmitAreaBookingRequestPayload = schemas['SubmitAreaBookingPayload'];
|
|
2178
|
+
type AreaBookingRequestResponse = schemas['SubmitAreaBookingRequestResponse'];
|
|
1718
2179
|
/**
|
|
1719
|
-
*
|
|
2180
|
+
* Canonical basket — generated-bound to the `FetchBasketResponse`
|
|
2181
|
+
* component (the order3000 `fetchBasket` output schema is now precise).
|
|
2182
|
+
* Returned by `baskets.get(sessionId)`.
|
|
1720
2183
|
*/
|
|
1721
|
-
type
|
|
2184
|
+
type Basket = NonNullable<schemas['FetchBasketResponse']>;
|
|
1722
2185
|
/**
|
|
1723
|
-
*
|
|
1724
|
-
*
|
|
1725
|
-
* Each menu item can have its own portion size (quantity + unit),
|
|
1726
|
-
* allowing for precise tracking like "100g rice, 80g curry".
|
|
2186
|
+
* Basket lifecycle status — generated-bound to the `status` enum on
|
|
2187
|
+
* `FetchBasketResponse`. No longer a bare wire `string`.
|
|
1727
2188
|
*/
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
role: string | null;
|
|
1731
|
-
quantity: number;
|
|
1732
|
-
unit: Unit;
|
|
1733
|
-
}
|
|
1734
|
-
interface BasketItemMetadata {
|
|
1735
|
-
type?: 'tiffinbox' | 'bowl' | 'sushi';
|
|
1736
|
-
mode?: 2 | 3;
|
|
1737
|
-
upsell?: {
|
|
1738
|
-
tinOption: string;
|
|
1739
|
-
rollOption: string;
|
|
1740
|
-
};
|
|
1741
|
-
price?: number;
|
|
1742
|
-
[key: string]: unknown;
|
|
1743
|
-
}
|
|
2189
|
+
type BasketStatus = Basket['status'];
|
|
2190
|
+
type Currency = schemas['BasketTotals']['currency'];
|
|
1744
2191
|
/**
|
|
1745
|
-
*
|
|
1746
|
-
*
|
|
1747
|
-
* money amount; this object is outbound-only, for UI display.
|
|
2192
|
+
* Unit of measurement for portion tracking. Bound to the generated
|
|
2193
|
+
* add-to-basket request shape.
|
|
1748
2194
|
*/
|
|
1749
|
-
|
|
1750
|
-
depositwareTemplateId: string;
|
|
1751
|
-
name: Record<string, string>;
|
|
1752
|
-
amount: number;
|
|
1753
|
-
currency: Currency;
|
|
1754
|
-
}
|
|
2195
|
+
type Unit = NonNullable<schemas['AddToBasketRequest']['menuItems'][number]['unit']>;
|
|
1755
2196
|
/**
|
|
1756
|
-
* A basket item
|
|
1757
|
-
*
|
|
1758
|
-
*
|
|
1759
|
-
*
|
|
1760
|
-
* COUNT of basket items, not a sum of quantities.
|
|
2197
|
+
* A single basket item — generated-bound to the element type of
|
|
2198
|
+
* `FetchBasketResponse.items[]`. One physical product (e.g. a TiffinBox
|
|
2199
|
+
* with rice, curry, and sides); `Basket.itemCount` is the COUNT of basket
|
|
2200
|
+
* items, not a sum of menu-item quantities.
|
|
1761
2201
|
*/
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
* Server-persisted declared-return counts (from `baskets.declared_returns`).
|
|
1786
|
-
* Reflects the participant's last chip click. Clients seed their
|
|
1787
|
-
* local `declaredReturns` store from this at hydration time so the
|
|
1788
|
-
* chip count + Gesamt are consistent on first paint. Only positive
|
|
1789
|
-
* counts are present; zero entries are stripped.
|
|
1790
|
-
*/
|
|
1791
|
-
declaredReturns: DeclaredReturn[];
|
|
1792
|
-
expiresAt: string;
|
|
1793
|
-
createdAt: string | null;
|
|
1794
|
-
updatedAt: string | null;
|
|
1795
|
-
}
|
|
2202
|
+
type BasketItem = Basket['items'][number];
|
|
2203
|
+
/**
|
|
2204
|
+
* Reference to a menu item within a basket item — generated-bound to the
|
|
2205
|
+
* element type of `BasketItem.menuItems[]`. Each ref carries its own
|
|
2206
|
+
* portion size (quantity + unit) for precise tracking like
|
|
2207
|
+
* "100g rice, 80g curry".
|
|
2208
|
+
*/
|
|
2209
|
+
type BasketItemMenuItemRef = BasketItem['menuItems'][number];
|
|
2210
|
+
/**
|
|
2211
|
+
* Free-form per-basket-item metadata bag — generated-bound to the
|
|
2212
|
+
* (nullable) `metadata` object on `FetchBasketResponse.items[]`. The wire
|
|
2213
|
+
* contract types this as an open `{ [key: string]: unknown }` record;
|
|
2214
|
+
* thamarai narrows individual keys (`type`, `mode`, `upsell`, `price`) at
|
|
2215
|
+
* its own transform boundary.
|
|
2216
|
+
*/
|
|
2217
|
+
type BasketItemMetadata = NonNullable<BasketItem['metadata']>;
|
|
2218
|
+
/**
|
|
2219
|
+
* Deposit info on a basket item — generated-bound to the (nullable)
|
|
2220
|
+
* `deposit` object on `FetchBasketResponse.items[]`. order3000 refuses
|
|
2221
|
+
* any inbound deposit money amount; this object is outbound-only, for UI
|
|
2222
|
+
* display.
|
|
2223
|
+
*/
|
|
2224
|
+
type BasketItemDeposit = NonNullable<BasketItem['deposit']>;
|
|
1796
2225
|
/**
|
|
1797
|
-
* Order workflow status
|
|
2226
|
+
* Order workflow status — generated-bound to the `status` enum on
|
|
2227
|
+
* `FetchLatestOrderResponse` (order3000's `order_status`). No longer a
|
|
2228
|
+
* bare wire `string`.
|
|
1798
2229
|
*/
|
|
1799
|
-
type OrderStatus = '
|
|
2230
|
+
type OrderStatus = NonNullable<schemas['FetchLatestOrderResponse']>['status'];
|
|
1800
2231
|
/**
|
|
1801
|
-
* Payment workflow status
|
|
2232
|
+
* Payment workflow status — generated-bound to the `paymentStatus` enum
|
|
2233
|
+
* on `FetchLatestOrderResponse` (order3000's `payment_status`). No longer
|
|
2234
|
+
* a bare wire `string`.
|
|
1802
2235
|
*/
|
|
1803
|
-
type PaymentStatus = '
|
|
2236
|
+
type PaymentStatus = NonNullable<schemas['FetchLatestOrderResponse']>['paymentStatus'];
|
|
1804
2237
|
/**
|
|
1805
2238
|
* The most recent non-team order for a guest session, with the captured
|
|
1806
2239
|
* basket items + totals + declared returns inlined. Returned by
|
|
1807
|
-
* `orders.getLatest(sessionId)
|
|
1808
|
-
*
|
|
1809
|
-
*
|
|
1810
|
-
*
|
|
1811
|
-
*
|
|
2240
|
+
* `orders.getLatest(sessionId)` — `null` when the session has no
|
|
2241
|
+
* qualifying order (fresh sessionIds and team-only sessions both fall
|
|
2242
|
+
* through to `null`). Generated-bound to the `FetchLatestOrderResponse`
|
|
2243
|
+
* component (the order3000 `fetchLatestOrder` output schema is now
|
|
2244
|
+
* precise).
|
|
1812
2245
|
*/
|
|
1813
|
-
|
|
1814
|
-
id: string;
|
|
1815
|
-
/** URL-safe non-guessable id (e.g. `ORD-A3B7K2`). Nullable until backfill. */
|
|
1816
|
-
publicId: string | null;
|
|
1817
|
-
/** Cycling 100→999 per venue. Nullable until PaymentIntent assigns. */
|
|
1818
|
-
quickReferenceNumber: number | null;
|
|
1819
|
-
status: OrderStatus;
|
|
1820
|
-
paymentStatus: PaymentStatus;
|
|
1821
|
-
fulfillmentType: OrderFulfillmentType | null;
|
|
1822
|
-
/** ISO timestamp of pickup / delivery. */
|
|
1823
|
-
fulfillmentAt: string | null;
|
|
1824
|
-
orderedAt: string;
|
|
1825
|
-
totalAmount: number;
|
|
1826
|
-
currency: Currency;
|
|
1827
|
-
/** Captured basket items — same shape `Basket.items` uses. */
|
|
1828
|
-
items: BasketItem[];
|
|
1829
|
-
itemCount: number;
|
|
1830
|
-
/** Captured basket totals; `effectiveTotal` already reflects the credit. */
|
|
1831
|
-
totals: BasketTotals;
|
|
1832
|
-
/** Declared-return counts the customer locked in at submit time. */
|
|
1833
|
-
declaredReturns: DeclaredReturn[];
|
|
1834
|
-
}
|
|
2246
|
+
type LatestOrder = NonNullable<schemas['FetchLatestOrderResponse']>;
|
|
1835
2247
|
/**
|
|
1836
|
-
* One "I'll return N of this template" declaration.
|
|
1837
|
-
*
|
|
1838
|
-
* deposit money amount.
|
|
2248
|
+
* One "I'll return N of this template" declaration. Bound to the
|
|
2249
|
+
* generated basket-totals `returnable` element — clients never specify
|
|
2250
|
+
* a deposit money amount.
|
|
1839
2251
|
*/
|
|
1840
|
-
|
|
1841
|
-
depositwareTemplateId: string;
|
|
1842
|
-
count: number;
|
|
1843
|
-
}
|
|
2252
|
+
type DeclaredReturn = schemas['BasketTotals']['returnable'][number];
|
|
1844
2253
|
/**
|
|
1845
|
-
* Canonical basket totals (all cents)
|
|
1846
|
-
*
|
|
1847
|
-
*
|
|
2254
|
+
* Canonical basket totals (all cents), bound to the generated
|
|
2255
|
+
* `BasketTotals` component. The single figure clients read for every
|
|
2256
|
+
* displayed monetary value.
|
|
1848
2257
|
*/
|
|
1849
|
-
|
|
1850
|
-
currency: Currency;
|
|
1851
|
-
/** Food prices summed across basket items (tax-inclusive, no deposits). */
|
|
1852
|
-
itemsTotal: number;
|
|
1853
|
-
/** Tax portion extracted from `itemsTotal`. */
|
|
1854
|
-
taxAmount: number;
|
|
1855
|
-
/** Sum of deposits currently in the basket (one per returnable item). */
|
|
1856
|
-
depositCharge: number;
|
|
1857
|
-
/** `itemsTotal + depositCharge` — what an un-declared customer pays. */
|
|
1858
|
-
grossTotal: number;
|
|
1859
|
-
/** Credit owed for declared returns (bounded per-template by `returnable`). */
|
|
1860
|
-
depositCredit: number;
|
|
1861
|
-
/** `grossTotal − depositCredit`, clamped to zero. */
|
|
1862
|
-
effectiveTotal: number;
|
|
1863
|
-
/** When `depositCredit > grossTotal`, the excess is a cash refund due. */
|
|
1864
|
-
cashRefund: number;
|
|
1865
|
-
/** How many units of each depositware template the basket currently holds. */
|
|
1866
|
-
returnable: DeclaredReturn[];
|
|
1867
|
-
}
|
|
2258
|
+
type BasketTotals = schemas['BasketTotals'];
|
|
1868
2259
|
/**
|
|
1869
2260
|
* Request to add an item to the basket.
|
|
1870
2261
|
*
|
|
1871
2262
|
* Menu items can optionally include portion information (quantity/unit).
|
|
1872
2263
|
* If not provided, defaults to the menu item's configured portion size.
|
|
2264
|
+
* `venueAccessor` is injected by the SDK resource layer, so it's omitted
|
|
2265
|
+
* from the public caller shape.
|
|
1873
2266
|
*/
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
role?: string;
|
|
1879
|
-
quantity?: number;
|
|
1880
|
-
unit?: Unit;
|
|
1881
|
-
}>;
|
|
1882
|
-
metadata?: BasketItemMetadata;
|
|
1883
|
-
}
|
|
1884
|
-
interface AddToBasketResponse {
|
|
1885
|
-
basketItemId: string;
|
|
1886
|
-
itemCount: number;
|
|
1887
|
-
deposit: BasketItemDeposit | null;
|
|
1888
|
-
/**
|
|
1889
|
-
* Fresh canonical totals for the mutated basket (declaredReturns=[]).
|
|
1890
|
-
* Clients apply this directly to their store — no extra round trip.
|
|
1891
|
-
*/
|
|
1892
|
-
totals: BasketTotals;
|
|
1893
|
-
}
|
|
1894
|
-
interface RemoveFromBasketResponse {
|
|
1895
|
-
success: boolean;
|
|
1896
|
-
basketItemId: string;
|
|
1897
|
-
itemCount: number;
|
|
1898
|
-
/**
|
|
1899
|
-
* Fresh canonical totals for the mutated basket (declaredReturns=[]).
|
|
1900
|
-
* `null` when the basket has no items left after the removal.
|
|
1901
|
-
*/
|
|
1902
|
-
totals: BasketTotals | null;
|
|
1903
|
-
}
|
|
1904
|
-
interface CreatePaymentIntentRequest {
|
|
1905
|
-
basketId: string;
|
|
1906
|
-
currency: Currency;
|
|
1907
|
-
sessionId: string;
|
|
1908
|
-
fulfillmentType?: OrderFulfillmentType;
|
|
2267
|
+
type AddToBasketRequest = Omit<schemas['AddToBasketRequest'], 'venueId'>;
|
|
2268
|
+
type AddToBasketResponse = schemas['AddToBasketResponse'];
|
|
2269
|
+
type RemoveFromBasketResponse = schemas['RemoveFromBasketResponse'];
|
|
2270
|
+
type CreatePaymentIntentRequest = Omit<schemas['CreatePaymentIntentRequest'], 'venueAccessor' | 'fulfillmentAt'> & {
|
|
1909
2271
|
/**
|
|
1910
2272
|
* Optional — null / omitted in team-order mode. The Lead's pickup-time
|
|
1911
2273
|
* decision is stored on the team row and backfilled onto each child
|
|
1912
2274
|
* order at submit time.
|
|
1913
2275
|
*/
|
|
1914
2276
|
fulfillmentAt?: Date | string | null;
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
clientSecret: string;
|
|
1938
|
-
paymentIntentId: string;
|
|
1939
|
-
orderId: string;
|
|
1940
|
-
}
|
|
1941
|
-
interface CreateDeltaPaymentIntentRequest {
|
|
1942
|
-
basketId: string;
|
|
1943
|
-
sessionId: string;
|
|
1944
|
-
currency: Currency;
|
|
1945
|
-
/**
|
|
1946
|
-
* Deposit containers the participant declares they will return at
|
|
1947
|
-
* pickup. Used to apply deposit credit against the delta amount so the
|
|
1948
|
-
* server's `currentTotal` matches the client's displayed effective
|
|
1949
|
-
* total. Per-template references only.
|
|
1950
|
-
*/
|
|
1951
|
-
declaredReturns?: DeclaredReturn[];
|
|
1952
|
-
}
|
|
1953
|
-
interface CreateDeltaPaymentIntentResponse {
|
|
1954
|
-
/** null when Stripe confirmed the off-session PI without further action. */
|
|
1955
|
-
clientSecret: string | null;
|
|
1956
|
-
paymentIntentId: string;
|
|
1957
|
-
orderId: string;
|
|
1958
|
-
/** Delta amount actually charged (cents). */
|
|
1959
|
-
amount: number;
|
|
1960
|
-
/**
|
|
1961
|
-
* Stripe PaymentIntent status after confirm. Typically:
|
|
1962
|
-
* - 'requires_capture' → one-tap succeeded; capture happens at submit
|
|
1963
|
-
* - 'requires_action' → 3DS prompt required; client completes via clientSecret
|
|
1964
|
-
* - 'succeeded' (rare here, auto-capture would have to be set)
|
|
1965
|
-
*/
|
|
1966
|
-
status: string;
|
|
1967
|
-
}
|
|
1968
|
-
interface ReduceDeltaPaymentIntentRequest {
|
|
1969
|
-
basketId: string;
|
|
1970
|
-
sessionId: string;
|
|
1971
|
-
currency: Currency;
|
|
1972
|
-
/**
|
|
1973
|
-
* Deposit containers the participant declares they will return at pickup.
|
|
1974
|
-
* Per-template references only; order3000 refuses any deposit money
|
|
1975
|
-
* amount on input.
|
|
1976
|
-
*/
|
|
1977
|
-
declaredReturns?: DeclaredReturn[];
|
|
1978
|
-
}
|
|
1979
|
-
interface ReduceDeltaPaymentIntentResponse {
|
|
1980
|
-
orderId: string;
|
|
1981
|
-
/** New authorised total (cents) after the reduction. */
|
|
1982
|
-
paidTotal: number;
|
|
1983
|
-
/** Amount actually released (cents). */
|
|
1984
|
-
released: number;
|
|
1985
|
-
}
|
|
1986
|
-
interface ConfirmOrderRequest {
|
|
1987
|
-
paymentIntentId: string;
|
|
1988
|
-
}
|
|
1989
|
-
interface ConfirmOrderResponse {
|
|
1990
|
-
id: string;
|
|
1991
|
-
status: string;
|
|
1992
|
-
publicId: string | null;
|
|
1993
|
-
/** Cycling 100→999 short reference printed on receipts and shown to staff. */
|
|
1994
|
-
quickReferenceNumber: number | null;
|
|
1995
|
-
/** Customer ID for the order (for client-side tracking) */
|
|
1996
|
-
customerId?: string;
|
|
1997
|
-
}
|
|
1998
|
-
type SubscriptionPeriod = 'week' | 'month' | 'year';
|
|
1999
|
-
type SubscriberStatus = 'active' | 'paused' | 'cancelled' | 'past_due' | 'trialing';
|
|
2000
|
-
type SubscriptionCreditStatus = 'available' | 'redeemed' | 'expired';
|
|
2001
|
-
interface MenuSubscriptionPoster {
|
|
2002
|
-
id: string;
|
|
2003
|
-
menuSubscriptionId: string;
|
|
2004
|
-
storagePath: string;
|
|
2005
|
-
/** Public URL for accessing the poster image (no expiry) */
|
|
2006
|
-
publicUrl: string | null;
|
|
2007
|
-
filename: string;
|
|
2008
|
-
contentType: string;
|
|
2009
|
-
sizeBytes: number;
|
|
2010
|
-
sortIndex: string | null;
|
|
2011
|
-
createdBy: string | null;
|
|
2012
|
-
createdAt: string | null;
|
|
2013
|
-
}
|
|
2014
|
-
interface MenuSubscription {
|
|
2015
|
-
id: string;
|
|
2016
|
-
menuId: string;
|
|
2017
|
-
accessor: string;
|
|
2018
|
-
name: Record<string, string>;
|
|
2019
|
-
shortName: Record<string, string> | null;
|
|
2020
|
-
description: Record<string, string> | null;
|
|
2021
|
-
scheduleId: string | null;
|
|
2022
|
-
allowance: number;
|
|
2023
|
-
billingPeriod: SubscriptionPeriod;
|
|
2024
|
-
allowancePeriod: SubscriptionPeriod;
|
|
2025
|
-
redeemableTagSets: string[][];
|
|
2026
|
-
expiryInDays: number;
|
|
2027
|
-
price: number;
|
|
2028
|
-
currency: Currency;
|
|
2029
|
-
isActive: boolean;
|
|
2030
|
-
sortIndex: string | null;
|
|
2031
|
-
posters: MenuSubscriptionPoster[];
|
|
2032
|
-
}
|
|
2033
|
-
interface SubscribeRequest {
|
|
2034
|
-
email: string;
|
|
2035
|
-
firstName?: string;
|
|
2036
|
-
lastName?: string;
|
|
2037
|
-
sessionId?: string;
|
|
2038
|
-
successUrl: string;
|
|
2039
|
-
cancelUrl: string;
|
|
2040
|
-
}
|
|
2041
|
-
interface SubscribeResponse {
|
|
2042
|
-
checkoutUrl: string;
|
|
2043
|
-
sessionId: string;
|
|
2044
|
-
}
|
|
2045
|
-
interface SubscriptionCredit {
|
|
2046
|
-
id: string;
|
|
2047
|
-
subscriberId: string;
|
|
2048
|
-
periodStart: string;
|
|
2049
|
-
periodEnd: string;
|
|
2050
|
-
expiresAt: string;
|
|
2051
|
-
status: SubscriptionCreditStatus;
|
|
2052
|
-
redeemedAt: string | null;
|
|
2053
|
-
orderId: string | null;
|
|
2054
|
-
createdAt: string | null;
|
|
2055
|
-
}
|
|
2277
|
+
};
|
|
2278
|
+
type CreatePaymentIntentResponse = schemas['CreatePaymentIntentResponse'];
|
|
2279
|
+
type CreateDeltaPaymentIntentRequest = Omit<schemas['CreateDeltaPaymentIntentRequest'], 'venueAccessor'>;
|
|
2280
|
+
type CreateDeltaPaymentIntentResponse = schemas['CreateDeltaPaymentIntentResponse'];
|
|
2281
|
+
type ReduceDeltaPaymentIntentRequest = Omit<schemas['ReduceDeltaPaymentIntentRequest'], 'venueAccessor'>;
|
|
2282
|
+
type ReduceDeltaPaymentIntentResponse = schemas['ReduceDeltaPaymentIntentResponse'];
|
|
2283
|
+
type ConfirmOrderRequest = Omit<schemas['ConfirmOrderRequest'], 'venueAccessor' | 'orderId'>;
|
|
2284
|
+
type ConfirmOrderResponse = schemas['ConfirmOrderResponse'];
|
|
2285
|
+
type SubscriptionPeriod = schemas['GetSubscriptionResponse']['billingPeriod'];
|
|
2286
|
+
/**
|
|
2287
|
+
* Subscriber lifecycle status — generated-bound to the `subscriber_status`
|
|
2288
|
+
* pgEnum, surfaced via order3000's `FetchSubscribersResponse[].status`
|
|
2289
|
+
* (and `fetchMenuSubscription`). openapi-typescript hoists the shared
|
|
2290
|
+
* enum into `components.schemas['SubscriberStatus']`.
|
|
2291
|
+
*/
|
|
2292
|
+
type SubscriberStatus = schemas['SubscriberStatus'];
|
|
2293
|
+
type SubscriptionCreditStatus = schemas['GetSubscriptionCreditsResponse'][number]['status'];
|
|
2294
|
+
type MenuSubscriptionPoster = NonNullable<schemas['GetSubscriptionResponse']['posters']>[number];
|
|
2295
|
+
type MenuSubscription = schemas['GetSubscriptionResponse'];
|
|
2296
|
+
type SubscribeRequest = schemas['SubscribeToSubscriptionBody'];
|
|
2297
|
+
type SubscribeResponse = schemas['SubscribeToSubscriptionResponse'];
|
|
2298
|
+
type SubscriptionCredit = schemas['GetSubscriptionCreditsResponse'][number];
|
|
2056
2299
|
|
|
2057
2300
|
declare class AreasResource extends BaseResource {
|
|
2058
2301
|
constructor(tokenManager: TokenManager, baseUrl: string);
|
|
@@ -2366,34 +2609,80 @@ declare class SubscriptionsResource extends BaseResource {
|
|
|
2366
2609
|
}
|
|
2367
2610
|
|
|
2368
2611
|
/**
|
|
2369
|
-
*
|
|
2370
|
-
*
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2612
|
+
* Generated by Kubb (https://kubb.dev/).
|
|
2613
|
+
* Do not edit manually.
|
|
2614
|
+
*/
|
|
2615
|
+
|
|
2616
|
+
declare const fulfillmentTypeSchema: z.ZodEnum<{
|
|
2617
|
+
pickup: "pickup";
|
|
2618
|
+
delivery: "delivery";
|
|
2619
|
+
}>;
|
|
2620
|
+
|
|
2621
|
+
/**
|
|
2622
|
+
* Generated by Kubb (https://kubb.dev/).
|
|
2623
|
+
* Do not edit manually.
|
|
2624
|
+
*/
|
|
2625
|
+
|
|
2626
|
+
declare const participantStatusSchema: z.ZodEnum<{
|
|
2627
|
+
placed: "placed";
|
|
2628
|
+
completed: "completed";
|
|
2629
|
+
cancelled: "cancelled";
|
|
2630
|
+
browsing: "browsing";
|
|
2631
|
+
authorized: "authorized";
|
|
2632
|
+
cash_pending: "cash_pending";
|
|
2633
|
+
}>;
|
|
2634
|
+
|
|
2635
|
+
/**
|
|
2636
|
+
* Generated by Kubb (https://kubb.dev/).
|
|
2637
|
+
* Do not edit manually.
|
|
2638
|
+
*/
|
|
2639
|
+
|
|
2640
|
+
declare const paymentMethodSchema: z.ZodEnum<{
|
|
2641
|
+
card: "card";
|
|
2642
|
+
cash: "cash";
|
|
2643
|
+
voucher: "voucher";
|
|
2644
|
+
}>;
|
|
2645
|
+
|
|
2646
|
+
/**
|
|
2647
|
+
* Generated by Kubb (https://kubb.dev/).
|
|
2648
|
+
* Do not edit manually.
|
|
2649
|
+
*/
|
|
2650
|
+
|
|
2651
|
+
declare const teamOrderStatusSchema: z.ZodEnum<{
|
|
2652
|
+
draft: "draft";
|
|
2653
|
+
collecting: "collecting";
|
|
2654
|
+
locked: "locked";
|
|
2655
|
+
placed: "placed";
|
|
2656
|
+
ready: "ready";
|
|
2657
|
+
completed: "completed";
|
|
2658
|
+
cancelled: "cancelled";
|
|
2659
|
+
}>;
|
|
2660
|
+
|
|
2661
|
+
/**
|
|
2662
|
+
* Runtime enum objects with an `enumValues` tuple — kept as a thin shim
|
|
2663
|
+
* over the kubb-generated `z.enum(...)` schemas so that downstream SDK
|
|
2664
|
+
* consumers can write `z.enum(paymentMethodEnum.enumValues)`, the same
|
|
2665
|
+
* idiom order3000's server uses against the real Drizzle pgEnum.
|
|
2376
2666
|
*
|
|
2377
|
-
* The
|
|
2378
|
-
*
|
|
2379
|
-
* is a standalone package and can't import from the app's Drizzle schema.
|
|
2667
|
+
* The values themselves are now sourced from `apps/order3000/public/openapi.json`
|
|
2668
|
+
* via kubb — no manual mirror to maintain.
|
|
2380
2669
|
*/
|
|
2381
2670
|
declare const paymentMethodEnum: {
|
|
2382
|
-
enumValues:
|
|
2671
|
+
enumValues: ("card" | "cash" | "voucher")[];
|
|
2383
2672
|
};
|
|
2384
2673
|
declare const fulfillmentTypeEnum: {
|
|
2385
|
-
enumValues:
|
|
2674
|
+
enumValues: ("pickup" | "delivery")[];
|
|
2386
2675
|
};
|
|
2387
2676
|
declare const teamOrderStatusEnum: {
|
|
2388
|
-
enumValues:
|
|
2677
|
+
enumValues: ("draft" | "collecting" | "locked" | "placed" | "ready" | "completed" | "cancelled")[];
|
|
2389
2678
|
};
|
|
2390
2679
|
declare const participantStatusEnum: {
|
|
2391
|
-
enumValues:
|
|
2680
|
+
enumValues: ("placed" | "completed" | "cancelled" | "browsing" | "authorized" | "cash_pending")[];
|
|
2392
2681
|
};
|
|
2393
|
-
type PaymentMethod =
|
|
2394
|
-
type FulfillmentType =
|
|
2395
|
-
type TeamOrderStatus =
|
|
2396
|
-
type ParticipantStatus =
|
|
2682
|
+
type PaymentMethod = z$1.infer<typeof paymentMethodSchema>;
|
|
2683
|
+
type FulfillmentType = z$1.infer<typeof fulfillmentTypeSchema>;
|
|
2684
|
+
type TeamOrderStatus = z$1.infer<typeof teamOrderStatusSchema>;
|
|
2685
|
+
type ParticipantStatus = z$1.infer<typeof participantStatusSchema>;
|
|
2397
2686
|
interface TeamDeliveryAddress {
|
|
2398
2687
|
street: string;
|
|
2399
2688
|
city: string;
|
|
@@ -2744,7 +3033,7 @@ declare class TeamOrdersResource {
|
|
|
2744
3033
|
/**
|
|
2745
3034
|
* Lead sets when the team will start eating. Client sends HH:MM; server
|
|
2746
3035
|
* computes the delta against `fulfillmentAt` and stores it as
|
|
2747
|
-
* `
|
|
3036
|
+
* `dining_offset` (ms) so the intent survives any later pickup change.
|
|
2748
3037
|
*/
|
|
2749
3038
|
setDiningTime(publicId: string, request: {
|
|
2750
3039
|
sessionId: string;
|
|
@@ -2753,7 +3042,7 @@ declare class TeamOrdersResource {
|
|
|
2753
3042
|
teamOrderId: string;
|
|
2754
3043
|
status: TeamOrderStatus;
|
|
2755
3044
|
diningTime: string;
|
|
2756
|
-
|
|
3045
|
+
diningOffset: number;
|
|
2757
3046
|
}>;
|
|
2758
3047
|
/**
|
|
2759
3048
|
* Toggle a participant's "settled" tick on the team Lead's
|
|
@@ -2855,7 +3144,7 @@ interface MenuItemRow {
|
|
|
2855
3144
|
dish_id: string | null;
|
|
2856
3145
|
beverage_id: string | null;
|
|
2857
3146
|
price_adjustment: number;
|
|
2858
|
-
currency:
|
|
3147
|
+
currency: Currency;
|
|
2859
3148
|
is_active: boolean;
|
|
2860
3149
|
is_featured: boolean;
|
|
2861
3150
|
tags: string[] | null;
|
|
@@ -2960,19 +3249,63 @@ interface ScheduleInfo {
|
|
|
2960
3249
|
}
|
|
2961
3250
|
interface ScheduleInput {
|
|
2962
3251
|
rrule?: string | null;
|
|
2963
|
-
|
|
3252
|
+
/** Slot interval in milliseconds (codebase convention). */
|
|
3253
|
+
intervalDuration?: number | null;
|
|
2964
3254
|
scheduleTimeSlots?: ScheduleTimeSlot[];
|
|
2965
3255
|
}
|
|
2966
3256
|
/**
|
|
2967
3257
|
* Extract schedule information from a schedule object.
|
|
2968
3258
|
* Returns time range and active days for display purposes.
|
|
2969
3259
|
*
|
|
2970
|
-
* @param schedule - Schedule object with rrule,
|
|
3260
|
+
* @param schedule - Schedule object with rrule, intervalDuration (ms), and scheduleTimeSlots
|
|
2971
3261
|
* @returns ScheduleInfo with timeRange and activeDays
|
|
2972
3262
|
*/
|
|
2973
3263
|
declare function getScheduleInfo(schedule: ScheduleInput | null | undefined): ScheduleInfo;
|
|
2974
3264
|
|
|
2975
|
-
|
|
3265
|
+
/**
|
|
3266
|
+
* Generated by Kubb (https://kubb.dev/).
|
|
3267
|
+
* Do not edit manually.
|
|
3268
|
+
*/
|
|
3269
|
+
|
|
3270
|
+
declare const deliveryAddressSchema: z.ZodObject<{
|
|
3271
|
+
street: z.ZodString;
|
|
3272
|
+
city: z.ZodString;
|
|
3273
|
+
state: z.ZodString;
|
|
3274
|
+
postalCode: z.ZodString;
|
|
3275
|
+
country: z.ZodString;
|
|
3276
|
+
}, z.core.$strip>;
|
|
3277
|
+
|
|
3278
|
+
/**
|
|
3279
|
+
* Generated by Kubb (https://kubb.dev/).
|
|
3280
|
+
* Do not edit manually.
|
|
3281
|
+
*/
|
|
3282
|
+
/**
|
|
3283
|
+
* DeliveryAddress
|
|
3284
|
+
*/
|
|
3285
|
+
type DeliveryAddress = {
|
|
3286
|
+
/**
|
|
3287
|
+
* @type string
|
|
3288
|
+
*/
|
|
3289
|
+
street: string;
|
|
3290
|
+
/**
|
|
3291
|
+
* @type string
|
|
3292
|
+
*/
|
|
3293
|
+
city: string;
|
|
3294
|
+
/**
|
|
3295
|
+
* @type string
|
|
3296
|
+
*/
|
|
3297
|
+
state: string;
|
|
3298
|
+
/**
|
|
3299
|
+
* @type string
|
|
3300
|
+
*/
|
|
3301
|
+
postalCode: string;
|
|
3302
|
+
/**
|
|
3303
|
+
* @type string
|
|
3304
|
+
*/
|
|
3305
|
+
country: string;
|
|
3306
|
+
};
|
|
3307
|
+
|
|
3308
|
+
interface O3KClientConfig {
|
|
2976
3309
|
clientId: string;
|
|
2977
3310
|
clientSecret: string;
|
|
2978
3311
|
venueId?: string;
|
|
@@ -2990,7 +3323,7 @@ interface Order3000ClientConfig {
|
|
|
2990
3323
|
*/
|
|
2991
3324
|
tokenUrl?: string;
|
|
2992
3325
|
}
|
|
2993
|
-
declare class
|
|
3326
|
+
declare class O3KClient {
|
|
2994
3327
|
areas: AreasResource;
|
|
2995
3328
|
articles: ArticlesResource;
|
|
2996
3329
|
baskets: BasketsResource;
|
|
@@ -3005,8 +3338,8 @@ declare class Order3000Client {
|
|
|
3005
3338
|
realtime: RealtimeManager;
|
|
3006
3339
|
private readonly baseUrl;
|
|
3007
3340
|
private readonly tokenManager;
|
|
3008
|
-
constructor(config:
|
|
3341
|
+
constructor(config: O3KClientConfig);
|
|
3009
3342
|
}
|
|
3010
3343
|
|
|
3011
|
-
export {
|
|
3012
|
-
export type { AddToBasketRequest, AddToBasketResponse, Area, AreaAsset, AreaAvailabilityResponse, AreaAvailabilityWindow, AreaBookingMode, AreaBookingRequestResponse, AreaBookingRequestSource, AreaBookingRequestStatus, AreaBookingStatus, AreaFeature, Article, Basket, BasketItem, BasketItemDeposit, BasketItemMenuItemRef, BasketItemMetadata, BasketStatus, BasketTotals, CancelTeamOrderResponse, ConfirmOrderRequest, ConfirmOrderResponse, CreateDeltaPaymentIntentRequest, CreateDeltaPaymentIntentResponse, CreatePaymentIntentRequest, CreatePaymentIntentResponse, CreateTeamOrderRequest, CreateTeamOrderResponse, CropArea, Currency, DayOfWeek, DeclaredReturn, Event, EventByAccessor, EventMenu, EventPoster, EventRow, ExtendDeadlineResponse as
|
|
3344
|
+
export { O3KClient, deliveryAddressSchema as O3KDeliveryAddressSchema, fulfillmentTypeEnum as O3KFulfillmentTypeEnum, getScheduleInfo as O3KGetScheduleInfo, participantStatusEnum as O3KParticipantStatusEnum, paymentMethodEnum as O3KPaymentMethodEnum, teamOrderStatusEnum as O3KTeamOrderStatusEnum };
|
|
3345
|
+
export type { AddToBasketRequest as O3KAddToBasketRequest, AddToBasketResponse as O3KAddToBasketResponse, Area as O3KArea, AreaAsset as O3KAreaAsset, AreaAvailabilityResponse as O3KAreaAvailabilityResponse, AreaAvailabilityWindow as O3KAreaAvailabilityWindow, AreaBookingMode as O3KAreaBookingMode, AreaBookingRequestResponse as O3KAreaBookingRequestResponse, AreaBookingRequestSource as O3KAreaBookingRequestSource, AreaBookingRequestStatus as O3KAreaBookingRequestStatus, AreaBookingStatus as O3KAreaBookingStatus, AreaFeature as O3KAreaFeature, Article as O3KArticle, Basket as O3KBasket, BasketItem as O3KBasketItem, BasketItemDeposit as O3KBasketItemDeposit, BasketItemMenuItemRef as O3KBasketItemMenuItemRef, BasketItemMetadata as O3KBasketItemMetadata, BasketStatus as O3KBasketStatus, BasketTotals as O3KBasketTotals, CancelTeamOrderResponse as O3KCancelTeamOrderResponse, O3KClientConfig, ConfirmOrderRequest as O3KConfirmOrderRequest, ConfirmOrderResponse as O3KConfirmOrderResponse, CreateDeltaPaymentIntentRequest as O3KCreateDeltaPaymentIntentRequest, CreateDeltaPaymentIntentResponse as O3KCreateDeltaPaymentIntentResponse, CreatePaymentIntentRequest as O3KCreatePaymentIntentRequest, CreatePaymentIntentResponse as O3KCreatePaymentIntentResponse, CreateTeamOrderRequest as O3KCreateTeamOrderRequest, CreateTeamOrderResponse as O3KCreateTeamOrderResponse, CropArea as O3KCropArea, Currency as O3KCurrency, DayOfWeek as O3KDayOfWeek, DeclaredReturn as O3KDeclaredReturn, DeliveryAddress as O3KDeliveryAddress, Event as O3KEvent, EventByAccessor as O3KEventByAccessor, EventMenu as O3KEventMenu, EventPoster as O3KEventPoster, EventRow as O3KEventRow, ExtendDeadlineResponse as O3KExtendTeamOrderDeadlineResponse, FeatureImage as O3KFeatureImage, FetchTeamOrderResponse as O3KFetchTeamOrderResponse, GetAreaAvailabilityOptions as O3KGetAreaAvailabilityOptions, GetAreaOptions as O3KGetAreaOptions, GetArticleResponse as O3KGetArticleResponse, GetEventOptions as O3KGetEventOptions, GetMenuOptions as O3KGetMenuOptions, GetVenueResponse as O3KGetVenueResponse, JoinTeamOrderRequest as O3KJoinTeamOrderRequest, JoinTeamOrderResponse as O3KJoinTeamOrderResponse, LatestOrder as O3KLatestOrder, ListArticlesOptions as O3KListArticlesOptions, ListArticlesResponse as O3KListArticlesResponse, ListEventsOptions as O3KListEventsOptions, ListEventsResponse as O3KListEventsResponse, Menu as O3KMenu, MenuAsset as O3KMenuAsset, MenuBeverage as O3KMenuBeverage, MenuBundle as O3KMenuBundle, MenuBundleDeposit as O3KMenuBundleDeposit, MenuDish as O3KMenuDish, MenuItem as O3KMenuItem, MenuItemRow as O3KMenuItemRow, MenuItemType as O3KMenuItemType, MenuSubscription as O3KMenuSubscription, MenuSubscriptionPoster as O3KMenuSubscriptionPoster, OrderFulfillmentType as O3KOrderFulfillmentType, OrderStatus as O3KOrderStatus, PatchArticleRequest as O3KPatchArticleRequest, PatchArticleResponse as O3KPatchArticleResponse, PatchFeatureImageRequest as O3KPatchFeatureImageRequest, PaymentStatus as O3KPaymentStatus, PlaceOrderRequest as O3KPlaceOrderRequest, Promotion as O3KPromotion, RealtimeConfig as O3KRealtimeConfig, RealtimeEvent as O3KRealtimeEvent, RealtimeSubscription as O3KRealtimeSubscription, RemoveFromBasketResponse as O3KRemoveFromBasketResponse, Schedule as O3KSchedule, ScheduleInfo as O3KScheduleInfo, ScheduleOverride as O3KScheduleOverride, ScheduleOverrideRow as O3KScheduleOverrideRow, ScheduleRow as O3KScheduleRow, ScheduleTimeSlot as O3KScheduleTimeSlot, ScheduleWithTimeSlots as O3KScheduleWithTimeSlots, SubmitAreaBookingRequestPayload as O3KSubmitAreaBookingRequestPayload, SubmitTeamOrderResponse as O3KSubmitTeamOrderResponse, SubscribeRequest as O3KSubscribeRequest, SubscribeResponse as O3KSubscribeResponse, SubscriberStatus as O3KSubscriberStatus, SubscriptionCredit as O3KSubscriptionCredit, SubscriptionCreditStatus as O3KSubscriptionCreditStatus, SubscriptionOptions as O3KSubscriptionOptions, SubscriptionPeriod as O3KSubscriptionPeriod, SwitchFulfillmentResponse as O3KSwitchTeamOrderFulfillmentResponse, TeamDeliveryAddress as O3KTeamDeliveryAddress, TeamOrderBasketItem as O3KTeamOrderBasketItem, TeamOrderBasketItemMenuItemRef as O3KTeamOrderBasketItemMenuItemRef, FulfillmentType as O3KTeamOrderFulfillmentType, TeamOrderParticipant as O3KTeamOrderParticipant, ParticipantStatus as O3KTeamOrderParticipantStatus, PaymentMethod as O3KTeamOrderPaymentMethod, TeamOrderStatus as O3KTeamOrderStatus, ThresholdCheck as O3KTeamOrderThresholdCheck, TimeSlot as O3KTimeSlot, Unit as O3KUnit, UpdateDeliveryAddressResponse as O3KUpdateTeamOrderDeliveryAddressResponse, UploadFeatureImageArgs as O3KUploadFeatureImageArgs, Venue as O3KVenue };
|