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/dist/schemas.mjs CHANGED
@@ -1,140 +1,2769 @@
1
- import { z } from 'zod';
2
-
3
- const Area = z.object({ id: z.string(), venueId: z.string(), accessor: z.string(), name: z.record(z.string()), description: z.record(z.string()).nullable(), longDescription: z.record(z.string()).nullable(), minCapacity: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), maxCapacity: z.number().int().gte(-9007199254740991).lte(9007199254740991), currency: z.enum(["EUR", "CHF"]), basePrice: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), perPersonPrice: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), features: z.array(z.object({ icon: z.string(), label: z.record(z.string()), description: z.record(z.string()).optional() }).strict()).nullable(), bookingMode: z.enum(["slot", "day"]), assets: z.array(z.object({ id: z.string(), type: z.enum(["image", "video", "document"]), tags: z.array(z.string()).nullable(), filename: z.string(), contentType: z.string(), metadata: z.object({ width: z.number(), height: z.number(), duration: z.number() }).partial().strict().nullable(), cropArea: z.object({ x: z.number(), y: z.number(), width: z.number(), height: z.number() }).strict().nullable(), publicUrl: z.string().url() }).strict()).optional() }).strict();
4
- const ListAreasResponse = z.array(Area);
5
- const GetAreaResponse = z.object({ id: z.string(), venueId: z.string(), accessor: z.string(), name: z.record(z.string()), description: z.record(z.string()).nullable(), longDescription: z.record(z.string()).nullable(), minCapacity: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), maxCapacity: z.number().int().gte(-9007199254740991).lte(9007199254740991), currency: z.enum(["EUR", "CHF"]), basePrice: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), perPersonPrice: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), features: z.array(z.object({ icon: z.string(), label: z.record(z.string()), description: z.record(z.string()).optional() }).strict()).nullable(), bookingMode: z.enum(["slot", "day"]), assets: z.array(z.object({ id: z.string(), type: z.enum(["image", "video", "document"]), tags: z.array(z.string()).nullable(), filename: z.string(), contentType: z.string(), metadata: z.object({ width: z.number(), height: z.number(), duration: z.number() }).partial().strict().nullable(), cropArea: z.object({ x: z.number(), y: z.number(), width: z.number(), height: z.number() }).strict().nullable(), publicUrl: z.string().url() }).strict()).optional() }).strict();
6
- const GetAreaAvailabilityResponse = z.object({ from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/), to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/), bookingMode: z.enum(["slot", "day"]), occupied: z.array(z.object({ date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/), startTime: z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).nullable(), endTime: z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).nullable() }).strict()) }).strict();
7
- const SubmitAreaBookingRequest = z.object({ requestedDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/), requestedStartTime: z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).optional(), requestedEndTime: z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).optional(), partySize: z.number().int().lte(9007199254740991), customerFirstName: z.string().min(1), customerLastName: z.string().min(1), customerEmail: z.string().regex(/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/).email(), customerPhone: z.string().optional(), message: z.string().optional(), source: z.enum(["website", "phone", "walk_in"]).optional() }).strict();
8
- const SubmitAreaBookingResponse = z.object({ id: z.string(), venueId: z.string(), areaId: z.string(), requestedDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/), requestedStartTime: z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).nullable(), requestedEndTime: z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).nullable(), partySize: z.number().int().gte(-9007199254740991).lte(9007199254740991), customerFirstName: z.string(), customerLastName: z.string(), customerEmail: z.string(), customerPhone: z.string().nullable(), message: z.string().nullable(), source: z.enum(["website", "phone", "walk_in"]), status: z.enum(["pending", "approved", "rejected", "cancelled"]), areaBookingId: z.string().nullable(), createdAt: z.string().nullable(), updatedAt: z.string().nullable() }).strict();
9
- const includeDrafts = z.union([z.literal("true"), z.literal("false")]).optional();
10
- const FeatureImage = z.object({ id: z.string(), publicUrl: z.string().nullable(), locale: z.string(), caption: z.object({}).partial().strict().passthrough().nullable(), alt: z.object({}).partial().strict().passthrough().nullable(), captionByLocale: z.object({}).partial().strict().passthrough(), altByLocale: z.object({}).partial().strict().passthrough() }).strict();
11
- const Article = z.object({ id: z.string(), venueId: z.string(), accessor: z.string(), slug: z.record(z.object({}).partial().strict().passthrough()), title: z.record(z.object({}).partial().strict().passthrough()), excerpt: z.record(z.object({}).partial().strict().passthrough()), content: z.object({}).partial().strict().passthrough().nullable(), tags: z.array(z.string()), isActive: z.boolean(), isFeatured: z.boolean(), priority: z.number().int().gte(-2147483648).lte(2147483647), publishedAt: z.unknown().nullable(), createdAt: z.unknown().nullable(), updatedAt: z.unknown().nullable(), featureImage: FeatureImage.nullable() }).strict();
12
- const ListArticlesResponse = z.array(Article);
13
- const GetArticleResponse = z.object({ id: z.string(), venueId: z.string(), accessor: z.string(), slug: z.record(z.object({}).partial().strict().passthrough()), title: z.record(z.object({}).partial().strict().passthrough()), excerpt: z.record(z.object({}).partial().strict().passthrough()), content: z.object({}).partial().strict().passthrough().nullable(), tags: z.array(z.string()), isActive: z.boolean(), isFeatured: z.boolean(), priority: z.number().int().gte(-2147483648).lte(2147483647), publishedAt: z.unknown().nullable(), createdAt: z.unknown().nullable(), updatedAt: z.unknown().nullable(), featureImage: FeatureImage.nullable() }).strict();
14
- const PatchArticleRequest = z.object({ slug: z.record(z.union([z.string(), z.object({}).partial().strict().passthrough()])), title: z.record(z.union([z.string(), z.object({}).partial().strict().passthrough()])), excerpt: z.record(z.union([z.string(), z.object({}).partial().strict().passthrough()])), content: z.object({}).partial().strict().passthrough(), tags: z.array(z.string()), isActive: z.boolean(), isFeatured: z.boolean(), priority: z.number().int().gte(-9007199254740991).lte(9007199254740991) }).partial().strict();
15
- const PatchArticleResponse = z.object({ id: z.string(), venueId: z.string(), accessor: z.string(), slug: z.record(z.object({}).partial().strict().passthrough()), title: z.record(z.object({}).partial().strict().passthrough()), excerpt: z.record(z.object({}).partial().strict().passthrough()), content: z.object({}).partial().strict().passthrough().nullable(), tags: z.array(z.string()), isActive: z.boolean(), isFeatured: z.boolean(), priority: z.number().int().gte(-2147483648).lte(2147483647), publishedAt: z.unknown().nullable(), createdAt: z.unknown().nullable(), updatedAt: z.unknown().nullable(), featureImage: FeatureImage.nullable() }).strict();
16
- const UploadFeatureImageRequest = z.object({ file: z.unknown() }).strict();
17
- const PatchFeatureImageRequest = z.object({ caption: z.object({}).partial().strict().passthrough(), alt: z.object({}).partial().strict().passthrough() }).partial().strict();
18
- const AddToBasketRequest = z.object({ venueId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), sessionId: z.string().min(1), menuItems: z.array(z.object({ menuItemId: z.string().min(1), role: z.string().optional(), quantity: z.number().gt(0).optional(), unit: z.enum(["grams", "kilograms", "liters", "milliliters", "pieces"]).optional() }).strict()).min(1), metadata: z.object({}).partial().strict().passthrough().optional() }).strict();
19
- const AddToBasketResponse = z.object({ basketItemId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), itemCount: z.number().int().gte(0).lte(9007199254740991), deposit: z.object({ depositwareTemplateId: z.string(), name: z.record(z.string()), amount: z.number().int().gte(0).lte(9007199254740991), currency: z.enum(["EUR", "CHF"]) }).strict().nullable(), totals: z.object({ currency: z.enum(["EUR", "CHF"]), itemsTotal: z.number().int().gte(0).lte(9007199254740991), taxAmount: z.number().int().gte(0).lte(9007199254740991), depositCharge: z.number().int().gte(0).lte(9007199254740991), grossTotal: z.number().int().gte(0).lte(9007199254740991), depositCredit: z.number().int().gte(0).lte(9007199254740991), effectiveTotal: z.number().int().gte(0).lte(9007199254740991), cashRefund: z.number().int().gte(0).lte(9007199254740991), returnable: z.array(z.object({ depositwareTemplateId: z.string(), count: z.number().int().gte(0).lte(9007199254740991) }).strict()) }).strict() }).strict();
20
- const RemoveFromBasketResponse = z.object({ success: z.boolean(), basketItemId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), itemCount: z.number().int().gte(0).lte(9007199254740991), totals: z.object({ currency: z.enum(["EUR", "CHF"]), itemsTotal: z.number().int().gte(0).lte(9007199254740991), taxAmount: z.number().int().gte(0).lte(9007199254740991), depositCharge: z.number().int().gte(0).lte(9007199254740991), grossTotal: z.number().int().gte(0).lte(9007199254740991), depositCredit: z.number().int().gte(0).lte(9007199254740991), effectiveTotal: z.number().int().gte(0).lte(9007199254740991), cashRefund: z.number().int().gte(0).lte(9007199254740991), returnable: z.array(z.object({ depositwareTemplateId: z.string(), count: z.number().int().gte(0).lte(9007199254740991) }).strict()) }).strict().nullable() }).strict();
21
- const GetBasketTotalsRequest = z.object({ declaredReturns: z.array(z.object({ depositwareTemplateId: z.string().min(1), count: z.number().int().gte(0).lte(9007199254740991) }).strict()) }).partial().strict();
22
- const GetBasketTotalsResponse = z.object({ currency: z.enum(["EUR", "CHF"]), itemsTotal: z.number().int().gte(0).lte(9007199254740991), taxAmount: z.number().int().gte(0).lte(9007199254740991), depositCharge: z.number().int().gte(0).lte(9007199254740991), grossTotal: z.number().int().gte(0).lte(9007199254740991), depositCredit: z.number().int().gte(0).lte(9007199254740991), effectiveTotal: z.number().int().gte(0).lte(9007199254740991), cashRefund: z.number().int().gte(0).lte(9007199254740991), returnable: z.array(z.object({ depositwareTemplateId: z.string(), count: z.number().int().gte(0).lte(9007199254740991) }).strict()) }).strict();
23
- const SetBasketDeclaredReturnsRequest = z.object({ basketId: z.string().min(1), sessionId: z.string().min(1), declaredReturns: z.array(z.object({ depositwareTemplateId: z.string().min(1), count: z.number().int().gte(0).lte(9007199254740991) }).strict()) }).strict();
24
- const SetBasketDeclaredReturnsResponse = z.object({ basketId: z.string(), declaredReturns: z.array(z.object({ depositwareTemplateId: z.string().min(1), count: z.number().int().gte(0).lte(9007199254740991) }).strict()) }).strict();
25
- const CreateEventRequest = z.object({ accessor: z.string().nullish(), name: z.union([z.union([z.string(), z.number(), z.boolean(), z.literal(null)]), z.object({}).partial().strict().passthrough(), z.array(z.unknown())]), description: z.union([z.union([z.string(), z.number(), z.boolean(), z.literal(null)]), z.object({}).partial().strict().passthrough(), z.array(z.unknown())]).nullish(), scheduleId: z.string().nullish(), maxBookings: z.number().int().gte(-2147483648).lte(2147483647).nullish(), maxGuests: z.number().int().gte(-2147483648).lte(2147483647).nullish(), minPartySize: z.number().int().gte(-2147483648).lte(2147483647).nullish(), maxPartySize: z.number().int().gte(-2147483648).lte(2147483647).nullish(), isPublic: z.boolean().optional(), isRecurring: z.boolean().optional(), reservationsEnabled: z.boolean().optional(), bookingOpensAtDays: z.number().int().gte(-2147483648).lte(2147483647).nullish(), bookingClosesAtHours: z.number().int().gte(-2147483648).lte(2147483647).nullish(), isActive: z.boolean().optional(), isFeatured: z.boolean().optional(), priority: z.number().int().gte(-2147483648).lte(2147483647).optional(), schedule: z.object({ rrule: z.string().nullish(), timezone: z.string().nullish(), validFrom: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullish(), validTo: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullish(), timeRanges: z.array(z.object({ startTime: z.string().regex(/^\d{2}:\d{2}$/), endTime: z.string().regex(/^\d{2}:\d{2}$/), lastSeatingTime: z.string().regex(/^\d{2}:\d{2}$/).nullish() }).strict()).min(1), slotMode: z.enum(["interval", "duration"]).nullish(), intervalMinutes: z.number().nullish(), durationMinutes: z.number().nullish() }).strict().nullish(), ritualAccessor: z.string().nullish(), venueAccessor: z.string().min(1) }).strict();
26
- const CreateEventResponse = z.object({ id: z.string(), venueId: z.string(), accessor: z.string().nullable(), name: z.union([z.union([z.string(), z.number(), z.boolean(), z.literal(null)]), z.object({}).partial().strict().passthrough(), z.array(z.unknown())]), description: z.union([z.union([z.string(), z.number(), z.boolean(), z.literal(null)]), z.object({}).partial().strict().passthrough(), z.array(z.unknown())]).nullable(), scheduleId: z.string().nullable(), ritualId: z.string().nullable(), maxBookings: z.number().int().gte(-2147483648).lte(2147483647).nullable(), maxGuests: z.number().int().gte(-2147483648).lte(2147483647).nullable(), minPartySize: z.number().int().gte(-2147483648).lte(2147483647).nullable(), maxPartySize: z.number().int().gte(-2147483648).lte(2147483647).nullable(), isPublic: z.boolean(), isRecurring: z.boolean(), reservationsEnabled: z.boolean(), bookingOpensAtDays: z.number().int().gte(-2147483648).lte(2147483647).nullable(), bookingClosesAtHours: z.number().int().gte(-2147483648).lte(2147483647).nullable(), isActive: z.boolean(), isFeatured: z.boolean(), priority: z.number().int().gte(-2147483648).lte(2147483647), createdBy: z.string().nullable(), updatedBy: z.string().nullable(), createdAt: z.unknown().nullable(), updatedAt: z.unknown().nullable() }).strict();
27
- const GetMenuResponse = z.object({ id: z.string(), venueId: z.string(), accessor: z.string(), name: z.record(z.string()) }).strict().passthrough();
28
- const ListMenuBundlesResponse = z.array(z.object({ id: z.string(), menuId: z.string() }).strict().passthrough());
29
- const ListMenuSubscriptionsResponse = z.array(z.object({ id: z.string(), menuId: z.string() }).strict().passthrough());
30
- const PlaceOrderRequest = z.object({ id: z.string().optional(), venueId: z.string(), basketId: z.string(), publicId: z.string().nullish(), quickReferenceNumber: z.number().int().gte(-2147483648).lte(2147483647).nullish(), status: z.enum(["pending", "in_progress", "ready", "completed", "cancelled"]).optional(), paymentIntentId: z.string().nullish(), paymentMethod: z.enum(["card", "cash", "voucher"]).nullish(), paymentStatus: z.enum(["unpaid", "paid", "refunded", "authorized", "cash_pending"]).optional(), taxAmount: z.number().int().gte(-2147483648).lte(2147483647), totalAmount: z.number().int().gte(-2147483648).lte(2147483647), currency: z.enum(["EUR", "CHF"]).optional(), fulfillmentType: z.enum(["pickup", "delivery"]).nullish(), fulfillmentAt: z.unknown().nullish(), orderedAt: z.unknown().optional(), orderedBy: z.string(), updatedAt: z.unknown().nullish(), updatedBy: z.string().nullish(), teamOrderId: z.string().nullish(), participantDisplayName: z.string().nullish(), leadSettledAt: z.unknown().nullish() }).strict();
31
- const PlaceOrderResponse = z.object({ id: z.string(), venueId: z.string(), basketId: z.string(), publicId: z.string().nullable(), quickReferenceNumber: z.number().int().gte(-2147483648).lte(2147483647).nullable(), status: z.enum(["pending", "in_progress", "ready", "completed", "cancelled"]), paymentIntentId: z.string().nullable(), paymentMethod: z.enum(["card", "cash", "voucher"]).nullable(), paymentStatus: z.enum(["unpaid", "paid", "refunded", "authorized", "cash_pending"]), taxAmount: z.number().int().gte(-2147483648).lte(2147483647), totalAmount: z.number().int().gte(-2147483648).lte(2147483647), currency: z.enum(["EUR", "CHF"]), fulfillmentType: z.enum(["pickup", "delivery"]).nullable(), fulfillmentAt: z.unknown().nullable(), orderedAt: z.unknown(), orderedBy: z.string(), updatedAt: z.unknown().nullable(), updatedBy: z.string().nullable(), teamOrderId: z.string().nullable(), participantDisplayName: z.string().nullable(), leadSettledAt: z.unknown().nullable() }).strict();
32
- const CreatePaymentIntentRequest = z.object({ basketId: z.string().min(1), currency: z.enum(["EUR", "CHF"]), sessionId: z.string().min(1), fulfillmentType: z.enum(["pickup", "delivery"]), fulfillmentAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/).datetime({ offset: true }).nullish(), customerFirstName: z.string().optional(), customerLastName: z.string().optional(), teamOrderPublicId: z.string().optional(), declaredReturns: z.array(z.object({ depositwareTemplateId: z.string().min(1), count: z.number().int().gte(0).lte(9007199254740991) }).strict()).optional() }).strict();
33
- const CreatePaymentIntentResponse = z.object({ clientSecret: z.string().nullable(), paymentIntentId: z.string(), orderId: z.string() }).strict();
34
- const CreateDeltaPaymentIntentRequest = z.object({ basketId: z.string().min(1), sessionId: z.string().min(1), currency: z.enum(["EUR", "CHF"]), declaredReturns: z.array(z.object({ depositwareTemplateId: z.string().min(1), count: z.number().int().gte(0).lte(9007199254740991) }).strict()).optional() }).strict();
35
- const CreateDeltaPaymentIntentResponse = z.object({ clientSecret: z.string().nullable(), paymentIntentId: z.string(), orderId: z.string(), amount: z.number().int().lte(9007199254740991), status: z.enum(["requires_payment_method", "requires_confirmation", "requires_action", "processing", "requires_capture", "canceled", "succeeded"]) }).strict();
36
- const ReduceDeltaPaymentIntentRequest = z.object({ basketId: z.string().min(1), sessionId: z.string().min(1), currency: z.enum(["EUR", "CHF"]), declaredReturns: z.array(z.object({ depositwareTemplateId: z.string().min(1), count: z.number().int().gte(0).lte(9007199254740991) }).strict()).optional() }).strict();
37
- const ReduceDeltaPaymentIntentResponse = z.object({ orderId: z.string(), paidTotal: z.number().int().gte(0).lte(9007199254740991), released: z.number().int().gte(0).lte(9007199254740991) }).strict();
38
- const MakeReservationRequest = z.object({ eventId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), quickReferenceNumber: z.number().int().gte(-2147483648).lte(2147483647).nullish(), reservationDate: z.string(), reservationTime: z.string(), partySize: z.number().int().gte(1).lte(20), duration: z.number().int().gte(30).lte(300).nullable(), customerId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid().nullable(), customerFirstName: z.string().min(1).max(50), customerLastName: z.string().min(1).max(50), customerEmail: z.string().regex(/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/).email().nullish(), customerPhone: z.string().min(1).nullish(), contactPreference: z.enum(["email", "phone", "sms", "none"]), source: z.enum(["website", "phone", "walk_in"]), specialRequests: z.string().max(500).nullable(), tablePreference: z.string().max(100).nullable(), venueAccessor: z.string().min(1) }).strict();
39
- const MakeReservationResponse = z.object({ id: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), venueId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), eventId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), quickReferenceNumber: z.number().int().gte(-2147483648).lte(2147483647).nullable(), reservationDate: z.string(), reservationTime: z.string(), partySize: z.number().int().gte(-9007199254740991).lte(9007199254740991), duration: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), customerId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid().nullable(), customerFirstName: z.string(), customerLastName: z.string(), customerEmail: z.string().nullable(), customerPhone: z.string().nullable(), contactPreference: z.enum(["email", "phone", "sms", "none"]), status: z.enum(["pending", "confirmed", "arrived", "seated", "completed", "cancelled", "no_show"]), confirmationCode: z.string().nullable(), confirmedAt: z.unknown().nullable(), arrivedAt: z.unknown().nullable(), seatedAt: z.unknown().nullable(), completedAt: z.unknown().nullable(), cancelledAt: z.unknown().nullable(), cancellationReason: z.enum(["customer_request", "restaurant_request"]).nullable(), cancellationNote: z.string().nullable(), source: z.enum(["website", "phone", "walk_in"]), specialRequests: z.string().nullable(), tablePreference: z.string().nullable(), createdBy: z.string().nullable(), updatedBy: z.string().nullable(), createdAt: z.unknown().nullable(), updatedAt: z.unknown().nullable() }).strict();
40
- const GetSubscriptionResponse = z.object({ id: z.string(), menuId: z.string(), accessor: z.string(), name: z.record(z.string()), shortName: z.record(z.string()).nullable(), description: z.record(z.string()).nullable(), scheduleId: z.string().nullable(), allowance: z.number().int().lte(9007199254740991), billingPeriod: z.enum(["week", "month", "year"]), allowancePeriod: z.enum(["week", "month", "year"]), redeemableTagSets: z.array(z.string()).nullable(), expiryInDays: z.number().int().lte(9007199254740991).nullable(), price: z.number().int().gte(0).lte(9007199254740991), currency: z.enum(["EUR", "CHF"]), isActive: z.boolean(), sortIndex: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), posters: z.array(z.object({ id: z.string(), menuSubscriptionId: z.string(), storagePath: z.string(), publicUrl: z.string().url(), filename: z.string(), contentType: z.string(), sizeBytes: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), sortIndex: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), createdBy: z.string().nullable(), createdAt: z.string().nullable() }).strict()) }).strict();
41
- const SubscribeRequest = z.object({ email: z.string().regex(/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/).email(), firstName: z.string().optional(), lastName: z.string().optional(), sessionId: z.string().optional(), successUrl: z.string().url(), cancelUrl: z.string().url() }).strict();
42
- const SubscribeResponse = z.object({ checkoutUrl: z.string().url().nullable(), sessionId: z.string() }).strict();
43
- const CancelSubscriptionRequest = z.object({ subscriberId: z.string().min(1) }).strict();
44
- const CancelSubscriptionResponse = z.object({ success: z.literal(true) }).strict();
45
- const GetSubscriptionCreditsResponse = z.array(z.object({ id: z.string(), subscriberId: z.string(), periodStart: z.string(), periodEnd: z.string(), expiresAt: z.string().nullable(), status: z.enum(["available", "redeemed", "expired"]), redeemedAt: z.string().nullable(), orderId: z.string().nullable(), createdAt: z.string().nullable() }).strict());
46
- const CreateTeamOrderRequest = z.object({ venueId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), sessionId: z.string().min(1), menuId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), leadDisplayName: z.string().min(1), teamName: z.string().min(1).optional(), logoUrl: z.string().url().optional(), deadlineAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }).nullish(), fulfillmentType: z.enum(["pickup", "delivery"]), fulfillmentAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }).nullish(), deliveryAddress: z.object({ street: z.string(), city: z.string(), state: z.string(), postalCode: z.string(), country: z.string() }).strict().optional(), allowedPaymentMethods: z.array(z.enum(["card", "cash", "voucher"])).min(1), eventId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid().optional() }).strict();
47
- const CreateTeamOrderResponse = z.object({ publicId: z.string(), teamOrderId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid() }).strict();
48
- const FetchTeamOrderResponse = z.object({ teamOrder: z.object({ id: z.string(), publicId: z.string(), venueId: z.string(), menuId: z.string(), eventId: z.string().nullable(), teamName: z.string().nullable(), logoUrl: z.string().nullable(), leadDisplayName: z.string(), status: z.enum(["draft", "collecting", "locked", "placed", "ready", "completed", "cancelled"]), allowedPaymentMethods: z.array(z.enum(["card", "cash", "voucher"])), fulfillmentType: z.enum(["pickup", "delivery"]), fulfillmentAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }).nullable(), deadlineAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }).nullable(), lockedAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }).nullable(), placedAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }).nullable(), cancelledAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }).nullable(), cancelReason: z.string().nullable(), deliveryAddressId: z.string().nullable(), diningLocation: z.string().nullable(), diningTime: z.string().nullable(), isDeliveryEnabled: z.boolean(), quickReferenceNumber: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable() }).strict(), deliveryThreshold: z.object({ amount: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), quantity: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable() }).strict(), participants: z.array(z.object({ customerId: z.string(), basketId: z.string().nullable(), orderId: z.string().nullable(), participantNumber: z.number().int().lte(9007199254740991).nullable(), displayName: z.string().nullable(), status: z.enum(["browsing", "authorized", "cash_pending", "placed", "completed", "cancelled"]), bundleCount: z.number().int().gte(0).lte(9007199254740991), amount: z.number().int().gte(0).lte(9007199254740991), paymentMethod: z.enum(["card", "cash", "voucher"]).nullable(), isLead: z.boolean(), isMe: z.boolean(), joinedAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }), items: z.array(z.object({ id: z.string(), metadata: z.unknown().nullable(), menuItems: z.array(z.object({ menuItemId: z.string(), role: z.string().nullable(), quantity: z.number(), unit: z.enum(["grams", "kilograms", "liters", "milliliters", "pieces"]) }).strict()), isPaid: z.boolean() }).strict()), payments: z.array(z.object({ amount: z.number().int().gte(0).lte(9007199254740991), method: z.enum(["card", "cash", "voucher"]), status: z.enum(["authorized", "captured", "cash_pending", "cash_received"]), createdAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }), cardLast4: z.string().min(4).max(4).nullable() }).strict()), paidTotal: z.number().int().gte(0).lte(9007199254740991), amountDue: z.number().int().gte(0).lte(9007199254740991), declaredReturns: z.array(z.object({ depositwareTemplateId: z.string(), count: z.number().int().gte(0).lte(9007199254740991) }).strict()), leadSettledAt: z.string().nullable() }).strict()), aggregatedTotals: z.object({ confirmedBundleCount: z.number().int().gte(0).lte(9007199254740991), confirmedAmount: z.number().int().gte(0).lte(9007199254740991), totalBundleCount: z.number().int().gte(0).lte(9007199254740991) }).strict(), thresholdCheck: z.object({ meets: z.boolean(), failedConstraints: z.array(z.enum(["quantity", "amount"])), requiredQuantity: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), currentQuantity: z.number().int().gte(-9007199254740991).lte(9007199254740991), requiredAmount: z.number().int().gte(-9007199254740991).lte(9007199254740991).nullable(), currentAmount: z.number().int().gte(-9007199254740991).lte(9007199254740991) }).strict(), isLead: z.boolean() }).strict();
49
- const JoinTeamOrderRequest = z.object({ publicId: z.string().min(1), sessionId: z.string().min(1), displayName: z.string().min(1).optional() }).strict();
50
- const JoinTeamOrderResponse = z.object({ teamOrderId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), basketId: z.string(), customerId: z.string(), status: z.enum(["draft", "collecting", "locked", "placed", "ready", "completed", "cancelled"]), isLead: z.boolean(), alreadyJoined: z.boolean() }).strict();
51
- const SubmitTeamOrderRequest = z.object({ publicId: z.string().min(1), sessionId: z.string().min(1) }).strict();
52
- const SubmitTeamOrderResponse = z.object({ teamOrderId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), status: z.enum(["draft", "collecting", "locked", "placed", "ready", "completed", "cancelled"]), capturedOrderIds: z.array(z.string()), cashPendingOrderIds: z.array(z.string()), droppedBasketIds: z.array(z.string()), placedAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }) }).strict();
53
- const CancelTeamOrderRequest = z.object({ publicId: z.string().min(1), sessionId: z.string().min(1), reason: z.string().max(500).optional() }).strict();
54
- const CancelTeamOrderResponse = z.object({ teamOrderId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), status: z.enum(["draft", "collecting", "locked", "placed", "ready", "completed", "cancelled"]), voidedPaymentIntentIds: z.array(z.string()), cancelledAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }) }).strict();
55
- const ExtendDeadlineTeamOrderRequest = z.object({ publicId: z.string().min(1), sessionId: z.string().min(1), newDeadlineAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }) }).strict();
56
- const ExtendDeadlineTeamOrderResponse = z.object({ teamOrderId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), status: z.enum(["draft", "collecting", "locked", "placed", "ready", "completed", "cancelled"]), deadlineAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }).nullable() }).strict();
57
- const SetFulfillmentAtTeamOrderRequest = z.object({ publicId: z.string().min(1), sessionId: z.string().min(1), fulfillmentAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }) }).strict();
58
- const SetFulfillmentAtTeamOrderResponse = z.object({ teamOrderId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), status: z.enum(["draft", "collecting", "locked", "placed", "ready", "completed", "cancelled"]), fulfillmentAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }), deadlineAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }).nullable() }).strict();
59
- const SetDiningLocationTeamOrderRequest = z.object({ publicId: z.string().min(1), sessionId: z.string().min(1), diningLocation: z.string().max(200) }).strict();
60
- const SetDiningLocationTeamOrderResponse = z.object({ teamOrderId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), status: z.enum(["draft", "collecting", "locked", "placed", "ready", "completed", "cancelled"]), diningLocation: z.string().nullable() }).strict();
61
- const SetDiningTimeTeamOrderRequest = z.object({ publicId: z.string().min(1), sessionId: z.string().min(1), diningTime: z.string().regex(/^\d{2}:\d{2}$/) }).strict();
62
- const SetDiningTimeTeamOrderResponse = z.object({ teamOrderId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), status: z.enum(["draft", "collecting", "locked", "placed", "ready", "completed", "cancelled"]), diningTime: z.string(), diningOffsetMinutes: z.number().int().gte(0).lte(9007199254740991) }).strict();
63
- const postTeamOrdersPublicIdleadSettled_Body = z.object({ publicId: z.string().min(1), sessionId: z.string().min(1), orderId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), settled: z.boolean() }).strict();
64
- const postTeamOrdersPublicIdautoExtendFulfillmentIfExpired_Body = z.object({ publicId: z.string().min(1), sessionId: z.string().min(1), proposedFulfillmentAt: z.string().regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/).datetime({ offset: true }) }).strict();
65
- const SwitchFulfillmentTeamOrderRequest = z.object({ publicId: z.string().min(1), sessionId: z.string().min(1), fulfillmentType: z.enum(["pickup", "delivery"]), deliveryAddress: z.object({ street: z.string(), city: z.string(), state: z.string(), postalCode: z.string(), country: z.string() }).strict().optional() }).strict();
66
- const SwitchFulfillmentTeamOrderResponse = z.object({ teamOrderId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), status: z.enum(["draft", "collecting", "locked", "placed", "ready", "completed", "cancelled"]), fulfillmentType: z.enum(["pickup", "delivery"]), deliveryAddressId: z.string().nullable() }).strict();
67
- const UpdateDeliveryAddressTeamOrderRequest = z.object({ publicId: z.string().min(1), sessionId: z.string().min(1), deliveryAddress: z.object({ street: z.string(), city: z.string(), state: z.string(), postalCode: z.string(), country: z.string() }).strict() }).strict();
68
- const UpdateDeliveryAddressTeamOrderResponse = z.object({ teamOrderId: z.string().regex(/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/).uuid(), deliveryAddressId: z.string() }).strict();
69
- const GetVenueResponse = z.object({ id: z.string(), accessor: z.string(), officialName: z.string(), legalName: z.string(), shortName: z.string(), brandName: z.string(), primaryLocale: z.string(), supportedLocales: z.array(z.string()), timezone: z.string(), createdAt: z.unknown().nullable(), updatedAt: z.unknown().nullable() }).strict();
1
+ import { z } from 'zod/v4';
2
+ import { t as teamOrderStatusSchema, f as fulfillmentTypeSchema, p as paymentMethodSchema, d as deliveryAddressSchema, a as participantStatusSchema } from './deliveryAddressSchema-8YX7yh5X.mjs';
3
+
4
+ const abandonBasketRequestSchema = z.object({
5
+ sessionId: z.string().min(1)
6
+ });
7
+
8
+ const abandonBasketResponseSchema = z.object({
9
+ abandonedCount: z.int().min(0).max(9007199254740991)
10
+ });
11
+
12
+ const actorTypeSchema = z.enum(["human", "robot"]);
13
+
14
+ const unitSchema = z.enum([
15
+ "grams",
16
+ "kilograms",
17
+ "liters",
18
+ "milliliters",
19
+ "pieces"
20
+ ]);
21
+
22
+ const addToBasketRequestSchema = z.object({
23
+ venueId: z.uuid(),
24
+ sessionId: z.string().min(1),
25
+ menuItems: z.array(
26
+ z.object({
27
+ menuItemId: z.string().min(1),
28
+ role: z.optional(z.string()),
29
+ quantity: z.optional(z.number().gt(0)),
30
+ get unit() {
31
+ return unitSchema.optional();
32
+ }
33
+ })
34
+ ).min(1),
35
+ metadata: z.optional(z.object({}).catchall(z.any()))
36
+ }).describe("Add an item to the shopping basket");
37
+
38
+ const currencySchema = z.enum(["EUR", "CHF"]);
39
+
40
+ const basketTotalsSchema = z.object({
41
+ get currency() {
42
+ return currencySchema;
43
+ },
44
+ itemsTotal: z.int().min(0).max(9007199254740991),
45
+ taxAmount: z.int().min(0).max(9007199254740991),
46
+ depositCharge: z.int().min(0).max(9007199254740991),
47
+ grossTotal: z.int().min(0).max(9007199254740991),
48
+ depositCredit: z.int().min(0).max(9007199254740991),
49
+ effectiveTotal: z.int().min(0).max(9007199254740991),
50
+ cashRefund: z.int().min(0).max(9007199254740991),
51
+ returnable: z.array(
52
+ z.object({
53
+ depositwareTemplateId: z.string(),
54
+ count: z.int().min(0).max(9007199254740991)
55
+ })
56
+ )
57
+ });
58
+
59
+ const addToBasketResponseSchema = z.object({
60
+ basketItemId: z.uuid(),
61
+ itemCount: z.int().min(0).max(9007199254740991),
62
+ deposit: z.nullable(
63
+ z.object({
64
+ depositwareTemplateId: z.string(),
65
+ name: z.object({}).catchall(z.string()),
66
+ amount: z.int().min(0).max(9007199254740991),
67
+ get currency() {
68
+ return currencySchema;
69
+ }
70
+ })
71
+ ),
72
+ get totals() {
73
+ return basketTotalsSchema;
74
+ }
75
+ });
76
+
77
+ const additiveFunctionSchema = z.enum([
78
+ "acid",
79
+ "acidity_regulator",
80
+ "anti_caking_agent",
81
+ "anti_foaming_agent",
82
+ "antioxidant",
83
+ "bulking_agent",
84
+ "carrier",
85
+ "colour",
86
+ "emulsifier",
87
+ "emulsifying_salt",
88
+ "firming_agent",
89
+ "flavour_enhancer",
90
+ "flour_treatment_agent",
91
+ "foaming_agent",
92
+ "gelling_agent",
93
+ "glazing_agent",
94
+ "humectant",
95
+ "modified_starch",
96
+ "preservative",
97
+ "packaging_gas",
98
+ "propellant_gas",
99
+ "raising_agent",
100
+ "sequestrant",
101
+ "stabiliser",
102
+ "sweetener",
103
+ "thickener"
104
+ ]);
105
+
106
+ const areaBookingModeSchema = z.enum(["slot", "day"]);
107
+
108
+ const areaBookingRequestSourceSchema = z.enum([
109
+ "website",
110
+ "phone",
111
+ "walk_in"
112
+ ]);
113
+
114
+ const areaBookingRequestStatusSchema = z.enum([
115
+ "pending",
116
+ "approved",
117
+ "rejected",
118
+ "cancelled"
119
+ ]);
120
+
121
+ const areaBookingStatusSchema = z.enum([
122
+ "confirmed",
123
+ "arrived",
124
+ "completed",
125
+ "cancelled",
126
+ "no_show"
127
+ ]);
128
+
129
+ const assetTypeSchema = z.enum(["image", "video", "document"]);
130
+
131
+ const areaSchema = z.object({
132
+ id: z.string(),
133
+ venueId: z.string(),
134
+ accessor: z.string(),
135
+ name: z.object({}).catchall(z.string()),
136
+ description: z.nullable(z.object({}).catchall(z.string())),
137
+ longDescription: z.nullable(z.object({}).catchall(z.string())),
138
+ minCapacity: z.nullable(
139
+ z.int().min(-9007199254740991).max(9007199254740991)
140
+ ),
141
+ maxCapacity: z.int().min(-9007199254740991).max(9007199254740991),
142
+ get currency() {
143
+ return currencySchema;
144
+ },
145
+ basePrice: z.nullable(z.int().min(-9007199254740991).max(9007199254740991)),
146
+ perPersonPrice: z.nullable(
147
+ z.int().min(-9007199254740991).max(9007199254740991)
148
+ ),
149
+ features: z.nullable(
150
+ z.array(
151
+ z.object({
152
+ icon: z.string(),
153
+ label: z.object({}).catchall(z.string()),
154
+ description: z.optional(z.object({}).catchall(z.string()))
155
+ })
156
+ )
157
+ ),
158
+ get bookingMode() {
159
+ return areaBookingModeSchema;
160
+ },
161
+ isBookable: z.optional(z.boolean()),
162
+ isPublic: z.optional(z.boolean()),
163
+ isActive: z.optional(z.boolean()),
164
+ assets: z.optional(
165
+ z.array(
166
+ z.object({
167
+ id: z.string(),
168
+ get type() {
169
+ return assetTypeSchema;
170
+ },
171
+ tags: z.nullable(z.array(z.string())),
172
+ filename: z.string(),
173
+ contentType: z.string(),
174
+ metadata: z.nullable(
175
+ z.object({
176
+ width: z.optional(z.number()),
177
+ height: z.optional(z.number()),
178
+ duration: z.optional(z.number())
179
+ })
180
+ ),
181
+ cropArea: z.nullable(
182
+ z.object({
183
+ x: z.number(),
184
+ y: z.number(),
185
+ width: z.number(),
186
+ height: z.number()
187
+ })
188
+ ),
189
+ publicUrl: z.url()
190
+ })
191
+ )
192
+ )
193
+ }).describe(
194
+ "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."
195
+ );
196
+
197
+ const articleEditorSaveStateSchema = z.enum([
198
+ "idle",
199
+ "saving",
200
+ "saved",
201
+ "error"
202
+ ]);
203
+
204
+ const articleMentionCountsSchema = z.object({
205
+ dishes: z.int().min(0).max(9007199254740991),
206
+ beverages: z.int().min(0).max(9007199254740991),
207
+ ingredients: z.int().min(0).max(9007199254740991),
208
+ menus: z.int().min(0).max(9007199254740991),
209
+ rituals: z.int().min(0).max(9007199254740991)
210
+ });
211
+
212
+ const articleStatusSchema = z.enum(["draft", "published"]);
213
+
214
+ const autoExtendFulfillmentIfExpiredRequestSchema = z.object({
215
+ publicId: z.string().min(1),
216
+ sessionId: z.string().min(1),
217
+ proposedFulfillmentAt: z.iso.datetime()
218
+ });
219
+
220
+ const autoExtendFulfillmentIfExpiredResponseSchema = z.object({
221
+ extended: z.boolean(),
222
+ teamOrderId: z.string(),
223
+ status: z.string(),
224
+ fulfillmentAt: z.iso.datetime(),
225
+ deadlineAt: z.nullable(z.iso.datetime()),
226
+ previousFulfillmentAt: z.iso.datetime(),
227
+ waitingCount: z.int().min(0).max(9007199254740991)
228
+ });
229
+
230
+ const basketStatusSchema = z.enum(["active", "abandoned", "converted"]);
231
+
232
+ const beverageCategorySchema = z.enum([
233
+ "wine",
234
+ "beer",
235
+ "coffee",
236
+ "tea",
237
+ "cocktail",
238
+ "juice",
239
+ "soft_drink",
240
+ "dairy_drink",
241
+ "spirit",
242
+ "water"
243
+ ]);
244
+
245
+ const billingModeSchema = z.enum(["single_anchor", "split"]);
246
+
247
+ const cancelSubscriptionRequestSchema = z.object({
248
+ subscriberId: z.string().min(1)
249
+ });
250
+
251
+ const cancelSubscriptionResponseSchema = z.object({
252
+ success: z.literal(true)
253
+ });
254
+
255
+ const cancelTeamOrderRequestSchema = z.object({
256
+ publicId: z.string().min(1),
257
+ sessionId: z.string().min(1),
258
+ reason: z.optional(z.string().max(500))
259
+ });
260
+
261
+ const cancelTeamOrderResponseSchema = z.object({
262
+ teamOrderId: z.uuid(),
263
+ get status() {
264
+ return teamOrderStatusSchema;
265
+ },
266
+ voidedPaymentIntentIds: z.array(z.string()),
267
+ cancelledAt: z.iso.datetime()
268
+ });
269
+
270
+ const cancellationReasonSchema = z.enum([
271
+ "customer_request",
272
+ "restaurant_request"
273
+ ]);
274
+
275
+ const confirmOrderRequestSchema = z.object({
276
+ venueAccessor: z.string().min(1),
277
+ orderId: z.string().min(1),
278
+ paymentIntentId: z.string().min(1)
279
+ });
280
+
281
+ const confirmOrderResponseSchema = z.object({
282
+ id: z.string(),
283
+ status: z.string(),
284
+ publicId: z.nullable(z.string()),
285
+ quickReferenceNumber: z.nullable(
286
+ z.int().min(-9007199254740991).max(9007199254740991)
287
+ ),
288
+ customerId: z.optional(z.string())
289
+ });
290
+
291
+ const contactPreferenceSchema = z.enum(["email", "phone", "sms", "none"]);
292
+
293
+ const countryCodeSchema = z.enum([
294
+ "AD",
295
+ "AE",
296
+ "AF",
297
+ "AG",
298
+ "AI",
299
+ "AL",
300
+ "AM",
301
+ "AO",
302
+ "AQ",
303
+ "AR",
304
+ "AS",
305
+ "AT",
306
+ "AU",
307
+ "AW",
308
+ "AX",
309
+ "AZ",
310
+ "BA",
311
+ "BB",
312
+ "BD",
313
+ "BE",
314
+ "BF",
315
+ "BG",
316
+ "BH",
317
+ "BI",
318
+ "BJ",
319
+ "BL",
320
+ "BM",
321
+ "BN",
322
+ "BO",
323
+ "BQ",
324
+ "BR",
325
+ "BS",
326
+ "BT",
327
+ "BV",
328
+ "BW",
329
+ "BY",
330
+ "BZ",
331
+ "CA",
332
+ "CC",
333
+ "CD",
334
+ "CF",
335
+ "CG",
336
+ "CH",
337
+ "CI",
338
+ "CK",
339
+ "CL",
340
+ "CM",
341
+ "CN",
342
+ "CO",
343
+ "CR",
344
+ "CU",
345
+ "CV",
346
+ "CW",
347
+ "CX",
348
+ "CY",
349
+ "CZ",
350
+ "DE",
351
+ "DJ",
352
+ "DK",
353
+ "DM",
354
+ "DO",
355
+ "DZ",
356
+ "EC",
357
+ "EE",
358
+ "EG",
359
+ "EH",
360
+ "ER",
361
+ "ES",
362
+ "ET",
363
+ "FI",
364
+ "FJ",
365
+ "FK",
366
+ "FM",
367
+ "FO",
368
+ "FR",
369
+ "GA",
370
+ "GB",
371
+ "GD",
372
+ "GE",
373
+ "GF",
374
+ "GG",
375
+ "GH",
376
+ "GI",
377
+ "GL",
378
+ "GM",
379
+ "GN",
380
+ "GP",
381
+ "GQ",
382
+ "GR",
383
+ "GS",
384
+ "GT",
385
+ "GU",
386
+ "GW",
387
+ "GY",
388
+ "HK",
389
+ "HM",
390
+ "HN",
391
+ "HR",
392
+ "HT",
393
+ "HU",
394
+ "ID",
395
+ "IE",
396
+ "IL",
397
+ "IM",
398
+ "IN",
399
+ "IO",
400
+ "IQ",
401
+ "IR",
402
+ "IS",
403
+ "IT",
404
+ "JE",
405
+ "JM",
406
+ "JO",
407
+ "JP",
408
+ "KE",
409
+ "KG",
410
+ "KH",
411
+ "KI",
412
+ "KM",
413
+ "KN",
414
+ "KP",
415
+ "KR",
416
+ "KW",
417
+ "KY",
418
+ "KZ",
419
+ "LA",
420
+ "LB",
421
+ "LC",
422
+ "LI",
423
+ "LK",
424
+ "LR",
425
+ "LS",
426
+ "LT",
427
+ "LU",
428
+ "LV",
429
+ "LY",
430
+ "MA",
431
+ "MC",
432
+ "MD",
433
+ "ME",
434
+ "MF",
435
+ "MG",
436
+ "MH",
437
+ "MK",
438
+ "ML",
439
+ "MM",
440
+ "MN",
441
+ "MO",
442
+ "MP",
443
+ "MQ",
444
+ "MR",
445
+ "MS",
446
+ "MT",
447
+ "MU",
448
+ "MV",
449
+ "MW",
450
+ "MX",
451
+ "MY",
452
+ "MZ",
453
+ "NA",
454
+ "NC",
455
+ "NE",
456
+ "NF",
457
+ "NG",
458
+ "NI",
459
+ "NL",
460
+ "NO",
461
+ "NP",
462
+ "NR",
463
+ "NU",
464
+ "NZ",
465
+ "OM",
466
+ "PA",
467
+ "PE",
468
+ "PF",
469
+ "PG",
470
+ "PH",
471
+ "PK",
472
+ "PL",
473
+ "PM",
474
+ "PN",
475
+ "PR",
476
+ "PS",
477
+ "PT",
478
+ "PW",
479
+ "PY",
480
+ "QA",
481
+ "RE",
482
+ "RO",
483
+ "RS",
484
+ "RU",
485
+ "RW",
486
+ "SA",
487
+ "SB",
488
+ "SC",
489
+ "SD",
490
+ "SE",
491
+ "SG",
492
+ "SH",
493
+ "SI",
494
+ "SJ",
495
+ "SK",
496
+ "SL",
497
+ "SM",
498
+ "SN",
499
+ "SO",
500
+ "SR",
501
+ "SS",
502
+ "ST",
503
+ "SV",
504
+ "SX",
505
+ "SY",
506
+ "SZ",
507
+ "TC",
508
+ "TD",
509
+ "TF",
510
+ "TG",
511
+ "TH",
512
+ "TJ",
513
+ "TK",
514
+ "TL",
515
+ "TM",
516
+ "TN",
517
+ "TO",
518
+ "TR",
519
+ "TT",
520
+ "TV",
521
+ "TW",
522
+ "TZ",
523
+ "UA",
524
+ "UG",
525
+ "UM",
526
+ "US",
527
+ "UY",
528
+ "UZ",
529
+ "VA",
530
+ "VC",
531
+ "VE",
532
+ "VG",
533
+ "VI",
534
+ "VN",
535
+ "VU",
536
+ "WF",
537
+ "WS",
538
+ "YE",
539
+ "YT",
540
+ "ZA",
541
+ "ZM",
542
+ "ZW"
543
+ ]);
544
+
545
+ const createDeltaPaymentIntentRequestSchema = z.object({
546
+ venueAccessor: z.string().min(1),
547
+ basketId: z.string().min(1),
548
+ sessionId: z.string().min(1),
549
+ get currency() {
550
+ return currencySchema;
551
+ },
552
+ declaredReturns: z.optional(
553
+ z.array(
554
+ z.object({
555
+ depositwareTemplateId: z.string().min(1),
556
+ count: z.int().min(0).max(9007199254740991)
557
+ })
558
+ )
559
+ )
560
+ });
561
+
562
+ const createDeltaPaymentIntentResponseSchema = z.object({
563
+ clientSecret: z.nullable(z.string()),
564
+ paymentIntentId: z.string(),
565
+ orderId: z.string(),
566
+ amount: z.int().max(9007199254740991),
567
+ status: z.enum([
568
+ "requires_payment_method",
569
+ "requires_confirmation",
570
+ "requires_action",
571
+ "processing",
572
+ "requires_capture",
573
+ "canceled",
574
+ "succeeded"
575
+ ])
576
+ });
577
+
578
+ const slotModeSchema = z.enum(["interval", "duration"]);
579
+
580
+ const createEventRequestSchema = z.object({
581
+ accessor: z.string().nullish(),
582
+ name: z.union([
583
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
584
+ z.array(z.any()),
585
+ z.object({}).catchall(z.any())
586
+ ]),
587
+ description: z.union([
588
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
589
+ z.array(z.any()),
590
+ z.object({}).catchall(z.any())
591
+ ]).nullish(),
592
+ scheduleId: z.string().nullish(),
593
+ maxBookings: z.int().min(-2147483648).max(2147483647).nullish(),
594
+ maxGuests: z.int().min(-2147483648).max(2147483647).nullish(),
595
+ minPartySize: z.int().min(-2147483648).max(2147483647).nullish(),
596
+ maxPartySize: z.int().min(-2147483648).max(2147483647).nullish(),
597
+ isPublic: z.optional(z.boolean()),
598
+ isRecurring: z.optional(z.boolean()),
599
+ reservationsEnabled: z.optional(z.boolean()),
600
+ bookingOpensAtDays: z.int().min(-2147483648).max(2147483647).nullish(),
601
+ bookingClosesAtOffset: z.int().min(-2147483648).max(2147483647).nullish(),
602
+ isActive: z.optional(z.boolean()),
603
+ isFeatured: z.optional(z.boolean()),
604
+ priority: z.optional(z.int().min(-2147483648).max(2147483647)),
605
+ schedule: z.object({
606
+ rrule: z.string().nullish(),
607
+ timezone: z.string().nullish(),
608
+ validFrom: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullish(),
609
+ validTo: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullish(),
610
+ timeRanges: z.array(
611
+ z.object({
612
+ startTime: z.string().regex(/^\d{2}:\d{2}$/),
613
+ endTime: z.string().regex(/^\d{2}:\d{2}$/),
614
+ lastSeatingTime: z.string().regex(/^\d{2}:\d{2}$/).nullish()
615
+ })
616
+ ).min(1),
617
+ get slotMode() {
618
+ return slotModeSchema.optional();
619
+ },
620
+ intervalDuration: z.number().nullish(),
621
+ duration: z.number().nullish()
622
+ }).nullish(),
623
+ ritualAccessor: z.string().nullish(),
624
+ venueAccessor: z.string().min(1)
625
+ }).describe("Request payload for creating a new event");
626
+
627
+ const createEventResponseSchema = z.object({
628
+ id: z.string(),
629
+ venueId: z.string(),
630
+ accessor: z.nullable(z.string()),
631
+ name: z.union([
632
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
633
+ z.array(z.any()),
634
+ z.object({}).catchall(z.any())
635
+ ]),
636
+ description: z.nullable(
637
+ z.union([
638
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
639
+ z.array(z.any()),
640
+ z.object({}).catchall(z.any())
641
+ ])
642
+ ),
643
+ scheduleId: z.nullable(z.string()),
644
+ ritualId: z.nullable(z.string()),
645
+ maxBookings: z.nullable(z.int().min(-2147483648).max(2147483647)),
646
+ maxGuests: z.nullable(z.int().min(-2147483648).max(2147483647)),
647
+ minPartySize: z.nullable(z.int().min(-2147483648).max(2147483647)),
648
+ maxPartySize: z.nullable(z.int().min(-2147483648).max(2147483647)),
649
+ isPublic: z.boolean(),
650
+ isRecurring: z.boolean(),
651
+ reservationsEnabled: z.boolean(),
652
+ bookingOpensAtDays: z.nullable(z.int().min(-2147483648).max(2147483647)),
653
+ bookingClosesAtOffset: z.nullable(z.int().min(-2147483648).max(2147483647)),
654
+ isActive: z.boolean(),
655
+ isFeatured: z.boolean(),
656
+ priority: z.int().min(-2147483648).max(2147483647),
657
+ createdBy: z.nullable(z.string()),
658
+ updatedBy: z.nullable(z.string()),
659
+ createdAt: z.nullable(z.any()),
660
+ updatedAt: z.nullable(z.any())
661
+ }).describe("Successfully created event");
662
+
663
+ const createPaymentIntentRequestSchema = z.object({
664
+ venueAccessor: z.string().min(1),
665
+ basketId: z.string().min(1),
666
+ get currency() {
667
+ return currencySchema;
668
+ },
669
+ sessionId: z.string().min(1),
670
+ get fulfillmentType() {
671
+ return fulfillmentTypeSchema;
672
+ },
673
+ fulfillmentAt: z.iso.datetime().nullish(),
674
+ customerFirstName: z.optional(z.string()),
675
+ customerLastName: z.optional(z.string()),
676
+ teamOrderPublicId: z.optional(z.string()),
677
+ declaredReturns: z.optional(
678
+ z.array(
679
+ z.object({
680
+ depositwareTemplateId: z.string().min(1),
681
+ count: z.int().min(0).max(9007199254740991)
682
+ })
683
+ )
684
+ )
685
+ });
686
+
687
+ const createPaymentIntentResponseSchema = z.object({
688
+ clientSecret: z.nullable(z.string()),
689
+ paymentIntentId: z.string(),
690
+ orderId: z.string()
691
+ });
692
+
693
+ const createTeamOrderRequestSchema = z.object({
694
+ venueAccessor: z.string().min(1),
695
+ sessionId: z.string().min(1),
696
+ menuId: z.uuid(),
697
+ leadDisplayName: z.string().min(1),
698
+ teamName: z.optional(z.string().min(1)),
699
+ logoUrl: z.optional(z.url()),
700
+ deadlineAt: z.iso.datetime().nullish(),
701
+ get fulfillmentType() {
702
+ return fulfillmentTypeSchema;
703
+ },
704
+ fulfillmentAt: z.iso.datetime().nullish(),
705
+ get deliveryAddress() {
706
+ return deliveryAddressSchema.optional();
707
+ },
708
+ get allowedPaymentMethods() {
709
+ return z.array(paymentMethodSchema).min(1);
710
+ },
711
+ eventId: z.optional(z.uuid())
712
+ }).describe(
713
+ "Create a team order: promotes the lead's active basket into a shared team basket and returns the share token."
714
+ );
715
+
716
+ const createTeamOrderResponseSchema = z.object({
717
+ publicId: z.string(),
718
+ teamOrderId: z.uuid()
719
+ });
720
+
721
+ const dayOfWeekSchema = z.enum([
722
+ "monday",
723
+ "tuesday",
724
+ "wednesday",
725
+ "thursday",
726
+ "friday",
727
+ "saturday",
728
+ "sunday"
729
+ ]);
730
+
731
+ const depositTransactionTypeSchema = z.enum([
732
+ "charged",
733
+ "refunded",
734
+ "forfeited",
735
+ "waived",
736
+ "credit_used"
737
+ ]);
738
+
739
+ const depositwareStatusSchema = z.enum([
740
+ "available",
741
+ "issued",
742
+ "returned",
743
+ "lost",
744
+ "damaged",
745
+ "retired"
746
+ ]);
747
+
748
+ const editArticleRequestSchema = z.object({
749
+ slug: z.optional(z.object({}).catchall(z.any())),
750
+ title: z.optional(z.object({}).catchall(z.any())),
751
+ excerpt: z.optional(z.object({}).catchall(z.any())),
752
+ content: z.optional(z.object({}).catchall(z.any())),
753
+ metaTitle: z.optional(z.object({}).catchall(z.string())),
754
+ metaDescription: z.optional(z.object({}).catchall(z.string())),
755
+ tags: z.optional(z.array(z.string())),
756
+ isActive: z.optional(z.boolean()),
757
+ isFeatured: z.optional(z.boolean()),
758
+ priority: z.optional(z.int().min(-9007199254740991).max(9007199254740991))
759
+ });
760
+
761
+ const featureImageSchema = z.object({
762
+ id: z.string(),
763
+ publicUrl: z.nullable(z.string()),
764
+ locale: z.string(),
765
+ caption: z.nullable(z.object({}).catchall(z.any())),
766
+ alt: z.nullable(z.object({}).catchall(z.any())),
767
+ captionByLocale: z.object({}).catchall(z.any()),
768
+ altByLocale: z.object({}).catchall(z.any())
769
+ }).describe(
770
+ "An article's resolved feature image. `caption` / `alt` are per-locale TipTap docs (PATCH accepts plain strings \u2014 server normalises). `captionByLocale` / `altByLocale` expose the raw per-locale records for editor surfaces."
771
+ );
772
+
773
+ const ogImageSchema = z.object({
774
+ id: z.string(),
775
+ publicUrl: z.nullable(z.string()),
776
+ locale: z.string()
777
+ });
778
+
779
+ const editArticleResponseSchema = z.object({
780
+ id: z.string(),
781
+ venueId: z.string(),
782
+ accessor: z.string(),
783
+ slug: z.object({}).catchall(z.object({}).catchall(z.any())),
784
+ title: z.object({}).catchall(z.object({}).catchall(z.any())),
785
+ excerpt: z.object({}).catchall(z.object({}).catchall(z.any())),
786
+ content: z.nullable(z.object({}).catchall(z.any())),
787
+ metaTitle: z.nullable(z.object({}).catchall(z.string())),
788
+ metaDescription: z.nullable(z.object({}).catchall(z.string())),
789
+ tags: z.array(z.string()),
790
+ isActive: z.boolean(),
791
+ isFeatured: z.boolean(),
792
+ priority: z.int().min(-2147483648).max(2147483647),
793
+ get status() {
794
+ return articleStatusSchema;
795
+ },
796
+ publishedAt: z.nullable(z.string()),
797
+ createdAt: z.nullable(z.string()),
798
+ updatedAt: z.nullable(z.string()),
799
+ get featureImage() {
800
+ return featureImageSchema.nullable();
801
+ },
802
+ get ogImage() {
803
+ return ogImageSchema.nullish();
804
+ }
805
+ }).describe(
806
+ "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`."
807
+ );
808
+
809
+ const entityOwnerTypeSchema = z.enum([
810
+ "event",
811
+ "dish",
812
+ "beverage",
813
+ "venue",
814
+ "menu",
815
+ "menuSubscription",
816
+ "ritual"
817
+ ]);
818
+
819
+ const enumFalseSchema = z.enum(["false"]);
820
+
821
+ const enumTrueSchema = z.enum(["true"]);
822
+
823
+ const extendDeadlineTeamOrderRequestSchema = z.object({
824
+ publicId: z.string().min(1),
825
+ sessionId: z.string().min(1),
826
+ newDeadlineAt: z.iso.datetime()
827
+ });
828
+
829
+ const extendDeadlineTeamOrderResponseSchema = z.object({
830
+ teamOrderId: z.uuid(),
831
+ get status() {
832
+ return teamOrderStatusSchema;
833
+ },
834
+ deadlineAt: z.nullable(z.iso.datetime())
835
+ });
836
+
837
+ const featureCategorySchema = z.enum([
838
+ "articles",
839
+ "auth",
840
+ "billing",
841
+ "core",
842
+ "customers",
843
+ "events",
844
+ "inventory",
845
+ "menus",
846
+ "orders",
847
+ "platform",
848
+ "promotions",
849
+ "reservations",
850
+ "settings",
851
+ "venues"
852
+ ]);
853
+
854
+ const featureStatusSchema = z.enum([
855
+ "backlog",
856
+ "in_development",
857
+ "released"
858
+ ]);
859
+
860
+ const fetchAreaBookingsResponseSchema = z.array(
861
+ z.object({
862
+ id: z.string(),
863
+ areaId: z.string(),
864
+ bookingDate: z.string(),
865
+ startTime: z.nullable(z.string()),
866
+ endTime: z.nullable(z.string()),
867
+ partySize: z.int().min(-9007199254740991).max(9007199254740991),
868
+ get status() {
869
+ return areaBookingStatusSchema;
870
+ },
871
+ customerFirstName: z.optional(z.string()),
872
+ customerLastName: z.optional(z.string()),
873
+ totalPrice: z.optional(
874
+ z.int().min(-9007199254740991).max(9007199254740991)
875
+ ),
876
+ get currency() {
877
+ return currencySchema.optional();
878
+ },
879
+ confirmationCode: z.string().nullish()
880
+ })
881
+ );
882
+
883
+ const fetchAreaResponseSchema = z.object({
884
+ id: z.string(),
885
+ venueId: z.string(),
886
+ accessor: z.string(),
887
+ name: z.object({}).catchall(z.string()),
888
+ description: z.nullable(z.object({}).catchall(z.string())),
889
+ longDescription: z.nullable(z.object({}).catchall(z.string())),
890
+ minCapacity: z.nullable(
891
+ z.int().min(-9007199254740991).max(9007199254740991)
892
+ ),
893
+ maxCapacity: z.int().min(-9007199254740991).max(9007199254740991),
894
+ get currency() {
895
+ return currencySchema;
896
+ },
897
+ basePrice: z.nullable(z.int().min(-9007199254740991).max(9007199254740991)),
898
+ perPersonPrice: z.nullable(
899
+ z.int().min(-9007199254740991).max(9007199254740991)
900
+ ),
901
+ features: z.nullable(
902
+ z.array(
903
+ z.object({
904
+ icon: z.string(),
905
+ label: z.object({}).catchall(z.string()),
906
+ description: z.optional(z.object({}).catchall(z.string()))
907
+ })
908
+ )
909
+ ),
910
+ get bookingMode() {
911
+ return areaBookingModeSchema;
912
+ },
913
+ isBookable: z.optional(z.boolean()),
914
+ isPublic: z.optional(z.boolean()),
915
+ isActive: z.optional(z.boolean()),
916
+ assets: z.optional(
917
+ z.array(
918
+ z.object({
919
+ id: z.string(),
920
+ get type() {
921
+ return assetTypeSchema;
922
+ },
923
+ tags: z.nullable(z.array(z.string())),
924
+ filename: z.string(),
925
+ contentType: z.string(),
926
+ metadata: z.nullable(
927
+ z.object({
928
+ width: z.optional(z.number()),
929
+ height: z.optional(z.number()),
930
+ duration: z.optional(z.number())
931
+ })
932
+ ),
933
+ cropArea: z.nullable(
934
+ z.object({
935
+ x: z.number(),
936
+ y: z.number(),
937
+ width: z.number(),
938
+ height: z.number()
939
+ })
940
+ ),
941
+ publicUrl: z.url()
942
+ })
943
+ )
944
+ )
945
+ }).describe(
946
+ "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."
947
+ );
948
+
949
+ const fetchAreasResponseSchema = z.array(
950
+ z.lazy(() => areaSchema).describe(
951
+ "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."
952
+ )
953
+ );
954
+
955
+ const fetchArticleResponseSchema = z.object({
956
+ id: z.string(),
957
+ venueId: z.string(),
958
+ accessor: z.string(),
959
+ slug: z.object({}).catchall(z.object({}).catchall(z.any())),
960
+ title: z.object({}).catchall(z.object({}).catchall(z.any())),
961
+ excerpt: z.object({}).catchall(z.object({}).catchall(z.any())),
962
+ content: z.nullable(z.object({}).catchall(z.any())),
963
+ metaTitle: z.nullable(z.object({}).catchall(z.string())),
964
+ metaDescription: z.nullable(z.object({}).catchall(z.string())),
965
+ tags: z.array(z.string()),
966
+ isActive: z.boolean(),
967
+ isFeatured: z.boolean(),
968
+ priority: z.int().min(-2147483648).max(2147483647),
969
+ get status() {
970
+ return articleStatusSchema;
971
+ },
972
+ publishedAt: z.nullable(z.string()),
973
+ createdAt: z.nullable(z.string()),
974
+ updatedAt: z.nullable(z.string()),
975
+ get featureImage() {
976
+ return featureImageSchema.nullable();
977
+ },
978
+ get ogImage() {
979
+ return ogImageSchema.nullish();
980
+ }
981
+ }).describe(
982
+ "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`."
983
+ );
984
+
985
+ const fetchArticlesResponseSchema = z.array(
986
+ z.object({
987
+ id: z.string(),
988
+ venueId: z.string(),
989
+ accessor: z.string(),
990
+ slug: z.object({}).catchall(z.object({}).catchall(z.any())),
991
+ title: z.object({}).catchall(z.object({}).catchall(z.any())),
992
+ excerpt: z.object({}).catchall(z.object({}).catchall(z.any())),
993
+ content: z.nullable(z.object({}).catchall(z.any())),
994
+ metaTitle: z.nullable(z.object({}).catchall(z.string())),
995
+ metaDescription: z.nullable(z.object({}).catchall(z.string())),
996
+ tags: z.array(z.string()),
997
+ isActive: z.boolean(),
998
+ isFeatured: z.boolean(),
999
+ priority: z.int().min(-2147483648).max(2147483647),
1000
+ get status() {
1001
+ return articleStatusSchema;
1002
+ },
1003
+ publishedAt: z.nullable(z.string()),
1004
+ createdAt: z.nullable(z.string()),
1005
+ updatedAt: z.nullable(z.string()),
1006
+ get featureImage() {
1007
+ return featureImageSchema.nullable();
1008
+ },
1009
+ get ogImage() {
1010
+ return ogImageSchema.nullish();
1011
+ },
1012
+ get mentionCounts() {
1013
+ return articleMentionCountsSchema.optional();
1014
+ }
1015
+ })
1016
+ );
1017
+
1018
+ const fetchBasketResponseSchema = z.object({
1019
+ id: z.uuid(),
1020
+ sessionId: z.string(),
1021
+ get status() {
1022
+ return basketStatusSchema;
1023
+ },
1024
+ get currency() {
1025
+ return currencySchema;
1026
+ },
1027
+ items: z.array(
1028
+ z.object({
1029
+ id: z.uuid(),
1030
+ metadata: z.nullable(z.object({}).catchall(z.any())),
1031
+ deposit: z.nullable(
1032
+ z.object({
1033
+ depositwareTemplateId: z.string(),
1034
+ name: z.object({}).catchall(z.string()),
1035
+ amount: z.int().min(0).max(9007199254740991),
1036
+ get currency() {
1037
+ return currencySchema;
1038
+ }
1039
+ })
1040
+ ),
1041
+ menuItems: z.array(
1042
+ z.object({
1043
+ menuItemId: z.string(),
1044
+ role: z.nullable(z.string()),
1045
+ quantity: z.number().gt(0),
1046
+ get unit() {
1047
+ return unitSchema;
1048
+ }
1049
+ })
1050
+ )
1051
+ })
1052
+ ),
1053
+ itemCount: z.int().min(0).max(9007199254740991),
1054
+ get totals() {
1055
+ return basketTotalsSchema;
1056
+ },
1057
+ declaredReturns: z.array(
1058
+ z.object({
1059
+ depositwareTemplateId: z.string(),
1060
+ count: z.int().min(0).max(9007199254740991)
1061
+ })
1062
+ ),
1063
+ expiresAt: z.string(),
1064
+ createdAt: z.nullable(z.string()),
1065
+ updatedAt: z.nullable(z.string())
1066
+ });
1067
+
1068
+ const fetchEventResponseSchema = z.object({
1069
+ id: z.string(),
1070
+ venueId: z.string(),
1071
+ accessor: z.nullable(z.string()),
1072
+ name: z.object({}).catchall(z.string()),
1073
+ description: z.nullable(z.object({}).catchall(z.string())),
1074
+ scheduleId: z.nullable(z.string()),
1075
+ maxBookings: z.nullable(z.number()),
1076
+ maxGuests: z.nullable(z.number()),
1077
+ minPartySize: z.nullable(z.number()),
1078
+ maxPartySize: z.nullable(z.number()),
1079
+ isPublic: z.boolean(),
1080
+ isRecurring: z.boolean(),
1081
+ reservationsEnabled: z.boolean(),
1082
+ bookingOpensAtDays: z.nullable(z.number()),
1083
+ bookingClosesAtOffset: z.nullable(z.number()),
1084
+ isActive: z.boolean(),
1085
+ isFeatured: z.boolean(),
1086
+ priority: z.number(),
1087
+ createdAt: z.nullable(z.any()),
1088
+ updatedAt: z.nullable(z.any()),
1089
+ nextOccurrence: z.string().nullish(),
1090
+ schedule: z.optional(
1091
+ z.object({
1092
+ id: z.string(),
1093
+ name: z.object({}).catchall(z.string()),
1094
+ description: z.nullable(z.object({}).catchall(z.string())),
1095
+ timezone: z.string(),
1096
+ rrule: z.nullable(z.string()),
1097
+ exdates: z.nullable(z.array(z.string())),
1098
+ validFrom: z.nullable(z.string()),
1099
+ validTo: z.nullable(z.string()),
1100
+ priority: z.nullable(z.number()),
1101
+ isActive: z.boolean(),
1102
+ get slotMode() {
1103
+ return slotModeSchema;
1104
+ },
1105
+ intervalDuration: z.nullable(z.number()),
1106
+ duration: z.nullable(z.number()),
1107
+ scheduleTimeSlots: z.optional(
1108
+ z.array(
1109
+ z.object({
1110
+ get dayOfWeek() {
1111
+ return dayOfWeekSchema;
1112
+ },
1113
+ timeSlot: z.object({
1114
+ id: z.string(),
1115
+ startTime: z.string(),
1116
+ endTime: z.nullable(z.string()),
1117
+ isActive: z.nullable(z.boolean()),
1118
+ isSchedulable: z.nullable(z.boolean())
1119
+ })
1120
+ })
1121
+ )
1122
+ )
1123
+ })
1124
+ ),
1125
+ menus: z.optional(
1126
+ z.array(
1127
+ z.object({
1128
+ id: z.string(),
1129
+ accessor: z.string(),
1130
+ name: z.object({}).catchall(z.string()),
1131
+ category: z.string()
1132
+ })
1133
+ )
1134
+ ),
1135
+ posters: z.optional(
1136
+ z.array(
1137
+ z.object({
1138
+ id: z.string(),
1139
+ bucket: z.string(),
1140
+ storagePath: z.string(),
1141
+ filename: z.string(),
1142
+ contentType: z.string(),
1143
+ sizeBytes: z.number(),
1144
+ sortIndex: z.nullable(z.string()),
1145
+ publicUrl: z.string()
1146
+ })
1147
+ )
1148
+ )
1149
+ }).describe(
1150
+ "Event details. Nested objects (schedule, timeSlots, menus, posters, nextOccurrence) pass through; their shape follows the SDK Event interface."
1151
+ );
1152
+
1153
+ const promotionBenefitTypeSchema = z.enum([
1154
+ "free_item",
1155
+ "discount_percentage",
1156
+ "discount_amount",
1157
+ "buy_x_get_y"
1158
+ ]);
1159
+
1160
+ const fetchEventsResponseSchema = z.array(
1161
+ z.object({
1162
+ id: z.string(),
1163
+ venueId: z.string(),
1164
+ accessor: z.nullable(z.string()),
1165
+ name: z.object({}).catchall(z.string()),
1166
+ description: z.nullable(z.object({}).catchall(z.string())),
1167
+ scheduleId: z.nullable(z.string()),
1168
+ ritualId: z.nullable(z.string()),
1169
+ maxBookings: z.nullable(z.number()),
1170
+ maxGuests: z.nullable(z.number()),
1171
+ minPartySize: z.nullable(z.number()),
1172
+ maxPartySize: z.nullable(z.number()),
1173
+ isPublic: z.boolean(),
1174
+ isRecurring: z.boolean(),
1175
+ reservationsEnabled: z.boolean(),
1176
+ bookingOpensAtDays: z.nullable(z.number()),
1177
+ bookingClosesAtOffset: z.nullable(z.number()),
1178
+ isActive: z.boolean(),
1179
+ isFeatured: z.boolean(),
1180
+ priority: z.number(),
1181
+ createdBy: z.nullable(z.string()),
1182
+ updatedBy: z.nullable(z.string()),
1183
+ createdAt: z.nullable(z.any()),
1184
+ updatedAt: z.nullable(z.any()),
1185
+ schedule: z.nullable(
1186
+ z.object({
1187
+ id: z.string(),
1188
+ duration: z.nullable(z.number()),
1189
+ name: z.object({}).catchall(z.string()),
1190
+ timezone: z.string(),
1191
+ description: z.nullable(z.object({}).catchall(z.string())),
1192
+ rrule: z.nullable(z.string()),
1193
+ exdates: z.nullable(z.array(z.string())),
1194
+ validFrom: z.nullable(z.string()),
1195
+ validTo: z.nullable(z.string()),
1196
+ priority: z.nullable(z.number()),
1197
+ get slotMode() {
1198
+ return slotModeSchema;
1199
+ },
1200
+ intervalDuration: z.nullable(z.number()),
1201
+ isActive: z.boolean(),
1202
+ sortIndex: z.nullable(z.string()),
1203
+ updatedAt: z.nullable(z.any()),
1204
+ updatedBy: z.nullable(z.string()),
1205
+ createdAt: z.nullable(z.any()),
1206
+ createdBy: z.nullable(z.string()),
1207
+ scheduleOverrides: z.array(
1208
+ z.object({
1209
+ id: z.string(),
1210
+ date: z.string(),
1211
+ priority: z.nullable(z.number()),
1212
+ isActive: z.boolean(),
1213
+ updatedAt: z.nullable(z.any()),
1214
+ updatedBy: z.nullable(z.string()),
1215
+ createdAt: z.nullable(z.any()),
1216
+ createdBy: z.nullable(z.string()),
1217
+ scheduleId: z.string(),
1218
+ reason: z.nullable(z.object({}).catchall(z.string())),
1219
+ scheduleOverrideTimeSlots: z.array(
1220
+ z.object({
1221
+ sortIndex: z.nullable(z.string()),
1222
+ overrideId: z.string(),
1223
+ timeSlotId: z.string(),
1224
+ timeSlot: z.object({
1225
+ id: z.string(),
1226
+ isActive: z.nullable(z.boolean()),
1227
+ sortIndex: z.nullable(z.string()),
1228
+ updatedAt: z.nullable(z.any()),
1229
+ updatedBy: z.nullable(z.string()),
1230
+ createdAt: z.nullable(z.any()),
1231
+ createdBy: z.nullable(z.string()),
1232
+ startTime: z.string(),
1233
+ endTime: z.nullable(z.string()),
1234
+ isSchedulable: z.nullable(z.boolean())
1235
+ })
1236
+ })
1237
+ )
1238
+ })
1239
+ ),
1240
+ scheduleTimeSlots: z.array(
1241
+ z.object({
1242
+ sortIndex: z.nullable(z.string()),
1243
+ scheduleId: z.nullable(z.string()),
1244
+ timeSlotId: z.nullable(z.string()),
1245
+ get dayOfWeek() {
1246
+ return dayOfWeekSchema;
1247
+ },
1248
+ timeSlot: z.nullable(
1249
+ z.object({
1250
+ id: z.string(),
1251
+ isActive: z.nullable(z.boolean()),
1252
+ sortIndex: z.nullable(z.string()),
1253
+ updatedAt: z.nullable(z.any()),
1254
+ updatedBy: z.nullable(z.string()),
1255
+ createdAt: z.nullable(z.any()),
1256
+ createdBy: z.nullable(z.string()),
1257
+ startTime: z.string(),
1258
+ endTime: z.nullable(z.string()),
1259
+ isSchedulable: z.nullable(z.boolean())
1260
+ })
1261
+ )
1262
+ })
1263
+ )
1264
+ })
1265
+ ),
1266
+ nextOccurrence: z.nullable(z.string()),
1267
+ posters: z.array(
1268
+ z.object({
1269
+ id: z.string(),
1270
+ get type() {
1271
+ return assetTypeSchema;
1272
+ },
1273
+ metadata: z.nullable(
1274
+ z.object({
1275
+ width: z.optional(z.number()),
1276
+ height: z.optional(z.number()),
1277
+ duration: z.optional(z.number())
1278
+ })
1279
+ ),
1280
+ isActive: z.boolean(),
1281
+ sortIndex: z.nullable(z.string()),
1282
+ updatedAt: z.nullable(z.any()),
1283
+ updatedBy: z.nullable(z.string()),
1284
+ createdAt: z.nullable(z.any()),
1285
+ createdBy: z.nullable(z.string()),
1286
+ venueId: z.nullable(z.string()),
1287
+ tags: z.nullable(z.array(z.string())),
1288
+ bucket: z.string(),
1289
+ storagePath: z.string(),
1290
+ filename: z.string(),
1291
+ contentType: z.string(),
1292
+ sizeBytes: z.number(),
1293
+ caption: z.object({}).catchall(z.any()),
1294
+ alt: z.object({}).catchall(z.any()),
1295
+ cropArea: z.nullable(
1296
+ z.object({
1297
+ x: z.number(),
1298
+ y: z.number(),
1299
+ width: z.number(),
1300
+ height: z.number()
1301
+ })
1302
+ ),
1303
+ publicUrl: z.string()
1304
+ })
1305
+ ),
1306
+ timeSlots: z.array(
1307
+ z.object({
1308
+ id: z.optional(z.string()),
1309
+ startTime: z.optional(z.string()),
1310
+ endTime: z.string().nullish(),
1311
+ get dayOfWeek() {
1312
+ return dayOfWeekSchema;
1313
+ },
1314
+ isSchedulable: z.boolean().nullish()
1315
+ })
1316
+ ),
1317
+ scheduleOverrides: z.array(
1318
+ z.object({
1319
+ id: z.string(),
1320
+ date: z.string(),
1321
+ reason: z.nullable(z.object({}).catchall(z.string())),
1322
+ timeSlots: z.array(
1323
+ z.object({
1324
+ id: z.string(),
1325
+ startTime: z.string(),
1326
+ endTime: z.nullable(z.string()),
1327
+ isSchedulable: z.nullable(z.boolean())
1328
+ })
1329
+ )
1330
+ })
1331
+ ),
1332
+ promotions: z.array(
1333
+ z.object({
1334
+ id: z.string(),
1335
+ name: z.object({}).catchall(z.string()),
1336
+ description: z.nullable(z.object({}).catchall(z.string())),
1337
+ validFrom: z.nullable(z.string()),
1338
+ validTo: z.nullable(z.string()),
1339
+ isActive: z.boolean(),
1340
+ updatedAt: z.nullable(z.any()),
1341
+ updatedBy: z.nullable(z.string()),
1342
+ createdAt: z.nullable(z.any()),
1343
+ createdBy: z.nullable(z.string()),
1344
+ venueId: z.string(),
1345
+ get benefitType() {
1346
+ return promotionBenefitTypeSchema;
1347
+ },
1348
+ benefitValue: z.object({}).catchall(z.any()),
1349
+ conditions: z.nullable(z.object({}).catchall(z.any())),
1350
+ maxRedemptions: z.nullable(z.number()),
1351
+ currentRedemptions: z.nullable(z.number()),
1352
+ timeSlotIds: z.nullable(z.array(z.string()))
1353
+ })
1354
+ )
1355
+ })
1356
+ );
1357
+
1358
+ const orderStatusSchema = z.enum([
1359
+ "pending",
1360
+ "in_progress",
1361
+ "ready",
1362
+ "completed",
1363
+ "cancelled"
1364
+ ]);
1365
+
1366
+ const paymentStatusSchema = z.enum([
1367
+ "unpaid",
1368
+ "paid",
1369
+ "refunded",
1370
+ "authorized",
1371
+ "cash_pending"
1372
+ ]);
1373
+
1374
+ const fetchLatestOrderResponseSchema = z.object({
1375
+ id: z.uuid(),
1376
+ publicId: z.nullable(z.string()),
1377
+ quickReferenceNumber: z.nullable(
1378
+ z.int().min(-9007199254740991).max(9007199254740991)
1379
+ ),
1380
+ get status() {
1381
+ return orderStatusSchema;
1382
+ },
1383
+ get paymentStatus() {
1384
+ return paymentStatusSchema;
1385
+ },
1386
+ get fulfillmentType() {
1387
+ return fulfillmentTypeSchema;
1388
+ },
1389
+ fulfillmentAt: z.nullable(z.string()),
1390
+ orderedAt: z.string(),
1391
+ totalAmount: z.int().min(0).max(9007199254740991),
1392
+ get currency() {
1393
+ return currencySchema;
1394
+ },
1395
+ items: z.array(
1396
+ z.object({
1397
+ id: z.uuid(),
1398
+ metadata: z.nullable(z.object({}).catchall(z.any())),
1399
+ deposit: z.nullable(
1400
+ z.object({
1401
+ depositwareTemplateId: z.string(),
1402
+ name: z.object({}).catchall(z.string()),
1403
+ amount: z.int().min(0).max(9007199254740991),
1404
+ get currency() {
1405
+ return currencySchema;
1406
+ }
1407
+ })
1408
+ ),
1409
+ menuItems: z.array(
1410
+ z.object({
1411
+ menuItemId: z.string(),
1412
+ role: z.nullable(z.string()),
1413
+ quantity: z.number().gt(0),
1414
+ get unit() {
1415
+ return unitSchema;
1416
+ }
1417
+ })
1418
+ )
1419
+ })
1420
+ ),
1421
+ itemCount: z.int().min(0).max(9007199254740991),
1422
+ get totals() {
1423
+ return basketTotalsSchema;
1424
+ },
1425
+ declaredReturns: z.array(
1426
+ z.object({
1427
+ depositwareTemplateId: z.string(),
1428
+ count: z.int().min(0).max(9007199254740991)
1429
+ })
1430
+ )
1431
+ });
1432
+
1433
+ const fetchMenuBundlesResponseSchema = z.array(
1434
+ z.object({
1435
+ id: z.string(),
1436
+ menuId: z.string(),
1437
+ name: z.object({}).catchall(z.string()),
1438
+ shortName: z.nullable(z.object({}).catchall(z.string())),
1439
+ description: z.nullable(z.object({}).catchall(z.string())),
1440
+ tags: z.array(z.string()),
1441
+ price: z.object({
1442
+ amount: z.number(),
1443
+ get currency() {
1444
+ return currencySchema;
1445
+ }
1446
+ }),
1447
+ get currency() {
1448
+ return currencySchema;
1449
+ },
1450
+ taxRateId: z.string(),
1451
+ isActive: z.boolean(),
1452
+ sortIndex: z.nullable(z.string()),
1453
+ depositwareTemplateId: z.nullable(z.string()),
1454
+ depositwareTemplate: z.nullable(
1455
+ z.object({
1456
+ name: z.object({}).catchall(z.string())
1457
+ })
1458
+ ),
1459
+ deposit: z.nullable(
1460
+ z.object({
1461
+ depositwareTemplateId: z.string(),
1462
+ accessor: z.string(),
1463
+ amount: z.number(),
1464
+ get currency() {
1465
+ return currencySchema;
1466
+ }
1467
+ })
1468
+ )
1469
+ })
1470
+ );
1471
+
1472
+ const menuItemTypeSchema = z.enum(["dish", "beverage"]);
1473
+
1474
+ const fetchMenuResponseSchema = z.object({
1475
+ id: z.string(),
1476
+ name: z.object({}).catchall(z.string()),
1477
+ accessor: z.string(),
1478
+ metadata: z.nullable(
1479
+ z.object({
1480
+ orderingEnabled: z.optional(z.boolean()),
1481
+ compactTags: z.optional(z.array(z.string())),
1482
+ showDepositware: z.optional(z.boolean()),
1483
+ tagSortOrder: z.optional(z.array(z.string())),
1484
+ subscriptionsEnabled: z.optional(z.boolean()),
1485
+ isDeliveryEnabled: z.optional(z.boolean()),
1486
+ assetsEnabled: z.optional(z.boolean())
1487
+ })
1488
+ ),
1489
+ description: z.nullable(z.object({}).catchall(z.string())),
1490
+ sortIndex: z.nullable(z.string()),
1491
+ updatedAt: z.nullable(z.any()),
1492
+ updatedBy: z.nullable(z.string()),
1493
+ createdAt: z.nullable(z.any()),
1494
+ createdBy: z.nullable(z.string()),
1495
+ venueId: z.string(),
1496
+ deliveryThresholdAmount: z.nullable(z.number()),
1497
+ deliveryThresholdQuantity: z.nullable(z.number()),
1498
+ assets: z.array(
1499
+ z.object({
1500
+ id: z.string(),
1501
+ get type() {
1502
+ return assetTypeSchema;
1503
+ },
1504
+ metadata: z.nullable(
1505
+ z.object({
1506
+ width: z.optional(z.number()),
1507
+ height: z.optional(z.number()),
1508
+ duration: z.optional(z.number())
1509
+ })
1510
+ ),
1511
+ isActive: z.boolean(),
1512
+ sortIndex: z.nullable(z.string()),
1513
+ updatedAt: z.nullable(z.any()),
1514
+ updatedBy: z.nullable(z.string()),
1515
+ createdAt: z.nullable(z.any()),
1516
+ createdBy: z.nullable(z.string()),
1517
+ venueId: z.nullable(z.string()),
1518
+ tags: z.nullable(z.array(z.string())),
1519
+ bucket: z.string(),
1520
+ storagePath: z.string(),
1521
+ filename: z.string(),
1522
+ contentType: z.string(),
1523
+ sizeBytes: z.number(),
1524
+ caption: z.object({}).catchall(z.any()),
1525
+ alt: z.object({}).catchall(z.any()),
1526
+ cropArea: z.nullable(
1527
+ z.object({
1528
+ x: z.number(),
1529
+ y: z.number(),
1530
+ width: z.number(),
1531
+ height: z.number()
1532
+ })
1533
+ ),
1534
+ publicUrl: z.string()
1535
+ })
1536
+ ),
1537
+ items: z.optional(
1538
+ z.array(
1539
+ z.object({
1540
+ id: z.string(),
1541
+ get type() {
1542
+ return menuItemTypeSchema;
1543
+ },
1544
+ tags: z.nullable(z.array(z.string())),
1545
+ priceAdjustment: z.number(),
1546
+ get currency() {
1547
+ return currencySchema;
1548
+ },
1549
+ isActive: z.boolean(),
1550
+ isFeatured: z.boolean(),
1551
+ sortIndex: z.nullable(z.string()),
1552
+ dish: z.nullable(
1553
+ z.object({
1554
+ id: z.string(),
1555
+ accessor: z.string(),
1556
+ name: z.object({}).catchall(z.string()),
1557
+ shortName: z.optional(z.object({}).catchall(z.string())),
1558
+ description: z.nullable(z.object({}).catchall(z.string())),
1559
+ longDescription: z.object({}).catchall(z.string()).nullish(),
1560
+ isVegetarian: z.nullable(z.boolean()),
1561
+ isVegan: z.nullable(z.boolean()),
1562
+ isGlutenFree: z.nullable(z.boolean()),
1563
+ isDairyFree: z.nullable(z.boolean()),
1564
+ spiciness: z.nullable(z.number()),
1565
+ assets: z.optional(
1566
+ z.array(
1567
+ z.object({
1568
+ id: z.string(),
1569
+ get type() {
1570
+ return assetTypeSchema;
1571
+ },
1572
+ metadata: z.nullable(
1573
+ z.object({
1574
+ width: z.optional(z.number()),
1575
+ height: z.optional(z.number()),
1576
+ duration: z.optional(z.number())
1577
+ })
1578
+ ),
1579
+ isActive: z.boolean(),
1580
+ sortIndex: z.nullable(z.string()),
1581
+ updatedAt: z.nullable(z.any()),
1582
+ updatedBy: z.nullable(z.string()),
1583
+ createdAt: z.nullable(z.any()),
1584
+ createdBy: z.nullable(z.string()),
1585
+ venueId: z.nullable(z.string()),
1586
+ tags: z.nullable(z.array(z.string())),
1587
+ bucket: z.string(),
1588
+ storagePath: z.string(),
1589
+ filename: z.string(),
1590
+ contentType: z.string(),
1591
+ sizeBytes: z.number(),
1592
+ caption: z.object({}).catchall(z.any()),
1593
+ alt: z.object({}).catchall(z.any()),
1594
+ cropArea: z.nullable(
1595
+ z.object({
1596
+ x: z.number(),
1597
+ y: z.number(),
1598
+ width: z.number(),
1599
+ height: z.number()
1600
+ })
1601
+ ),
1602
+ publicUrl: z.string()
1603
+ })
1604
+ )
1605
+ )
1606
+ })
1607
+ ),
1608
+ beverage: z.nullable(
1609
+ z.object({
1610
+ id: z.string(),
1611
+ accessor: z.string(),
1612
+ name: z.object({}).catchall(z.string()),
1613
+ shortName: z.optional(z.object({}).catchall(z.string())),
1614
+ description: z.nullable(z.object({}).catchall(z.string())),
1615
+ longDescription: z.object({}).catchall(z.string()).nullish(),
1616
+ assets: z.optional(
1617
+ z.array(
1618
+ z.object({
1619
+ id: z.string(),
1620
+ get type() {
1621
+ return assetTypeSchema;
1622
+ },
1623
+ metadata: z.nullable(
1624
+ z.object({
1625
+ width: z.optional(z.number()),
1626
+ height: z.optional(z.number()),
1627
+ duration: z.optional(z.number())
1628
+ })
1629
+ ),
1630
+ isActive: z.boolean(),
1631
+ sortIndex: z.nullable(z.string()),
1632
+ updatedAt: z.nullable(z.any()),
1633
+ updatedBy: z.nullable(z.string()),
1634
+ createdAt: z.nullable(z.any()),
1635
+ createdBy: z.nullable(z.string()),
1636
+ venueId: z.nullable(z.string()),
1637
+ tags: z.nullable(z.array(z.string())),
1638
+ bucket: z.string(),
1639
+ storagePath: z.string(),
1640
+ filename: z.string(),
1641
+ contentType: z.string(),
1642
+ sizeBytes: z.number(),
1643
+ caption: z.object({}).catchall(z.any()),
1644
+ alt: z.object({}).catchall(z.any()),
1645
+ cropArea: z.nullable(
1646
+ z.object({
1647
+ x: z.number(),
1648
+ y: z.number(),
1649
+ width: z.number(),
1650
+ height: z.number()
1651
+ })
1652
+ ),
1653
+ publicUrl: z.string()
1654
+ })
1655
+ )
1656
+ )
1657
+ })
1658
+ )
1659
+ })
1660
+ )
1661
+ )
1662
+ }).describe(
1663
+ "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) \u2014 the raw junction relations are never surfaced."
1664
+ );
1665
+
1666
+ const subscriptionPeriodSchema = z.enum(["week", "month", "year"]);
1667
+
1668
+ const fetchMenuSubscriptionsResponseSchema = z.array(
1669
+ z.object({
1670
+ id: z.string(),
1671
+ menuId: z.string(),
1672
+ accessor: z.string(),
1673
+ name: z.object({}).catchall(z.string()),
1674
+ shortName: z.nullable(z.object({}).catchall(z.string())),
1675
+ description: z.nullable(z.object({}).catchall(z.string())),
1676
+ scheduleId: z.nullable(z.string()),
1677
+ allowance: z.number(),
1678
+ get billingPeriod() {
1679
+ return subscriptionPeriodSchema;
1680
+ },
1681
+ get allowancePeriod() {
1682
+ return subscriptionPeriodSchema;
1683
+ },
1684
+ expiryInDays: z.number(),
1685
+ price: z.number(),
1686
+ get currency() {
1687
+ return currencySchema;
1688
+ },
1689
+ stripeProductId: z.nullable(z.string()),
1690
+ stripePriceId: z.nullable(z.string()),
1691
+ isActive: z.boolean(),
1692
+ sortIndex: z.nullable(z.string()),
1693
+ subscriberCount: z.number(),
1694
+ redeemableTagSets: z.array(z.array(z.string())),
1695
+ posters: z.array(
1696
+ z.object({
1697
+ id: z.string(),
1698
+ menuSubscriptionId: z.string(),
1699
+ storagePath: z.string(),
1700
+ publicUrl: z.string(),
1701
+ filename: z.string(),
1702
+ contentType: z.string(),
1703
+ sizeBytes: z.number(),
1704
+ sortIndex: z.nullable(z.string()),
1705
+ createdBy: z.nullable(z.string()),
1706
+ createdAt: z.nullable(z.string())
1707
+ })
1708
+ )
1709
+ })
1710
+ );
1711
+
1712
+ const fetchTeamOrderResponseSchema = z.object({
1713
+ teamOrder: z.object({
1714
+ id: z.string(),
1715
+ publicId: z.string(),
1716
+ venueId: z.string(),
1717
+ menuId: z.string(),
1718
+ eventId: z.nullable(z.string()),
1719
+ teamName: z.nullable(z.string()),
1720
+ logoUrl: z.nullable(z.string()),
1721
+ leadDisplayName: z.string(),
1722
+ get status() {
1723
+ return teamOrderStatusSchema;
1724
+ },
1725
+ get allowedPaymentMethods() {
1726
+ return z.array(paymentMethodSchema);
1727
+ },
1728
+ get fulfillmentType() {
1729
+ return fulfillmentTypeSchema;
1730
+ },
1731
+ fulfillmentAt: z.nullable(z.iso.datetime()),
1732
+ deadlineAt: z.nullable(z.iso.datetime()),
1733
+ lockedAt: z.nullable(z.iso.datetime()),
1734
+ placedAt: z.nullable(z.iso.datetime()),
1735
+ cancelledAt: z.nullable(z.iso.datetime()),
1736
+ cancelReason: z.nullable(z.string()),
1737
+ deliveryAddressId: z.nullable(z.string()),
1738
+ diningLocation: z.nullable(z.string()),
1739
+ diningTime: z.nullable(z.string()),
1740
+ isDeliveryEnabled: z.boolean(),
1741
+ quickReferenceNumber: z.nullable(
1742
+ z.int().min(-9007199254740991).max(9007199254740991)
1743
+ )
1744
+ }),
1745
+ deliveryThreshold: z.object({
1746
+ amount: z.nullable(z.int().min(-9007199254740991).max(9007199254740991)),
1747
+ quantity: z.nullable(z.int().min(-9007199254740991).max(9007199254740991))
1748
+ }),
1749
+ participants: z.array(
1750
+ z.object({
1751
+ customerId: z.string(),
1752
+ basketId: z.nullable(z.string()),
1753
+ orderId: z.nullable(z.string()),
1754
+ participantNumber: z.nullable(z.int().max(9007199254740991)),
1755
+ displayName: z.nullable(z.string()),
1756
+ get status() {
1757
+ return participantStatusSchema;
1758
+ },
1759
+ bundleCount: z.int().min(0).max(9007199254740991),
1760
+ amount: z.int().min(0).max(9007199254740991),
1761
+ get paymentMethod() {
1762
+ return paymentMethodSchema;
1763
+ },
1764
+ isLead: z.boolean(),
1765
+ isMe: z.boolean(),
1766
+ joinedAt: z.iso.datetime(),
1767
+ items: z.array(
1768
+ z.object({
1769
+ id: z.string(),
1770
+ metadata: z.nullable(z.object({}).catchall(z.any())),
1771
+ menuItems: z.array(
1772
+ z.object({
1773
+ menuItemId: z.string(),
1774
+ role: z.nullable(z.string()),
1775
+ quantity: z.number(),
1776
+ get unit() {
1777
+ return unitSchema;
1778
+ }
1779
+ })
1780
+ ),
1781
+ isPaid: z.boolean()
1782
+ })
1783
+ ),
1784
+ payments: z.array(
1785
+ z.object({
1786
+ amount: z.int().min(0).max(9007199254740991),
1787
+ get method() {
1788
+ return paymentMethodSchema;
1789
+ },
1790
+ status: z.enum([
1791
+ "authorized",
1792
+ "captured",
1793
+ "cash_pending",
1794
+ "cash_received"
1795
+ ]),
1796
+ createdAt: z.iso.datetime(),
1797
+ cardLast4: z.nullable(z.string().min(4).max(4))
1798
+ })
1799
+ ),
1800
+ paidTotal: z.int().min(0).max(9007199254740991),
1801
+ amountDue: z.int().min(0).max(9007199254740991),
1802
+ declaredReturns: z.array(
1803
+ z.object({
1804
+ depositwareTemplateId: z.string(),
1805
+ count: z.int().min(0).max(9007199254740991)
1806
+ })
1807
+ ),
1808
+ leadSettledAt: z.nullable(z.string())
1809
+ })
1810
+ ),
1811
+ aggregatedTotals: z.object({
1812
+ confirmedBundleCount: z.int().min(0).max(9007199254740991),
1813
+ confirmedAmount: z.int().min(0).max(9007199254740991),
1814
+ totalBundleCount: z.int().min(0).max(9007199254740991)
1815
+ }),
1816
+ thresholdCheck: z.object({
1817
+ meets: z.boolean(),
1818
+ failedConstraints: z.array(z.enum(["quantity", "amount"])),
1819
+ requiredQuantity: z.nullable(
1820
+ z.int().min(-9007199254740991).max(9007199254740991)
1821
+ ),
1822
+ currentQuantity: z.int().min(-9007199254740991).max(9007199254740991),
1823
+ requiredAmount: z.nullable(
1824
+ z.int().min(-9007199254740991).max(9007199254740991)
1825
+ ),
1826
+ currentAmount: z.int().min(-9007199254740991).max(9007199254740991)
1827
+ }),
1828
+ isLead: z.boolean()
1829
+ });
1830
+
1831
+ const getAreaAvailabilityResponseSchema = z.object({
1832
+ from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
1833
+ to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
1834
+ get bookingMode() {
1835
+ return areaBookingModeSchema;
1836
+ },
1837
+ occupied: z.array(
1838
+ z.object({
1839
+ date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
1840
+ startTime: z.nullable(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/)),
1841
+ endTime: z.nullable(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/))
1842
+ })
1843
+ )
1844
+ });
1845
+
1846
+ const getBasketTotalsRequestSchema = z.object({
1847
+ venueAccessor: z.string().min(1),
1848
+ basketId: z.string().min(1),
1849
+ declaredReturns: z.optional(
1850
+ z.array(
1851
+ z.object({
1852
+ depositwareTemplateId: z.string().min(1),
1853
+ count: z.int().min(0).max(9007199254740991)
1854
+ })
1855
+ )
1856
+ )
1857
+ });
1858
+
1859
+ const getBasketTotalsResponseSchema = z.object({
1860
+ get currency() {
1861
+ return currencySchema;
1862
+ },
1863
+ itemsTotal: z.int().min(0).max(9007199254740991),
1864
+ taxAmount: z.int().min(0).max(9007199254740991),
1865
+ depositCharge: z.int().min(0).max(9007199254740991),
1866
+ grossTotal: z.int().min(0).max(9007199254740991),
1867
+ depositCredit: z.int().min(0).max(9007199254740991),
1868
+ effectiveTotal: z.int().min(0).max(9007199254740991),
1869
+ cashRefund: z.int().min(0).max(9007199254740991),
1870
+ returnable: z.array(
1871
+ z.object({
1872
+ depositwareTemplateId: z.string(),
1873
+ count: z.int().min(0).max(9007199254740991)
1874
+ })
1875
+ )
1876
+ });
1877
+
1878
+ const subscriptionCreditStatusSchema = z.enum([
1879
+ "available",
1880
+ "redeemed",
1881
+ "expired"
1882
+ ]);
1883
+
1884
+ const getSubscriptionCreditsResponseSchema = z.array(
1885
+ z.object({
1886
+ id: z.string(),
1887
+ subscriberId: z.string(),
1888
+ periodStart: z.string(),
1889
+ periodEnd: z.string(),
1890
+ expiresAt: z.nullable(z.string()),
1891
+ get status() {
1892
+ return subscriptionCreditStatusSchema;
1893
+ },
1894
+ redeemedAt: z.nullable(z.string()),
1895
+ orderId: z.nullable(z.string()),
1896
+ createdAt: z.nullable(z.string())
1897
+ })
1898
+ );
1899
+
1900
+ const getSubscriptionResponseSchema = z.object({
1901
+ id: z.string(),
1902
+ menuId: z.string(),
1903
+ accessor: z.string(),
1904
+ name: z.object({}).catchall(z.string()),
1905
+ shortName: z.nullable(z.object({}).catchall(z.string())),
1906
+ description: z.nullable(z.object({}).catchall(z.string())),
1907
+ scheduleId: z.nullable(z.string()),
1908
+ allowance: z.int().max(9007199254740991),
1909
+ get billingPeriod() {
1910
+ return subscriptionPeriodSchema;
1911
+ },
1912
+ get allowancePeriod() {
1913
+ return subscriptionPeriodSchema;
1914
+ },
1915
+ redeemableTagSets: z.array(z.array(z.string())),
1916
+ expiryInDays: z.nullable(z.int().max(9007199254740991)),
1917
+ price: z.int().min(0).max(9007199254740991),
1918
+ get currency() {
1919
+ return currencySchema;
1920
+ },
1921
+ isActive: z.boolean(),
1922
+ sortIndex: z.nullable(z.string()),
1923
+ posters: z.array(
1924
+ z.object({
1925
+ id: z.string(),
1926
+ menuSubscriptionId: z.string(),
1927
+ storagePath: z.string(),
1928
+ publicUrl: z.url(),
1929
+ filename: z.string(),
1930
+ contentType: z.string(),
1931
+ sizeBytes: z.int().min(-9007199254740991).max(9007199254740991),
1932
+ sortIndex: z.nullable(z.string()),
1933
+ createdBy: z.nullable(z.string()),
1934
+ createdAt: z.nullable(z.string())
1935
+ })
1936
+ )
1937
+ });
1938
+
1939
+ const getVenueResponseSchema = z.object({
1940
+ id: z.string(),
1941
+ accessor: z.string(),
1942
+ officialName: z.string(),
1943
+ legalName: z.string(),
1944
+ shortName: z.string(),
1945
+ brandName: z.string(),
1946
+ primaryLocale: z.string(),
1947
+ supportedLocales: z.array(z.string()),
1948
+ timezone: z.string(),
1949
+ createdAt: z.nullable(z.any()),
1950
+ updatedAt: z.nullable(z.any())
1951
+ }).describe(
1952
+ "A venue. The public API exposes only the minimal id + accessor + naming + locale fields the CLI's `venues use` / `auth whoami` consume."
1953
+ );
1954
+
1955
+ const integrationNotificationTypeSchema = z.enum([
1956
+ "order_created",
1957
+ "order_cancelled",
1958
+ "order_completed",
1959
+ "team_order_created",
1960
+ "reservation_created",
1961
+ "reservation_confirmed",
1962
+ "reservation_cancelled"
1963
+ ]);
1964
+
1965
+ const integrationTypeSchema = z.enum(["telegram"]);
1966
+
1967
+ const inventoryAssetStatusSchema = z.enum([
1968
+ "available",
1969
+ "in_use",
1970
+ "maintenance",
1971
+ "retired"
1972
+ ]);
1973
+
1974
+ const inventoryCategorySchema = z.enum([
1975
+ "depositware",
1976
+ "furniture",
1977
+ "equipment",
1978
+ "utensil"
1979
+ ]);
1980
+
1981
+ const invitationScenarioSchema = z.enum([
1982
+ "new_user",
1983
+ "already_member",
1984
+ "former_employee"
1985
+ ]);
1986
+
1987
+ const joinTeamOrderRequestSchema = z.object({
1988
+ publicId: z.string().min(1),
1989
+ sessionId: z.string().min(1),
1990
+ displayName: z.optional(z.string().min(1))
1991
+ });
1992
+
1993
+ const joinTeamOrderResponseSchema = z.object({
1994
+ teamOrderId: z.uuid(),
1995
+ basketId: z.string(),
1996
+ customerId: z.string(),
1997
+ get status() {
1998
+ return teamOrderStatusSchema;
1999
+ },
2000
+ isLead: z.boolean(),
2001
+ alreadyJoined: z.boolean()
2002
+ });
2003
+
2004
+ const jurisdictionSchema = z.enum(["DE", "CH", "FR", "IT"]);
2005
+
2006
+ const localeSchema = z.enum([
2007
+ "aa",
2008
+ "ab",
2009
+ "ae",
2010
+ "af",
2011
+ "ak",
2012
+ "am",
2013
+ "an",
2014
+ "ar",
2015
+ "as",
2016
+ "av",
2017
+ "ay",
2018
+ "az",
2019
+ "ba",
2020
+ "be",
2021
+ "bg",
2022
+ "bh",
2023
+ "bi",
2024
+ "bm",
2025
+ "bn",
2026
+ "bo",
2027
+ "br",
2028
+ "bs",
2029
+ "ca",
2030
+ "ce",
2031
+ "ch",
2032
+ "co",
2033
+ "cr",
2034
+ "cs",
2035
+ "cu",
2036
+ "cv",
2037
+ "cy",
2038
+ "da",
2039
+ "de",
2040
+ "dv",
2041
+ "dz",
2042
+ "ee",
2043
+ "el",
2044
+ "en",
2045
+ "eo",
2046
+ "es",
2047
+ "et",
2048
+ "eu",
2049
+ "fa",
2050
+ "ff",
2051
+ "fi",
2052
+ "fj",
2053
+ "fo",
2054
+ "fr",
2055
+ "fy",
2056
+ "ga",
2057
+ "gd",
2058
+ "gl",
2059
+ "gn",
2060
+ "gu",
2061
+ "gv",
2062
+ "ha",
2063
+ "he",
2064
+ "hi",
2065
+ "ho",
2066
+ "hr",
2067
+ "ht",
2068
+ "hu",
2069
+ "hy",
2070
+ "hz",
2071
+ "ia",
2072
+ "id",
2073
+ "ie",
2074
+ "ig",
2075
+ "ii",
2076
+ "ik",
2077
+ "io",
2078
+ "is",
2079
+ "it",
2080
+ "iu",
2081
+ "ja",
2082
+ "jv",
2083
+ "ka",
2084
+ "kg",
2085
+ "ki",
2086
+ "kj",
2087
+ "kk",
2088
+ "kl",
2089
+ "km",
2090
+ "kn",
2091
+ "ko",
2092
+ "kr",
2093
+ "ks",
2094
+ "ku",
2095
+ "kv",
2096
+ "kw",
2097
+ "ky",
2098
+ "la",
2099
+ "lb",
2100
+ "lg",
2101
+ "li",
2102
+ "ln",
2103
+ "lo",
2104
+ "lt",
2105
+ "lu",
2106
+ "lv",
2107
+ "mg",
2108
+ "mh",
2109
+ "mi",
2110
+ "mk",
2111
+ "ml",
2112
+ "mn",
2113
+ "mr",
2114
+ "ms",
2115
+ "mt",
2116
+ "my",
2117
+ "na",
2118
+ "nb",
2119
+ "nd",
2120
+ "ne",
2121
+ "ng",
2122
+ "nl",
2123
+ "nn",
2124
+ "no",
2125
+ "nr",
2126
+ "nv",
2127
+ "ny",
2128
+ "oc",
2129
+ "oj",
2130
+ "om",
2131
+ "or",
2132
+ "os",
2133
+ "pa",
2134
+ "pi",
2135
+ "pl",
2136
+ "ps",
2137
+ "pt",
2138
+ "qu",
2139
+ "rm",
2140
+ "rn",
2141
+ "ro",
2142
+ "ru",
2143
+ "rw",
2144
+ "sa",
2145
+ "sc",
2146
+ "sd",
2147
+ "se",
2148
+ "sg",
2149
+ "si",
2150
+ "sk",
2151
+ "sl",
2152
+ "sm",
2153
+ "sn",
2154
+ "so",
2155
+ "sq",
2156
+ "sr",
2157
+ "ss",
2158
+ "st",
2159
+ "su",
2160
+ "sv",
2161
+ "sw",
2162
+ "ta",
2163
+ "te",
2164
+ "tg",
2165
+ "th",
2166
+ "ti",
2167
+ "tk",
2168
+ "tl",
2169
+ "tn",
2170
+ "to",
2171
+ "tr",
2172
+ "ts",
2173
+ "tt",
2174
+ "tw",
2175
+ "ty",
2176
+ "ug",
2177
+ "uk",
2178
+ "ur",
2179
+ "uz",
2180
+ "ve",
2181
+ "vi",
2182
+ "vo",
2183
+ "wa",
2184
+ "wo",
2185
+ "xh",
2186
+ "yi",
2187
+ "yo",
2188
+ "za",
2189
+ "zh",
2190
+ "zu"
2191
+ ]);
2192
+
2193
+ const makeReservationRequestSchema = z.object({
2194
+ venueAccessor: z.string().min(1).describe(
2195
+ "Venue identifier \u2014 UUID or URL-friendly slug (accessor). Resolved server-side."
2196
+ ),
2197
+ eventId: z.uuid().describe("UUID of the event this reservation is for"),
2198
+ reservationDate: z.string().describe("Date of the reservation in YYYY-MM-DD format"),
2199
+ reservationTime: z.string().describe("Time of the reservation in HH:MM:SS format"),
2200
+ partySize: z.int().min(1).max(20).describe("Number of guests in the party. Must be between 1 and 20."),
2201
+ duration: z.int().min(30).max(300).describe(
2202
+ "Reservation duration in minutes. Defaults to 120 minutes if not specified. Range: 30-300 minutes."
2203
+ ).nullish(),
2204
+ customerId: z.uuid().describe("UUID of existing customer profile if available").nullish(),
2205
+ customerFirstName: z.string().min(1).max(50).describe("First name of the customer making the reservation"),
2206
+ customerLastName: z.string().min(1).max(50).describe("Last name of the customer making the reservation"),
2207
+ customerEmail: z.email().describe("Email address for reservation confirmations and updates").nullish(),
2208
+ customerPhone: z.string().min(1).describe(
2209
+ "Phone number for reservation confirmations and updates. Include country code for international numbers."
2210
+ ).nullish(),
2211
+ get contactPreference() {
2212
+ return contactPreferenceSchema.optional();
2213
+ },
2214
+ get source() {
2215
+ return areaBookingRequestSourceSchema.optional();
2216
+ },
2217
+ specialRequests: z.string().max(500).describe(
2218
+ "Any dietary restrictions, allergies, or special occasions (max 500 characters)"
2219
+ ).nullish(),
2220
+ tablePreference: z.string().max(100).describe(
2221
+ 'Preferred seating area or table type (e.g., "window seat", "quiet area", "patio")'
2222
+ ).nullish()
2223
+ }).describe("Request payload for making a new reservation");
2224
+
2225
+ const reservationStatusSchema = z.enum([
2226
+ "pending",
2227
+ "confirmed",
2228
+ "arrived",
2229
+ "seated",
2230
+ "completed",
2231
+ "cancelled",
2232
+ "no_show"
2233
+ ]);
2234
+
2235
+ const makeReservationResponseSchema = z.object({
2236
+ id: z.uuid().describe("Unique identifier for the reservation"),
2237
+ venueId: z.uuid().describe("Restaurant/tenant identifier"),
2238
+ eventId: z.uuid().describe("Event identifier for this reservation"),
2239
+ quickReferenceNumber: z.nullable(z.int().min(-2147483648).max(2147483647)),
2240
+ reservationDate: z.string().describe("Date of the reservation in YYYY-MM-DD format"),
2241
+ reservationTime: z.string().describe("Time of the reservation in HH:MM:SS format"),
2242
+ partySize: z.int().min(-9007199254740991).max(9007199254740991).describe("Number of guests in the party"),
2243
+ duration: z.nullable(
2244
+ z.int().min(-9007199254740991).max(9007199254740991).describe("Reservation duration in minutes")
2245
+ ),
2246
+ customerId: z.nullable(
2247
+ z.uuid().describe("Link to customer profile if exists")
2248
+ ),
2249
+ customerFirstName: z.string().describe("First name of the customer"),
2250
+ customerLastName: z.string().describe("Last name of the customer"),
2251
+ customerEmail: z.nullable(z.string().describe("Customer email address")),
2252
+ customerPhone: z.nullable(z.string().describe("Customer phone number")),
2253
+ get contactPreference() {
2254
+ return contactPreferenceSchema;
2255
+ },
2256
+ get status() {
2257
+ return reservationStatusSchema;
2258
+ },
2259
+ confirmationCode: z.nullable(
2260
+ z.string().describe("6-character confirmation code for the reservation")
2261
+ ),
2262
+ confirmedAt: z.nullable(
2263
+ z.any().describe("When the reservation was confirmed")
2264
+ ),
2265
+ arrivedAt: z.nullable(z.any().describe("When the guest arrived")),
2266
+ seatedAt: z.nullable(z.any().describe("When the guest was seated")),
2267
+ completedAt: z.nullable(z.any().describe("When the dining was completed")),
2268
+ cancelledAt: z.nullable(
2269
+ z.any().describe("When the reservation was cancelled")
2270
+ ),
2271
+ get cancellationReason() {
2272
+ return cancellationReasonSchema;
2273
+ },
2274
+ cancellationNote: z.nullable(
2275
+ z.string().describe("Additional cancellation details")
2276
+ ),
2277
+ get source() {
2278
+ return areaBookingRequestSourceSchema;
2279
+ },
2280
+ specialRequests: z.nullable(
2281
+ z.string().describe("Any special requirements or notes")
2282
+ ),
2283
+ tablePreference: z.nullable(
2284
+ z.string().describe("Preferred seating location")
2285
+ ),
2286
+ createdBy: z.nullable(
2287
+ z.string().describe("User ID who created the reservation")
2288
+ ),
2289
+ updatedBy: z.nullable(
2290
+ z.string().describe("User ID who last updated the reservation")
2291
+ ),
2292
+ createdAt: z.nullable(z.any().describe("Reservation creation timestamp")),
2293
+ updatedAt: z.nullable(z.any().describe("Last update timestamp"))
2294
+ }).describe("Successfully created reservation");
2295
+
2296
+ const mentionEntityTypeSchema = z.enum([
2297
+ "dish",
2298
+ "beverage",
2299
+ "ingredient",
2300
+ "menu",
2301
+ "ritual"
2302
+ ]);
2303
+
2304
+ const mentionFieldFormatterSchema = z.enum([
2305
+ "text",
2306
+ "currency",
2307
+ "integer",
2308
+ "percentage",
2309
+ "boolean"
2310
+ ]);
2311
+
2312
+ const mentionKindSchema = z.enum(["link", "value"]);
2313
+
2314
+ const patchArticleFeatureImageBodySchema = z.object({
2315
+ caption: z.optional(z.object({}).catchall(z.any())),
2316
+ alt: z.optional(z.object({}).catchall(z.any()))
2317
+ }).describe(
2318
+ "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`."
2319
+ );
2320
+
2321
+ const pendingSuperadminTransferStatusSchema = z.enum([
2322
+ "pending_invite",
2323
+ "accepted_awaiting_payment",
2324
+ "completed",
2325
+ "cancelled",
2326
+ "expired"
2327
+ ]);
2328
+
2329
+ const placeOrderRequestSchema = z.object({
2330
+ venueAccessor: z.string().min(1),
2331
+ basketId: z.string().min(1),
2332
+ sessionId: z.string().min(1),
2333
+ get paymentMethod() {
2334
+ return paymentMethodSchema;
2335
+ },
2336
+ get fulfillmentType() {
2337
+ return fulfillmentTypeSchema;
2338
+ },
2339
+ fulfillmentAt: z.iso.datetime().nullish(),
2340
+ customerFirstName: z.optional(z.string()),
2341
+ customerLastName: z.optional(z.string()),
2342
+ customerEmail: z.optional(z.string()),
2343
+ declaredReturns: z.optional(
2344
+ z.array(
2345
+ z.object({
2346
+ depositwareTemplateId: z.string().min(1),
2347
+ count: z.int().min(0).max(9007199254740991)
2348
+ })
2349
+ )
2350
+ )
2351
+ }).describe("Place a new order for a specific venue");
2352
+
2353
+ const placeOrderResponseSchema = z.object({
2354
+ id: z.string(),
2355
+ status: z.string(),
2356
+ publicId: z.nullable(z.string()),
2357
+ orderId: z.string(),
2358
+ quickReferenceNumber: z.nullable(
2359
+ z.int().min(-9007199254740991).max(9007199254740991)
2360
+ ),
2361
+ get currency() {
2362
+ return currencySchema;
2363
+ }
2364
+ });
2365
+
2366
+ const reduceDeltaPaymentIntentRequestSchema = z.object({
2367
+ venueAccessor: z.string().min(1),
2368
+ basketId: z.string().min(1),
2369
+ sessionId: z.string().min(1),
2370
+ get currency() {
2371
+ return currencySchema;
2372
+ },
2373
+ declaredReturns: z.optional(
2374
+ z.array(
2375
+ z.object({
2376
+ depositwareTemplateId: z.string().min(1),
2377
+ count: z.int().min(0).max(9007199254740991)
2378
+ })
2379
+ )
2380
+ )
2381
+ });
2382
+
2383
+ const reduceDeltaPaymentIntentResponseSchema = z.object({
2384
+ orderId: z.string(),
2385
+ paidTotal: z.int().min(0).max(9007199254740991),
2386
+ released: z.int().min(0).max(9007199254740991)
2387
+ });
2388
+
2389
+ const removeFromBasketResponseSchema = z.object({
2390
+ success: z.boolean(),
2391
+ basketItemId: z.uuid(),
2392
+ itemCount: z.int().min(0).max(9007199254740991),
2393
+ get totals() {
2394
+ return basketTotalsSchema.nullable();
2395
+ }
2396
+ });
2397
+
2398
+ const reservationPromotionStatusSchema = z.enum([
2399
+ "applied",
2400
+ "redeemed",
2401
+ "expired"
2402
+ ]);
2403
+
2404
+ const scanTokenEntityTypeSchema = z.enum(["order", "depositware"]);
2405
+
2406
+ const setArticleFeatureImageUploadBodySchema = z.object({
2407
+ file: z.string().describe("Image file (multipart/form-data field)")
2408
+ });
2409
+
2410
+ const setBasketDeclaredReturnsRequestSchema = z.object({
2411
+ venueAccessor: z.string().min(1),
2412
+ basketId: z.string().min(1),
2413
+ sessionId: z.string().min(1),
2414
+ declaredReturns: z.array(
2415
+ z.object({
2416
+ depositwareTemplateId: z.string().min(1),
2417
+ count: z.int().min(0).max(9007199254740991)
2418
+ })
2419
+ )
2420
+ });
2421
+
2422
+ const setBasketDeclaredReturnsResponseSchema = z.object({
2423
+ basketId: z.string(),
2424
+ declaredReturns: z.array(
2425
+ z.object({
2426
+ depositwareTemplateId: z.string().min(1),
2427
+ count: z.int().min(0).max(9007199254740991)
2428
+ })
2429
+ )
2430
+ });
2431
+
2432
+ const setDiningLocationTeamOrderRequestSchema = z.object({
2433
+ publicId: z.string().min(1),
2434
+ sessionId: z.string().min(1),
2435
+ diningLocation: z.string().max(200)
2436
+ });
2437
+
2438
+ const setDiningLocationTeamOrderResponseSchema = z.object({
2439
+ teamOrderId: z.uuid(),
2440
+ get status() {
2441
+ return teamOrderStatusSchema;
2442
+ },
2443
+ diningLocation: z.nullable(z.string())
2444
+ });
2445
+
2446
+ const setDiningTimeTeamOrderRequestSchema = z.object({
2447
+ publicId: z.string().min(1),
2448
+ sessionId: z.string().min(1),
2449
+ diningTime: z.string().regex(/^\d{2}:\d{2}$/)
2450
+ });
2451
+
2452
+ const setDiningTimeTeamOrderResponseSchema = z.object({
2453
+ teamOrderId: z.uuid(),
2454
+ get status() {
2455
+ return teamOrderStatusSchema;
2456
+ },
2457
+ diningTime: z.string(),
2458
+ diningOffset: z.int().min(0).max(9007199254740991)
2459
+ });
2460
+
2461
+ const setFulfillmentAtTeamOrderRequestSchema = z.object({
2462
+ publicId: z.string().min(1),
2463
+ sessionId: z.string().min(1),
2464
+ fulfillmentAt: z.iso.datetime()
2465
+ });
2466
+
2467
+ const setFulfillmentAtTeamOrderResponseSchema = z.object({
2468
+ teamOrderId: z.uuid(),
2469
+ get status() {
2470
+ return teamOrderStatusSchema;
2471
+ },
2472
+ fulfillmentAt: z.iso.datetime(),
2473
+ deadlineAt: z.nullable(z.iso.datetime())
2474
+ });
2475
+
2476
+ const setOrderLeadSettledRequestSchema = z.object({
2477
+ publicId: z.string().min(1),
2478
+ sessionId: z.string().min(1),
2479
+ orderId: z.uuid(),
2480
+ settled: z.boolean()
2481
+ });
2482
+
2483
+ const setOrderLeadSettledResponseSchema = z.object({
2484
+ orderId: z.uuid(),
2485
+ leadSettledAt: z.nullable(z.string())
2486
+ });
2487
+
2488
+ const sortOrderSchema = z.enum(["asc", "desc"]);
2489
+
2490
+ const submitAreaBookingPayloadSchema = z.object({
2491
+ requestedDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
2492
+ requestedStartTime: z.optional(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/)),
2493
+ requestedEndTime: z.optional(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/)),
2494
+ partySize: z.int().max(9007199254740991),
2495
+ customerFirstName: z.string().min(1),
2496
+ customerLastName: z.string().min(1),
2497
+ customerEmail: z.email(),
2498
+ customerPhone: z.optional(z.string()),
2499
+ message: z.optional(z.string()),
2500
+ get source() {
2501
+ return areaBookingRequestSourceSchema.optional();
2502
+ }
2503
+ });
2504
+
2505
+ const submitAreaBookingRequestResponseSchema = z.object({
2506
+ id: z.string(),
2507
+ venueId: z.string(),
2508
+ areaId: z.string(),
2509
+ requestedDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
2510
+ requestedStartTime: z.nullable(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/)),
2511
+ requestedEndTime: z.nullable(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/)),
2512
+ partySize: z.int().min(-9007199254740991).max(9007199254740991),
2513
+ customerFirstName: z.string(),
2514
+ customerLastName: z.string(),
2515
+ customerEmail: z.string(),
2516
+ customerPhone: z.nullable(z.string()),
2517
+ message: z.nullable(z.string()),
2518
+ get source() {
2519
+ return areaBookingRequestSourceSchema;
2520
+ },
2521
+ get status() {
2522
+ return areaBookingRequestStatusSchema;
2523
+ },
2524
+ areaBookingId: z.nullable(z.string()),
2525
+ createdAt: z.nullable(z.string()),
2526
+ updatedAt: z.nullable(z.string())
2527
+ });
2528
+
2529
+ const submitTeamOrderRequestSchema = z.object({
2530
+ publicId: z.string().min(1),
2531
+ sessionId: z.string().min(1)
2532
+ });
2533
+
2534
+ const submitTeamOrderResponseSchema = z.object({
2535
+ teamOrderId: z.uuid(),
2536
+ get status() {
2537
+ return teamOrderStatusSchema;
2538
+ },
2539
+ capturedOrderIds: z.array(z.string()),
2540
+ cashPendingOrderIds: z.array(z.string()),
2541
+ droppedBasketIds: z.array(z.string()),
2542
+ placedAt: z.iso.datetime()
2543
+ });
2544
+
2545
+ const subscribeToSubscriptionBodySchema = z.object({
2546
+ email: z.email(),
2547
+ firstName: z.optional(z.string()),
2548
+ lastName: z.optional(z.string()),
2549
+ sessionId: z.optional(z.string()),
2550
+ successUrl: z.url(),
2551
+ cancelUrl: z.url()
2552
+ });
2553
+
2554
+ const subscribeToSubscriptionResponseSchema = z.object({
2555
+ checkoutUrl: z.nullable(z.url()),
2556
+ sessionId: z.string()
2557
+ });
2558
+
2559
+ const subscriberStatusSchema = z.enum([
2560
+ "active",
2561
+ "paused",
2562
+ "cancelled",
2563
+ "past_due",
2564
+ "trialing"
2565
+ ]);
2566
+
2567
+ const switchFulfillmentTeamOrderRequestSchema = z.object({
2568
+ publicId: z.string().min(1),
2569
+ sessionId: z.string().min(1),
2570
+ get fulfillmentType() {
2571
+ return fulfillmentTypeSchema;
2572
+ },
2573
+ get deliveryAddress() {
2574
+ return deliveryAddressSchema.optional();
2575
+ }
2576
+ });
2577
+
2578
+ const switchFulfillmentTeamOrderResponseSchema = z.object({
2579
+ teamOrderId: z.uuid(),
2580
+ get status() {
2581
+ return teamOrderStatusSchema;
2582
+ },
2583
+ get fulfillmentType() {
2584
+ return fulfillmentTypeSchema;
2585
+ },
2586
+ deliveryAddressId: z.nullable(z.string())
2587
+ });
2588
+
2589
+ const teamOrderPaymentStatusSchema = z.enum([
2590
+ "authorized",
2591
+ "captured",
2592
+ "cash_pending",
2593
+ "cash_received",
2594
+ "voided",
2595
+ "failed"
2596
+ ]);
2597
+
2598
+ const updateDeliveryAddressTeamOrderRequestSchema = z.object({
2599
+ publicId: z.string().min(1),
2600
+ sessionId: z.string().min(1),
2601
+ get deliveryAddress() {
2602
+ return deliveryAddressSchema;
2603
+ }
2604
+ });
2605
+
2606
+ const updateDeliveryAddressTeamOrderResponseSchema = z.object({
2607
+ teamOrderId: z.uuid(),
2608
+ deliveryAddressId: z.string()
2609
+ });
2610
+
2611
+ const venueAssetTypeSchema = z.enum([
2612
+ "logomark",
2613
+ "wordmark",
2614
+ "combinationmark_horizontal",
2615
+ "combinationmark_vertical"
2616
+ ]);
2617
+
2618
+ const venueChargeKindSchema = z.enum(["base", "addon"]);
2619
+
2620
+ const venueTypeSchema = z.enum([
2621
+ "restaurant",
2622
+ "fine_dining_restaurant",
2623
+ "ghost_kitchen",
2624
+ "food_truck"
2625
+ ]);
2626
+
2627
+ const venueUserStatusSchema = z.enum(["pending", "confirmed", "revoked"]);
2628
+
70
2629
  const schemas = {
71
- Area,
72
- ListAreasResponse,
73
- GetAreaResponse,
74
- GetAreaAvailabilityResponse,
75
- SubmitAreaBookingRequest,
76
- SubmitAreaBookingResponse,
77
- includeDrafts,
78
- FeatureImage,
79
- Article,
80
- ListArticlesResponse,
81
- GetArticleResponse,
82
- PatchArticleRequest,
83
- PatchArticleResponse,
84
- UploadFeatureImageRequest,
85
- PatchFeatureImageRequest,
86
- AddToBasketRequest,
87
- AddToBasketResponse,
88
- RemoveFromBasketResponse,
89
- GetBasketTotalsRequest,
90
- GetBasketTotalsResponse,
91
- SetBasketDeclaredReturnsRequest,
92
- SetBasketDeclaredReturnsResponse,
93
- CreateEventRequest,
94
- CreateEventResponse,
95
- GetMenuResponse,
96
- ListMenuBundlesResponse,
97
- ListMenuSubscriptionsResponse,
98
- PlaceOrderRequest,
99
- PlaceOrderResponse,
100
- CreatePaymentIntentRequest,
101
- CreatePaymentIntentResponse,
102
- CreateDeltaPaymentIntentRequest,
103
- CreateDeltaPaymentIntentResponse,
104
- ReduceDeltaPaymentIntentRequest,
105
- ReduceDeltaPaymentIntentResponse,
106
- MakeReservationRequest,
107
- MakeReservationResponse,
108
- GetSubscriptionResponse,
109
- SubscribeRequest,
110
- SubscribeResponse,
111
- CancelSubscriptionRequest,
112
- CancelSubscriptionResponse,
113
- GetSubscriptionCreditsResponse,
114
- CreateTeamOrderRequest,
115
- CreateTeamOrderResponse,
116
- FetchTeamOrderResponse,
117
- JoinTeamOrderRequest,
118
- JoinTeamOrderResponse,
119
- SubmitTeamOrderRequest,
120
- SubmitTeamOrderResponse,
121
- CancelTeamOrderRequest,
122
- CancelTeamOrderResponse,
123
- ExtendDeadlineTeamOrderRequest,
124
- ExtendDeadlineTeamOrderResponse,
125
- SetFulfillmentAtTeamOrderRequest,
126
- SetFulfillmentAtTeamOrderResponse,
127
- SetDiningLocationTeamOrderRequest,
128
- SetDiningLocationTeamOrderResponse,
129
- SetDiningTimeTeamOrderRequest,
130
- SetDiningTimeTeamOrderResponse,
131
- postTeamOrdersPublicIdleadSettled_Body,
132
- postTeamOrdersPublicIdautoExtendFulfillmentIfExpired_Body,
133
- SwitchFulfillmentTeamOrderRequest,
134
- SwitchFulfillmentTeamOrderResponse,
135
- UpdateDeliveryAddressTeamOrderRequest,
136
- UpdateDeliveryAddressTeamOrderResponse,
137
- GetVenueResponse
2630
+ AbandonBasketRequest: abandonBasketRequestSchema,
2631
+ AbandonBasketResponse: abandonBasketResponseSchema,
2632
+ ActorType: actorTypeSchema,
2633
+ AddToBasketRequest: addToBasketRequestSchema,
2634
+ AddToBasketResponse: addToBasketResponseSchema,
2635
+ AdditiveFunction: additiveFunctionSchema,
2636
+ AreaBookingMode: areaBookingModeSchema,
2637
+ AreaBookingRequestSource: areaBookingRequestSourceSchema,
2638
+ AreaBookingRequestStatus: areaBookingRequestStatusSchema,
2639
+ AreaBookingStatus: areaBookingStatusSchema,
2640
+ Area: areaSchema,
2641
+ ArticleEditorSaveState: articleEditorSaveStateSchema,
2642
+ ArticleMentionCounts: articleMentionCountsSchema,
2643
+ ArticleStatus: articleStatusSchema,
2644
+ AssetType: assetTypeSchema,
2645
+ AutoExtendFulfillmentIfExpiredRequest: autoExtendFulfillmentIfExpiredRequestSchema,
2646
+ AutoExtendFulfillmentIfExpiredResponse: autoExtendFulfillmentIfExpiredResponseSchema,
2647
+ BasketStatus: basketStatusSchema,
2648
+ BasketTotals: basketTotalsSchema,
2649
+ BeverageCategory: beverageCategorySchema,
2650
+ BillingMode: billingModeSchema,
2651
+ CancelSubscriptionRequest: cancelSubscriptionRequestSchema,
2652
+ CancelSubscriptionResponse: cancelSubscriptionResponseSchema,
2653
+ CancelTeamOrderRequest: cancelTeamOrderRequestSchema,
2654
+ CancelTeamOrderResponse: cancelTeamOrderResponseSchema,
2655
+ CancellationReason: cancellationReasonSchema,
2656
+ ConfirmOrderRequest: confirmOrderRequestSchema,
2657
+ ConfirmOrderResponse: confirmOrderResponseSchema,
2658
+ ContactPreference: contactPreferenceSchema,
2659
+ CountryCode: countryCodeSchema,
2660
+ CreateDeltaPaymentIntentRequest: createDeltaPaymentIntentRequestSchema,
2661
+ CreateDeltaPaymentIntentResponse: createDeltaPaymentIntentResponseSchema,
2662
+ CreateEventRequest: createEventRequestSchema,
2663
+ CreateEventResponse: createEventResponseSchema,
2664
+ CreatePaymentIntentRequest: createPaymentIntentRequestSchema,
2665
+ CreatePaymentIntentResponse: createPaymentIntentResponseSchema,
2666
+ CreateTeamOrderRequest: createTeamOrderRequestSchema,
2667
+ CreateTeamOrderResponse: createTeamOrderResponseSchema,
2668
+ Currency: currencySchema,
2669
+ DayOfWeek: dayOfWeekSchema,
2670
+ DeliveryAddress: deliveryAddressSchema,
2671
+ DepositTransactionType: depositTransactionTypeSchema,
2672
+ DepositwareStatus: depositwareStatusSchema,
2673
+ EditArticleRequest: editArticleRequestSchema,
2674
+ EditArticleResponse: editArticleResponseSchema,
2675
+ EntityOwnerType: entityOwnerTypeSchema,
2676
+ EnumFalse: enumFalseSchema,
2677
+ EnumTrue: enumTrueSchema,
2678
+ ExtendDeadlineTeamOrderRequest: extendDeadlineTeamOrderRequestSchema,
2679
+ ExtendDeadlineTeamOrderResponse: extendDeadlineTeamOrderResponseSchema,
2680
+ FeatureCategory: featureCategorySchema,
2681
+ FeatureImage: featureImageSchema,
2682
+ FeatureStatus: featureStatusSchema,
2683
+ FetchAreaBookingsResponse: fetchAreaBookingsResponseSchema,
2684
+ FetchAreaResponse: fetchAreaResponseSchema,
2685
+ FetchAreasResponse: fetchAreasResponseSchema,
2686
+ FetchArticleResponse: fetchArticleResponseSchema,
2687
+ FetchArticlesResponse: fetchArticlesResponseSchema,
2688
+ FetchBasketResponse: fetchBasketResponseSchema,
2689
+ FetchEventResponse: fetchEventResponseSchema,
2690
+ FetchEventsResponse: fetchEventsResponseSchema,
2691
+ FetchLatestOrderResponse: fetchLatestOrderResponseSchema,
2692
+ FetchMenuBundlesResponse: fetchMenuBundlesResponseSchema,
2693
+ FetchMenuResponse: fetchMenuResponseSchema,
2694
+ FetchMenuSubscriptionsResponse: fetchMenuSubscriptionsResponseSchema,
2695
+ FetchTeamOrderResponse: fetchTeamOrderResponseSchema,
2696
+ FulfillmentType: fulfillmentTypeSchema,
2697
+ GetAreaAvailabilityResponse: getAreaAvailabilityResponseSchema,
2698
+ GetBasketTotalsRequest: getBasketTotalsRequestSchema,
2699
+ GetBasketTotalsResponse: getBasketTotalsResponseSchema,
2700
+ GetSubscriptionCreditsResponse: getSubscriptionCreditsResponseSchema,
2701
+ GetSubscriptionResponse: getSubscriptionResponseSchema,
2702
+ GetVenueResponse: getVenueResponseSchema,
2703
+ IntegrationNotificationType: integrationNotificationTypeSchema,
2704
+ IntegrationType: integrationTypeSchema,
2705
+ InventoryAssetStatus: inventoryAssetStatusSchema,
2706
+ InventoryCategory: inventoryCategorySchema,
2707
+ InvitationScenario: invitationScenarioSchema,
2708
+ JoinTeamOrderRequest: joinTeamOrderRequestSchema,
2709
+ JoinTeamOrderResponse: joinTeamOrderResponseSchema,
2710
+ Jurisdiction: jurisdictionSchema,
2711
+ Locale: localeSchema,
2712
+ MakeReservationRequest: makeReservationRequestSchema,
2713
+ MakeReservationResponse: makeReservationResponseSchema,
2714
+ MentionEntityType: mentionEntityTypeSchema,
2715
+ MentionFieldFormatter: mentionFieldFormatterSchema,
2716
+ MentionKind: mentionKindSchema,
2717
+ MenuItemType: menuItemTypeSchema,
2718
+ OgImage: ogImageSchema,
2719
+ OrderStatus: orderStatusSchema,
2720
+ ParticipantStatus: participantStatusSchema,
2721
+ PatchArticleFeatureImageBody: patchArticleFeatureImageBodySchema,
2722
+ PaymentMethod: paymentMethodSchema,
2723
+ PaymentStatus: paymentStatusSchema,
2724
+ PendingSuperadminTransferStatus: pendingSuperadminTransferStatusSchema,
2725
+ PlaceOrderRequest: placeOrderRequestSchema,
2726
+ PlaceOrderResponse: placeOrderResponseSchema,
2727
+ PromotionBenefitType: promotionBenefitTypeSchema,
2728
+ ReduceDeltaPaymentIntentRequest: reduceDeltaPaymentIntentRequestSchema,
2729
+ ReduceDeltaPaymentIntentResponse: reduceDeltaPaymentIntentResponseSchema,
2730
+ RemoveFromBasketResponse: removeFromBasketResponseSchema,
2731
+ ReservationPromotionStatus: reservationPromotionStatusSchema,
2732
+ ReservationStatus: reservationStatusSchema,
2733
+ ScanTokenEntityType: scanTokenEntityTypeSchema,
2734
+ SetArticleFeatureImageUploadBody: setArticleFeatureImageUploadBodySchema,
2735
+ SetBasketDeclaredReturnsRequest: setBasketDeclaredReturnsRequestSchema,
2736
+ SetBasketDeclaredReturnsResponse: setBasketDeclaredReturnsResponseSchema,
2737
+ SetDiningLocationTeamOrderRequest: setDiningLocationTeamOrderRequestSchema,
2738
+ SetDiningLocationTeamOrderResponse: setDiningLocationTeamOrderResponseSchema,
2739
+ SetDiningTimeTeamOrderRequest: setDiningTimeTeamOrderRequestSchema,
2740
+ SetDiningTimeTeamOrderResponse: setDiningTimeTeamOrderResponseSchema,
2741
+ SetFulfillmentAtTeamOrderRequest: setFulfillmentAtTeamOrderRequestSchema,
2742
+ SetFulfillmentAtTeamOrderResponse: setFulfillmentAtTeamOrderResponseSchema,
2743
+ SetOrderLeadSettledRequest: setOrderLeadSettledRequestSchema,
2744
+ SetOrderLeadSettledResponse: setOrderLeadSettledResponseSchema,
2745
+ SlotMode: slotModeSchema,
2746
+ SortOrder: sortOrderSchema,
2747
+ SubmitAreaBookingPayload: submitAreaBookingPayloadSchema,
2748
+ SubmitAreaBookingRequestResponse: submitAreaBookingRequestResponseSchema,
2749
+ SubmitTeamOrderRequest: submitTeamOrderRequestSchema,
2750
+ SubmitTeamOrderResponse: submitTeamOrderResponseSchema,
2751
+ SubscribeToSubscriptionBody: subscribeToSubscriptionBodySchema,
2752
+ SubscribeToSubscriptionResponse: subscribeToSubscriptionResponseSchema,
2753
+ SubscriberStatus: subscriberStatusSchema,
2754
+ SubscriptionCreditStatus: subscriptionCreditStatusSchema,
2755
+ SubscriptionPeriod: subscriptionPeriodSchema,
2756
+ SwitchFulfillmentTeamOrderRequest: switchFulfillmentTeamOrderRequestSchema,
2757
+ SwitchFulfillmentTeamOrderResponse: switchFulfillmentTeamOrderResponseSchema,
2758
+ TeamOrderPaymentStatus: teamOrderPaymentStatusSchema,
2759
+ TeamOrderStatus: teamOrderStatusSchema,
2760
+ Unit: unitSchema,
2761
+ UpdateDeliveryAddressTeamOrderRequest: updateDeliveryAddressTeamOrderRequestSchema,
2762
+ UpdateDeliveryAddressTeamOrderResponse: updateDeliveryAddressTeamOrderResponseSchema,
2763
+ VenueAssetType: venueAssetTypeSchema,
2764
+ VenueChargeKind: venueChargeKindSchema,
2765
+ VenueType: venueTypeSchema,
2766
+ VenueUserStatus: venueUserStatusSchema
138
2767
  };
139
2768
 
140
2769
  export { schemas };