order3000 0.24.4 → 0.25.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,1353 @@
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 addToBasketRequestSchema = z.object({
5
+ venueId: z.uuid(),
6
+ sessionId: z.string().min(1),
7
+ menuItems: z.array(
8
+ z.object({
9
+ menuItemId: z.string().min(1),
10
+ role: z.optional(z.string()),
11
+ quantity: z.optional(z.number().gt(0)),
12
+ unit: z.optional(
13
+ z.enum(["grams", "kilograms", "liters", "milliliters", "pieces"])
14
+ )
15
+ })
16
+ ).min(1),
17
+ metadata: z.optional(z.object({}).catchall(z.any()))
18
+ }).describe("Add an item to the shopping basket");
19
+
20
+ const basketTotalsSchema = z.object({
21
+ currency: z.enum(["EUR", "CHF"]),
22
+ itemsTotal: z.int().min(0).max(9007199254740991),
23
+ taxAmount: z.int().min(0).max(9007199254740991),
24
+ depositCharge: z.int().min(0).max(9007199254740991),
25
+ grossTotal: z.int().min(0).max(9007199254740991),
26
+ depositCredit: z.int().min(0).max(9007199254740991),
27
+ effectiveTotal: z.int().min(0).max(9007199254740991),
28
+ cashRefund: z.int().min(0).max(9007199254740991),
29
+ returnable: z.array(
30
+ z.object({
31
+ depositwareTemplateId: z.string(),
32
+ count: z.int().min(0).max(9007199254740991)
33
+ })
34
+ )
35
+ });
36
+
37
+ const addToBasketResponseSchema = z.object({
38
+ basketItemId: z.uuid(),
39
+ itemCount: z.int().min(0).max(9007199254740991),
40
+ deposit: z.nullable(
41
+ z.object({
42
+ depositwareTemplateId: z.string(),
43
+ name: z.object({}).catchall(z.string()),
44
+ amount: z.int().min(0).max(9007199254740991),
45
+ currency: z.enum(["EUR", "CHF"])
46
+ })
47
+ ),
48
+ get totals() {
49
+ return basketTotalsSchema;
50
+ }
51
+ });
52
+
53
+ const areaSchema = z.object({
54
+ id: z.string(),
55
+ venueId: z.string(),
56
+ accessor: z.string(),
57
+ name: z.object({}).catchall(z.string()),
58
+ description: z.nullable(z.object({}).catchall(z.string())),
59
+ longDescription: z.nullable(z.object({}).catchall(z.string())),
60
+ minCapacity: z.nullable(
61
+ z.int().min(-9007199254740991).max(9007199254740991)
62
+ ),
63
+ maxCapacity: z.int().min(-9007199254740991).max(9007199254740991),
64
+ currency: z.enum(["EUR", "CHF"]),
65
+ basePrice: z.nullable(z.int().min(-9007199254740991).max(9007199254740991)),
66
+ perPersonPrice: z.nullable(
67
+ z.int().min(-9007199254740991).max(9007199254740991)
68
+ ),
69
+ features: z.nullable(
70
+ z.array(
71
+ z.object({
72
+ icon: z.string(),
73
+ label: z.object({}).catchall(z.string()),
74
+ description: z.optional(z.object({}).catchall(z.string()))
75
+ })
76
+ )
77
+ ),
78
+ bookingMode: z.enum(["slot", "day"]),
79
+ assets: z.optional(
80
+ z.array(
81
+ z.object({
82
+ id: z.string(),
83
+ type: z.enum(["image", "video", "document"]),
84
+ tags: z.nullable(z.array(z.string())),
85
+ filename: z.string(),
86
+ contentType: z.string(),
87
+ metadata: z.nullable(
88
+ z.object({
89
+ width: z.optional(z.number()),
90
+ height: z.optional(z.number()),
91
+ duration: z.optional(z.number())
92
+ })
93
+ ),
94
+ cropArea: z.nullable(
95
+ z.object({
96
+ x: z.number(),
97
+ y: z.number(),
98
+ width: z.number(),
99
+ height: z.number()
100
+ })
101
+ ),
102
+ publicUrl: z.url()
103
+ })
104
+ )
105
+ )
106
+ }).describe(
107
+ "A bookable + public area for a venue. Assets are only included when the request expands them."
108
+ );
109
+
110
+ const articleMentionCountsSchema = z.object({
111
+ dishes: z.int().min(0).max(9007199254740991),
112
+ beverages: z.int().min(0).max(9007199254740991),
113
+ ingredients: z.int().min(0).max(9007199254740991),
114
+ menus: z.int().min(0).max(9007199254740991),
115
+ rituals: z.int().min(0).max(9007199254740991)
116
+ });
117
+
118
+ const cancelSubscriptionRequestSchema = z.object({
119
+ subscriberId: z.string().min(1)
120
+ });
121
+
122
+ const cancelSubscriptionResponseSchema = z.object({
123
+ success: z.literal(true)
124
+ });
125
+
126
+ const cancelTeamOrderRequestSchema = z.object({
127
+ publicId: z.string().min(1),
128
+ sessionId: z.string().min(1),
129
+ reason: z.optional(z.string().max(500))
130
+ });
131
+
132
+ const cancelTeamOrderResponseSchema = z.object({
133
+ teamOrderId: z.uuid(),
134
+ get status() {
135
+ return teamOrderStatusSchema;
136
+ },
137
+ voidedPaymentIntentIds: z.array(z.string()),
138
+ cancelledAt: z.iso.datetime()
139
+ });
140
+
141
+ const confirmOrderRequestSchema = z.object({
142
+ venueAccessor: z.string().min(1),
143
+ orderId: z.string().min(1),
144
+ paymentIntentId: z.string().min(1)
145
+ });
146
+
147
+ const confirmOrderResponseSchema = z.object({
148
+ id: z.string(),
149
+ status: z.string(),
150
+ publicId: z.nullable(z.string()),
151
+ quickReferenceNumber: z.nullable(
152
+ z.int().min(-9007199254740991).max(9007199254740991)
153
+ ),
154
+ customerId: z.optional(z.string())
155
+ });
156
+
157
+ const createDeltaPaymentIntentRequestSchema = z.object({
158
+ venueAccessor: z.string().min(1),
159
+ basketId: z.string().min(1),
160
+ sessionId: z.string().min(1),
161
+ currency: z.enum(["EUR", "CHF"]),
162
+ declaredReturns: z.optional(
163
+ z.array(
164
+ z.object({
165
+ depositwareTemplateId: z.string().min(1),
166
+ count: z.int().min(0).max(9007199254740991)
167
+ })
168
+ )
169
+ )
170
+ });
171
+
172
+ const createDeltaPaymentIntentResponseSchema = z.object({
173
+ clientSecret: z.nullable(z.string()),
174
+ paymentIntentId: z.string(),
175
+ orderId: z.string(),
176
+ amount: z.int().max(9007199254740991),
177
+ status: z.enum([
178
+ "requires_payment_method",
179
+ "requires_confirmation",
180
+ "requires_action",
181
+ "processing",
182
+ "requires_capture",
183
+ "canceled",
184
+ "succeeded"
185
+ ])
186
+ });
187
+
188
+ const createEventRequestSchema = z.object({
189
+ accessor: z.string().nullish(),
190
+ name: z.union([
191
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
192
+ z.array(z.any()),
193
+ z.object({}).catchall(z.any())
194
+ ]),
195
+ description: z.union([
196
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
197
+ z.array(z.any()),
198
+ z.object({}).catchall(z.any())
199
+ ]).nullish(),
200
+ scheduleId: z.string().nullish(),
201
+ maxBookings: z.int().min(-2147483648).max(2147483647).nullish(),
202
+ maxGuests: z.int().min(-2147483648).max(2147483647).nullish(),
203
+ minPartySize: z.int().min(-2147483648).max(2147483647).nullish(),
204
+ maxPartySize: z.int().min(-2147483648).max(2147483647).nullish(),
205
+ isPublic: z.optional(z.boolean()),
206
+ isRecurring: z.optional(z.boolean()),
207
+ reservationsEnabled: z.optional(z.boolean()),
208
+ bookingOpensAtDays: z.int().min(-2147483648).max(2147483647).nullish(),
209
+ bookingClosesAtOffset: z.int().min(-2147483648).max(2147483647).nullish(),
210
+ isActive: z.optional(z.boolean()),
211
+ isFeatured: z.optional(z.boolean()),
212
+ priority: z.optional(z.int().min(-2147483648).max(2147483647)),
213
+ schedule: z.object({
214
+ rrule: z.string().nullish(),
215
+ timezone: z.string().nullish(),
216
+ validFrom: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullish(),
217
+ validTo: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullish(),
218
+ timeRanges: z.array(
219
+ z.object({
220
+ startTime: z.string().regex(/^\d{2}:\d{2}$/),
221
+ endTime: z.string().regex(/^\d{2}:\d{2}$/),
222
+ lastSeatingTime: z.string().regex(/^\d{2}:\d{2}$/).nullish()
223
+ })
224
+ ).min(1),
225
+ slotMode: z.enum(["interval", "duration"]).nullish(),
226
+ intervalDuration: z.number().nullish(),
227
+ duration: z.number().nullish()
228
+ }).nullish(),
229
+ ritualAccessor: z.string().nullish(),
230
+ venueAccessor: z.string().min(1)
231
+ }).describe("Request payload for creating a new event");
232
+
233
+ const createEventResponseSchema = z.object({
234
+ id: z.string(),
235
+ venueId: z.string(),
236
+ accessor: z.nullable(z.string()),
237
+ name: z.union([
238
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
239
+ z.array(z.any()),
240
+ z.object({}).catchall(z.any())
241
+ ]),
242
+ description: z.nullable(
243
+ z.union([
244
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
245
+ z.array(z.any()),
246
+ z.object({}).catchall(z.any())
247
+ ])
248
+ ),
249
+ scheduleId: z.nullable(z.string()),
250
+ ritualId: z.nullable(z.string()),
251
+ maxBookings: z.nullable(z.int().min(-2147483648).max(2147483647)),
252
+ maxGuests: z.nullable(z.int().min(-2147483648).max(2147483647)),
253
+ minPartySize: z.nullable(z.int().min(-2147483648).max(2147483647)),
254
+ maxPartySize: z.nullable(z.int().min(-2147483648).max(2147483647)),
255
+ isPublic: z.boolean(),
256
+ isRecurring: z.boolean(),
257
+ reservationsEnabled: z.boolean(),
258
+ bookingOpensAtDays: z.nullable(z.int().min(-2147483648).max(2147483647)),
259
+ bookingClosesAtOffset: z.nullable(z.int().min(-2147483648).max(2147483647)),
260
+ isActive: z.boolean(),
261
+ isFeatured: z.boolean(),
262
+ priority: z.int().min(-2147483648).max(2147483647),
263
+ createdBy: z.nullable(z.string()),
264
+ updatedBy: z.nullable(z.string()),
265
+ createdAt: z.nullable(z.any()),
266
+ updatedAt: z.nullable(z.any())
267
+ }).describe("Successfully created event");
268
+
269
+ const createPaymentIntentRequestSchema = z.object({
270
+ venueAccessor: z.string().min(1),
271
+ basketId: z.string().min(1),
272
+ currency: z.enum(["EUR", "CHF"]),
273
+ sessionId: z.string().min(1),
274
+ get fulfillmentType() {
275
+ return fulfillmentTypeSchema;
276
+ },
277
+ fulfillmentAt: z.iso.datetime().nullish(),
278
+ customerFirstName: z.optional(z.string()),
279
+ customerLastName: z.optional(z.string()),
280
+ teamOrderPublicId: z.optional(z.string()),
281
+ declaredReturns: z.optional(
282
+ z.array(
283
+ z.object({
284
+ depositwareTemplateId: z.string().min(1),
285
+ count: z.int().min(0).max(9007199254740991)
286
+ })
287
+ )
288
+ )
289
+ });
290
+
291
+ const createPaymentIntentResponseSchema = z.object({
292
+ clientSecret: z.nullable(z.string()),
293
+ paymentIntentId: z.string(),
294
+ orderId: z.string()
295
+ });
296
+
297
+ const createTeamOrderRequestSchema = z.object({
298
+ venueAccessor: z.string().min(1),
299
+ sessionId: z.string().min(1),
300
+ menuId: z.uuid(),
301
+ leadDisplayName: z.string().min(1),
302
+ teamName: z.optional(z.string().min(1)),
303
+ logoUrl: z.optional(z.url()),
304
+ deadlineAt: z.iso.datetime().nullish(),
305
+ get fulfillmentType() {
306
+ return fulfillmentTypeSchema;
307
+ },
308
+ fulfillmentAt: z.iso.datetime().nullish(),
309
+ get deliveryAddress() {
310
+ return deliveryAddressSchema.optional();
311
+ },
312
+ get allowedPaymentMethods() {
313
+ return z.array(paymentMethodSchema).min(1);
314
+ },
315
+ eventId: z.optional(z.uuid())
316
+ }).describe(
317
+ "Create a team order: promotes the lead's active basket into a shared team basket and returns the share token."
318
+ );
319
+
320
+ const createTeamOrderResponseSchema = z.object({
321
+ publicId: z.string(),
322
+ teamOrderId: z.uuid()
323
+ });
324
+
325
+ const editArticleRequestSchema = z.object({
326
+ slug: z.optional(z.object({}).catchall(z.any())),
327
+ title: z.optional(z.object({}).catchall(z.any())),
328
+ excerpt: z.optional(z.object({}).catchall(z.any())),
329
+ content: z.optional(z.object({}).catchall(z.any())),
330
+ metaTitle: z.optional(z.object({}).catchall(z.string())),
331
+ metaDescription: z.optional(z.object({}).catchall(z.string())),
332
+ tags: z.optional(z.array(z.string())),
333
+ isActive: z.optional(z.boolean()),
334
+ isFeatured: z.optional(z.boolean()),
335
+ priority: z.optional(z.int().min(-9007199254740991).max(9007199254740991))
336
+ });
337
+
338
+ const featureImageSchema = z.object({
339
+ id: z.string(),
340
+ publicUrl: z.nullable(z.string()),
341
+ locale: z.string(),
342
+ caption: z.nullable(z.object({}).catchall(z.any())),
343
+ alt: z.nullable(z.object({}).catchall(z.any())),
344
+ captionByLocale: z.object({}).catchall(z.any()),
345
+ altByLocale: z.object({}).catchall(z.any())
346
+ }).describe(
347
+ "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."
348
+ );
349
+
350
+ const ogImageSchema = z.object({
351
+ id: z.string(),
352
+ publicUrl: z.nullable(z.string()),
353
+ locale: z.string()
354
+ });
355
+
356
+ const editArticleResponseSchema = z.object({
357
+ id: z.string(),
358
+ venueId: z.string(),
359
+ accessor: z.string(),
360
+ slug: z.object({}).catchall(z.object({}).catchall(z.any())),
361
+ title: z.object({}).catchall(z.object({}).catchall(z.any())),
362
+ excerpt: z.object({}).catchall(z.object({}).catchall(z.any())),
363
+ content: z.nullable(z.object({}).catchall(z.any())),
364
+ metaTitle: z.nullable(z.object({}).catchall(z.string())),
365
+ metaDescription: z.nullable(z.object({}).catchall(z.string())),
366
+ tags: z.array(z.string()),
367
+ isActive: z.boolean(),
368
+ isFeatured: z.boolean(),
369
+ priority: z.int().min(-2147483648).max(2147483647),
370
+ status: z.enum(["draft", "published"]),
371
+ publishedAt: z.nullable(z.string()),
372
+ createdAt: z.nullable(z.string()),
373
+ updatedAt: z.nullable(z.string()),
374
+ get featureImage() {
375
+ return featureImageSchema.nullable();
376
+ },
377
+ get ogImage() {
378
+ return ogImageSchema.nullish();
379
+ }
380
+ }).describe(
381
+ "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`."
382
+ );
383
+
384
+ const extendDeadlineTeamOrderRequestSchema = z.object({
385
+ publicId: z.string().min(1),
386
+ sessionId: z.string().min(1),
387
+ newDeadlineAt: z.iso.datetime()
388
+ });
389
+
390
+ const extendDeadlineTeamOrderResponseSchema = z.object({
391
+ teamOrderId: z.uuid(),
392
+ get status() {
393
+ return teamOrderStatusSchema;
394
+ },
395
+ deadlineAt: z.nullable(z.iso.datetime())
396
+ });
397
+
398
+ const fetchArticleResponseSchema = z.object({
399
+ id: z.string(),
400
+ venueId: z.string(),
401
+ accessor: z.string(),
402
+ slug: z.object({}).catchall(z.object({}).catchall(z.any())),
403
+ title: z.object({}).catchall(z.object({}).catchall(z.any())),
404
+ excerpt: z.object({}).catchall(z.object({}).catchall(z.any())),
405
+ content: z.nullable(z.object({}).catchall(z.any())),
406
+ metaTitle: z.nullable(z.object({}).catchall(z.string())),
407
+ metaDescription: z.nullable(z.object({}).catchall(z.string())),
408
+ tags: z.array(z.string()),
409
+ isActive: z.boolean(),
410
+ isFeatured: z.boolean(),
411
+ priority: z.int().min(-2147483648).max(2147483647),
412
+ status: z.enum(["draft", "published"]),
413
+ publishedAt: z.nullable(z.string()),
414
+ createdAt: z.nullable(z.string()),
415
+ updatedAt: z.nullable(z.string()),
416
+ get featureImage() {
417
+ return featureImageSchema.nullable();
418
+ },
419
+ get ogImage() {
420
+ return ogImageSchema.nullish();
421
+ }
422
+ }).describe(
423
+ "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`."
424
+ );
425
+
426
+ const fetchArticlesResponseSchema = z.array(
427
+ z.object({
428
+ id: z.string(),
429
+ venueId: z.string(),
430
+ accessor: z.string(),
431
+ slug: z.object({}).catchall(z.object({}).catchall(z.any())),
432
+ title: z.object({}).catchall(z.object({}).catchall(z.any())),
433
+ excerpt: z.object({}).catchall(z.object({}).catchall(z.any())),
434
+ content: z.nullable(z.object({}).catchall(z.any())),
435
+ metaTitle: z.nullable(z.object({}).catchall(z.string())),
436
+ metaDescription: z.nullable(z.object({}).catchall(z.string())),
437
+ tags: z.array(z.string()),
438
+ isActive: z.boolean(),
439
+ isFeatured: z.boolean(),
440
+ priority: z.int().min(-2147483648).max(2147483647),
441
+ status: z.enum(["draft", "published"]),
442
+ publishedAt: z.nullable(z.string()),
443
+ createdAt: z.nullable(z.string()),
444
+ updatedAt: z.nullable(z.string()),
445
+ get featureImage() {
446
+ return featureImageSchema.nullable();
447
+ },
448
+ get ogImage() {
449
+ return ogImageSchema.nullish();
450
+ },
451
+ get mentionCounts() {
452
+ return articleMentionCountsSchema.optional();
453
+ }
454
+ })
455
+ );
456
+
457
+ const fetchEventResponseSchema = z.object({
458
+ id: z.string(),
459
+ venueId: z.string(),
460
+ accessor: z.nullable(z.string()),
461
+ name: z.object({}).catchall(z.string())
462
+ }).catchall(z.any()).describe(
463
+ "Event details. Nested objects (schedule, timeSlots, menus, posters, nextOccurrence) pass through; their shape follows the SDK Event interface."
464
+ );
465
+
466
+ const fetchEventsResponseSchema = z.array(
467
+ z.object({
468
+ id: z.string(),
469
+ venueId: z.string()
470
+ }).catchall(z.any())
471
+ );
472
+
473
+ const fetchMenuBundlesResponseSchema = z.array(
474
+ z.object({
475
+ id: z.string(),
476
+ menuId: z.string(),
477
+ name: z.object({}).catchall(z.string()),
478
+ shortName: z.nullable(z.object({}).catchall(z.string())),
479
+ description: z.nullable(z.object({}).catchall(z.string())),
480
+ tags: z.array(z.string()),
481
+ price: z.object({
482
+ amount: z.number(),
483
+ currency: z.enum(["EUR", "CHF"])
484
+ }),
485
+ currency: z.enum(["EUR", "CHF"]),
486
+ taxRateId: z.string(),
487
+ isActive: z.boolean(),
488
+ sortIndex: z.nullable(z.string()),
489
+ depositwareTemplateId: z.nullable(z.string()),
490
+ depositwareTemplate: z.nullable(
491
+ z.object({
492
+ name: z.object({}).catchall(z.string())
493
+ })
494
+ ),
495
+ deposit: z.nullable(
496
+ z.object({
497
+ amount: z.number(),
498
+ currency: z.enum(["EUR", "CHF"])
499
+ })
500
+ )
501
+ }).catchall(z.any())
502
+ );
503
+
504
+ const fetchMenuResponseSchema = z.object({
505
+ id: z.string(),
506
+ venueId: z.string(),
507
+ accessor: z.string(),
508
+ name: z.union([
509
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
510
+ z.array(z.any()),
511
+ z.object({}).catchall(z.any())
512
+ ]),
513
+ description: z.nullable(
514
+ z.union([
515
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
516
+ z.array(z.any()),
517
+ z.object({}).catchall(z.any())
518
+ ])
519
+ ),
520
+ metadata: z.nullable(
521
+ z.union([
522
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
523
+ z.array(z.any()),
524
+ z.object({}).catchall(z.any())
525
+ ])
526
+ ),
527
+ sortIndex: z.nullable(z.string().max(255)),
528
+ deliveryThresholdAmount: z.nullable(
529
+ z.int().min(-2147483648).max(2147483647)
530
+ ),
531
+ deliveryThresholdQuantity: z.nullable(
532
+ z.int().min(-2147483648).max(2147483647)
533
+ ),
534
+ createdAt: z.nullable(z.any()),
535
+ updatedAt: z.nullable(z.any()),
536
+ createdBy: z.nullable(z.string()),
537
+ updatedBy: z.nullable(z.string()),
538
+ assets: z.optional(
539
+ z.array(
540
+ z.object({
541
+ id: z.string(),
542
+ type: z.enum(["image", "video", "document"]),
543
+ tags: z.nullable(z.array(z.string())),
544
+ bucket: z.string(),
545
+ storagePath: z.string(),
546
+ filename: z.string(),
547
+ contentType: z.string(),
548
+ sizeBytes: z.int().min(-2147483648).max(2147483647),
549
+ caption: z.union([
550
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
551
+ z.array(z.any()),
552
+ z.object({}).catchall(z.any())
553
+ ]),
554
+ alt: z.union([
555
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
556
+ z.array(z.any()),
557
+ z.object({}).catchall(z.any())
558
+ ]),
559
+ metadata: z.nullable(
560
+ z.union([
561
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
562
+ z.array(z.any()),
563
+ z.object({}).catchall(z.any())
564
+ ])
565
+ ),
566
+ cropArea: z.nullable(
567
+ z.union([
568
+ z.union([z.boolean(), z.string(), z.number(), z.enum([])]),
569
+ z.array(z.any()),
570
+ z.object({}).catchall(z.any())
571
+ ])
572
+ ),
573
+ isActive: z.boolean(),
574
+ sortIndex: z.nullable(z.string().max(255)),
575
+ createdAt: z.nullable(z.any()),
576
+ updatedAt: z.nullable(z.any()),
577
+ createdBy: z.nullable(z.string()),
578
+ updatedBy: z.nullable(z.string()),
579
+ venueId: z.nullable(z.string()),
580
+ publicUrl: z.nullable(z.string())
581
+ })
582
+ )
583
+ ),
584
+ items: z.optional(z.array(z.object({}).catchall(z.any())))
585
+ }).catchall(z.any()).describe(
586
+ "Menu details. Nested arrays (items, assets, bundles, schedule, etc.) pass through; their shape follows the SDK Menu interface."
587
+ );
588
+
589
+ const fetchMenuSubscriptionsResponseSchema = z.array(
590
+ z.object({
591
+ id: z.string(),
592
+ menuId: z.string(),
593
+ accessor: z.string(),
594
+ name: z.object({}).catchall(z.string()),
595
+ shortName: z.nullable(z.object({}).catchall(z.string())),
596
+ description: z.nullable(z.object({}).catchall(z.string())),
597
+ scheduleId: z.nullable(z.string()),
598
+ allowance: z.number(),
599
+ billingPeriod: z.enum(["week", "month", "year"]),
600
+ allowancePeriod: z.enum(["week", "month", "year"]),
601
+ expiryInDays: z.number(),
602
+ price: z.number(),
603
+ currency: z.enum(["EUR", "CHF"]),
604
+ stripeProductId: z.nullable(z.string()),
605
+ stripePriceId: z.nullable(z.string()),
606
+ isActive: z.boolean(),
607
+ sortIndex: z.nullable(z.string()),
608
+ subscriberCount: z.number(),
609
+ redeemableTagSets: z.array(z.array(z.string())),
610
+ posters: z.optional(
611
+ z.array(
612
+ z.object({
613
+ id: z.string(),
614
+ menuSubscriptionId: z.string(),
615
+ storagePath: z.string(),
616
+ publicUrl: z.nullable(z.string()),
617
+ filename: z.string(),
618
+ contentType: z.string(),
619
+ sizeBytes: z.nullable(z.number()),
620
+ sortIndex: z.nullable(z.string()),
621
+ createdBy: z.nullable(z.string()),
622
+ createdAt: z.nullable(z.string())
623
+ })
624
+ )
625
+ )
626
+ }).catchall(z.any())
627
+ );
628
+
629
+ const fetchTeamOrderResponseSchema = z.object({
630
+ teamOrder: z.object({
631
+ id: z.string(),
632
+ publicId: z.string(),
633
+ venueId: z.string(),
634
+ menuId: z.string(),
635
+ eventId: z.nullable(z.string()),
636
+ teamName: z.nullable(z.string()),
637
+ logoUrl: z.nullable(z.string()),
638
+ leadDisplayName: z.string(),
639
+ get status() {
640
+ return teamOrderStatusSchema;
641
+ },
642
+ get allowedPaymentMethods() {
643
+ return z.array(paymentMethodSchema);
644
+ },
645
+ get fulfillmentType() {
646
+ return fulfillmentTypeSchema;
647
+ },
648
+ fulfillmentAt: z.nullable(z.iso.datetime()),
649
+ deadlineAt: z.nullable(z.iso.datetime()),
650
+ lockedAt: z.nullable(z.iso.datetime()),
651
+ placedAt: z.nullable(z.iso.datetime()),
652
+ cancelledAt: z.nullable(z.iso.datetime()),
653
+ cancelReason: z.nullable(z.string()),
654
+ deliveryAddressId: z.nullable(z.string()),
655
+ diningLocation: z.nullable(z.string()),
656
+ diningTime: z.nullable(z.string()),
657
+ isDeliveryEnabled: z.boolean(),
658
+ quickReferenceNumber: z.nullable(
659
+ z.int().min(-9007199254740991).max(9007199254740991)
660
+ )
661
+ }),
662
+ deliveryThreshold: z.object({
663
+ amount: z.nullable(z.int().min(-9007199254740991).max(9007199254740991)),
664
+ quantity: z.nullable(z.int().min(-9007199254740991).max(9007199254740991))
665
+ }),
666
+ participants: z.array(
667
+ z.object({
668
+ customerId: z.string(),
669
+ basketId: z.nullable(z.string()),
670
+ orderId: z.nullable(z.string()),
671
+ participantNumber: z.nullable(z.int().max(9007199254740991)),
672
+ displayName: z.nullable(z.string()),
673
+ get status() {
674
+ return participantStatusSchema;
675
+ },
676
+ bundleCount: z.int().min(0).max(9007199254740991),
677
+ amount: z.int().min(0).max(9007199254740991),
678
+ get paymentMethod() {
679
+ return paymentMethodSchema;
680
+ },
681
+ isLead: z.boolean(),
682
+ isMe: z.boolean(),
683
+ joinedAt: z.iso.datetime(),
684
+ items: z.array(
685
+ z.object({
686
+ id: z.string(),
687
+ metadata: z.nullable(z.any()),
688
+ menuItems: z.array(
689
+ z.object({
690
+ menuItemId: z.string(),
691
+ role: z.nullable(z.string()),
692
+ quantity: z.number(),
693
+ unit: z.enum([
694
+ "grams",
695
+ "kilograms",
696
+ "liters",
697
+ "milliliters",
698
+ "pieces"
699
+ ])
700
+ })
701
+ ),
702
+ isPaid: z.boolean()
703
+ })
704
+ ),
705
+ payments: z.array(
706
+ z.object({
707
+ amount: z.int().min(0).max(9007199254740991),
708
+ get method() {
709
+ return paymentMethodSchema;
710
+ },
711
+ status: z.enum([
712
+ "authorized",
713
+ "captured",
714
+ "cash_pending",
715
+ "cash_received"
716
+ ]),
717
+ createdAt: z.iso.datetime(),
718
+ cardLast4: z.nullable(z.string().min(4).max(4))
719
+ })
720
+ ),
721
+ paidTotal: z.int().min(0).max(9007199254740991),
722
+ amountDue: z.int().min(0).max(9007199254740991),
723
+ declaredReturns: z.array(
724
+ z.object({
725
+ depositwareTemplateId: z.string(),
726
+ count: z.int().min(0).max(9007199254740991)
727
+ })
728
+ ),
729
+ leadSettledAt: z.nullable(z.string())
730
+ })
731
+ ),
732
+ aggregatedTotals: z.object({
733
+ confirmedBundleCount: z.int().min(0).max(9007199254740991),
734
+ confirmedAmount: z.int().min(0).max(9007199254740991),
735
+ totalBundleCount: z.int().min(0).max(9007199254740991)
736
+ }),
737
+ thresholdCheck: z.object({
738
+ meets: z.boolean(),
739
+ failedConstraints: z.array(z.enum(["quantity", "amount"])),
740
+ requiredQuantity: z.nullable(
741
+ z.int().min(-9007199254740991).max(9007199254740991)
742
+ ),
743
+ currentQuantity: z.int().min(-9007199254740991).max(9007199254740991),
744
+ requiredAmount: z.nullable(
745
+ z.int().min(-9007199254740991).max(9007199254740991)
746
+ ),
747
+ currentAmount: z.int().min(-9007199254740991).max(9007199254740991)
748
+ }),
749
+ isLead: z.boolean()
750
+ });
751
+
752
+ const getAreaAvailabilityResponseSchema = z.object({
753
+ from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
754
+ to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
755
+ bookingMode: z.enum(["slot", "day"]),
756
+ occupied: z.array(
757
+ z.object({
758
+ date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
759
+ startTime: z.nullable(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/)),
760
+ endTime: z.nullable(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/))
761
+ })
762
+ )
763
+ });
764
+
765
+ const getAreaResponseSchema = z.object({
766
+ id: z.string(),
767
+ venueId: z.string(),
768
+ accessor: z.string(),
769
+ name: z.object({}).catchall(z.string()),
770
+ description: z.nullable(z.object({}).catchall(z.string())),
771
+ longDescription: z.nullable(z.object({}).catchall(z.string())),
772
+ minCapacity: z.nullable(
773
+ z.int().min(-9007199254740991).max(9007199254740991)
774
+ ),
775
+ maxCapacity: z.int().min(-9007199254740991).max(9007199254740991),
776
+ currency: z.enum(["EUR", "CHF"]),
777
+ basePrice: z.nullable(z.int().min(-9007199254740991).max(9007199254740991)),
778
+ perPersonPrice: z.nullable(
779
+ z.int().min(-9007199254740991).max(9007199254740991)
780
+ ),
781
+ features: z.nullable(
782
+ z.array(
783
+ z.object({
784
+ icon: z.string(),
785
+ label: z.object({}).catchall(z.string()),
786
+ description: z.optional(z.object({}).catchall(z.string()))
787
+ })
788
+ )
789
+ ),
790
+ bookingMode: z.enum(["slot", "day"]),
791
+ assets: z.optional(
792
+ z.array(
793
+ z.object({
794
+ id: z.string(),
795
+ type: z.enum(["image", "video", "document"]),
796
+ tags: z.nullable(z.array(z.string())),
797
+ filename: z.string(),
798
+ contentType: z.string(),
799
+ metadata: z.nullable(
800
+ z.object({
801
+ width: z.optional(z.number()),
802
+ height: z.optional(z.number()),
803
+ duration: z.optional(z.number())
804
+ })
805
+ ),
806
+ cropArea: z.nullable(
807
+ z.object({
808
+ x: z.number(),
809
+ y: z.number(),
810
+ width: z.number(),
811
+ height: z.number()
812
+ })
813
+ ),
814
+ publicUrl: z.url()
815
+ })
816
+ )
817
+ )
818
+ }).describe(
819
+ "A bookable + public area for a venue. Assets are only included when the request expands them."
820
+ );
821
+
822
+ const getBasketTotalsRequestSchema = z.object({
823
+ venueAccessor: z.string().min(1),
824
+ basketId: z.string().min(1),
825
+ declaredReturns: z.optional(
826
+ z.array(
827
+ z.object({
828
+ depositwareTemplateId: z.string().min(1),
829
+ count: z.int().min(0).max(9007199254740991)
830
+ })
831
+ )
832
+ )
833
+ });
834
+
835
+ const getBasketTotalsResponseSchema = z.object({
836
+ currency: z.enum(["EUR", "CHF"]),
837
+ itemsTotal: z.int().min(0).max(9007199254740991),
838
+ taxAmount: z.int().min(0).max(9007199254740991),
839
+ depositCharge: z.int().min(0).max(9007199254740991),
840
+ grossTotal: z.int().min(0).max(9007199254740991),
841
+ depositCredit: z.int().min(0).max(9007199254740991),
842
+ effectiveTotal: z.int().min(0).max(9007199254740991),
843
+ cashRefund: z.int().min(0).max(9007199254740991),
844
+ returnable: z.array(
845
+ z.object({
846
+ depositwareTemplateId: z.string(),
847
+ count: z.int().min(0).max(9007199254740991)
848
+ })
849
+ )
850
+ });
851
+
852
+ const getSubscriptionCreditsResponseSchema = z.array(
853
+ z.object({
854
+ id: z.string(),
855
+ subscriberId: z.string(),
856
+ periodStart: z.string(),
857
+ periodEnd: z.string(),
858
+ expiresAt: z.nullable(z.string()),
859
+ status: z.enum(["available", "redeemed", "expired"]),
860
+ redeemedAt: z.nullable(z.string()),
861
+ orderId: z.nullable(z.string()),
862
+ createdAt: z.nullable(z.string())
863
+ })
864
+ );
865
+
866
+ const getSubscriptionResponseSchema = z.object({
867
+ id: z.string(),
868
+ menuId: z.string(),
869
+ accessor: z.string(),
870
+ name: z.object({}).catchall(z.string()),
871
+ shortName: z.nullable(z.object({}).catchall(z.string())),
872
+ description: z.nullable(z.object({}).catchall(z.string())),
873
+ scheduleId: z.nullable(z.string()),
874
+ allowance: z.int().max(9007199254740991),
875
+ billingPeriod: z.enum(["week", "month", "year"]),
876
+ allowancePeriod: z.enum(["week", "month", "year"]),
877
+ redeemableTagSets: z.array(z.array(z.string())),
878
+ expiryInDays: z.nullable(z.int().max(9007199254740991)),
879
+ price: z.int().min(0).max(9007199254740991),
880
+ currency: z.enum(["EUR", "CHF"]),
881
+ isActive: z.boolean(),
882
+ sortIndex: z.nullable(z.string()),
883
+ posters: z.array(
884
+ z.object({
885
+ id: z.string(),
886
+ menuSubscriptionId: z.string(),
887
+ storagePath: z.string(),
888
+ publicUrl: z.url(),
889
+ filename: z.string(),
890
+ contentType: z.string(),
891
+ sizeBytes: z.int().min(-9007199254740991).max(9007199254740991),
892
+ sortIndex: z.nullable(z.string()),
893
+ createdBy: z.nullable(z.string()),
894
+ createdAt: z.nullable(z.string())
895
+ })
896
+ )
897
+ });
898
+
899
+ const getVenueResponseSchema = z.object({
900
+ id: z.string(),
901
+ accessor: z.string(),
902
+ officialName: z.string(),
903
+ legalName: z.string(),
904
+ shortName: z.string(),
905
+ brandName: z.string(),
906
+ primaryLocale: z.string(),
907
+ supportedLocales: z.array(z.string()),
908
+ timezone: z.string(),
909
+ createdAt: z.nullable(z.any()),
910
+ updatedAt: z.nullable(z.any())
911
+ }).describe(
912
+ "A venue. The public API exposes only the minimal id + accessor + naming + locale fields the CLI's `venues use` / `auth whoami` consume."
913
+ );
914
+
915
+ const joinTeamOrderRequestSchema = z.object({
916
+ publicId: z.string().min(1),
917
+ sessionId: z.string().min(1),
918
+ displayName: z.optional(z.string().min(1))
919
+ });
920
+
921
+ const joinTeamOrderResponseSchema = z.object({
922
+ teamOrderId: z.uuid(),
923
+ basketId: z.string(),
924
+ customerId: z.string(),
925
+ get status() {
926
+ return teamOrderStatusSchema;
927
+ },
928
+ isLead: z.boolean(),
929
+ alreadyJoined: z.boolean()
930
+ });
931
+
932
+ const listAreasResponseSchema = z.array(
933
+ z.lazy(() => areaSchema).describe(
934
+ "A bookable + public area for a venue. Assets are only included when the request expands them."
935
+ )
936
+ );
937
+
938
+ const makeReservationRequestSchema = z.object({
939
+ venueAccessor: z.string().min(1).describe(
940
+ "Venue identifier \u2014 UUID or URL-friendly slug (accessor). Resolved server-side."
941
+ ),
942
+ eventId: z.uuid().describe("UUID of the event this reservation is for"),
943
+ reservationDate: z.string().describe("Date of the reservation in YYYY-MM-DD format"),
944
+ reservationTime: z.string().describe("Time of the reservation in HH:MM:SS format"),
945
+ partySize: z.int().min(1).max(20).describe("Number of guests in the party. Must be between 1 and 20."),
946
+ duration: z.int().min(30).max(300).describe(
947
+ "Reservation duration in minutes. Defaults to 120 minutes if not specified. Range: 30-300 minutes."
948
+ ).nullish(),
949
+ customerId: z.uuid().describe("UUID of existing customer profile if available").nullish(),
950
+ customerFirstName: z.string().min(1).max(50).describe("First name of the customer making the reservation"),
951
+ customerLastName: z.string().min(1).max(50).describe("Last name of the customer making the reservation"),
952
+ customerEmail: z.email().describe("Email address for reservation confirmations and updates").nullish(),
953
+ customerPhone: z.string().min(1).describe(
954
+ "Phone number for reservation confirmations and updates. Include country code for international numbers."
955
+ ).nullish(),
956
+ contactPreference: z.optional(
957
+ z.enum(["email", "phone", "sms", "none"]).describe("Preferred contact method. Defaults to `email` when omitted.")
958
+ ),
959
+ source: z.optional(
960
+ z.enum(["website", "phone", "walk_in"]).describe(
961
+ "Origin of the reservation request. Defaults to `website` when omitted."
962
+ )
963
+ ),
964
+ specialRequests: z.string().max(500).describe(
965
+ "Any dietary restrictions, allergies, or special occasions (max 500 characters)"
966
+ ).nullish(),
967
+ tablePreference: z.string().max(100).describe(
968
+ 'Preferred seating area or table type (e.g., "window seat", "quiet area", "patio")'
969
+ ).nullish()
970
+ }).describe("Request payload for making a new reservation");
971
+
972
+ const makeReservationResponseSchema = z.object({
973
+ id: z.uuid().describe("Unique identifier for the reservation"),
974
+ venueId: z.uuid().describe("Restaurant/tenant identifier"),
975
+ eventId: z.uuid().describe("Event identifier for this reservation"),
976
+ quickReferenceNumber: z.nullable(z.int().min(-2147483648).max(2147483647)),
977
+ reservationDate: z.string().describe("Date of the reservation in YYYY-MM-DD format"),
978
+ reservationTime: z.string().describe("Time of the reservation in HH:MM:SS format"),
979
+ partySize: z.int().min(-9007199254740991).max(9007199254740991).describe("Number of guests in the party"),
980
+ duration: z.nullable(
981
+ z.int().min(-9007199254740991).max(9007199254740991).describe("Reservation duration in minutes")
982
+ ),
983
+ customerId: z.nullable(
984
+ z.uuid().describe("Link to customer profile if exists")
985
+ ),
986
+ customerFirstName: z.string().describe("First name of the customer"),
987
+ customerLastName: z.string().describe("Last name of the customer"),
988
+ customerEmail: z.nullable(z.string().describe("Customer email address")),
989
+ customerPhone: z.nullable(z.string().describe("Customer phone number")),
990
+ contactPreference: z.enum(["email", "phone", "sms", "none"]).describe("Preferred contact method"),
991
+ status: z.enum([
992
+ "pending",
993
+ "confirmed",
994
+ "arrived",
995
+ "seated",
996
+ "completed",
997
+ "cancelled",
998
+ "no_show"
999
+ ]).describe("Current status of the reservation"),
1000
+ confirmationCode: z.nullable(
1001
+ z.string().describe("6-character confirmation code for the reservation")
1002
+ ),
1003
+ confirmedAt: z.nullable(
1004
+ z.any().describe("When the reservation was confirmed")
1005
+ ),
1006
+ arrivedAt: z.nullable(z.any().describe("When the guest arrived")),
1007
+ seatedAt: z.nullable(z.any().describe("When the guest was seated")),
1008
+ completedAt: z.nullable(z.any().describe("When the dining was completed")),
1009
+ cancelledAt: z.nullable(
1010
+ z.any().describe("When the reservation was cancelled")
1011
+ ),
1012
+ cancellationReason: z.nullable(
1013
+ z.enum(["customer_request", "restaurant_request"]).describe("Who initiated the cancellation")
1014
+ ),
1015
+ cancellationNote: z.nullable(
1016
+ z.string().describe("Additional cancellation details")
1017
+ ),
1018
+ source: z.enum(["website", "phone", "walk_in"]).describe("Origin of the reservation"),
1019
+ specialRequests: z.nullable(
1020
+ z.string().describe("Any special requirements or notes")
1021
+ ),
1022
+ tablePreference: z.nullable(
1023
+ z.string().describe("Preferred seating location")
1024
+ ),
1025
+ createdBy: z.nullable(
1026
+ z.string().describe("User ID who created the reservation")
1027
+ ),
1028
+ updatedBy: z.nullable(
1029
+ z.string().describe("User ID who last updated the reservation")
1030
+ ),
1031
+ createdAt: z.nullable(z.any().describe("Reservation creation timestamp")),
1032
+ updatedAt: z.nullable(z.any().describe("Last update timestamp"))
1033
+ }).describe("Successfully created reservation");
1034
+
1035
+ const patchFeatureImageRequestSchema = z.object({
1036
+ caption: z.optional(z.object({}).catchall(z.any())),
1037
+ alt: z.optional(z.object({}).catchall(z.any()))
1038
+ }).describe(
1039
+ "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`."
1040
+ );
1041
+
1042
+ const placeOrderRequestSchema = z.object({
1043
+ venueAccessor: z.string().min(1),
1044
+ basketId: z.string().min(1),
1045
+ sessionId: z.string().min(1),
1046
+ get paymentMethod() {
1047
+ return paymentMethodSchema;
1048
+ },
1049
+ get fulfillmentType() {
1050
+ return fulfillmentTypeSchema;
1051
+ },
1052
+ fulfillmentAt: z.iso.datetime().nullish(),
1053
+ customerFirstName: z.optional(z.string()),
1054
+ customerLastName: z.optional(z.string()),
1055
+ customerEmail: z.optional(z.string()),
1056
+ declaredReturns: z.optional(
1057
+ z.array(
1058
+ z.object({
1059
+ depositwareTemplateId: z.string().min(1),
1060
+ count: z.int().min(0).max(9007199254740991)
1061
+ })
1062
+ )
1063
+ )
1064
+ }).describe("Place a new order for a specific venue");
1065
+
1066
+ const placeOrderResponseSchema = z.object({
1067
+ id: z.string(),
1068
+ status: z.string(),
1069
+ publicId: z.nullable(z.string()),
1070
+ orderId: z.string(),
1071
+ quickReferenceNumber: z.nullable(
1072
+ z.int().min(-9007199254740991).max(9007199254740991)
1073
+ ),
1074
+ currency: z.enum(["EUR", "CHF"])
1075
+ });
1076
+
1077
+ const reduceDeltaPaymentIntentRequestSchema = z.object({
1078
+ venueAccessor: z.string().min(1),
1079
+ basketId: z.string().min(1),
1080
+ sessionId: z.string().min(1),
1081
+ currency: z.enum(["EUR", "CHF"]),
1082
+ declaredReturns: z.optional(
1083
+ z.array(
1084
+ z.object({
1085
+ depositwareTemplateId: z.string().min(1),
1086
+ count: z.int().min(0).max(9007199254740991)
1087
+ })
1088
+ )
1089
+ )
1090
+ });
1091
+
1092
+ const reduceDeltaPaymentIntentResponseSchema = z.object({
1093
+ orderId: z.string(),
1094
+ paidTotal: z.int().min(0).max(9007199254740991),
1095
+ released: z.int().min(0).max(9007199254740991)
1096
+ });
1097
+
1098
+ const removeFromBasketResponseSchema = z.object({
1099
+ success: z.boolean(),
1100
+ basketItemId: z.uuid(),
1101
+ itemCount: z.int().min(0).max(9007199254740991),
1102
+ get totals() {
1103
+ return basketTotalsSchema.nullable();
1104
+ }
1105
+ });
1106
+
1107
+ const setBasketDeclaredReturnsRequestSchema = z.object({
1108
+ venueAccessor: z.string().min(1),
1109
+ basketId: z.string().min(1),
1110
+ sessionId: z.string().min(1),
1111
+ declaredReturns: z.array(
1112
+ z.object({
1113
+ depositwareTemplateId: z.string().min(1),
1114
+ count: z.int().min(0).max(9007199254740991)
1115
+ })
1116
+ )
1117
+ });
1118
+
1119
+ const setBasketDeclaredReturnsResponseSchema = z.object({
1120
+ basketId: z.string(),
1121
+ declaredReturns: z.array(
1122
+ z.object({
1123
+ depositwareTemplateId: z.string().min(1),
1124
+ count: z.int().min(0).max(9007199254740991)
1125
+ })
1126
+ )
1127
+ });
1128
+
1129
+ const setDiningLocationTeamOrderRequestSchema = z.object({
1130
+ publicId: z.string().min(1),
1131
+ sessionId: z.string().min(1),
1132
+ diningLocation: z.string().max(200)
1133
+ });
1134
+
1135
+ const setDiningLocationTeamOrderResponseSchema = z.object({
1136
+ teamOrderId: z.uuid(),
1137
+ get status() {
1138
+ return teamOrderStatusSchema;
1139
+ },
1140
+ diningLocation: z.nullable(z.string())
1141
+ });
1142
+
1143
+ const setDiningTimeTeamOrderRequestSchema = z.object({
1144
+ publicId: z.string().min(1),
1145
+ sessionId: z.string().min(1),
1146
+ diningTime: z.string().regex(/^\d{2}:\d{2}$/)
1147
+ });
1148
+
1149
+ const setDiningTimeTeamOrderResponseSchema = z.object({
1150
+ teamOrderId: z.uuid(),
1151
+ get status() {
1152
+ return teamOrderStatusSchema;
1153
+ },
1154
+ diningTime: z.string(),
1155
+ diningOffset: z.int().min(0).max(9007199254740991)
1156
+ });
1157
+
1158
+ const setFulfillmentAtTeamOrderRequestSchema = z.object({
1159
+ publicId: z.string().min(1),
1160
+ sessionId: z.string().min(1),
1161
+ fulfillmentAt: z.iso.datetime()
1162
+ });
1163
+
1164
+ const setFulfillmentAtTeamOrderResponseSchema = z.object({
1165
+ teamOrderId: z.uuid(),
1166
+ get status() {
1167
+ return teamOrderStatusSchema;
1168
+ },
1169
+ fulfillmentAt: z.iso.datetime(),
1170
+ deadlineAt: z.nullable(z.iso.datetime())
1171
+ });
1172
+
1173
+ const submitAreaBookingRequestSchema = z.object({
1174
+ requestedDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
1175
+ requestedStartTime: z.optional(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/)),
1176
+ requestedEndTime: z.optional(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/)),
1177
+ partySize: z.int().max(9007199254740991),
1178
+ customerFirstName: z.string().min(1),
1179
+ customerLastName: z.string().min(1),
1180
+ customerEmail: z.email(),
1181
+ customerPhone: z.optional(z.string()),
1182
+ message: z.optional(z.string()),
1183
+ source: z.optional(z.enum(["website", "phone", "walk_in"]))
1184
+ });
1185
+
1186
+ const submitAreaBookingResponseSchema = z.object({
1187
+ id: z.string(),
1188
+ venueId: z.string(),
1189
+ areaId: z.string(),
1190
+ requestedDate: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
1191
+ requestedStartTime: z.nullable(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/)),
1192
+ requestedEndTime: z.nullable(z.string().regex(/^\d{2}:\d{2}(:\d{2})?$/)),
1193
+ partySize: z.int().min(-9007199254740991).max(9007199254740991),
1194
+ customerFirstName: z.string(),
1195
+ customerLastName: z.string(),
1196
+ customerEmail: z.string(),
1197
+ customerPhone: z.nullable(z.string()),
1198
+ message: z.nullable(z.string()),
1199
+ source: z.enum(["website", "phone", "walk_in"]),
1200
+ status: z.enum(["pending", "approved", "rejected", "cancelled"]),
1201
+ areaBookingId: z.nullable(z.string()),
1202
+ createdAt: z.nullable(z.string()),
1203
+ updatedAt: z.nullable(z.string())
1204
+ });
1205
+
1206
+ const submitTeamOrderRequestSchema = z.object({
1207
+ publicId: z.string().min(1),
1208
+ sessionId: z.string().min(1)
1209
+ });
1210
+
1211
+ const submitTeamOrderResponseSchema = z.object({
1212
+ teamOrderId: z.uuid(),
1213
+ get status() {
1214
+ return teamOrderStatusSchema;
1215
+ },
1216
+ capturedOrderIds: z.array(z.string()),
1217
+ cashPendingOrderIds: z.array(z.string()),
1218
+ droppedBasketIds: z.array(z.string()),
1219
+ placedAt: z.iso.datetime()
1220
+ });
1221
+
1222
+ const subscribeRequestSchema = z.object({
1223
+ email: z.email(),
1224
+ firstName: z.optional(z.string()),
1225
+ lastName: z.optional(z.string()),
1226
+ sessionId: z.optional(z.string()),
1227
+ successUrl: z.url(),
1228
+ cancelUrl: z.url()
1229
+ });
1230
+
1231
+ const subscribeResponseSchema = z.object({
1232
+ checkoutUrl: z.nullable(z.url()),
1233
+ sessionId: z.string()
1234
+ });
1235
+
1236
+ const switchFulfillmentTeamOrderRequestSchema = z.object({
1237
+ publicId: z.string().min(1),
1238
+ sessionId: z.string().min(1),
1239
+ get fulfillmentType() {
1240
+ return fulfillmentTypeSchema;
1241
+ },
1242
+ get deliveryAddress() {
1243
+ return deliveryAddressSchema.optional();
1244
+ }
1245
+ });
1246
+
1247
+ const switchFulfillmentTeamOrderResponseSchema = z.object({
1248
+ teamOrderId: z.uuid(),
1249
+ get status() {
1250
+ return teamOrderStatusSchema;
1251
+ },
1252
+ get fulfillmentType() {
1253
+ return fulfillmentTypeSchema;
1254
+ },
1255
+ deliveryAddressId: z.nullable(z.string())
1256
+ });
1257
+
1258
+ const updateDeliveryAddressTeamOrderRequestSchema = z.object({
1259
+ publicId: z.string().min(1),
1260
+ sessionId: z.string().min(1),
1261
+ get deliveryAddress() {
1262
+ return deliveryAddressSchema;
1263
+ }
1264
+ });
1265
+
1266
+ const updateDeliveryAddressTeamOrderResponseSchema = z.object({
1267
+ teamOrderId: z.uuid(),
1268
+ deliveryAddressId: z.string()
1269
+ });
1270
+
1271
+ const uploadFeatureImageRequestSchema = z.object({
1272
+ file: z.any().describe("Image file (multipart/form-data field)")
1273
+ });
1274
+
70
1275
  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
1276
+ AddToBasketRequest: addToBasketRequestSchema,
1277
+ AddToBasketResponse: addToBasketResponseSchema,
1278
+ Area: areaSchema,
1279
+ ArticleMentionCounts: articleMentionCountsSchema,
1280
+ BasketTotals: basketTotalsSchema,
1281
+ CancelSubscriptionRequest: cancelSubscriptionRequestSchema,
1282
+ CancelSubscriptionResponse: cancelSubscriptionResponseSchema,
1283
+ CancelTeamOrderRequest: cancelTeamOrderRequestSchema,
1284
+ CancelTeamOrderResponse: cancelTeamOrderResponseSchema,
1285
+ ConfirmOrderRequest: confirmOrderRequestSchema,
1286
+ ConfirmOrderResponse: confirmOrderResponseSchema,
1287
+ CreateDeltaPaymentIntentRequest: createDeltaPaymentIntentRequestSchema,
1288
+ CreateDeltaPaymentIntentResponse: createDeltaPaymentIntentResponseSchema,
1289
+ CreateEventRequest: createEventRequestSchema,
1290
+ CreateEventResponse: createEventResponseSchema,
1291
+ CreatePaymentIntentRequest: createPaymentIntentRequestSchema,
1292
+ CreatePaymentIntentResponse: createPaymentIntentResponseSchema,
1293
+ CreateTeamOrderRequest: createTeamOrderRequestSchema,
1294
+ CreateTeamOrderResponse: createTeamOrderResponseSchema,
1295
+ DeliveryAddress: deliveryAddressSchema,
1296
+ EditArticleRequest: editArticleRequestSchema,
1297
+ EditArticleResponse: editArticleResponseSchema,
1298
+ ExtendDeadlineTeamOrderRequest: extendDeadlineTeamOrderRequestSchema,
1299
+ ExtendDeadlineTeamOrderResponse: extendDeadlineTeamOrderResponseSchema,
1300
+ FeatureImage: featureImageSchema,
1301
+ FetchArticleResponse: fetchArticleResponseSchema,
1302
+ FetchArticlesResponse: fetchArticlesResponseSchema,
1303
+ FetchEventResponse: fetchEventResponseSchema,
1304
+ FetchEventsResponse: fetchEventsResponseSchema,
1305
+ FetchMenuBundlesResponse: fetchMenuBundlesResponseSchema,
1306
+ FetchMenuResponse: fetchMenuResponseSchema,
1307
+ FetchMenuSubscriptionsResponse: fetchMenuSubscriptionsResponseSchema,
1308
+ FetchTeamOrderResponse: fetchTeamOrderResponseSchema,
1309
+ FulfillmentType: fulfillmentTypeSchema,
1310
+ GetAreaAvailabilityResponse: getAreaAvailabilityResponseSchema,
1311
+ GetAreaResponse: getAreaResponseSchema,
1312
+ GetBasketTotalsRequest: getBasketTotalsRequestSchema,
1313
+ GetBasketTotalsResponse: getBasketTotalsResponseSchema,
1314
+ GetSubscriptionCreditsResponse: getSubscriptionCreditsResponseSchema,
1315
+ GetSubscriptionResponse: getSubscriptionResponseSchema,
1316
+ GetVenueResponse: getVenueResponseSchema,
1317
+ JoinTeamOrderRequest: joinTeamOrderRequestSchema,
1318
+ JoinTeamOrderResponse: joinTeamOrderResponseSchema,
1319
+ ListAreasResponse: listAreasResponseSchema,
1320
+ MakeReservationRequest: makeReservationRequestSchema,
1321
+ MakeReservationResponse: makeReservationResponseSchema,
1322
+ OgImage: ogImageSchema,
1323
+ ParticipantStatus: participantStatusSchema,
1324
+ PatchFeatureImageRequest: patchFeatureImageRequestSchema,
1325
+ PaymentMethod: paymentMethodSchema,
1326
+ PlaceOrderRequest: placeOrderRequestSchema,
1327
+ PlaceOrderResponse: placeOrderResponseSchema,
1328
+ ReduceDeltaPaymentIntentRequest: reduceDeltaPaymentIntentRequestSchema,
1329
+ ReduceDeltaPaymentIntentResponse: reduceDeltaPaymentIntentResponseSchema,
1330
+ RemoveFromBasketResponse: removeFromBasketResponseSchema,
1331
+ SetBasketDeclaredReturnsRequest: setBasketDeclaredReturnsRequestSchema,
1332
+ SetBasketDeclaredReturnsResponse: setBasketDeclaredReturnsResponseSchema,
1333
+ SetDiningLocationTeamOrderRequest: setDiningLocationTeamOrderRequestSchema,
1334
+ SetDiningLocationTeamOrderResponse: setDiningLocationTeamOrderResponseSchema,
1335
+ SetDiningTimeTeamOrderRequest: setDiningTimeTeamOrderRequestSchema,
1336
+ SetDiningTimeTeamOrderResponse: setDiningTimeTeamOrderResponseSchema,
1337
+ SetFulfillmentAtTeamOrderRequest: setFulfillmentAtTeamOrderRequestSchema,
1338
+ SetFulfillmentAtTeamOrderResponse: setFulfillmentAtTeamOrderResponseSchema,
1339
+ SubmitAreaBookingRequest: submitAreaBookingRequestSchema,
1340
+ SubmitAreaBookingResponse: submitAreaBookingResponseSchema,
1341
+ SubmitTeamOrderRequest: submitTeamOrderRequestSchema,
1342
+ SubmitTeamOrderResponse: submitTeamOrderResponseSchema,
1343
+ SubscribeRequest: subscribeRequestSchema,
1344
+ SubscribeResponse: subscribeResponseSchema,
1345
+ SwitchFulfillmentTeamOrderRequest: switchFulfillmentTeamOrderRequestSchema,
1346
+ SwitchFulfillmentTeamOrderResponse: switchFulfillmentTeamOrderResponseSchema,
1347
+ TeamOrderStatus: teamOrderStatusSchema,
1348
+ UpdateDeliveryAddressTeamOrderRequest: updateDeliveryAddressTeamOrderRequestSchema,
1349
+ UpdateDeliveryAddressTeamOrderResponse: updateDeliveryAddressTeamOrderResponseSchema,
1350
+ UploadFeatureImageRequest: uploadFeatureImageRequestSchema
138
1351
  };
139
1352
 
140
1353
  export { schemas };