{"openapi":"3.0.0","info":{"title":"Hallify Integration API","version":"0.1.0","description":"Selected external integration contracts. Credentials and configuration are specific to each integration."},"servers":[{"url":"https://api.hallify.co"}],"paths":{"/external/preorders/catalog":{"get":{"description":"Returns the credential-authorized sales-channel catalog with partner-eligible products, modifiers, pricing, and fulfillment rules.","operationId":"PreorderExternalController_catalog","parameters":[{"name":"salesChannelId","required":true,"in":"query","schema":{"format":"uuid","type":"string","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Required Hallify UUID filter for sales channel.","example":"7ba1de01-f294-46f1-8bb0-1b96b16bbdc9"}],"responses":{"200":{"description":"Returns the partner catalog projection for the authorized venue and sales channel.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderExternalCatalogResultDto"},"example":{"salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","menuVersionId":"490ccfcb-caa6-472e-836a-a8416e8cee92","versionNumber":1,"graphHash":null,"publishedAt":"2026-01-15T12:00:00.000Z","servedAt":"2026-01-15T12:00:00.000Z","categories":[{"exampleKey":"example"}]}}}},"401":{"$ref":"#/components/responses/PreorderPartnerAuthenticationRequired"}},"security":[{"preorderPartnerKey":[]}],"summary":"Read the partner preorder catalog","tags":["external-preorders"]}},"/external/preorders/quotes":{"post":{"description":"Uses the partner bearer credential to validate the requested cart and fulfillment slot under the authorized sales channel and return a time-limited, single-use quote.","operationId":"PreorderExternalController_quote","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalQuotePreorderDto"},"example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}]}}},"description":"Partner-supplied fulfillment, guest, address, menu, authorized sales-channel, and cart values used to create a single-use external quote."},"responses":{"200":{"description":"Returns calculated pricing, deposit requirements, availability, and the protected quote token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderQuoteDto"},"example":{"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","quoteToken":"synthetic-example-credential","status":"ISSUED","serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","lines":[{"clientLineId":"example-id","sortOrder":1,"quantity":1,"menuItemId":"16ee6f36-c0cb-4311-85e8-2d2b3edea0fd","menuVariantId":null,"name":"Example name","unitPrice":"1.00","lineTotal":"1.00","policyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","structurePlanHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}],"financialPolicyVersionId":"b36de587-2415-41cd-8269-c8dc9aa8ee66","financialPolicyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","fulfillmentPolicyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","adjustmentEvidenceHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","capacityUnits":1,"quotedSubtotal":"1.00","quotedDiscountTotal":"1.00","quotedServiceCharge":"1.00","quotedTax":"1.00","quotedDeliveryFee":"1.00","quotedTotal":"1.00","quotedNetPaid":"1.00","quotedRemaining":"1.00","quotedRefundDue":"1.00","quotedDepositRequired":"1.00","depositDueAt":null,"cancellationCutoffAt":null,"currency":"GEL","issuedAt":"2026-01-15T10:00:00.000Z","expiresAt":"2026-12-31T18:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/PreorderPartnerAuthenticationRequired"}},"security":[{"preorderPartnerKey":[]}],"summary":"Issue a partner-scoped commercial preorder quote","tags":["external-preorders"]}},"/external/preorders/orders":{"post":{"description":"Consumes a valid partner quote and creates the preorder atomically within the credential venue and sales-channel scope. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"PreorderExternalController_create","parameters":[{"name":"idempotency-key","in":"header","description":"Required idempotency key, up to 128 characters","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalCreatePreorderDto"},"example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}],"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","quoteToken":"synthetic-example-credential"}}},"description":"Consumes a valid partner quote and creates the preorder atomically within the credential venue and sales-channel scope."},"responses":{"201":{"description":"Returns the created preorder, fulfillment state, and partner-visible identifiers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderCreationResultDto"},"example":{"orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","fulfillmentId":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88","fulfillmentRevision":1,"fulfillmentStatus":"HELD","confirmationMode":"example","currency":"GEL","total":"1.00","items":[{"clientLineId":"example-id","orderItemId":"48069d23-be97-4039-8099-9db268ddf890","quantity":1}]}}}},"401":{"$ref":"#/components/responses/PreorderPartnerAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"preorderPartnerKey":[]}],"summary":"Create a partner preorder order","tags":["external-preorders"]}},"/external/preorders/orders/{orderId}":{"get":{"description":"Returns the authorized partner projection of a preorder, including fulfillment, deposit, item, and revision state without internal-only data.","operationId":"PreorderExternalController_getOrder","parameters":[{"name":"orderId","required":true,"in":"path","schema":{"type":"string","format":"uuid","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Venue order selected for this operation; its current revision, lifecycle, and ownership determine the allowed result.","example":"7ba1de01-f294-46f1-8bb0-1b96b16bbdc9"}],"responses":{"200":{"description":"Returns the partner-visible preorder or the documented absent result when it is outside the credential scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderExternalGetOrderResultDto"},"example":{"id":"dadd2857-b22c-4e95-8ed2-2a29c5a47f42","revision":1,"status":"OPEN","currency":"GEL","createdAt":"2026-01-15T10:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z","fulfillment":null,"items":[{"id":"dadd2857-b22c-4e95-8ed2-2a29c5a47f42","nameSnapshot":"Example name","quantity":1,"unitPrice":"1.00","kitchenStatus":"example","fullyVoidedAt":null}]}}}},"401":{"$ref":"#/components/responses/PreorderPartnerAuthenticationRequired"}},"security":[{"preorderPartnerKey":[]}],"summary":"Read a partner preorder order","tags":["external-preorders"]}},"/external-order-ingress/{sourceId}/orders":{"post":{"description":"Authenticates the exact request body with the source-scoped HMAC secret. Replaying the same revision and payload is safe.\n\nHallify HMAC profile `external-orders` uses HMAC-SHA256. Canonical input: RFC3339 timestamp + \".\" + key-sorted stable JSON. Send x-hallify-timestamp as rfc3339; timestamps outside ±300 seconds are stale. Send x-hallify-signature as lowercase hexadecimal; comparison is timing-safe. Secret handling: Use the issued base64url text as the UTF-8 signing secret. Accepted Content-Type: application/json. Malformed input: A malformed signature returns 401 Webhook signature is invalid. Stale input: A timestamp outside the 300-second window returns 401 Webhook timestamp is stale. Repeated delivery: Order revision and payload fingerprint semantics control duplicate and conflicting delivery.","operationId":"ExternalOrderIngressController_ingest","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"format":"uuid","type":"string","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Configured ingestion or integration source selected within the authenticated parent scope.","example":"7ba1de01-f294-46f1-8bb0-1b96b16bbdc9"},{"in":"header","name":"x-hallify-timestamp","required":true,"description":"rfc3339 timestamp; accepted clock skew is ±300 seconds.","schema":{"type":"string","example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalOrderIngressDto"},"example":{"externalOrderId":"example-id","externalRevision":1,"serviceMode":"PICKUP","items":[{"clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","quantity":1}]}}},"description":"External order identifier and monotonic revision, service mode, optional label and due time, and one to 200 order items consumed as the signed source revision."},"responses":{"201":{"description":"Returns the accepted external revision, mapped native order, and replay result recorded for the source.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalOrderIngressIngestResultDto"},"example":{"id":"a42073ae-5313-4ace-86d8-86fb33fde1a9","orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","status":"example","externalOrderId":"example-id","externalRevision":1,"duplicate":false}}}},"400":{"description":"External-order source identifier or order payload is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":400,"error":"errors:http.badRequest","code":"HTTP_BAD_REQUEST","message":"errors:http.badRequest","translationKey":"errors:http.badRequest"}}}},"401":{"$ref":"#/components/responses/ExternalOrderAuthenticationFailed"},"404":{"description":"External-order source or referenced resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":404,"error":"errors:http.notFound","code":"HTTP_NOT_FOUND","message":"errors:http.notFound","translationKey":"errors:http.notFound"}}}},"409":{"description":"External-order revision, payload, or order state conflicts with current state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":409,"error":"errors:http.conflict","code":"HTTP_CONFLICT","message":"errors:http.conflict","translationKey":"errors:http.conflict"}}}},"503":{"$ref":"#/components/responses/ExternalOrderDependencyUnavailable"}},"security":[{"hallifyHmacSignature":[]}],"summary":"Ingest a signed external order revision","tags":["external-order-ingress"],"x-hallify-hmac":{"algorithm":"HMAC-SHA256","signature":{"comparison":"timing-safe","encoding":"lowercase hexadecimal","header":"x-hallify-signature"},"timestamp":{"format":"rfc3339","header":"x-hallify-timestamp","toleranceSeconds":300},"profile":"external-orders","canonicalInput":"RFC3339 timestamp + \".\" + key-sorted stable JSON","contentTypes":["application/json"],"errors":{"malformed":"A malformed signature returns 401 Webhook signature is invalid.","stale":"A timestamp outside the 300-second window returns 401 Webhook timestamp is stale."},"replay":"Order revision and payload fingerprint semantics control duplicate and conflicting delivery.","secret":"Use the issued base64url text as the UTF-8 signing secret."}}},"/external-order-ingress/{sourceId}/orders/{externalOrderId}/cancel":{"post":{"description":"Open native orders are canceled atomically. Submitted orders remain available for explicit operator resolution.\n\nHallify HMAC profile `external-orders` uses HMAC-SHA256. Canonical input: RFC3339 timestamp + \".\" + key-sorted stable JSON. Send x-hallify-timestamp as rfc3339; timestamps outside ±300 seconds are stale. Send x-hallify-signature as lowercase hexadecimal; comparison is timing-safe. Secret handling: Use the issued base64url text as the UTF-8 signing secret. Accepted Content-Type: application/json. Malformed input: A malformed signature returns 401 Webhook signature is invalid. Stale input: A timestamp outside the 300-second window returns 401 Webhook timestamp is stale. Repeated delivery: Order revision and payload fingerprint semantics control duplicate and conflicting delivery.","operationId":"ExternalOrderIngressController_cancel","parameters":[{"name":"sourceId","required":true,"in":"path","schema":{"format":"uuid","type":"string","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Configured ingestion or integration source selected within the authenticated parent scope.","example":"7ba1de01-f294-46f1-8bb0-1b96b16bbdc9"},{"name":"externalOrderId","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Provider-assigned external order identifier scoped to the authenticated HMAC source.","example":"example"},{"in":"header","name":"x-hallify-timestamp","required":true,"description":"rfc3339 timestamp; accepted clock skew is ±300 seconds.","schema":{"type":"string","example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalOrderCancelIngressDto"},"example":{"externalRevision":1,"reason":"Synthetic example"}}},"description":"Monotonic external revision and cancellation reason consumed as the signed cancellation command for the route order identifier."},"responses":{"201":{"description":"Returns the recorded cancellation revision and the resulting native-order resolution state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalOrderIngressCancelResultDto"},"example":{"id":"a42073ae-5313-4ace-86d8-86fb33fde1a9","status":"example","externalRevision":1,"duplicate":false}}}},"400":{"description":"External-order source identifier or cancellation payload is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":400,"error":"errors:http.badRequest","code":"HTTP_BAD_REQUEST","message":"errors:http.badRequest","translationKey":"errors:http.badRequest"}}}},"401":{"$ref":"#/components/responses/ExternalOrderAuthenticationFailed"},"404":{"description":"External-order source or order was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":404,"error":"errors:http.notFound","code":"HTTP_NOT_FOUND","message":"errors:http.notFound","translationKey":"errors:http.notFound"}}}},"409":{"description":"External-order revision or order state conflicts with current state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":409,"error":"errors:http.conflict","code":"HTTP_CONFLICT","message":"errors:http.conflict","translationKey":"errors:http.conflict"}}}},"503":{"$ref":"#/components/responses/ExternalOrderDependencyUnavailable"}},"security":[{"hallifyHmacSignature":[]}],"summary":"Ingest a signed external-order cancellation revision","tags":["external-order-ingress"],"x-hallify-hmac":{"algorithm":"HMAC-SHA256","signature":{"comparison":"timing-safe","encoding":"lowercase hexadecimal","header":"x-hallify-signature"},"timestamp":{"format":"rfc3339","header":"x-hallify-timestamp","toleranceSeconds":300},"profile":"external-orders","canonicalInput":"RFC3339 timestamp + \".\" + key-sorted stable JSON","contentTypes":["application/json"],"errors":{"malformed":"A malformed signature returns 401 Webhook signature is invalid.","stale":"A timestamp outside the 300-second window returns 401 Webhook timestamp is stale."},"replay":"Order revision and payload fingerprint semantics control duplicate and conflicting delivery.","secret":"Use the issued base64url text as the UTF-8 signing secret."}}},"/public/reservations/{publicHandle}/config":{"get":{"description":"Returns the published venue identity, booking policy, service periods, and guest-facing configuration allowed for the requesting origin. This discovery operation is intentionally public and does not require authentication.","operationId":"ReservationPublicController_config","parameters":[{"name":"publicHandle","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque public channel handle used to resolve one venue’s published guest-facing configuration; it is not a credential.","example":"example"},{"name":"origin","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.","example":"example"}],"responses":{"200":{"description":"Returns the public reservation channel configuration without private venue data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationPublicConfigResultDto"},"example":{"publicHandle":"example","venue":{"id":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0","name":"Example name","timeZone":"Asia/Tbilisi"},"termsVersion":"example","privacyVersion":"example","waitlistStatus":"CLOSED","servicePeriods":[{"id":"b926f345-3866-4e0a-8870-720a7d6d91be","name":"Example name","dayOfWeek":0,"startsAtMinute":0,"endsAtMinute":0,"slotIntervalMinutes":0,"maxPartySize":0,"bookingMode":"INSTANT"}]}}}}},"summary":"Get the public booking projection","tags":["public-reservations"],"x-hallify-auth":{"mode":"public"},"security":[]}},"/public/reservations/{publicHandle}/availability":{"get":{"description":"Calculates guest-bookable slots for the local business date, party size, and optional service period under the published rules. This availability query is intentionally public and does not require authentication.","operationId":"ReservationPublicController_availability","parameters":[{"name":"publicHandle","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque public channel handle used to resolve one venue’s published guest-facing configuration; it is not a credential.","example":"example"},{"name":"origin","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.","example":"example"},{"name":"servicePeriodId","required":false,"in":"query","schema":{"format":"uuid","type":"string","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Optional Hallify UUID filter for service period.","example":"c19ce6d1-1d3c-4c48-801b-35468501181c"},{"name":"partySize","required":true,"in":"query","schema":{"minimum":1,"maximum":99,"type":"integer","example":1},"description":"Number of guests used to evaluate capacity and guest-bookable availability.","example":1},{"name":"date","required":true,"in":"query","schema":{"type":"string","example":"example"},"description":"Venue-local business date evaluated by this operation, serialized as YYYY-MM-DD without a time of day.","example":"example"}],"responses":{"200":{"description":"Returns available public booking slots and their service-period context.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationAvailabilityDto"},"example":[{"scheduledAt":"2026-01-15T12:00:00.000Z","endsAt":"2026-12-31T18:00:00.000Z","occupancyEndsAt":"2026-12-31T18:00:00.000Z","offset":"example","servicePeriodId":"4846c409-f4df-40f6-81cc-1d7157a5c646"}]}}}},"summary":"Get publicly bookable slots","tags":["public-reservations"],"x-hallify-auth":{"mode":"public"},"security":[]}},"/public/reservations/{publicHandle}/intents":{"post":{"description":"Creates a short-lived capacity hold and sends contact verification under the public-channel policy. The intent must be verified before a reservation is committed. This bootstrap operation is intentionally public; the contact code protects conversion of the intent. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"ReservationPublicController_createIntent","parameters":[{"name":"publicHandle","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque public channel handle used to resolve one venue’s published guest-facing configuration; it is not a credential.","example":"example"},{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"},{"name":"origin","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.","example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicIntentDto"},"example":{"servicePeriodId":"81f8e4de-50f0-42ef-baa5-7f4b0580aa16","scheduledAt":"2026-08-12T18:30:00.000Z","partySize":2,"contactType":"EMAIL","contact":"guest@example.invalid","displayName":"Example Guest","termsVersion":"2026-08","privacyVersion":"2026-08"}}},"description":"Creates a short-lived capacity hold and sends contact verification under the public-channel policy. The intent must be verified before a reservation is committed. This bootstrap operation is intentionally public; the contact code protects conversion of the intent."},"responses":{"201":{"description":"Returns the verification intent, hold expiry, and redacted contact-delivery state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationPublicIntentDto"},"example":{"intentId":"fd46d9cb-163b-4669-8f68-6b8456779efd","verificationId":"904a18d4-c890-4387-8e14-bc52c879c7ff","expiresAt":"2026-12-31T18:00:00.000Z"}}}},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"summary":"Create a verified public booking intent and hold","tags":["public-reservations"],"x-hallify-auth":{"mode":"public"},"security":[]}},"/public/reservations/{publicHandle}/waitlist/intents":{"post":{"description":"Creates a contact-verification intent for joining the published remote waitlist without committing an entry until verification succeeds. This bootstrap operation is intentionally public; the contact code protects conversion of the intent. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"ReservationPublicController_createWaitlistIntent","parameters":[{"name":"publicHandle","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque public channel handle used to resolve one venue’s published guest-facing configuration; it is not a credential.","example":"example"},{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"},{"name":"origin","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.","example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicWaitlistIntentDto"},"example":{"servicePeriodId":"4846c409-f4df-40f6-81cc-1d7157a5c646","partySize":1,"contactType":"EMAIL","contact":"example","displayName":"Example name","termsVersion":"example","privacyVersion":"example"}}},"description":"Creates a contact-verification intent for joining the published remote waitlist without committing an entry until verification succeeds. This bootstrap operation is intentionally public; the contact code protects conversion of the intent."},"responses":{"201":{"description":"Returns the waitlist verification intent, expiry, and redacted delivery state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationPublicIntentDto"},"example":{"intentId":"fd46d9cb-163b-4669-8f68-6b8456779efd","verificationId":"904a18d4-c890-4387-8e14-bc52c879c7ff","expiresAt":"2026-12-31T18:00:00.000Z"}}}},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"summary":"Create a remote waitlist verification intent","tags":["public-reservations"],"x-hallify-auth":{"mode":"public"},"security":[]}},"/public/reservations/{publicHandle}/intents/{intentId}/verify":{"post":{"description":"Validates the contact code and atomically converts the unexpired intent into its reservation or waitlist record, consuming any capacity hold. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"ReservationPublicController_verifyIntent","parameters":[{"name":"publicHandle","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque public channel handle used to resolve one venue’s published guest-facing configuration; it is not a credential.","example":"example"},{"name":"intentId","required":true,"in":"path","schema":{"type":"string","format":"uuid","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Hallify UUID whose ownership is validated against every parent tenant and aggregate in this route before the selected resource is exposed or changed.","example":"712a1a25-e986-4e70-885b-ffdbc0c19774"},{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"},{"name":"origin","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.","example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPublicIntentDto"},"example":{"code":"000001"}}},"description":"Validates the contact code and atomically converts the unexpired intent into its reservation or waitlist record, consuming any capacity hold."},"responses":{"200":{"description":"Returns the committed guest-owned reservation or waitlist receipt and manage capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationPublicVerifyIntentResultDto"},"example":{"kind":"RESERVATION","entityId":"6b288694-8b6d-49cd-8007-264ca7224921","referenceCode":"EXAMPLE","revision":1,"status":"REQUESTED","eventIds":["6825b43e-93d6-4f3b-8171-c1661099fae8"],"manageToken":"synthetic-example-credential","manageTokenExpiresAt":"2026-12-31T18:00:00.000Z"}}}},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"summary":"Verify and atomically convert a public intent","tags":["public-reservations"],"x-hallify-auth":{"mode":"credential","location":"body","name":"reservation-verification-code"}}},"/public/reservations/{publicHandle}/intents/{intentId}/resend":{"post":{"description":"Issues another verification delivery for an eligible unexpired intent while enforcing resend limits and preserving the original hold. This operation remains public but discloses only the redacted delivery state of the referenced intent. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"ReservationPublicController_resendVerification","parameters":[{"name":"publicHandle","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque public channel handle used to resolve one venue’s published guest-facing configuration; it is not a credential.","example":"example"},{"name":"intentId","required":true,"in":"path","schema":{"type":"string","format":"uuid","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Hallify UUID whose ownership is validated against every parent tenant and aggregate in this route before the selected resource is exposed or changed.","example":"712a1a25-e986-4e70-885b-ffdbc0c19774"},{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"},{"name":"origin","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.","example":"example"}],"responses":{"200":{"description":"Returns the intent with its updated verification-delivery and retry state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationPublicResendVerificationResultDto"},"example":{"accepted":true}}}},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"summary":"Resend contact verification within policy limits","tags":["public-reservations"],"x-hallify-auth":{"mode":"public"},"security":[]}},"/public/reservations/manage":{"get":{"description":"Uses the revocable manage capability to return the guest-visible reservation or waitlist record it owns.","operationId":"ReservationPublicController_readManaged","parameters":[],"responses":{"200":{"description":"Returns the capability-owned record, allowed actions, and current revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationPublicReadManagedResultDto"},"example":{"kind":"RESERVATION","id":"a42073ae-5313-4ace-86d8-86fb33fde1a9","referenceCode":"EXAMPLE","revision":1,"status":"REQUESTED","partySize":0,"scheduledAt":"2026-01-15T12:00:00.000Z","endsAt":"2026-12-31T18:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/ReservationManagementAuthenticationRequired"}},"security":[{"reservationManageToken":[]}],"summary":"Read an owned reservation or waitlist entry","tags":["public-reservations"]}},"/public/reservations/manage/confirm":{"post":{"description":"Confirms the capability-owned reservation at the expected revision when its current lifecycle permits guest confirmation. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"ReservationPublicController_confirmManaged","parameters":[{"name":"idempotency-key","in":"header","description":"Required idempotency key, up to 128 characters","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicManageActionDto"},"example":{"expectedRevision":1}}},"description":"Confirms the capability-owned reservation at the expected revision when its current lifecycle permits guest confirmation."},"responses":{"200":{"description":"Returns the reservation receipt in its confirmed state with a rotated manage capability when applicable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationCommandResultDto"},"example":{"entityId":"6b288694-8b6d-49cd-8007-264ca7224921","referenceCode":"EXAMPLE","revision":1,"status":"example","warningCodes":["EXAMPLE"],"eventIds":["6825b43e-93d6-4f3b-8171-c1661099fae8"]}}}},"401":{"$ref":"#/components/responses/ReservationManagementAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"reservationManageToken":[]}],"summary":"Confirm a guest-owned reservation","tags":["public-reservations"]}},"/public/reservations/manage/change":{"post":{"description":"Reschedules or updates the capability-owned reservation under current public rules and the supplied expected revision. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"ReservationPublicController_changeManaged","parameters":[{"name":"idempotency-key","in":"header","description":"Required idempotency key, up to 128 characters","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicManageActionDto"},"example":{"expectedRevision":1}}},"description":"Reschedules or updates the capability-owned reservation under current public rules and the supplied expected revision."},"responses":{"200":{"description":"Returns the updated reservation receipt and current guest-manage capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationCommandResultDto"},"example":{"entityId":"6b288694-8b6d-49cd-8007-264ca7224921","referenceCode":"EXAMPLE","revision":1,"status":"example","warningCodes":["EXAMPLE"],"eventIds":["6825b43e-93d6-4f3b-8171-c1661099fae8"]}}}},"401":{"$ref":"#/components/responses/ReservationManagementAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"reservationManageToken":[]}],"summary":"Change a guest-owned reservation","tags":["public-reservations"]}},"/public/reservations/manage/cancel":{"post":{"description":"Cancels the capability-owned reservation at the expected revision and records the guest-supplied reason when present. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"ReservationPublicController_cancelManaged","parameters":[{"name":"idempotency-key","in":"header","description":"Required idempotency key, up to 128 characters","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicManageActionDto"},"example":{"expectedRevision":1}}},"description":"Cancels the capability-owned reservation at the expected revision and records the guest-supplied reason when present."},"responses":{"200":{"description":"Returns the reservation receipt in its canceled state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationCommandResultDto"},"example":{"entityId":"6b288694-8b6d-49cd-8007-264ca7224921","referenceCode":"EXAMPLE","revision":1,"status":"example","warningCodes":["EXAMPLE"],"eventIds":["6825b43e-93d6-4f3b-8171-c1661099fae8"]}}}},"401":{"$ref":"#/components/responses/ReservationManagementAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"reservationManageToken":[]}],"summary":"Cancel a guest-owned reservation","tags":["public-reservations"]}},"/public/reservations/waitlist/manage/claim":{"post":{"description":"Claims a notified capability-owned waitlist entry at the expected revision before its claim window expires. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"ReservationPublicController_claimWaitlist","parameters":[{"name":"idempotency-key","in":"header","description":"Required idempotency key, up to 128 characters","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationActionDto"},"example":{"expectedRevision":1}}},"description":"Claims a notified capability-owned waitlist entry at the expected revision before its claim window expires."},"responses":{"200":{"description":"Returns the waitlist receipt in its claimed state and current capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationCommandResultDto"},"example":{"entityId":"6b288694-8b6d-49cd-8007-264ca7224921","referenceCode":"EXAMPLE","revision":1,"status":"example","warningCodes":["EXAMPLE"],"eventIds":["6825b43e-93d6-4f3b-8171-c1661099fae8"]}}}},"401":{"$ref":"#/components/responses/ReservationManagementAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"reservationManageToken":[]}],"summary":"Claim a guest-owned waitlist entry","tags":["public-reservations"]}},"/public/reservations/waitlist/manage/cancel":{"post":{"description":"Cancels the capability-owned waitlist entry at the supplied expected revision. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"ReservationPublicController_cancelWaitlist","parameters":[{"name":"idempotency-key","in":"header","description":"Required idempotency key, up to 128 characters","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationActionDto"},"example":{"expectedRevision":1}}},"description":"Cancels the capability-owned waitlist entry at the supplied expected revision."},"responses":{"200":{"description":"Returns the waitlist receipt in its canceled state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationCommandResultDto"},"example":{"entityId":"6b288694-8b6d-49cd-8007-264ca7224921","referenceCode":"EXAMPLE","revision":1,"status":"example","warningCodes":["EXAMPLE"],"eventIds":["6825b43e-93d6-4f3b-8171-c1661099fae8"]}}}},"401":{"$ref":"#/components/responses/ReservationManagementAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"reservationManageToken":[]}],"summary":"Cancel a guest-owned waitlist entry","tags":["public-reservations"]}},"/public/preorders/{publicHandle}/catalog":{"get":{"description":"Returns the published venue preorder catalog, fulfillment policy, and guest-visible product availability allowed for the requesting origin. This discovery operation is intentionally public and does not require authentication.","operationId":"PreorderPublicController_catalog","parameters":[{"name":"publicHandle","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque public channel handle used to resolve one venue’s published guest-facing configuration; it is not a credential.","example":"example"},{"name":"origin","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.","example":"example"}],"responses":{"200":{"description":"Returns the public preorder channel and its eligible catalog projection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderPublicCatalogResultDto"},"example":{"publicHandle":"example","venue":{"id":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0","name":"Example name","timeZone":"Asia/Tbilisi"},"termsVersion":"example","privacyVersion":"example","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","menuVersionId":"490ccfcb-caa6-472e-836a-a8416e8cee92","versionNumber":1,"graphHash":null,"publishedAt":"2026-01-15T12:00:00.000Z","servedAt":"2026-01-15T12:00:00.000Z","categories":[{"exampleKey":"example"}]}}}}},"summary":"Get the publicly eligible preorder catalog","tags":["public-preorders"],"x-hallify-auth":{"mode":"public"},"security":[]}},"/public/preorders/{publicHandle}/drafts":{"post":{"description":"Creates a short-lived encrypted cart and contact-verification workflow under the published venue policy, without creating an order. This bootstrap operation is intentionally public; the returned draft capability protects subsequent access. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"PreorderPublicController_createDraft","parameters":[{"name":"publicHandle","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque public channel handle used to resolve one venue’s published guest-facing configuration; it is not a credential.","example":"example"},{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"},{"name":"origin","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.","example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePublicPreorderDraftDto"},"example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}],"termsVersion":"example","privacyVersion":"example"}}},"description":"Creates a short-lived encrypted cart and contact-verification workflow under the published venue policy, without creating an order. This bootstrap operation is intentionally public; the returned draft capability protects subsequent access."},"responses":{"201":{"description":"Returns the draft reference, expiry, redacted verification state, and draft capability token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderPublicCreateDraftResultDto"},"example":{"draftReference":"example-reference","resumeToken":"synthetic-example-credential","status":"PENDING_VERIFICATION","verificationId":"904a18d4-c890-4387-8e14-bc52c879c7ff","verificationExpiresAt":"2026-12-31T18:00:00.000Z","expiresAt":"2026-12-31T18:00:00.000Z"}}}},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"summary":"Create an encrypted public preorder draft","tags":["public-preorders"],"x-hallify-auth":{"mode":"public"},"security":[]}},"/public/preorders/drafts/{draftReference}":{"get":{"description":"Uses the draft capability to return the unexpired encrypted cart, verification state, and current revision it owns.","operationId":"PreorderPublicController_getDraft","parameters":[{"name":"draftReference","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque reference identifying the public preorder draft; authorization still requires the separate draft capability.","example":"example"}],"responses":{"200":{"description":"Returns the capability-owned public draft and its allowed next actions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderPublicGetDraftResultDto"},"example":{"draftReference":"example-reference","status":"ACTIVE","request":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","items":[{"clientLineId":"example-id","menuItemId":null,"menuVariantId":null,"quantity":1,"modifierOptionIds":["d251fdb0-274c-4e59-8e7e-b1d90e1433bc"],"serviceFlags":["example"]}]},"quote":null,"expiresAt":"2026-12-31T18:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/PreorderDraftAuthenticationRequired"}},"security":[{"preorderDraftToken":[]}],"summary":"Resume a public preorder draft","tags":["public-preorders"]},"put":{"description":"Uses the draft capability token to replace eligible cart, contact, or fulfillment details at the expected revision and restarts verification when protected contact data changes. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"PreorderPublicController_updateDraft","parameters":[{"name":"draftReference","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque reference identifying the public preorder draft; authorization still requires the separate draft capability.","example":"example"},{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"},{"name":"origin","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.","example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePublicPreorderDraftDto"},"example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}],"termsVersion":"example","privacyVersion":"example"}}},"description":"Uses the draft capability token to replace eligible cart, contact, or fulfillment details at the expected revision and restarts verification when protected contact data changes."},"responses":{"200":{"description":"Returns the updated draft, revision, expiry, and current verification state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderPublicUpdateDraftResultDto"},"example":{"draftReference":"example-reference","status":"PENDING_VERIFICATION","verificationId":"904a18d4-c890-4387-8e14-bc52c879c7ff","verificationExpiresAt":"2026-12-31T18:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/PreorderDraftAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"preorderDraftToken":[]}],"summary":"Update and re-verify a public preorder draft","tags":["public-preorders"]}},"/public/preorders/drafts/{draftReference}/verify":{"post":{"description":"Uses the draft capability token to validate the contact code, verify the current cart and fulfillment slot, and issue a time-limited single-use commercial quote. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"PreorderPublicController_verifyDraft","parameters":[{"name":"draftReference","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque reference identifying the public preorder draft; authorization still requires the separate draft capability.","example":"example"},{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"},{"name":"origin","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.","example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPublicPreorderDraftDto"},"example":{"code":"000001"}}},"description":"Uses the draft capability token to validate the contact code, verify the current cart and fulfillment slot, and issue a time-limited single-use commercial quote."},"responses":{"200":{"description":"Returns calculated pricing, deposit requirements, availability, and the protected quote token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderQuoteDto"},"example":{"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","quoteToken":"synthetic-example-credential","status":"ISSUED","serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","lines":[{"clientLineId":"example-id","sortOrder":1,"quantity":1,"menuItemId":"16ee6f36-c0cb-4311-85e8-2d2b3edea0fd","menuVariantId":null,"name":"Example name","unitPrice":"1.00","lineTotal":"1.00","policyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","structurePlanHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}],"financialPolicyVersionId":"b36de587-2415-41cd-8269-c8dc9aa8ee66","financialPolicyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","fulfillmentPolicyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","adjustmentEvidenceHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","capacityUnits":1,"quotedSubtotal":"1.00","quotedDiscountTotal":"1.00","quotedServiceCharge":"1.00","quotedTax":"1.00","quotedDeliveryFee":"1.00","quotedTotal":"1.00","quotedNetPaid":"1.00","quotedRemaining":"1.00","quotedRefundDue":"1.00","quotedDepositRequired":"1.00","depositDueAt":null,"cancellationCutoffAt":null,"currency":"GEL","issuedAt":"2026-01-15T10:00:00.000Z","expiresAt":"2026-12-31T18:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/PreorderDraftAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"preorderDraftToken":[]}],"summary":"Verify contact and issue a commercial quote","tags":["public-preorders"]}},"/public/preorders/drafts/{draftReference}/accept":{"post":{"description":"Uses the draft capability to consume the quote bound to that draft, create the preorder atomically, and issue a revocable manage grant scoped only to the new preorder. Internal order data is not exposed. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"PreorderPublicController_acceptQuote","parameters":[{"name":"draftReference","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque reference identifying the public preorder draft; authorization still requires the separate draft capability.","example":"example"},{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"},{"name":"origin","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.","example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptPublicPreorderQuoteDto"},"example":{"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","quoteToken":"synthetic-example-credential"}}},"description":"Uses the draft capability to consume the quote bound to that draft, create the preorder atomically, and issue a revocable manage grant scoped only to the new preorder. Internal order data is not exposed."},"responses":{"200":{"description":"Returns the created preorder projection and one-time manage grant.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderPublicAcceptQuoteResultDto"},"example":{"orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","fulfillmentId":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88","status":"DRAFT","revision":1,"manageExchangeToken":"synthetic-example-credential","manageExchangeExpiresAt":"2026-12-31T18:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/PreorderDraftAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"preorderDraftToken":[]}],"summary":"Accept a single-use public preorder quote","tags":["public-preorders"]}},"/public/preorders/drafts/{draftReference}/decline":{"post":{"description":"Marks the active quote as declined under the draft capability so it cannot later be accepted. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"PreorderPublicController_declineQuote","parameters":[{"name":"draftReference","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Opaque reference identifying the public preorder draft; authorization still requires the separate draft capability.","example":"example"},{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeclinePublicPreorderQuoteDto"},"example":{"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783"}}},"description":"Marks the active quote as declined under the draft capability so it cannot later be accepted."},"responses":{"200":{"description":"Returns the draft and quote in their recorded declined state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderPublicDeclineQuoteResultDto"},"example":{"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","status":"DECLINED","declinedAt":"2026-01-15T12:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/PreorderDraftAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"preorderDraftToken":[]}],"summary":"Decline an issued public preorder quote","tags":["public-preorders"]}},"/public/preorders/manage/exchange":{"post":{"description":"Consumes the one-time URL-safe grant and issues a revocable bearer session for managing only its preorder. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"PreorderPublicController_exchangeManageGrant","parameters":[{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangePreorderManageGrantDto"},"example":{"token":"synthetic-example-credential"}}},"description":"Consumes the one-time URL-safe grant and issues a revocable bearer session for managing only its preorder."},"responses":{"200":{"description":"Returns the guest-manage bearer token, expiry, and owned preorder projection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderPublicExchangeManageGrantResultDto"},"example":{"manageToken":"synthetic-example-credential","expiresAt":"2026-12-31T18:00:00.000Z"}}}},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"summary":"Exchange a URL-safe grant for a manage session","tags":["public-preorders"],"x-hallify-auth":{"mode":"credential","location":"body","name":"preorder-manage-grant"}}},"/public/preorders/manage":{"get":{"description":"Uses the revocable manage capability to return fulfillment, deposit, cart, and allowed-action state for the preorder it owns.","operationId":"PreorderPublicController_manage","parameters":[],"responses":{"200":{"description":"Returns the guest-visible preorder projection and current revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderPublicManageResultDto"},"example":{"fulfillmentId":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88","orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","revision":1,"status":"DRAFT","serviceMode":"DINE_IN","partySize":1,"scheduledFor":"2026-01-15T12:00:00.000Z","venue":{"id":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0","name":"Example name","timeZone":"Asia/Tbilisi"},"channel":{"publicHandle":"example","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","termsVersion":"example","privacyVersion":"example"},"contact":null,"deposit":{"status":"NOT_REQUIRED","requiredAmount":"1.00","paidAmount":"1.00","dueAt":null},"delivery":{"zoneId":null,"feeAmount":"1.00"},"items":[{"clientLineId":"example-id","id":"9fbff223-7cc1-4311-8644-0bd59ff2477a","menuVersionId":null,"salesChannelId":null,"menuItemId":null,"menuVariantId":null,"name":"Example name","rootItemStructureKind":"SINGLE_ITEM","itemStructureExecutionMode":"DIRECT_ITEM","effectiveExecutionMode":"DIRECT_ITEM","quantity":1,"billableQuantity":1,"unitPrice":"1.00","totalAmount":"1.00","specialRequest":null,"serviceFlags":["example"],"allergenCodes":["EXAMPLE"],"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}],"components":[{"id":"cada95b5-09b4-4bdd-8379-2e6df6ee6198","operationalRole":"GUEST_SELECTION","name":"Example name","menuVariantId":null,"quantity":1,"componentGroupId":"example-id","componentGroupName":"Example name","componentChoiceId":"example-id","componentQuantity":1,"componentUpcharge":"1.00","componentIsDefault":true,"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}]}]}],"allowedActions":{"cancel":true,"reschedule":true,"changeRequest":true},"generatedAt":"2026-01-15T12:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/PreorderManagementAuthenticationRequired"}},"security":[{"preorderManageToken":[]}],"summary":"View the guest-owned preorder projection","tags":["public-preorders"]}},"/public/preorders/manage/cancel":{"post":{"description":"Cancels the capability-owned preorder at the expected revision only while the published guest-cancellation policy permits it. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"PreorderPublicController_cancel","parameters":[{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPreorderManageActionDto"},"example":{"expectedRevision":1}}},"description":"Cancels the capability-owned preorder at the expected revision only while the published guest-cancellation policy permits it."},"responses":{"200":{"description":"Returns the preorder in its canceled fulfillment state with the recorded reason.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderPublicCancelResultDto"},"example":{"orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","fulfillmentId":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88","revision":1,"status":"DRAFT"}}}},"401":{"$ref":"#/components/responses/PreorderManagementAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"preorderManageToken":[]}],"summary":"Cancel a preorder within the guest policy boundary","tags":["public-preorders"]}},"/public/preorders/manage/amendments/quotes":{"post":{"description":"Revalidates a proposed capability-owned fulfillment or cart amendment and calculates its price, deposit, and availability effects without applying it.","operationId":"PreorderPublicController_quoteAmendment","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotePublicPreorderAmendmentDto"},"example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}],"expectedRevision":1}}},"description":"Capability-owned proposed fulfillment, guest, address, menu, channel, and cart values plus the expected preorder revision."},"responses":{"200":{"description":"Returns the time-limited amendment quote and protected acceptance token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderQuoteDto"},"example":{"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","quoteToken":"synthetic-example-credential","status":"ISSUED","serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","lines":[{"clientLineId":"example-id","sortOrder":1,"quantity":1,"menuItemId":"16ee6f36-c0cb-4311-85e8-2d2b3edea0fd","menuVariantId":null,"name":"Example name","unitPrice":"1.00","lineTotal":"1.00","policyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","structurePlanHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}],"financialPolicyVersionId":"b36de587-2415-41cd-8269-c8dc9aa8ee66","financialPolicyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","fulfillmentPolicyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","adjustmentEvidenceHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","capacityUnits":1,"quotedSubtotal":"1.00","quotedDiscountTotal":"1.00","quotedServiceCharge":"1.00","quotedTax":"1.00","quotedDeliveryFee":"1.00","quotedTotal":"1.00","quotedNetPaid":"1.00","quotedRemaining":"1.00","quotedRefundDue":"1.00","quotedDepositRequired":"1.00","depositDueAt":null,"cancellationCutoffAt":null,"currency":"GEL","issuedAt":"2026-01-15T10:00:00.000Z","expiresAt":"2026-12-31T18:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/PreorderManagementAuthenticationRequired"}},"security":[{"preorderManageToken":[]}],"summary":"Quote a guest reschedule or cart change","tags":["public-preorders"]}},"/public/preorders/manage/amendments/accept":{"post":{"description":"Uses the guest manage capability token to consume the valid amendment quote and apply the reschedule or cart change atomically at the expected preorder revision. A required `Idempotency-Key` makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.","operationId":"PreorderPublicController_acceptAmendment","parameters":[{"name":"idempotency-key","required":true,"in":"header","description":"Required idempotency key, up to 128 characters","schema":{"type":"string","minLength":1,"maxLength":128,"example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptPublicPreorderAmendmentDto"},"example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}],"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","quoteToken":"synthetic-example-credential","expectedRevision":1}}},"description":"Uses the guest manage capability token to consume the valid amendment quote and apply the reschedule or cart change atomically at the expected preorder revision."},"responses":{"200":{"description":"Returns the updated guest-owned preorder projection and new revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreorderPublicManageResultDto"},"example":{"fulfillmentId":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88","orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","revision":1,"status":"DRAFT","serviceMode":"DINE_IN","partySize":1,"scheduledFor":"2026-01-15T12:00:00.000Z","venue":{"id":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0","name":"Example name","timeZone":"Asia/Tbilisi"},"channel":{"publicHandle":"example","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","termsVersion":"example","privacyVersion":"example"},"contact":null,"deposit":{"status":"NOT_REQUIRED","requiredAmount":"1.00","paidAmount":"1.00","dueAt":null},"delivery":{"zoneId":null,"feeAmount":"1.00"},"items":[{"clientLineId":"example-id","id":"9fbff223-7cc1-4311-8644-0bd59ff2477a","menuVersionId":null,"salesChannelId":null,"menuItemId":null,"menuVariantId":null,"name":"Example name","rootItemStructureKind":"SINGLE_ITEM","itemStructureExecutionMode":"DIRECT_ITEM","effectiveExecutionMode":"DIRECT_ITEM","quantity":1,"billableQuantity":1,"unitPrice":"1.00","totalAmount":"1.00","specialRequest":null,"serviceFlags":["example"],"allergenCodes":["EXAMPLE"],"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}],"components":[{"id":"cada95b5-09b4-4bdd-8379-2e6df6ee6198","operationalRole":"GUEST_SELECTION","name":"Example name","menuVariantId":null,"quantity":1,"componentGroupId":"example-id","componentGroupName":"Example name","componentChoiceId":"example-id","componentQuantity":1,"componentUpcharge":"1.00","componentIsDefault":true,"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}]}]}],"allowedActions":{"cancel":true,"reschedule":true,"changeRequest":true},"generatedAt":"2026-01-15T12:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/PreorderManagementAuthenticationRequired"},"409":{"$ref":"#/components/responses/IdempotencyConflict"}},"security":[{"preorderManageToken":[]}],"summary":"Accept a guest amendment quote","tags":["public-preorders"]}},"/guest-portal/exchange":{"post":{"description":"Atomically consumes a fragment-delivered bootstrap capability and returns a short-lived continuation token.","operationId":"GuestPortalController_exchange","parameters":[],"requestBody":{"required":true,"description":"Bootstrap token recovered from the URL fragment and exchanged exactly once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeGuestPortalTokenDto"},"example":{"token":"gpb2_synthetic-example-credentialxxxxxxxxxxxxxxx"}}}},"responses":{"200":{"description":"Short-lived Guest Portal continuation token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestPortalBootstrapExchangeResultDto"},"example":{"token":"synthetic-example-credentialxxxx","expiresAt":"2026-12-31T18:00:00.000Z"}}}}},"summary":"Exchange a Guest Portal bootstrap token","tags":["guest-portal"],"x-hallify-auth":{"mode":"credential","location":"body","name":"guest-portal-bootstrap-token"}}},"/guest-portal/profile":{"get":{"description":"Uses the revocable guest capability to return the identity and venue profile it owns, with only self-service fields exposed.","operationId":"GuestPortalController_profile","parameters":[],"responses":{"200":{"description":"Returns the guest-owned profile, venue context, and editable-field revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestPortalProfileResultDto"},"example":{"guest":{"id":"bd109aad-7d4b-40c6-8678-546bcd7bc5fe","identityId":"68927ddd-82be-42e0-8918-ef5107d35a10","displayName":"Example name","revision":1,"identityRevision":1}}}}},"401":{"$ref":"#/components/responses/GuestPortalAuthenticationRequired"}},"security":[{"guestPortalToken":[]}],"summary":"Get guest-owned profile","tags":["guest-portal"]},"patch":{"description":"Updates self-service identity and venue-profile fields at the expected revision within the capability organization and venue scope.","operationId":"GuestPortalController_updateProfile","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGuestPortalProfileDto"},"example":{"expectedRevision":1}}},"description":"Expected profile revision and optional self-service identity, contact, party-size, and language changes submitted by the guest."},"responses":{"200":{"description":"Returns the updated guest-owned profile and its new revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestPortalProfileResultDto"},"example":{"guest":{"id":"bd109aad-7d4b-40c6-8678-546bcd7bc5fe","identityId":"68927ddd-82be-42e0-8918-ef5107d35a10","displayName":"Example name","revision":1,"identityRevision":1}}}}},"401":{"$ref":"#/components/responses/GuestPortalAuthenticationRequired"}},"security":[{"guestPortalToken":[]}],"summary":"Update guest-owned profile","tags":["guest-portal"]}},"/guest-portal/consents":{"get":{"description":"Returns the effective consent decisions and venue marketing preferences for the capability-owned identity.","operationId":"GuestPortalController_consents","parameters":[],"responses":{"200":{"description":"Returns current consent, channel preferences, sources, and decision timestamps.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestConsentWorkspaceDto"},"example":{"identityRevision":1,"policyVersion":"example","consents":[{"id":"4aebbd5f-0775-4a9f-8cdf-18303bfc76dd","purpose":"MARKETING_EMAIL","status":"UNKNOWN","captureSource":"STAFF","policyVersion":"example","effectiveAt":"2026-01-15T12:00:00.000Z"}],"marketingPreference":{"frequency":"TRANSACTIONAL_ONLY","preferredChannels":["EMAIL"],"topics":["example"],"revision":1}}}}},"401":{"$ref":"#/components/responses/GuestPortalAuthenticationRequired"}},"security":[{"guestPortalToken":[]}],"summary":"Get guest-owned consent preferences","tags":["guest-portal"]},"post":{"description":"Uses the presented Guest Portal capability to append an explicit consent decision for the identity, organization, and venue owned by that capability. Prior decisions remain immutable.","operationId":"GuestPortalController_recordConsent","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordGuestPortalConsentDto"},"example":{"expectedIdentityRevision":1,"purpose":"MARKETING_EMAIL","status":"UNKNOWN"}}},"description":"Uses the presented Guest Portal capability to append an explicit consent decision for the identity, organization, and venue owned by that capability."},"responses":{"200":{"description":"Returns the effective consent profile after recording the decision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestConsentWorkspaceDto"},"example":{"identityRevision":1,"policyVersion":"example","consents":[{"id":"4aebbd5f-0775-4a9f-8cdf-18303bfc76dd","purpose":"MARKETING_EMAIL","status":"UNKNOWN","captureSource":"STAFF","policyVersion":"example","effectiveAt":"2026-01-15T12:00:00.000Z"}],"marketingPreference":{"frequency":"TRANSACTIONAL_ONLY","preferredChannels":["EMAIL"],"topics":["example"],"revision":1}}}}},"401":{"$ref":"#/components/responses/GuestPortalAuthenticationRequired"}},"security":[{"guestPortalToken":[]}],"summary":"Record guest-owned consent preference","tags":["guest-portal"]}},"/guest-portal/marketing-preferences":{"patch":{"description":"Updates the capability-owned venue marketing channels at the expected revision while preserving immutable consent history.","operationId":"GuestPortalController_updateMarketingPreference","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGuestMarketingPreferenceDto"},"example":{"expectedRevision":1,"frequency":"TRANSACTIONAL_ONLY","preferredChannels":["EMAIL"],"topics":["example"]}}},"description":"Expected preference revision plus frequency, channels, topics, and suppression deadline used by guest-owned and venue-managed preference updates."},"responses":{"200":{"description":"Returns current consent and the updated marketing preferences.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestConsentWorkspaceDto"},"example":{"identityRevision":1,"policyVersion":"example","consents":[{"id":"4aebbd5f-0775-4a9f-8cdf-18303bfc76dd","purpose":"MARKETING_EMAIL","status":"UNKNOWN","captureSource":"STAFF","policyVersion":"example","effectiveAt":"2026-01-15T12:00:00.000Z"}],"marketingPreference":{"frequency":"TRANSACTIONAL_ONLY","preferredChannels":["EMAIL"],"topics":["example"],"revision":1}}}}},"401":{"$ref":"#/components/responses/GuestPortalAuthenticationRequired"}},"security":[{"guestPortalToken":[]}],"summary":"Update guest-owned marketing preferences","tags":["guest-portal"]}},"/guest-portal/loyalty":{"get":{"description":"Returns the capability-owned enrollment, points balance, current tier, expiration state, and visible ledger summary.","operationId":"GuestPortalController_loyalty","parameters":[],"responses":{"200":{"description":"Returns the current guest loyalty account projection.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestLoyaltyWorkspaceDto"},"example":{"adjustments":[{"id":"69437603-0ae1-4d42-848b-150f80c54e15","points":0,"reason":"Synthetic example","status":"PENDING","revision":1,"requestedById":"e84b4c3f-5e8d-4601-8a63-dafba13b902d","requestedAt":"2026-01-15T12:00:00.000Z"}]}}}},"401":{"$ref":"#/components/responses/GuestPortalAuthenticationRequired"}},"security":[{"guestPortalToken":[]}],"summary":"Get guest-owned loyalty account","tags":["guest-portal"]}},"/guest-portal/privacy-cases":{"get":{"description":"Returns privacy requests opened for the capability-owned identity and their guest-visible workflow state.","operationId":"GuestPortalController_privacyCases","parameters":[],"responses":{"200":{"description":"Returns the guest-visible privacy cases and statuses.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestPrivacyCasePageDto"},"example":{"identityRevision":1,"items":[{"id":"49292092-5109-4c46-8f6a-bd183b6e0aeb","requestType":"ACCESS","status":"OPEN","request":"example","revision":1,"dueAt":"2026-12-31T18:00:00.000Z","createdAt":"2026-01-15T10:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z"}]}}}},"401":{"$ref":"#/components/responses/GuestPortalAuthenticationRequired"}},"security":[{"guestPortalToken":[]}],"summary":"Get guest-owned privacy requests","tags":["guest-portal"]},"post":{"description":"Opens an access, portability, correction, objection, restriction, or erasure request for the capability-owned identity.","operationId":"GuestPortalController_createPrivacyCase","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGuestPortalPrivacyCaseDto"},"example":{"requestType":"ACCESS","request":"example"}}},"description":"Privacy-request type and the structured request details submitted for the capability-owned guest identity."},"responses":{"200":{"description":"Returns the opened privacy case in its initial verification state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestPrivacyCaseDto"},"example":{"id":"9b8f9433-35f3-4cdc-8620-be3bb8e1ad5b","requestType":"ACCESS","status":"OPEN","request":"example","revision":1,"dueAt":"2026-12-31T18:00:00.000Z","createdAt":"2026-01-15T10:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/GuestPortalAuthenticationRequired"}},"security":[{"guestPortalToken":[]}],"summary":"Create a guest-owned privacy request","tags":["guest-portal"]}},"/guest-portal/history":{"get":{"description":"Returns the capability-owned reservation, waitlist, table-session, and visit history using the requested signed cursor.","operationId":"GuestPortalController_history","parameters":[{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer","example":20},"description":"Optional maximum number of records returned in one page; response pagination metadata indicates how to continue when more matches remain.","example":20},{"name":"cursor","required":false,"in":"query","schema":{"maxLength":2048,"type":"string","example":"example"},"description":"Optional opaque cursor returned by the preceding page; submit it unchanged with the same scope and filters to continue.","example":"example"}],"responses":{"200":{"description":"Returns one cursor page of guest-owned history and continuation metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestPortalHistoryResultDto"},"example":{"items":[{"id":"af924415-09ad-48f0-8889-e7ae8d3b1d06","type":"RESERVATION","status":"example","occurredAt":"2026-01-15T12:00:00.000Z","partySize":0}],"hasMore":true}}}},"401":{"$ref":"#/components/responses/GuestPortalAuthenticationRequired"}},"security":[{"guestPortalToken":[]}],"summary":"List guest-owned reservation and visit history","tags":["guest-portal"]}},"/guest-portal/sign-out":{"post":{"description":"Revokes the presented guest capability so it cannot be used for subsequent portal requests.","operationId":"GuestPortalController_revoke","parameters":[],"responses":{"200":{"description":"Confirms revocation of the guest portal capability session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestPortalRevokeResultDto"},"example":{"revoked":true}}}},"401":{"$ref":"#/components/responses/GuestPortalAuthenticationRequired"}},"security":[{"guestPortalToken":[]}],"summary":"Revoke guest portal session","tags":["guest-portal"]}},"/workforce/careers/postings/{publicSlug}":{"get":{"description":"Returns a currently active published posting whose requisition remains open and whose closing time has not passed. The public response exposes organization and role copy plus the privacy-notice version required for an application. This read is intentionally public and does not require authentication.","operationId":"WorkforceCareersController_getPosting","parameters":[{"name":"publicSlug","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Stable public slug identifying the published career posting; it is not a candidate credential.","example":"example"}],"responses":{"200":{"description":"Public posting details for a role that is currently accepting applications.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCareerPostingDto"},"example":{"publicSlug":"example-slug","organizationName":"Example name","title":"Example title","summary":"Synthetic example","description":"Synthetic example","locationText":"example","privacyNoticeVersion":"example"}}}}},"summary":"Read a public career posting","tags":["workforce careers"],"x-hallify-auth":{"mode":"public"},"security":[]}},"/workforce/careers/postings/{publicSlug}/apply":{"post":{"description":"Atomically creates the candidate, application, initial APPLIED-stage history, candidate-portal session, and audit evidence after validating the current privacy notice and posting availability. Reusing the same submission key returns the existing application when the original transaction already committed. Submission is intentionally public; the returned candidate capability protects later access.","operationId":"WorkforceCareersController_apply","parameters":[{"name":"publicSlug","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Stable public slug identifying the published career posting; it is not a candidate credential.","example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCandidateApplicationDto"},"example":{"submissionKey":"e8d3f2b3-bd92-4056-8aa4-7c77fa2f8e4b","firstName":"Example","lastName":"User","email":"user@example.test","privacyNoticeVersion":"2026-07-28"}}},"description":"Atomically creates the candidate, application, initial APPLIED-stage history, candidate-portal session, and audit evidence after validating the current privacy notice and posting availability."},"responses":{"201":{"description":"Created application in the APPLIED stage together with the candidate-portal token and its expiration time.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApplicationCreatedDto"},"example":{"application":{"id":"0120f0fe-6880-47e8-895d-c092d269cdd1","requisitionTitle":"Example title","currentStage":{"id":"f97fe865-5ff8-488a-8fab-9e27e748514c","code":"EXAMPLE","name":"Example name","category":"APPLIED","isTerminal":true,"sortOrder":1,"revision":1},"status":"ACTIVE","appliedAt":"2026-01-15T12:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z","revision":1,"canWithdraw":true},"candidatePortalToken":"synthetic-example-credential","candidatePortalTokenExpiresAt":"2026-12-31T18:00:00.000Z"}}}}},"summary":"Submit a public career application","tags":["workforce careers"],"x-hallify-auth":{"mode":"public"},"security":[]}},"/workforce/candidate-portal/me":{"get":{"description":"Returns the candidate profile, applications, interviews, offers, and allowed actions owned by the authenticated candidate capability.","operationId":"WorkforceCandidatePortalController_getMe","parameters":[{"name":"cursor","required":false,"in":"query","schema":{"maxLength":2048,"type":"string","example":"example"},"description":"Optional opaque cursor returned by the preceding page; submit it unchanged with the same scope and filters to continue.","example":"example"},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":50,"default":20,"type":"integer","example":20},"description":"Optional maximum number of records returned in one page; response pagination metadata indicates how to continue when more matches remain.","example":20}],"responses":{"200":{"description":"The candidate profile, applications, interviews, offers, and allowed actions owned by the authenticated candidate capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidatePortalMeDto"},"example":{"candidate":{"id":"794ae235-ae89-44f0-8118-f8817918f169","firstName":"Example","lastName":"User","email":"user@example.test","status":"ACTIVE","revision":1},"applications":[{"id":"0120f0fe-6880-47e8-895d-c092d269cdd1","requisitionTitle":"Example title","currentStage":{"id":"f97fe865-5ff8-488a-8fab-9e27e748514c","code":"EXAMPLE","name":"Example name","category":"APPLIED","isTerminal":true,"sortOrder":1,"revision":1},"status":"ACTIVE","appliedAt":"2026-01-15T12:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z","revision":1,"canWithdraw":true}],"sessionExpiresAt":"2026-12-31T18:00:00.000Z","serverTime":"2026-01-15T12:00:00.000Z"}}}},"401":{"$ref":"#/components/responses/CandidatePortalAuthenticationRequired"}},"security":[{"candidatePortalToken":[]}],"summary":"Read the authenticated candidate profile","tags":["workforce candidate portal"]}},"/workforce/candidate-portal/applications/{applicationId}/withdraw":{"post":{"description":"Uses the Candidate Portal capability to withdraw only the candidate-owned eligible application identified by the route. The reason and terminal stage event are recorded without deleting submitted evidence.","operationId":"WorkforceCandidatePortalController_withdraw","parameters":[{"name":"applicationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Hallify UUID whose ownership is validated against every parent tenant and aggregate in this route before the selected resource is exposed or changed.","example":"7ba1de01-f294-46f1-8bb0-1b96b16bbdc9"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateWithdrawApplicationDto"},"example":{"expectedRevision":1,"commandKey":"144a3af2-662b-401d-8893-0abf596c5088","reason":"Synthetic example"}}},"description":"Uses the Candidate Portal capability to withdraw only the candidate-owned eligible application identified by the route."},"responses":{"200":{"description":"Candidate-owned application in its withdrawn terminal stage with the updated revision and preserved submission evidence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidatePortalApplicationDto"},"example":{"id":"0120f0fe-6880-47e8-895d-c092d269cdd1","requisitionTitle":"Example title","currentStage":{"id":"f97fe865-5ff8-488a-8fab-9e27e748514c","code":"EXAMPLE","name":"Example name","category":"APPLIED","isTerminal":true,"sortOrder":1,"revision":1},"status":"ACTIVE","appliedAt":"2026-01-15T12:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z","revision":1,"canWithdraw":true}}}},"401":{"$ref":"#/components/responses/CandidatePortalAuthenticationRequired"}},"security":[{"candidatePortalToken":[]}],"summary":"Withdraw a candidate application","tags":["workforce candidate portal"]}},"/workforce/candidate-portal/offers/{offerId}/respond":{"post":{"description":"Uses the Candidate Portal capability to accept or decline only the candidate-owned active offer identified by the route. The response is rejected after expiry or when the offer revision has changed.","operationId":"WorkforceCandidatePortalController_respondToOffer","parameters":[{"name":"offerId","required":true,"in":"path","schema":{"type":"string","format":"uuid","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Hallify UUID whose ownership is validated against every parent tenant and aggregate in this route before the selected resource is exposed or changed.","example":"7ba1de01-f294-46f1-8bb0-1b96b16bbdc9"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateOfferResponseDto"},"example":{"expectedRevision":1,"commandKey":"144a3af2-662b-401d-8893-0abf596c5088","response":"ACCEPT"}}},"description":"Uses the Candidate Portal capability to accept or decline only the candidate-owned active offer identified by the route."},"responses":{"200":{"description":"Candidate-owned application projection after recording the offer response, including the resulting stage and current revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidatePortalApplicationDto"},"example":{"id":"0120f0fe-6880-47e8-895d-c092d269cdd1","requisitionTitle":"Example title","currentStage":{"id":"f97fe865-5ff8-488a-8fab-9e27e748514c","code":"EXAMPLE","name":"Example name","category":"APPLIED","isTerminal":true,"sortOrder":1,"revision":1},"status":"ACTIVE","appliedAt":"2026-01-15T12:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z","revision":1,"canWithdraw":true}}}},"401":{"$ref":"#/components/responses/CandidatePortalAuthenticationRequired"}},"security":[{"candidatePortalToken":[]}],"summary":"Respond to a candidate offer","tags":["workforce candidate portal"]}},"/organizations/{organizationId}/audit/inbound-sources/{sourceKey}/events":{"post":{"description":"Accepts 1–500 newline-delimited OCSF JSON events for an active organization source. Hallify verifies the HMAC over the exact raw NDJSON bytes, enforces the timestamp and replay window, validates every event, and persists the accepted batch as audit evidence.\n\nHallify HMAC profile `audit-inbound` uses HMAC-SHA256. Canonical input: unixSeconds + \".\" + raw UTF-8 NDJSON. Send x-hallify-timestamp as unix-seconds; timestamps outside ±300 seconds are stale. Send x-hallify-signature as lowercase hexadecimal; comparison is timing-safe. Secret handling: Decode the issued base64url secret into exactly 32 raw bytes before signing. Accepted Content-Type: application/x-ndjson, application/ndjson. Malformed input: Malformed signature metadata returns 401 AUDIT_INGRESS_SIGNATURE_INVALID; malformed NDJSON returns 400. Stale input: A timestamp outside the 300-second window returns 401 AUDIT_INGRESS_SIGNATURE_INVALID. Repeated delivery: A repeated signature is rejected with 409 AUDIT_INGRESS_REPLAY.","operationId":"AuditInboundIngestionController_ingest","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Organization tenant whose resources and policies are addressed; membership, permission, and tenant-isolation checks use this identifier.","example":"7ba1de01-f294-46f1-8bb0-1b96b16bbdc9"},{"name":"sourceKey","required":true,"in":"path","schema":{"type":"string","example":"example"},"description":"Stable key of the configured audit-ingress source whose HMAC secret verifies this delivery.","example":"example"},{"in":"header","name":"x-hallify-timestamp","required":true,"description":"unix-seconds timestamp; accepted clock skew is ±300 seconds.","schema":{"type":"string","example":"example"},"example":"example"}],"requestBody":{"required":true,"description":"Raw UTF-8 OCSF NDJSON batch. The exact raw bytes are part of the HMAC canonical input.","content":{"application/x-ndjson":{"schema":{"type":"string","description":"Between 1 and 500 OCSF JSON objects, one event per line, with a maximum raw request size of 2 MB.","example":"{\"class_uid\":1001,\"activity_id\":1}\n"},"example":"{\"class_uid\":1001,\"activity_id\":1}\n"},"application/ndjson":{"schema":{"type":"string","description":"Between 1 and 500 OCSF JSON objects, one event per line, with a maximum raw request size of 2 MB.","example":"{\"class_uid\":1001,\"activity_id\":1}\n"},"example":"{\"class_uid\":1001,\"activity_id\":1}\n"}}},"responses":{"201":{"description":"Accepted batch identifier and counts for ingested or deduplicated audit events.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditIngestionResultDto"},"example":{"batchId":"example-id","accepted":0,"deduplicated":0,"events":[{"id":"64edc395-c85f-4e3b-8e3a-d593a4973acc","receivedAt":"2026-01-15T12:00:00.000Z","deduplicated":true}]}}}},"400":{"description":"Malformed NDJSON batch or invalid audit event payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":400,"error":"errors:http.badRequest","code":"HTTP_BAD_REQUEST","message":"errors:http.badRequest","translationKey":"errors:http.badRequest"}}}},"401":{"description":"Invalid, malformed, or stale audit HMAC signature","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":401,"error":"errors:http.unauthorized","code":"HTTP_UNAUTHORIZED","message":"errors:http.unauthorized","translationKey":"errors:http.unauthorized"}}}},"404":{"description":"Active inbound audit source was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":404,"error":"errors:http.notFound","code":"HTTP_NOT_FOUND","message":"errors:http.notFound","translationKey":"errors:http.notFound"}}}},"409":{"description":"Signed audit request was already processed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":409,"error":"errors:http.conflict","code":"HTTP_CONFLICT","message":"errors:http.conflict","translationKey":"errors:http.conflict"}}}},"503":{"description":"Audit signing secret could not be decrypted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":503,"error":"errors:http.serviceUnavailable","code":"HTTP_SERVICE_UNAVAILABLE","message":"errors:http.serviceUnavailable","translationKey":"errors:http.serviceUnavailable"}}}}},"security":[{"hallifyHmacSignature":[]}],"summary":"Ingest a signed external audit event batch","tags":["AuditInboundIngestion"],"x-hallify-hmac":{"algorithm":"HMAC-SHA256","signature":{"comparison":"timing-safe","encoding":"lowercase hexadecimal","header":"x-hallify-signature"},"timestamp":{"format":"unix-seconds","header":"x-hallify-timestamp","toleranceSeconds":300},"profile":"audit-inbound","canonicalInput":"unixSeconds + \".\" + raw UTF-8 NDJSON","contentTypes":["application/x-ndjson","application/ndjson"],"errors":{"malformed":"Malformed signature metadata returns 401 AUDIT_INGRESS_SIGNATURE_INVALID; malformed NDJSON returns 400.","stale":"A timestamp outside the 300-second window returns 401 AUDIT_INGRESS_SIGNATURE_INVALID."},"replay":"A repeated signature is rejected with 409 AUDIT_INGRESS_REPLAY.","secret":"Decode the issued base64url secret into exactly 32 raw bytes before signing."}}},"/organizations/{organizationId}/workforce/integrations/{connectionId}/webhooks":{"post":{"description":"Accepts a workforce provider event only after profile-specific HMAC verification over stable JSON, timestamp freshness, and replay checks. Event identity and payload hash make duplicate delivery deterministic.\n\nHallify HMAC profile `workforce-integration` uses HMAC-SHA256. Canonical input: RFC3339 timestamp + \".\" + recursively key-sorted stable JSON. Send x-hallify-timestamp as rfc3339; timestamps outside ±300 seconds are stale. Send x-hallify-signature as lowercase hexadecimal with optional sha256= prefix; comparison is timing-safe. Secret handling: Use the integration secret as UTF-8 text. Accepted Content-Type: application/json. Malformed input: A malformed signature returns 401 WORKFORCE_INTEGRATION_WEBHOOK_INVALID. Stale input: A timestamp outside the 300-second window returns 401 WORKFORCE_INTEGRATION_WEBHOOK_INVALID. Repeated delivery: The external event ID and payload hash provide duplicate handling; a conflicting replay returns 409 WORKFORCE_INTEGRATION_WEBHOOK_REPLAY_CONFLICT.","operationId":"WorkforceIntegrationWebhooksController_ingest","parameters":[{"name":"organizationId","required":true,"in":"path","schema":{"type":"string","format":"uuid","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Organization tenant whose resources and policies are addressed; membership, permission, and tenant-isolation checks use this identifier.","example":"7ba1de01-f294-46f1-8bb0-1b96b16bbdc9"},{"name":"connectionId","required":true,"in":"path","schema":{"type":"string","format":"uuid","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Hallify UUID whose ownership is validated against every parent tenant and aggregate in this route before the selected resource is exposed or changed.","example":"712a1a25-e986-4e70-885b-ffdbc0c19774"},{"in":"header","name":"x-hallify-timestamp","required":true,"description":"rfc3339 timestamp; accepted clock skew is ±300 seconds.","schema":{"type":"string","example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkforceIntegrationWebhookDto"},"example":{"externalEventId":"example-id","eventType":"1.000","payload":{"exampleKey":"example"}}}},"description":"External event identifier, provider event type, and free-form provider payload consumed together as the signed, replay-deduplicated workforce event."},"responses":{"200":{"description":"Accepts a workforce provider event only after profile-specific HMAC verification over stable JSON, timestamp freshness, and replay checks.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkforceIntegrationWebhookResultDto"},"example":{"eventId":"84a46351-8af3-4a2c-8698-e4a6a5cafb2b","accepted":true,"duplicate":true}}}},"400":{"description":"Integration identifiers or webhook payload are invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":400,"error":"errors:http.badRequest","code":"HTTP_BAD_REQUEST","message":"errors:http.badRequest","translationKey":"errors:http.badRequest"}}}},"401":{"description":"Workforce webhook HMAC signature is invalid or stale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":401,"error":"errors:http.unauthorized","code":"HTTP_UNAUTHORIZED","message":"errors:http.unauthorized","translationKey":"errors:http.unauthorized"}}}},"404":{"description":"Workforce integration is unavailable or was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":404,"error":"errors:http.notFound","code":"HTTP_NOT_FOUND","message":"errors:http.notFound","translationKey":"errors:http.notFound"}}}},"409":{"description":"External event identifier was reused with a different payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":409,"error":"errors:http.conflict","code":"HTTP_CONFLICT","message":"errors:http.conflict","translationKey":"errors:http.conflict"}}}},"413":{"description":"Workforce integration webhook payload is too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":413,"error":"errors:http.payloadTooLarge","code":"HTTP_PAYLOAD_TOO_LARGE","message":"errors:http.payloadTooLarge","translationKey":"errors:http.payloadTooLarge"}}}},"429":{"description":"Workforce integration webhook rate limit was exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":429,"error":"errors:http.tooManyRequests","code":"HTTP_TOO_MANY_REQUESTS","message":"errors:http.tooManyRequests","translationKey":"errors:http.tooManyRequests"}}},"headers":{"Retry-After":{"description":"Whole seconds the client must wait before retrying the rejected request.","schema":{"type":"integer","minimum":1,"example":60},"example":60}}},"503":{"description":"Protected workforce integration configuration is unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":503,"error":"errors:http.serviceUnavailable","code":"HTTP_SERVICE_UNAVAILABLE","message":"errors:http.serviceUnavailable","translationKey":"errors:http.serviceUnavailable"}}}}},"security":[{"hallifyHmacSignature":[]}],"summary":"Accept a signed, replay-safe workforce provider event","tags":["workforce integration webhooks"],"x-hallify-hmac":{"algorithm":"HMAC-SHA256","signature":{"comparison":"timing-safe","encoding":"lowercase hexadecimal with optional sha256= prefix","header":"x-hallify-signature"},"timestamp":{"format":"rfc3339","header":"x-hallify-timestamp","toleranceSeconds":300},"profile":"workforce-integration","canonicalInput":"RFC3339 timestamp + \".\" + recursively key-sorted stable JSON","contentTypes":["application/json"],"errors":{"malformed":"A malformed signature returns 401 WORKFORCE_INTEGRATION_WEBHOOK_INVALID.","stale":"A timestamp outside the 300-second window returns 401 WORKFORCE_INTEGRATION_WEBHOOK_INVALID."},"replay":"The external event ID and payload hash provide duplicate handling; a conflicting replay returns 409 WORKFORCE_INTEGRATION_WEBHOOK_REPLAY_CONFLICT.","secret":"Use the integration secret as UTF-8 text."}}},"/guest-communication-providers/{providerId}/events/inbound":{"post":{"description":"Authenticates the provider event, deduplicates its event identifier, and appends the inbound message to the matching venue conversation.\n\nHallify HMAC profile `guest-provider` uses HMAC-SHA256. Canonical input: RFC3339 timestamp + \".\" + JSON.stringify(parsed DTO). Send x-hallify-timestamp as rfc3339; timestamps outside ±300 seconds are stale. Send x-hallify-signature as base64url; comparison is timing-safe. Secret handling: Use the issued secret as UTF-8 text. Accepted Content-Type: application/json. Malformed input: A malformed signature returns 401 GUEST_PROVIDER_WEBHOOK_UNAUTHORIZED. Stale input: A timestamp outside the 300-second window returns 401 GUEST_PROVIDER_WEBHOOK_UNAUTHORIZED. Repeated delivery: Signatures are not rejected solely for repetition; provider message and event identifiers control domain deduplication.","operationId":"GuestProviderWebhooksController_inbound","parameters":[{"name":"providerId","required":true,"in":"path","schema":{"type":"string","format":"uuid","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Hallify UUID whose ownership is validated against every parent tenant and aggregate in this route before the selected resource is exposed or changed.","example":"7ba1de01-f294-46f1-8bb0-1b96b16bbdc9"},{"in":"header","name":"x-hallify-timestamp","required":true,"description":"rfc3339 timestamp; accepted clock skew is ±300 seconds.","schema":{"type":"string","example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestProviderInboundMessageDto"},"example":{"externalEventId":"Synthetic example","externalMessageId":"Synthetic example","contactValue":"Synthetic example","body":"Synthetic example","occurredAt":"2026-01-15T12:00:00.000Z"}}},"description":"Provider event and message identifiers, source contact, optional subject, message body, and occurrence timestamp consumed as the signed inbound message payload."},"responses":{"200":{"description":"Returns the matched conversation and whether the provider event was newly applied or replayed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestProviderWebhooksInboundResultDto"},"example":{"accepted":true,"messageId":"6656e43a-a70a-4ac5-8f2c-e049d62f80c7","conversationId":"d6993a6a-84c6-4c36-8812-5d181ae025cd","duplicate":true}}}},"400":{"description":"Provider identifier or inbound message payload is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":400,"error":"errors:http.badRequest","code":"HTTP_BAD_REQUEST","message":"errors:http.badRequest","translationKey":"errors:http.badRequest"}}}},"401":{"$ref":"#/components/responses/GuestProviderAuthenticationFailed"},"503":{"$ref":"#/components/responses/GuestProviderDependencyUnavailable"}},"security":[{"hallifyHmacSignature":[]}],"summary":"Ingest a signed provider inbound message","tags":["guest-provider-webhooks"],"x-hallify-hmac":{"algorithm":"HMAC-SHA256","signature":{"comparison":"timing-safe","encoding":"base64url","header":"x-hallify-signature"},"timestamp":{"format":"rfc3339","header":"x-hallify-timestamp","toleranceSeconds":300},"profile":"guest-provider","canonicalInput":"RFC3339 timestamp + \".\" + JSON.stringify(parsed DTO)","contentTypes":["application/json"],"errors":{"malformed":"A malformed signature returns 401 GUEST_PROVIDER_WEBHOOK_UNAUTHORIZED.","stale":"A timestamp outside the 300-second window returns 401 GUEST_PROVIDER_WEBHOOK_UNAUTHORIZED."},"replay":"Signatures are not rejected solely for repetition; provider message and event identifiers control domain deduplication.","secret":"Use the issued secret as UTF-8 text."}}},"/guest-communication-providers/{providerId}/events/delivery":{"post":{"description":"Authenticates and deduplicates the provider event, then advances the referenced outbound message delivery state without rewriting prior attempts.\n\nHallify HMAC profile `guest-provider` uses HMAC-SHA256. Canonical input: RFC3339 timestamp + \".\" + JSON.stringify(parsed DTO). Send x-hallify-timestamp as rfc3339; timestamps outside ±300 seconds are stale. Send x-hallify-signature as base64url; comparison is timing-safe. Secret handling: Use the issued secret as UTF-8 text. Accepted Content-Type: application/json. Malformed input: A malformed signature returns 401 GUEST_PROVIDER_WEBHOOK_UNAUTHORIZED. Stale input: A timestamp outside the 300-second window returns 401 GUEST_PROVIDER_WEBHOOK_UNAUTHORIZED. Repeated delivery: Signatures are not rejected solely for repetition; provider message and event identifiers control domain deduplication.","operationId":"GuestProviderWebhooksController_delivery","parameters":[{"name":"providerId","required":true,"in":"path","schema":{"type":"string","format":"uuid","example":"9b6163a8-afea-4877-818b-8e2ae28a2845"},"description":"Hallify UUID whose ownership is validated against every parent tenant and aggregate in this route before the selected resource is exposed or changed.","example":"7ba1de01-f294-46f1-8bb0-1b96b16bbdc9"},{"in":"header","name":"x-hallify-timestamp","required":true,"description":"rfc3339 timestamp; accepted clock skew is ±300 seconds.","schema":{"type":"string","example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestProviderDeliveryEventDto"},"example":{"externalEventId":"example-id","externalMessageId":"Synthetic example","status":"QUEUED","occurredAt":"2026-01-15T12:00:00.000Z"}}},"description":"Provider event and message identifiers, delivery status, occurrence timestamp, and optional provider metadata consumed as the signed delivery update."},"responses":{"200":{"description":"Returns the updated message delivery state and whether the event was newly applied or replayed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestProviderWebhooksDeliveryResultDto"},"example":{"accepted":true,"duplicate":true}}}},"400":{"description":"Provider identifier or delivery event payload is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":400,"error":"errors:http.badRequest","code":"HTTP_BAD_REQUEST","message":"errors:http.badRequest","translationKey":"errors:http.badRequest"}}}},"401":{"$ref":"#/components/responses/GuestProviderAuthenticationFailed"},"404":{"description":"Referenced guest message was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":404,"error":"errors:http.notFound","code":"HTTP_NOT_FOUND","message":"errors:http.notFound","translationKey":"errors:http.notFound"}}}},"503":{"$ref":"#/components/responses/GuestProviderDependencyUnavailable"}},"security":[{"hallifyHmacSignature":[]}],"summary":"Ingest a signed provider delivery event","tags":["guest-provider-webhooks"],"x-hallify-hmac":{"algorithm":"HMAC-SHA256","signature":{"comparison":"timing-safe","encoding":"base64url","header":"x-hallify-signature"},"timestamp":{"format":"rfc3339","header":"x-hallify-timestamp","toleranceSeconds":300},"profile":"guest-provider","canonicalInput":"RFC3339 timestamp + \".\" + JSON.stringify(parsed DTO)","contentTypes":["application/json"],"errors":{"malformed":"A malformed signature returns 401 GUEST_PROVIDER_WEBHOOK_UNAUTHORIZED.","stale":"A timestamp outside the 300-second window returns 401 GUEST_PROVIDER_WEBHOOK_UNAUTHORIZED."},"replay":"Signatures are not rejected solely for repetition; provider message and event identifiers control domain deduplication.","secret":"Use the issued secret as UTF-8 text."}}},"/payment-provider-webhooks/{providerKey}":{"post":{"description":"Verifies and deduplicates a signed provider event, records its immutable payload evidence, and advances the matching payment attempt atomically. A failure reported after capture creates settlement-exception evidence. The simulator adapter is supported; certified provider adapters remain release gates.\n\nHallify HMAC profile `payment-provider` uses HMAC-SHA256. Canonical input: RFC3339 timestamp + \".\" + key-sorted stable JSON. Send x-hallify-timestamp as rfc3339; timestamps outside ±300 seconds are stale. Send x-hallify-signature as v1=<lowercase hexadecimal>; comparison is timing-safe. Secret handling: Use the configured provider secret as UTF-8 text. Accepted Content-Type: application/json. Malformed input: A malformed signature returns 401. Stale input: A timestamp outside the 300-second window returns 401. Repeated delivery: The provider event ID and payload hash provide duplicate handling; conflicting reuse returns 409.","operationId":"PaymentProviderWebhooksController_ingest","parameters":[{"name":"providerKey","required":true,"in":"path","schema":{"example":"simulator","type":"string"},"description":"Stable payment-provider key selecting the webhook verification profile for this delivery.","example":"simulator"},{"in":"header","name":"x-hallify-timestamp","required":true,"description":"rfc3339 timestamp; accepted clock skew is ±300 seconds.","schema":{"type":"string","example":"example"},"example":"example"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentProviderWebhookDto"},"example":{"attemptId":"fc6f0fa9-b807-43e6-87b6-56edb271fb3f","eventId":"evt_01JHALLIFYEXAMPLE","status":"CAPTURED","occurredAt":"2026-08-11T10:30:00.000Z","externalReference":"provider-payment-1842","cardBrand":"visa","cardLast4":"4242"}}},"description":"Payment attempt and provider event identifiers, provider status and occurrence time, plus optional external and masked-card metadata consumed as the signed payment event."},"responses":{"200":{"description":"Returns whether the signed provider event was applied or recognized as an idempotent replay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentProviderWebhookResultDto"},"example":{"attemptId":"ebc45c68-e765-435d-8f7f-7ef875ce04bf","status":"PENDING","revision":1,"duplicate":true}}}},"400":{"description":"Provider key or payment webhook payload is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":400,"error":"errors:http.badRequest","code":"HTTP_BAD_REQUEST","message":"errors:http.badRequest","translationKey":"errors:http.badRequest"}}}},"401":{"description":"Payment webhook is unavailable or its HMAC signature is invalid or stale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":401,"error":"errors:http.unauthorized","code":"HTTP_UNAUTHORIZED","message":"errors:http.unauthorized","translationKey":"errors:http.unauthorized"}}}},"404":{"description":"Payment attempt was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":404,"error":"errors:http.notFound","code":"HTTP_NOT_FOUND","message":"errors:http.notFound","translationKey":"errors:http.notFound"}}}},"409":{"description":"Provider event identifier was reused with a different payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":409,"error":"errors:http.conflict","code":"HTTP_CONFLICT","message":"errors:http.conflict","translationKey":"errors:http.conflict"}}}}},"security":[{"hallifyHmacSignature":[]}],"summary":"Ingest a signed provider payment-attempt event","tags":["payment-provider-webhooks"],"x-hallify-hmac":{"algorithm":"HMAC-SHA256","signature":{"comparison":"timing-safe","encoding":"v1=<lowercase hexadecimal>","header":"x-hallify-signature"},"timestamp":{"format":"rfc3339","header":"x-hallify-timestamp","toleranceSeconds":300},"profile":"payment-provider","canonicalInput":"RFC3339 timestamp + \".\" + key-sorted stable JSON","contentTypes":["application/json"],"errors":{"malformed":"A malformed signature returns 401.","stale":"A timestamp outside the 300-second window returns 401."},"replay":"The provider event ID and payload hash provide duplicate handling; conflicting reuse returns 409.","secret":"Use the configured provider secret as UTF-8 text."}}},"/financial-bank-provider-webhooks/plaid":{"post":{"description":"Verifies Plaid ES256 key rotation, raw-body SHA-256, environment, timestamp, and replay identity before recording immutable receipt evidence and queuing incremental sync.","operationId":"FinancialBankWebhookController_plaid","parameters":[{"name":"plaid-verification","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Plaid ES256 verification JWT whose request-body hash, key identifier, environment, and issue time are validated before ingestion.","example":"example"},{"name":"Plaid-Verification","in":"header","description":"Plaid ES256 JWT binding the exact raw request body hash and issue time.","required":true,"schema":{"type":"string","example":"example"},"example":"example"}],"requestBody":{"required":true,"description":"Exact Plaid JSON webhook body verified against its raw SHA-256 digest.","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"exampleKey":"example"}},"example":{"exampleKey":"example"}}}},"responses":{"200":{"description":"The verified webhook was accepted or recognized as an exact replay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialBankWebhookResultDto"},"example":{"accepted":true,"replay":true}}}}},"summary":"Ingest a verified Plaid bank-feed event","tags":["finance-bank-provider-webhooks"],"x-hallify-auth":{"mode":"public"},"security":[]}},"/financial-bank-provider-webhooks/salt-edge":{"post":{"description":"Verifies the v6 callback signature, exact URL and raw body, callback version, timestamp, connection identity, and replay evidence before activating or degrading the connection and queuing incremental sync.","operationId":"FinancialBankWebhookController_saltEdge","parameters":[{"name":"signature","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Salt Edge RSA SHA-256 callback signature over the exact callback URL and raw request body.","example":"example"},{"name":"signature-key-version","required":true,"in":"header","schema":{"type":"string","example":"example"},"description":"Certified Salt Edge callback public-key version used for strict signature verification and rotation control.","example":"example"},{"name":"Signature-Key-Version","in":"header","description":"Salt Edge callback public-key version; Finance accepts the certified v6 key.","required":true,"schema":{"type":"string","example":"example"},"example":"example"},{"name":"Signature","in":"header","description":"Salt Edge AIS RSA SHA-256 callback signature over callback URL and raw body.","required":true,"schema":{"type":"string","example":"example"},"example":"example"}],"requestBody":{"required":true,"description":"Exact Salt Edge v6 JSON callback body verified with its RSA signature.","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"exampleKey":"example"}},"example":{"exampleKey":"example"}}}},"responses":{"200":{"description":"The verified callback was accepted or recognized as an exact replay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialBankWebhookResultDto"},"example":{"accepted":true,"replay":true}}}}},"summary":"Ingest a verified Salt Edge bank-feed event","tags":["finance-bank-provider-webhooks"],"x-hallify-auth":{"mode":"public"},"security":[]}}},"components":{"schemas":{"PreorderExternalCatalogResultDto":{"type":"object","properties":{"salesChannelId":{"type":"string","format":"uuid","description":"Hallify UUID identifying sales channel associated with preorder external catalog.","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"menuVersionId":{"type":"string","format":"uuid","description":"Hallify UUID identifying menu version associated with preorder external catalog.","example":"490ccfcb-caa6-472e-836a-a8416e8cee92"},"versionNumber":{"type":"integer","minimum":1,"description":"Whole-number version number recorded for preorder external catalog. Accepted values enforce minimum 1.","example":1},"graphHash":{"type":"string","nullable":true,"description":"Opaque digest identifying the exact published-menu graph used by preorder external catalog; clients compare it to detect graph changes. Null means no value is recorded for this representation.","example":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"},"publishedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for published at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"servedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for served at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"categories":{"type":"array","items":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"exampleKey":"example"}},"description":"Categories included as categories in preorder external catalog.","example":[{"exampleKey":"example"}]}},"required":["salesChannelId","menuVersionId","versionNumber","graphHash","publishedAt","servedAt","categories"],"description":"Returns the partner catalog projection for the authorized venue and sales channel.","example":{"salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","menuVersionId":"490ccfcb-caa6-472e-836a-a8416e8cee92","versionNumber":1,"graphHash":null,"publishedAt":"2026-01-15T12:00:00.000Z","servedAt":"2026-01-15T12:00:00.000Z","categories":[{"exampleKey":"example"}]}},"JsonValue":{"oneOf":[{"type":"string","nullable":true,"example":"example"},{"type":"number","example":0},{"type":"boolean","example":true},{"type":"array","items":{"$ref":"#/components/schemas/JsonValue"},"example":["example"]},{"type":"object","additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"exampleKey":"example"}}],"description":"Recursively JSON-safe value used only where the owning contract intentionally allows free-form structured data.","example":"example"},"TranslatedErrorDto":{"type":"object","properties":{"statusCode":{"type":"integer","description":"HTTP status code repeated from the response.","example":400},"error":{"type":"string","description":"Translation key for the HTTP category, such as errors:http.conflict. The specific cause is identified by code and translationKey.","example":"errors.request.invalid"},"code":{"type":"string","example":"HTTP_BAD_REQUEST","description":"Stable machine-readable domain code, or an HTTP_* fallback when no domain code is provided. Branch on this field and the HTTP status; localized wording never controls retries or business decisions."},"message":{"type":"string","example":"errors:http.badRequest","description":"Translation key, identical to translationKey. The API does not return localized display text. Resolve the key and translationValues in the consuming application."},"translationKey":{"type":"string","example":"errors:http.badRequest","description":"Canonical translation key, identical to message. Status-specific errors:http.* keys cover unspecified failures. Public keys and EN/RU explanations are listed in Developers; unknown keys require a localized client fallback."},"translationValues":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","example":"example"},{"type":"number","example":0},{"type":"boolean","example":true}],"example":"example"},"description":"Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.","example":{"exampleKey":"example"}},"validationErrors":{"description":"Field validation failures with translation keys and stable validator codes. Submitted values and raw validator text are not included.","type":"array","items":{"$ref":"#/components/schemas/ValidationErrorDto"},"example":[{"field":"email","translationKey":"validation:isEmail","code":"isEmail","message":"validation:isEmail"}]},"details":{"description":"Optional domain-specific blocker or validation details","oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/JsonValue"},"example":["example"]},{"type":"object","additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"exampleKey":"example"}}],"example":["example"]}},"required":["statusCode","error","code","message","translationKey"],"description":"Stable error envelope emitted by the global HTTP exception boundary. Domain-specific machine data, when present, is nested under details.","example":{"statusCode":400,"error":"errors:http.badRequest","code":"HTTP_BAD_REQUEST","message":"errors:http.badRequest","translationKey":"errors:http.badRequest"}},"ValidationErrorDto":{"type":"object","properties":{"field":{"type":"string","example":"email","description":"Public field path. Nested properties and array indices are separated by dots."},"translationKey":{"type":"string","example":"validation:isEmail","description":"Translation key for this validator, identical to message. Resolve it using a client dictionary; see the public Developers error catalog."},"code":{"type":"string","example":"isEmail","description":"Stable validator identifier for this field failure. Custom validators may define additional identifiers."},"message":{"type":"string","example":"validation:isEmail","description":"Translation key describing this field validation failure, identical to translationKey. Submitted values and validator prose are not included."},"translationValues":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","example":"example"},{"type":"number","example":0},{"type":"boolean","example":true}],"example":"example"},"description":"Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.","example":{"exampleKey":"example"}}},"required":["field","translationKey","code","message"],"description":"Field validation failure with a field path, stable validator code and a translation key. Human-readable text belongs to the consuming application.","example":{"field":"email","translationKey":"validation:isEmail","code":"isEmail","message":"validation:isEmail"}},"ExternalQuotePreorderDto":{"type":"object","properties":{"serviceMode":{"type":"string","enum":["DINE_IN","PICKUP","DELIVERY","CATERING"],"description":"Allowed service mode for external quote preorder: DINE_IN, PICKUP, DELIVERY, CATERING.","example":"DINE_IN"},"scheduledFor":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"partySize":{"type":"integer","minimum":1,"maximum":10000,"description":"Whole-number party size recorded for external quote preorder. Accepted values enforce minimum 1 and maximum 10000.","example":1},"contactName":{"type":"string","description":"Human-readable contact name for external quote preorder.","example":"Example name"},"contactPhone":{"type":"string","nullable":true,"description":"Telephone number recorded for contact phone in external quote preorder. Null means no value is recorded for this representation.","example":"+995555000000"},"contactEmail":{"type":"string","nullable":true,"description":"Email address recorded for contact email in external quote preorder. Null means no value is recorded for this representation.","format":"email","example":"user@example.test"},"addressLine1":{"type":"string","nullable":true,"description":"Primary street-address line for external quote preorder. Null means no value is recorded for this representation.","example":"example"},"addressLine2":{"type":"string","nullable":true,"description":"Optional secondary address details such as unit, floor, or building for external quote preorder. Null means no value is recorded for this representation.","example":"example"},"city":{"type":"string","nullable":true,"description":"City or locality recorded for the address represented by external quote preorder. Null means no value is recorded for this representation.","example":"example"},"region":{"type":"string","nullable":true,"description":"Region, state, or administrative subdivision recorded for external quote preorder. Null means no value is recorded for this representation.","example":"example"},"postalCode":{"type":"string","nullable":true,"description":"Stable postal code used to classify or address external quote preorder. Null means no value is recorded for this representation.","example":"EXAMPLE"},"countryCode":{"type":"string","nullable":true,"description":"Stable country code used to classify or address external quote preorder. Null means no value is recorded for this representation.","example":"GE"},"administrativeDivisionId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying administrative division associated with external quote preorder. Null means no value is recorded for this representation.","example":"c8efbc76-614d-4a79-8f15-db6d48283d46"},"localityId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying locality associated with external quote preorder. Null means no value is recorded for this representation.","example":"1bfa5864-39f3-4647-8093-42aea5d9d046"},"postalCodeId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying postal code associated with external quote preorder. Null means no value is recorded for this representation.","example":"7424d59b-d459-4e7b-8cbc-7f5222274f26"},"latitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true,"description":"Fraction-capable numeric latitude recorded for external quote preorder. Accepted values enforce minimum -90 and maximum 90. Null means no value is recorded for this representation.","example":41.7151},"longitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true,"description":"Fraction-capable numeric longitude recorded for external quote preorder. Accepted values enforce minimum -180 and maximum 180. Null means no value is recorded for this representation.","example":44.8271},"coordinateSource":{"type":"string","enum":["STAFF","EXTERNAL_CLIENT","GEOREFERENCE_CENTROID",null],"nullable":true,"description":"Allowed coordinate source for external quote preorder: STAFF, EXTERNAL_CLIENT, GEOREFERENCE_CENTROID. Null means no value is recorded for this representation.","example":"STAFF"},"coordinateAccuracy":{"type":"integer","minimum":0,"maximum":10,"nullable":true,"description":"Whole-number coordinate accuracy recorded for external quote preorder. Accepted values enforce minimum 0 and maximum 10. Null means no value is recorded for this representation.","example":0},"deliveryInstructions":{"type":"string","nullable":true,"description":"Delivery instructions for external quote preorder. Null means no value is recorded for this representation.","example":"example"},"note":{"type":"string","nullable":true,"description":"Human-entered note retained with external quote preorder. Null means no value is recorded for this representation.","example":"Synthetic example"},"capacityOverrideReason":{"type":"string","description":"Manager reason for an explicit capacity overbook. Requires preorders.override.","minLength":1,"maxLength":1000,"example":"Synthetic example"},"salesChannelId":{"type":"string","format":"uuid","description":"Hallify UUID identifying sales channel associated with external quote preorder.","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"clientMenuVersionId":{"type":"string","format":"uuid","description":"Hallify UUID identifying client menu version associated with external quote preorder.","example":"cd2f2c2a-ba73-4579-8e32-52da8388fd05"},"clientGraphHash":{"type":"string","description":"Opaque graph token returned by the published menu endpoint.","pattern":"^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$","example":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/PreorderCartLineDto"},"description":"Preorder cart line returned in the external quote preorder collection.","example":[{"clientLineId":"example-id","quantity":1}]}},"required":["serviceMode","scheduledFor","partySize","contactName","salesChannelId","clientMenuVersionId","clientGraphHash","items"],"description":"Partner-supplied fulfillment, guest, address, menu, authorized sales-channel, and cart values used to create a single-use external quote.","example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}]}},"PreorderCartLineDto":{"type":"object","properties":{"clientLineId":{"type":"string","description":"Stable cart line id generated by the client.","pattern":"^[A-Za-z0-9][A-Za-z0-9:_-]{0,79}$","example":"example-id"},"menuItemId":{"type":"string","format":"uuid","description":"Hallify UUID identifying menu item associated with preorder cart line.","example":"16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"},"menuVariantId":{"type":"string","format":"uuid","description":"Hallify UUID identifying menu variant associated with preorder cart line.","example":"94389946-e5d8-4fba-8358-e3a9c8a04b11"},"quantity":{"type":"integer","minimum":1,"maximum":999,"description":"Whole-number quantity measured in the unit established by the item or line that embeds preorder cart line. Accepted values enforce minimum 1 and maximum 999.","example":1},"modifierOptionIds":{"maxItems":20,"type":"array","items":{"type":"string","format":"uuid","example":"d251fdb0-274c-4e59-8e7e-b1d90e1433bc"},"description":"Hallify UUIDs identifying the modifier option set included in preorder cart line.","example":["d251fdb0-274c-4e59-8e7e-b1d90e1433bc"]},"componentSelections":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/OrderItemComponentSelectionDto"},"description":"Order item component selection included as component selections in preorder cart line.","example":[{"groupId":"example-id","choiceId":"example-id"}]},"serviceFlags":{"type":"array","items":{"type":"string","enum":["VIP","RUSH","FIRE_LATER"],"example":"VIP"},"description":"Service flags values included as service flags in preorder cart line.","example":["VIP"]},"specialRequest":{"type":"string","maxLength":500,"description":"Special request for preorder cart line. Accepted values enforce maximum length 500.","example":"example"}},"required":["clientLineId","quantity"],"description":"Preorder cart entry embedded in a operations collection or aggregate.","example":{"clientLineId":"example-id","quantity":1}},"OrderItemComponentSelectionDto":{"type":"object","properties":{"groupId":{"type":"string","description":"Stable component group id from the published structure.","maxLength":96,"example":"example-id"},"choiceId":{"type":"string","description":"Stable component choice id from the published structure.","maxLength":160,"example":"example-id"},"menuVariantId":{"type":"string","description":"Selected sellable version when the component item has versions.","format":"uuid","example":"94389946-e5d8-4fba-8358-e3a9c8a04b11"},"modifierOptionIds":{"description":"Modifier option ids selected for this component.","type":"array","items":{"type":"string","format":"uuid","example":"d251fdb0-274c-4e59-8e7e-b1d90e1433bc"},"example":["d251fdb0-274c-4e59-8e7e-b1d90e1433bc"]}},"required":["groupId","choiceId"],"description":"Order item component selection selected component identities applied to the parent item configuration.","example":{"groupId":"example-id","choiceId":"example-id"}},"PreorderQuoteDto":{"type":"object","properties":{"quoteId":{"type":"string","format":"uuid","description":"Hallify UUID identifying quote associated with preorders quote.","example":"123728f6-ac4b-43a8-8f9e-44585ec81783"},"quoteToken":{"type":"string","description":"Signed token binding the calculated quote to its preorder inputs, price snapshot, and expiry for subsequent acceptance.","example":"synthetic-example-credential"},"status":{"type":"string","enum":["ISSUED","ACCEPTED","DECLINED","EXPIRED","SUPERSEDED"],"description":"Current lifecycle status of preorders quote; allowed values are ISSUED, ACCEPTED, DECLINED, EXPIRED, SUPERSEDED.","example":"ISSUED"},"serviceMode":{"type":"string","enum":["DINE_IN","PICKUP","DELIVERY","CATERING"],"description":"Allowed service mode for preorders quote: DINE_IN, PICKUP, DELIVERY, CATERING.","example":"DINE_IN"},"scheduledFor":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"lines":{"type":"array","minItems":1,"items":{"type":"object","properties":{"clientLineId":{"type":"string","minLength":1,"maxLength":100,"description":"Opaque identifier for client line associated with preorders quote lines item; clients must not assume UUID syntax. Accepted values enforce minimum length 1 and maximum length 100.","example":"example-id"},"sortOrder":{"type":"integer","minimum":0,"description":"Whole-number ordering position for sort order in preorders quote lines item; smaller values sort first. Accepted values enforce minimum 0.","example":1},"quantity":{"type":"integer","minimum":1,"description":"Whole-number quantity measured in the unit established by the item or line that embeds preorders quote lines item. Accepted values enforce minimum 1.","example":1},"menuItemId":{"type":"string","format":"uuid","description":"Hallify UUID identifying menu item associated with preorders quote lines item.","example":"16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"},"menuVariantId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying menu variant associated with preorders quote lines item. Null means no value is recorded for this representation.","example":"94389946-e5d8-4fba-8358-e3a9c8a04b11"},"name":{"type":"string","description":"Human-readable name for preorders quote lines item.","example":"Example name"},"unitPrice":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Decimal monetary unit price serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"lineTotal":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Decimal monetary line total serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque digest identifying the exact policy snapshot applied by preorders quote lines item.","example":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"},"structurePlanHash":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque digest of the order-item structure plan captured when preorders quote lines item was priced.","example":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}},"required":["clientLineId","sortOrder","quantity","menuItemId","menuVariantId","name","unitPrice","lineTotal","policyHash","structurePlanHash"],"example":{"clientLineId":"example-id","sortOrder":1,"quantity":1,"menuItemId":"16ee6f36-c0cb-4311-85e8-2d2b3edea0fd","menuVariantId":null,"name":"Example name","unitPrice":"1.00","lineTotal":"1.00","policyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","structurePlanHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}},"description":"Lines that compose the corresponding lines section of preorders quote.","example":[{"clientLineId":"example-id","sortOrder":1,"quantity":1,"menuItemId":"16ee6f36-c0cb-4311-85e8-2d2b3edea0fd","menuVariantId":null,"name":"Example name","unitPrice":"1.00","lineTotal":"1.00","policyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","structurePlanHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}]},"financialPolicyVersionId":{"type":"string","format":"uuid","description":"Hallify UUID identifying financial policy version associated with preorders quote.","example":"b36de587-2415-41cd-8269-c8dc9aa8ee66"},"financialPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque digest identifying the exact policy snapshot applied by preorders quote.","example":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"},"fulfillmentPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque digest identifying the exact policy snapshot applied by preorders quote.","example":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"},"adjustmentEvidenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque digest protecting the immutable evidence attached to preorders quote.","example":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"},"capacityUnits":{"type":"integer","minimum":1,"maximum":10000,"description":"Whole-number capacity units recorded for preorders quote. Accepted values enforce minimum 1 and maximum 10000.","example":1},"quotedSubtotal":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Decimal monetary quoted subtotal serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"quotedDiscountTotal":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Decimal monetary quoted discount total serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"quotedServiceCharge":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Decimal monetary quoted service charge serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"quotedTax":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Decimal monetary quoted tax serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"quotedDeliveryFee":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Decimal monetary quoted delivery fee serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"quotedTotal":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Decimal monetary quoted total serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"quotedNetPaid":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Opaque identifier for quoted net paid associated with preorders quote; clients must not assume UUID syntax.","example":"1.00"},"quotedRemaining":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Quoted remaining for preorders quote.","example":"1.00"},"quotedRefundDue":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Decimal monetary quoted refund due serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"quotedDepositRequired":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Quoted deposit required for preorders quote.","example":"1.00"},"depositDueAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for deposit due at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-12-31T18:00:00.000Z"},"cancellationCutoffAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for cancellation cutoff at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-01-15T12:00:00.000Z"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 4217 currency code for the monetary values carried by preorders quote.","example":"GEL"},"issuedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for issued at; offsets represent the same absolute instant.","example":"2026-01-15T10:00:00.000Z"},"expiresAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for expires at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"}},"required":["quoteId","quoteToken","status","serviceMode","scheduledFor","lines","financialPolicyVersionId","financialPolicyHash","fulfillmentPolicyHash","adjustmentEvidenceHash","capacityUnits","quotedSubtotal","quotedDiscountTotal","quotedServiceCharge","quotedTax","quotedDeliveryFee","quotedTotal","quotedNetPaid","quotedRemaining","quotedRefundDue","quotedDepositRequired","depositDueAt","cancellationCutoffAt","currency","issuedAt","expiresAt"],"description":"Returns calculated pricing, availability, deposit requirements, and a time-limited protected quote token.","example":{"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","quoteToken":"synthetic-example-credential","status":"ISSUED","serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","lines":[{"clientLineId":"example-id","sortOrder":1,"quantity":1,"menuItemId":"16ee6f36-c0cb-4311-85e8-2d2b3edea0fd","menuVariantId":null,"name":"Example name","unitPrice":"1.00","lineTotal":"1.00","policyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","structurePlanHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"}],"financialPolicyVersionId":"b36de587-2415-41cd-8269-c8dc9aa8ee66","financialPolicyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","fulfillmentPolicyHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","adjustmentEvidenceHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","capacityUnits":1,"quotedSubtotal":"1.00","quotedDiscountTotal":"1.00","quotedServiceCharge":"1.00","quotedTax":"1.00","quotedDeliveryFee":"1.00","quotedTotal":"1.00","quotedNetPaid":"1.00","quotedRemaining":"1.00","quotedRefundDue":"1.00","quotedDepositRequired":"1.00","depositDueAt":null,"cancellationCutoffAt":null,"currency":"GEL","issuedAt":"2026-01-15T10:00:00.000Z","expiresAt":"2026-12-31T18:00:00.000Z"}},"ExternalCreatePreorderDto":{"type":"object","properties":{"serviceMode":{"type":"string","enum":["DINE_IN","PICKUP","DELIVERY","CATERING"],"description":"Allowed service mode for external create preorder: DINE_IN, PICKUP, DELIVERY, CATERING.","example":"DINE_IN"},"scheduledFor":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"partySize":{"type":"integer","minimum":1,"maximum":10000,"description":"Whole-number party size recorded for external create preorder. Accepted values enforce minimum 1 and maximum 10000.","example":1},"contactName":{"type":"string","description":"Human-readable contact name for external create preorder.","example":"Example name"},"contactPhone":{"type":"string","nullable":true,"description":"Telephone number recorded for contact phone in external create preorder. Null means no value is recorded for this representation.","example":"+995555000000"},"contactEmail":{"type":"string","nullable":true,"description":"Email address recorded for contact email in external create preorder. Null means no value is recorded for this representation.","format":"email","example":"user@example.test"},"addressLine1":{"type":"string","nullable":true,"description":"Primary street-address line for external create preorder. Null means no value is recorded for this representation.","example":"example"},"addressLine2":{"type":"string","nullable":true,"description":"Optional secondary address details such as unit, floor, or building for external create preorder. Null means no value is recorded for this representation.","example":"example"},"city":{"type":"string","nullable":true,"description":"City or locality recorded for the address represented by external create preorder. Null means no value is recorded for this representation.","example":"example"},"region":{"type":"string","nullable":true,"description":"Region, state, or administrative subdivision recorded for external create preorder. Null means no value is recorded for this representation.","example":"example"},"postalCode":{"type":"string","nullable":true,"description":"Stable postal code used to classify or address external create preorder. Null means no value is recorded for this representation.","example":"EXAMPLE"},"countryCode":{"type":"string","nullable":true,"description":"Stable country code used to classify or address external create preorder. Null means no value is recorded for this representation.","example":"GE"},"administrativeDivisionId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying administrative division associated with external create preorder. Null means no value is recorded for this representation.","example":"c8efbc76-614d-4a79-8f15-db6d48283d46"},"localityId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying locality associated with external create preorder. Null means no value is recorded for this representation.","example":"1bfa5864-39f3-4647-8093-42aea5d9d046"},"postalCodeId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying postal code associated with external create preorder. Null means no value is recorded for this representation.","example":"7424d59b-d459-4e7b-8cbc-7f5222274f26"},"latitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true,"description":"Fraction-capable numeric latitude recorded for external create preorder. Accepted values enforce minimum -90 and maximum 90. Null means no value is recorded for this representation.","example":41.7151},"longitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true,"description":"Fraction-capable numeric longitude recorded for external create preorder. Accepted values enforce minimum -180 and maximum 180. Null means no value is recorded for this representation.","example":44.8271},"coordinateSource":{"type":"string","enum":["STAFF","EXTERNAL_CLIENT","GEOREFERENCE_CENTROID",null],"nullable":true,"description":"Allowed coordinate source for external create preorder: STAFF, EXTERNAL_CLIENT, GEOREFERENCE_CENTROID. Null means no value is recorded for this representation.","example":"STAFF"},"coordinateAccuracy":{"type":"integer","minimum":0,"maximum":10,"nullable":true,"description":"Whole-number coordinate accuracy recorded for external create preorder. Accepted values enforce minimum 0 and maximum 10. Null means no value is recorded for this representation.","example":0},"deliveryInstructions":{"type":"string","nullable":true,"description":"Delivery instructions for external create preorder. Null means no value is recorded for this representation.","example":"example"},"note":{"type":"string","nullable":true,"description":"Human-entered note retained with external create preorder. Null means no value is recorded for this representation.","example":"Synthetic example"},"capacityOverrideReason":{"type":"string","description":"Manager reason for an explicit capacity overbook. Requires preorders.override.","minLength":1,"maxLength":1000,"example":"Synthetic example"},"salesChannelId":{"type":"string","format":"uuid","description":"Hallify UUID identifying sales channel associated with external create preorder.","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"clientMenuVersionId":{"type":"string","format":"uuid","description":"Hallify UUID identifying client menu version associated with external create preorder.","example":"cd2f2c2a-ba73-4579-8e32-52da8388fd05"},"clientGraphHash":{"type":"string","description":"Opaque graph token returned by the published menu endpoint.","pattern":"^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$","example":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/PreorderCartLineDto"},"description":"Preorder cart line returned in the external create preorder collection.","example":[{"clientLineId":"example-id","quantity":1}]},"quoteId":{"type":"string","format":"uuid","description":"Hallify UUID identifying quote associated with external create preorder.","example":"123728f6-ac4b-43a8-8f9e-44585ec81783"},"quoteToken":{"type":"string","description":"Short-lived server-signed single-use token.","example":"synthetic-example-credential"}},"required":["serviceMode","scheduledFor","partySize","contactName","salesChannelId","clientMenuVersionId","clientGraphHash","items","quoteId","quoteToken"],"description":"Consumes a valid partner quote and creates the preorder atomically within the credential venue and sales-channel scope.","example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}],"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","quoteToken":"synthetic-example-credential"}},"PreorderCreationResultDto":{"type":"object","properties":{"orderId":{"type":"string","format":"uuid","description":"Hallify UUID identifying order associated with preorders.","example":"f3127edf-ce4f-4da7-8be5-81b962024e6c"},"fulfillmentId":{"type":"string","format":"uuid","description":"Hallify UUID identifying fulfillment associated with preorders.","example":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88"},"fulfillmentRevision":{"type":"integer","minimum":1,"description":"Monotonic optimistic-concurrency revision for preorders. Accepted values enforce minimum 1.","example":1},"fulfillmentStatus":{"type":"string","enum":["HELD","CONFIRMED"],"description":"Current lifecycle status of preorders; allowed values are HELD, CONFIRMED.","example":"HELD"},"confirmationMode":{"type":"string","description":"Confirmation mode for preorders.","example":"example"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 4217 currency code for the monetary values carried by preorders.","example":"GEL"},"total":{"type":"string","pattern":"^\\d{1,10}\\.\\d{2}$","description":"Decimal monetary total serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"items":{"type":"array","minItems":1,"items":{"type":"object","properties":{"clientLineId":{"type":"string","description":"Opaque identifier for client line associated with preorders item; clients must not assume UUID syntax.","example":"example-id"},"orderItemId":{"type":"string","format":"uuid","description":"Hallify UUID identifying order item associated with preorders item.","example":"48069d23-be97-4039-8099-9db268ddf890"},"quantity":{"type":"integer","minimum":1,"description":"Whole-number quantity measured in the unit established by the item or line that embeds preorders item. Accepted values enforce minimum 1.","example":1}},"required":["clientLineId","orderItemId","quantity"],"example":{"clientLineId":"example-id","orderItemId":"48069d23-be97-4039-8099-9db268ddf890","quantity":1}},"description":"Items returned in the preorders collection.","example":[{"clientLineId":"example-id","orderItemId":"48069d23-be97-4039-8099-9db268ddf890","quantity":1}]}},"required":["orderId","fulfillmentId","fulfillmentRevision","fulfillmentStatus","confirmationMode","currency","total","items"],"description":"Returns the created preorder, held fulfillment state, revision, and reservation evidence.","example":{"orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","fulfillmentId":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88","fulfillmentRevision":1,"fulfillmentStatus":"HELD","confirmationMode":"example","currency":"GEL","total":"1.00","items":[{"clientLineId":"example-id","orderItemId":"48069d23-be97-4039-8099-9db268ddf890","quantity":1}]}},"IdempotencyConflictError":{"example":{"statusCode":409,"error":"errors:http.conflict","code":"IDEMPOTENCY_REQUEST_IN_PROGRESS","message":"errors:idempotency.inProgress","translationKey":"errors:idempotency.inProgress"},"allOf":[{"$ref":"#/components/schemas/TranslatedErrorDto"},{"type":"object","required":["code"],"properties":{"statusCode":{"type":"integer","enum":[409],"description":"HTTP 409 conflict status.","example":409},"code":{"type":"string","enum":["IDEMPOTENCY_REQUEST_NOT_READY","IDEMPOTENCY_KEY_PAYLOAD_MISMATCH","IDEMPOTENCY_REQUEST_IN_PROGRESS","IDEMPOTENCY_SCOPE_INCOMPLETE"],"description":"Allowed code for idempotency conflict error: IDEMPOTENCY_REQUEST_NOT_READY, IDEMPOTENCY_KEY_PAYLOAD_MISMATCH, IDEMPOTENCY_REQUEST_IN_PROGRESS, IDEMPOTENCY_SCOPE_INCOMPLETE.","example":"IDEMPOTENCY_REQUEST_NOT_READY"}},"example":{"code":"IDEMPOTENCY_REQUEST_NOT_READY"}}],"description":"Idempotency key is already in progress or was reused with a different payload."},"PreorderExternalGetOrderResultDto":{"type":"object","nullable":true,"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying preorder external order.","example":"dadd2857-b22c-4e95-8ed2-2a29c5a47f42"},"revision":{"type":"integer","minimum":1,"description":"Monotonic optimistic-concurrency revision for preorder external order. Accepted values enforce minimum 1.","example":1},"status":{"type":"string","enum":["OPEN","SUSPENDED","SUBMITTED","PAID","CANCELED"],"description":"Current lifecycle status of preorder external order; allowed values are OPEN, SUSPENDED, SUBMITTED, PAID, CANCELED.","example":"OPEN"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 4217 currency code for the monetary values carried by preorder external order.","example":"GEL"},"createdAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for created at; offsets represent the same absolute instant.","example":"2026-01-15T10:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for updated at; offsets represent the same absolute instant.","example":"2026-01-15T13:00:00.000Z"},"fulfillment":{"type":"object","nullable":true,"properties":{"revision":{"type":"integer","minimum":1,"description":"Monotonic optimistic-concurrency revision for preorder external order fulfillment. Accepted values enforce minimum 1.","example":1},"status":{"type":"string","enum":["DRAFT","HELD","CONFIRMED","IN_PREPARATION","READY_FOR_HANDOFF","OUT_FOR_DELIVERY","COMPLETED","CANCELED","EXPIRED"],"description":"Current lifecycle status of preorder external order fulfillment; allowed values are DRAFT, HELD, CONFIRMED, IN_PREPARATION, READY_FOR_HANDOFF, OUT_FOR_DELIVERY, COMPLETED, CANCELED, EXPIRED.","example":"DRAFT"},"serviceMode":{"type":"string","enum":["DINE_IN","PICKUP","DELIVERY","CATERING"],"description":"Allowed service mode for preorder external order fulfillment: DINE_IN, PICKUP, DELIVERY, CATERING.","example":"DINE_IN"},"scheduledFor":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"depositStatus":{"type":"string","enum":["NOT_REQUIRED","REQUIRED","PARTIALLY_PAID","PAID","OVERDUE"],"description":"Current lifecycle status of preorder external order fulfillment; allowed values are NOT_REQUIRED, REQUIRED, PARTIALLY_PAID, PAID, OVERDUE.","example":"NOT_REQUIRED"},"depositRequiredAmount":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary deposit required amount serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"depositPaidAmount":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary deposit paid amount serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"stockReservationState":{"type":"string","enum":["NOT_REQUIRED","PENDING","RESERVED","SHORTFALL","CONSUMED","RELEASED"],"description":"Allowed stock reservation state for preorder external order fulfillment: NOT_REQUIRED, PENDING, RESERVED, SHORTFALL, CONSUMED, RELEASED.","example":"NOT_REQUIRED"},"handoffOutcome":{"type":"string","nullable":true,"enum":["PICKED_UP","DELIVERED","CATERING_HANDOFF",null],"description":"Allowed handoff outcome for preorder external order fulfillment: PICKED_UP, DELIVERED, CATERING_HANDOFF. Null means no value is recorded for this representation.","example":"PICKED_UP"},"completedAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for completed at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-01-15T13:00:00.000Z"},"canceledAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for canceled at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-01-15T12:00:00.000Z"}},"required":["revision","status","serviceMode","scheduledFor","depositStatus","depositRequiredAmount","depositPaidAmount","stockReservationState","handoffOutcome","completedAt","canceledAt"],"description":"Fulfillment details embedded in preorder external order containing revision, status, service mode, scheduled for, deposit status, and deposit required amount. Null means no value is recorded for this representation.","example":{"revision":1,"status":"DRAFT","serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","depositStatus":"NOT_REQUIRED","depositRequiredAmount":"1.00","depositPaidAmount":"1.00","stockReservationState":"NOT_REQUIRED","handoffOutcome":null,"completedAt":null,"canceledAt":null}},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying preorder external order item.","example":"dadd2857-b22c-4e95-8ed2-2a29c5a47f42"},"nameSnapshot":{"type":"string","description":"Name snapshot for preorder external order item.","example":"Example name"},"quantity":{"type":"number","minimum":0,"description":"Fraction-capable quantity measured in the unit established by the item or line that embeds preorder external order item. Accepted values enforce minimum 0.","example":1},"unitPrice":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary unit price serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"kitchenStatus":{"type":"string","description":"Current lifecycle status of preorder external order item.","example":"example"},"fullyVoidedAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for fully voided at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-01-15T12:00:00.000Z"}},"required":["id","nameSnapshot","quantity","unitPrice","kitchenStatus","fullyVoidedAt"],"example":{"id":"dadd2857-b22c-4e95-8ed2-2a29c5a47f42","nameSnapshot":"Example name","quantity":1,"unitPrice":"1.00","kitchenStatus":"example","fullyVoidedAt":null}},"description":"Items returned in the preorder external order collection.","example":[{"id":"dadd2857-b22c-4e95-8ed2-2a29c5a47f42","nameSnapshot":"Example name","quantity":1,"unitPrice":"1.00","kitchenStatus":"example","fullyVoidedAt":null}]}},"required":["id","revision","status","currency","createdAt","updatedAt","fulfillment","items"],"description":"Returns the partner-visible preorder or the documented absent result when it is outside the credential scope.","example":{"id":"dadd2857-b22c-4e95-8ed2-2a29c5a47f42","revision":1,"status":"OPEN","currency":"GEL","createdAt":"2026-01-15T10:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z","fulfillment":null,"items":[{"id":"dadd2857-b22c-4e95-8ed2-2a29c5a47f42","nameSnapshot":"Example name","quantity":1,"unitPrice":"1.00","kitchenStatus":"example","fullyVoidedAt":null}]}},"ExternalOrderIngressDto":{"type":"object","properties":{"externalOrderId":{"type":"string","maxLength":191,"description":"Opaque identifier for external order associated with external order ingress; clients must not assume UUID syntax. Accepted values enforce maximum length 191.","example":"example-id"},"externalRevision":{"type":"integer","minimum":1,"description":"Monotonic optimistic-concurrency revision for external order ingress. Accepted values enforce minimum 1.","example":1},"displayLabel":{"type":"string","maxLength":120,"description":"Display label for external order ingress. Accepted values enforce maximum length 120.","example":"example"},"serviceMode":{"type":"string","enum":["PICKUP","DELIVERY","CATERING"],"description":"Allowed service mode for external order ingress: PICKUP, DELIVERY, CATERING.","example":"PICKUP"},"dueAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for due at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"},"items":{"type":"array","items":{"$ref":"#/components/schemas/ExternalOrderItemDto"},"description":"External order item returned in the external order ingress collection.","example":[{"clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","quantity":1}]}},"required":["externalOrderId","externalRevision","serviceMode","items"],"description":"Authenticates the exact request body with the source-scoped HMAC secret.","example":{"externalOrderId":"example-id","externalRevision":1,"serviceMode":"PICKUP","items":[{"clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","quantity":1}]}},"ExternalOrderItemDto":{"type":"object","properties":{"salesChannelId":{"type":"string","description":"Venue sales channel id used to resolve the active menu.","format":"uuid","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"clientMenuVersionId":{"type":"string","description":"Menu version id that the client used while composing the item.","format":"uuid","example":"cd2f2c2a-ba73-4579-8e32-52da8388fd05"},"clientGraphHash":{"type":"string","description":"Opaque published menu graph token that the client used while composing the item.","pattern":"^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$","maxLength":128,"example":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"expectedUnitPrice":{"type":"number","description":"Unit price that the client displayed while composing this item.","example":12,"minimum":0,"maximum":9999999999.99},"expectedTotal":{"type":"number","description":"Total line price that the client displayed while composing this item.","example":24,"minimum":0,"maximum":9999999999.99},"enteredUnitPrice":{"type":"number","description":"Explicit service-time unit amount for an open-price item. This is separate from the client price-consistency fields.","example":45,"minimum":0,"maximum":9999999999.99},"priceEntryNote":{"type":"string","description":"Operational audit note for an open-price entry. Required when the published policy requires a note.","maxLength":500,"example":"Synthetic example"},"openPriceApprovalCredential":{"description":"Deliberate staff credential required only when the effective open price crosses its approval policy.","allOf":[{"$ref":"#/components/schemas/OrderItemOpenPriceApprovalCredentialDto"}],"example":{"employeeNumber":"1.00","pin":"example"}},"measuredQuantity":{"type":"string","description":"Explicit measured amount for a measured item. Send a decimal string in the published measurement unit; measured order lines always use quantity 1.","example":"350","pattern":"^(?:0|[1-9]\\d{0,8})(?:\\.\\d{1,3})?$"},"menuItemId":{"type":"string","description":"Menu item id. Provide this OR menuVariantId.","format":"uuid","example":"16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"},"menuVariantId":{"type":"string","description":"Menu variant id. Provide this OR menuItemId.","format":"uuid","example":"94389946-e5d8-4fba-8358-e3a9c8a04b11"},"quantity":{"type":"integer","description":"Quantity for the new historical order item line.","minimum":1,"example":1},"modifierOptionIds":{"description":"Selected modifier option ids for this order item.","type":"array","items":{"type":"string","format":"uuid","example":"d251fdb0-274c-4e59-8e7e-b1d90e1433bc"},"example":["d251fdb0-274c-4e59-8e7e-b1d90e1433bc"]},"componentSelections":{"description":"Selections for component groups owned by the published item structure.","maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/OrderItemComponentSelectionDto"},"example":[{"groupId":"example-id","choiceId":"example-id"}]},"serviceFlags":{"type":"array","description":"Structured service flags for the item.","items":{"type":"string","enum":["VIP","RUSH","FIRE_LATER"],"example":"VIP"},"example":["VIP"]},"specialRequest":{"type":"string","description":"Free-text special request shown to the kitchen.","maxLength":500,"example":"example"}},"required":["clientMenuVersionId","clientGraphHash","quantity"],"description":"External order entry embedded in a operations collection or aggregate.","example":{"clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","quantity":1}},"OrderItemOpenPriceApprovalCredentialDto":{"type":"object","properties":{"employeeNumber":{"type":"string","description":"Employee number of the worker approving the open price.","maxLength":64,"example":"1.00"},"pin":{"type":"string","description":"Staff PIN used only for server-side approval verification. It is never persisted or returned.","minLength":4,"maxLength":8,"example":"example"}},"required":["employeeNumber","pin"],"description":"Employee number and sensitive PIN consumed to approve an open price on an order item.","example":{"employeeNumber":"1.00","pin":"example"}},"ExternalOrderIngressIngestResultDto":{"oneOf":[{"type":"object","required":["id","orderId","status","externalOrderId","externalRevision","duplicate"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying external order ingress ingest.","example":"a42073ae-5313-4ace-86d8-86fb33fde1a9"},"orderId":{"type":"string","format":"uuid","description":"Hallify UUID identifying order associated with external order ingress ingest.","example":"f3127edf-ce4f-4da7-8be5-81b962024e6c"},"status":{"type":"string","description":"Current lifecycle status of external order ingress ingest.","example":"example"},"externalOrderId":{"type":"string","description":"Opaque identifier for external order associated with external order ingress ingest; clients must not assume UUID syntax.","example":"example-id"},"externalRevision":{"type":"integer","minimum":0,"description":"Monotonic optimistic-concurrency revision for external order ingress ingest. Accepted values enforce minimum 0.","example":1},"duplicate":{"type":"boolean","enum":[false],"description":"Allowed duplicate for external order ingress ingest: false.","example":false}},"example":{"id":"a42073ae-5313-4ace-86d8-86fb33fde1a9","orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","status":"example","externalOrderId":"example-id","externalRevision":1,"duplicate":false}},{"type":"object","required":["id","orderId","payloadHash","status","duplicate"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying external order ingress ingest.","example":"a7476fce-e842-42a4-896a-c23b0e88b420"},"orderId":{"type":"string","format":"uuid","description":"Hallify UUID identifying order associated with external order ingress ingest.","example":"f3127edf-ce4f-4da7-8be5-81b962024e6c"},"payloadHash":{"type":"string","description":"Opaque digest of the canonical payload used by external order ingress ingest for replay detection and evidence comparison.","example":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"},"status":{"type":"string","description":"Current lifecycle status of external order ingress ingest.","example":"example"},"duplicate":{"type":"boolean","enum":[true],"description":"Allowed duplicate for external order ingress ingest: true.","example":true}},"example":{"id":"a7476fce-e842-42a4-896a-c23b0e88b420","orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","payloadHash":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef","status":"example","duplicate":true}}],"description":"Returns the accepted external revision, mapped native order, and replay result recorded for the source.","example":{"id":"a42073ae-5313-4ace-86d8-86fb33fde1a9","orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","status":"example","externalOrderId":"example-id","externalRevision":1,"duplicate":false}},"ExternalOrderCancelIngressDto":{"type":"object","properties":{"externalRevision":{"type":"integer","minimum":1,"description":"Monotonic optimistic-concurrency revision for external order cancel ingress. Accepted values enforce minimum 1.","example":1},"reason":{"type":"string","minLength":3,"maxLength":500,"description":"Human-entered reason retained with external order cancel ingress as decision or audit evidence. Accepted values enforce minimum length 3 and maximum length 500.","example":"Synthetic example"}},"required":["externalRevision","reason"],"description":"Open native orders are canceled atomically.","example":{"externalRevision":1,"reason":"Synthetic example"}},"ExternalOrderIngressCancelResultDto":{"oneOf":[{"type":"object","required":["id","status","externalRevision","duplicate"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying external order ingress.","example":"a42073ae-5313-4ace-86d8-86fb33fde1a9"},"status":{"type":"string","description":"Current lifecycle status of external order ingress.","example":"example"},"externalRevision":{"type":"integer","minimum":0,"description":"Monotonic optimistic-concurrency revision for external order ingress. Accepted values enforce minimum 0.","example":1},"duplicate":{"type":"boolean","enum":[false],"description":"Allowed duplicate for external order ingress: false.","example":false}},"example":{"id":"a42073ae-5313-4ace-86d8-86fb33fde1a9","status":"example","externalRevision":1,"duplicate":false}},{"type":"object","required":["id","status","duplicate"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying external order ingress.","example":"a7476fce-e842-42a4-896a-c23b0e88b420"},"status":{"type":"string","description":"Current lifecycle status of external order ingress.","example":"example"},"duplicate":{"type":"boolean","enum":[true],"description":"Allowed duplicate for external order ingress: true.","example":true}},"example":{"id":"a7476fce-e842-42a4-896a-c23b0e88b420","status":"example","duplicate":true}}],"description":"Returns the recorded cancellation revision and the resulting native-order resolution state.","example":{"id":"a42073ae-5313-4ace-86d8-86fb33fde1a9","status":"example","externalRevision":1,"duplicate":false}},"ReservationPublicConfigResultDto":{"type":"object","description":"Guest-safe public booking configuration.","required":["publicHandle","venue","termsVersion","privacyVersion","waitlistStatus","servicePeriods"],"properties":{"publicHandle":{"type":"string","description":"Public booking channel handle.","example":"example"},"venue":{"type":"object","description":"Public venue identity and scheduling time zone.","required":["id","name","timeZone"],"properties":{"id":{"type":"string","description":"Venue identifier.","format":"uuid","example":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0"},"name":{"type":"string","description":"Venue display name.","example":"Example name"},"timeZone":{"type":"string","description":"IANA time zone used for booking schedules.","example":"Asia/Tbilisi"}},"example":{"id":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0","name":"Example name","timeZone":"Asia/Tbilisi"}},"termsVersion":{"type":"string","description":"Terms version that a new booking must accept.","example":"example"},"privacyVersion":{"type":"string","description":"Privacy notice version that a new booking must accept.","example":"example"},"waitlistStatus":{"type":"string","description":"Effective waitlist availability after scheduled pause expiry.","enum":["CLOSED","OPEN","PAUSED"],"example":"CLOSED"},"servicePeriods":{"type":"array","description":"Active public service periods.","items":{"type":"object","description":"Publicly bookable service period projection.","required":["id","name","dayOfWeek","startsAtMinute","endsAtMinute","slotIntervalMinutes","maxPartySize","bookingMode"],"properties":{"id":{"type":"string","description":"Service period identifier.","format":"uuid","example":"b926f345-3866-4e0a-8870-720a7d6d91be"},"name":{"type":"string","description":"Guest-facing service period name.","example":"Example name"},"dayOfWeek":{"type":"integer","description":"Recurring weekday in venue local time.","example":0},"startsAtMinute":{"type":"integer","description":"Local opening minute after midnight.","example":0},"endsAtMinute":{"type":"integer","description":"Local closing minute after midnight.","example":0},"slotIntervalMinutes":{"type":"integer","description":"Minutes between offered start times.","example":0},"maxPartySize":{"type":"integer","description":"Maximum bookable party size.","example":0},"bookingMode":{"type":"string","description":"Whether a booking is confirmed instantly or requires review.","enum":["INSTANT","REQUEST"],"example":"INSTANT"}},"example":{"id":"b926f345-3866-4e0a-8870-720a7d6d91be","name":"Example name","dayOfWeek":0,"startsAtMinute":0,"endsAtMinute":0,"slotIntervalMinutes":0,"maxPartySize":0,"bookingMode":"INSTANT"}},"example":[{"id":"b926f345-3866-4e0a-8870-720a7d6d91be","name":"Example name","dayOfWeek":0,"startsAtMinute":0,"endsAtMinute":0,"slotIntervalMinutes":0,"maxPartySize":0,"bookingMode":"INSTANT"}]}},"example":{"publicHandle":"example","venue":{"id":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0","name":"Example name","timeZone":"Asia/Tbilisi"},"termsVersion":"example","privacyVersion":"example","waitlistStatus":"CLOSED","servicePeriods":[{"id":"b926f345-3866-4e0a-8870-720a7d6d91be","name":"Example name","dayOfWeek":0,"startsAtMinute":0,"endsAtMinute":0,"slotIntervalMinutes":0,"maxPartySize":0,"bookingMode":"INSTANT"}]}},"ReservationAvailabilityDto":{"type":"array","items":{"type":"object","required":["scheduledAt","endsAt","occupancyEndsAt","offset","servicePeriodId"],"properties":{"scheduledAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"endsAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for ends at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"},"occupancyEndsAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for occupancy ends at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"},"offset":{"type":"string","description":"Offset for reservations availability item.","example":"example"},"servicePeriodId":{"type":"string","format":"uuid","description":"Hallify UUID identifying service period associated with reservations availability item.","example":"4846c409-f4df-40f6-81cc-1d7157a5c646"}},"example":{"scheduledAt":"2026-01-15T12:00:00.000Z","endsAt":"2026-12-31T18:00:00.000Z","occupancyEndsAt":"2026-12-31T18:00:00.000Z","offset":"example","servicePeriodId":"4846c409-f4df-40f6-81cc-1d7157a5c646"}},"description":"Returns available staff booking slots and their capacity context.","example":[{"scheduledAt":"2026-01-15T12:00:00.000Z","endsAt":"2026-12-31T18:00:00.000Z","occupancyEndsAt":"2026-12-31T18:00:00.000Z","offset":"example","servicePeriodId":"4846c409-f4df-40f6-81cc-1d7157a5c646"}]},"PublicIntentDto":{"type":"object","properties":{"servicePeriodId":{"type":"string","format":"uuid","description":"Hallify UUID identifying service period associated with public intent.","example":"4846c409-f4df-40f6-81cc-1d7157a5c646"},"scheduledAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"partySize":{"type":"integer","minimum":1,"maximum":99,"description":"Whole-number party size recorded for public intent. Accepted values enforce minimum 1 and maximum 99.","example":1},"contactType":{"type":"string","enum":["EMAIL","PHONE"],"description":"Allowed contact type for public intent: EMAIL, PHONE.","example":"EMAIL"},"contact":{"type":"string","minLength":3,"maxLength":254,"description":"Contact for public intent. Accepted values enforce minimum length 3 and maximum length 254.","example":"example"},"displayName":{"type":"string","maxLength":120,"description":"Human-readable display name for public intent. Accepted values enforce maximum length 120.","example":"Example name"},"termsVersion":{"type":"string","maxLength":64,"description":"Terms version for public intent. Accepted values enforce maximum length 64.","example":"example"},"privacyVersion":{"type":"string","maxLength":64,"description":"Privacy version for public intent. Accepted values enforce maximum length 64.","example":"example"},"guestRequest":{"type":"string","maxLength":2000,"description":"Guest request for public intent. Accepted values enforce maximum length 2000.","example":"example"}},"required":["servicePeriodId","scheduledAt","partySize","contactType","contact","displayName","termsVersion","privacyVersion"],"description":"Public reservation verification intent. The contact value is used only by the owning verification workflow and is not a capability token.","example":{"servicePeriodId":"81f8e4de-50f0-42ef-baa5-7f4b0580aa16","scheduledAt":"2026-08-12T18:30:00.000Z","partySize":2,"contactType":"EMAIL","contact":"guest@example.invalid","displayName":"Example Guest","termsVersion":"2026-08","privacyVersion":"2026-08"}},"ReservationPublicIntentDto":{"type":"object","description":"Pending guest verification for a booking or waitlist intent.","required":["intentId","verificationId","expiresAt"],"properties":{"intentId":{"type":"string","description":"Booking intent identifier used for verification and resend.","format":"uuid","example":"fd46d9cb-163b-4669-8f68-6b8456779efd"},"verificationId":{"type":"string","description":"Guest identity verification identifier.","format":"uuid","example":"904a18d4-c890-4387-8e14-bc52c879c7ff"},"expiresAt":{"type":"string","description":"Expiry time of the pending booking intent.","format":"date-time","example":"2026-12-31T18:00:00.000Z"}},"example":{"intentId":"fd46d9cb-163b-4669-8f68-6b8456779efd","verificationId":"904a18d4-c890-4387-8e14-bc52c879c7ff","expiresAt":"2026-12-31T18:00:00.000Z"}},"PublicWaitlistIntentDto":{"type":"object","properties":{"servicePeriodId":{"type":"string","format":"uuid","description":"Hallify UUID identifying service period associated with public waitlist intent.","example":"4846c409-f4df-40f6-81cc-1d7157a5c646"},"partySize":{"type":"integer","minimum":1,"maximum":99,"description":"Whole-number party size recorded for public waitlist intent. Accepted values enforce minimum 1 and maximum 99.","example":1},"contactType":{"type":"string","enum":["EMAIL","PHONE"],"description":"Allowed contact type for public waitlist intent: EMAIL, PHONE.","example":"EMAIL"},"contact":{"type":"string","minLength":3,"maxLength":254,"description":"Contact for public waitlist intent. Accepted values enforce minimum length 3 and maximum length 254.","example":"example"},"displayName":{"type":"string","maxLength":120,"description":"Human-readable display name for public waitlist intent. Accepted values enforce maximum length 120.","example":"Example name"},"termsVersion":{"type":"string","maxLength":64,"description":"Terms version for public waitlist intent. Accepted values enforce maximum length 64.","example":"example"},"privacyVersion":{"type":"string","maxLength":64,"description":"Privacy version for public waitlist intent. Accepted values enforce maximum length 64.","example":"example"},"guestRequest":{"type":"string","maxLength":2000,"description":"Guest request for public waitlist intent. Accepted values enforce maximum length 2000.","example":"example"}},"required":["servicePeriodId","partySize","contactType","contact","displayName","termsVersion","privacyVersion"],"description":"Creates a contact-verification intent for joining the published remote waitlist without committing an entry until verification succeeds.","example":{"servicePeriodId":"4846c409-f4df-40f6-81cc-1d7157a5c646","partySize":1,"contactType":"EMAIL","contact":"example","displayName":"Example name","termsVersion":"example","privacyVersion":"example"}},"VerifyPublicIntentDto":{"type":"object","properties":{"code":{"type":"string","pattern":"^\\d{6}$","description":"Stable code used to classify or address verify public intent.","example":"000001"}},"required":["code"],"description":"Validates the contact code and atomically converts the unexpired intent into its reservation or waitlist record, consuming any capacity hold.","example":{"code":"000001"}},"ReservationPublicVerifyIntentResultDto":{"description":"Verified booking or waitlist result and its guest management capability.","oneOf":[{"type":"object","description":"Verified reservation intent result.","required":["kind","entityId","referenceCode","revision","status","eventIds","manageToken","manageTokenExpiresAt"],"properties":{"kind":{"type":"string","description":"Kind of the created guest-managed entity.","enum":["RESERVATION"],"example":"RESERVATION"},"entityId":{"type":"string","description":"Created reservation or waitlist entry identifier.","format":"uuid","example":"6b288694-8b6d-49cd-8007-264ca7224921"},"referenceCode":{"type":"string","description":"Guest-facing reference code.","example":"EXAMPLE"},"revision":{"type":"integer","description":"Current entity revision.","example":1},"status":{"type":"string","description":"Resulting booking or waitlist status.","enum":["REQUESTED","BOOKED","CONFIRMED","ARRIVED","SEATED","CANCELED","NO_SHOW","DECLINED","EXPIRED"],"example":"REQUESTED"},"eventIds":{"type":"array","description":"Events emitted by this command.","items":{"type":"string","description":"Reservation activity event identifier.","format":"uuid","example":"6825b43e-93d6-4f3b-8171-c1661099fae8"},"example":["6825b43e-93d6-4f3b-8171-c1661099fae8"]},"manageToken":{"type":"string","description":"Sensitive guest capability for subsequent management requests. Use the documented guest authorization header; never log it.","example":"synthetic-example-credential"},"manageTokenExpiresAt":{"type":"string","description":"Expiry of the guest management capability.","format":"date-time","example":"2026-12-31T18:00:00.000Z"}},"example":{"kind":"RESERVATION","entityId":"6b288694-8b6d-49cd-8007-264ca7224921","referenceCode":"EXAMPLE","revision":1,"status":"REQUESTED","eventIds":["6825b43e-93d6-4f3b-8171-c1661099fae8"],"manageToken":"synthetic-example-credential","manageTokenExpiresAt":"2026-12-31T18:00:00.000Z"}},{"type":"object","description":"Verified waitlist intent result.","required":["kind","entityId","referenceCode","revision","status","eventIds","manageToken","manageTokenExpiresAt"],"properties":{"kind":{"type":"string","description":"Kind of the created guest-managed entity.","enum":["WAITLIST"],"example":"WAITLIST"},"entityId":{"type":"string","description":"Created reservation or waitlist entry identifier.","format":"uuid","example":"6b288694-8b6d-49cd-8007-264ca7224921"},"referenceCode":{"type":"string","description":"Guest-facing reference code.","example":"EXAMPLE"},"revision":{"type":"integer","description":"Current entity revision.","example":1},"status":{"type":"string","description":"Resulting booking or waitlist status.","enum":["WAITING","NOTIFIED","CLAIMED","SKIPPED","SEATED","CANCELED","NO_SHOW"],"example":"WAITING"},"eventIds":{"type":"array","description":"Events emitted by this command.","items":{"type":"string","description":"Reservation activity event identifier.","format":"uuid","example":"6825b43e-93d6-4f3b-8171-c1661099fae8"},"example":["6825b43e-93d6-4f3b-8171-c1661099fae8"]},"manageToken":{"type":"string","description":"Sensitive guest capability for subsequent management requests. Use the documented guest authorization header; never log it.","example":"synthetic-example-credential"},"manageTokenExpiresAt":{"type":"string","description":"Expiry of the guest management capability.","format":"date-time","example":"2026-12-31T18:00:00.000Z"}},"example":{"kind":"WAITLIST","entityId":"6b288694-8b6d-49cd-8007-264ca7224921","referenceCode":"EXAMPLE","revision":1,"status":"WAITING","eventIds":["6825b43e-93d6-4f3b-8171-c1661099fae8"],"manageToken":"synthetic-example-credential","manageTokenExpiresAt":"2026-12-31T18:00:00.000Z"}}],"example":{"kind":"RESERVATION","entityId":"6b288694-8b6d-49cd-8007-264ca7224921","referenceCode":"EXAMPLE","revision":1,"status":"REQUESTED","eventIds":["6825b43e-93d6-4f3b-8171-c1661099fae8"],"manageToken":"synthetic-example-credential","manageTokenExpiresAt":"2026-12-31T18:00:00.000Z"}},"ReservationPublicResendVerificationResultDto":{"type":"object","description":"Acknowledgement that a verification resend was accepted.","required":["accepted"],"properties":{"accepted":{"type":"boolean","description":"Whether the resend request was accepted.","example":true}},"example":{"accepted":true}},"ReservationPublicReadManagedResultDto":{"description":"Guest management view selected by the capability owner.","oneOf":[{"type":"object","description":"Guest-safe reservation management view.","required":["kind","id","referenceCode","revision","status","partySize","scheduledAt","endsAt"],"properties":{"kind":{"type":"string","description":"Kind of the guest-managed entity.","enum":["RESERVATION"],"example":"RESERVATION"},"id":{"type":"string","description":"Reservation or waitlist entry identifier.","format":"uuid","example":"a42073ae-5313-4ace-86d8-86fb33fde1a9"},"referenceCode":{"type":"string","description":"Guest-facing reference code.","example":"EXAMPLE"},"revision":{"type":"integer","description":"Current entity revision.","example":1},"status":{"type":"string","description":"Current entity status.","enum":["REQUESTED","BOOKED","CONFIRMED","ARRIVED","SEATED","CANCELED","NO_SHOW","DECLINED","EXPIRED"],"example":"REQUESTED"},"partySize":{"type":"integer","description":"Number of guests.","example":0},"scheduledAt":{"type":"string","description":"Scheduled reservation arrival time.","format":"date-time","example":"2026-01-15T12:00:00.000Z"},"endsAt":{"type":"string","description":"Scheduled reservation end time.","format":"date-time","example":"2026-12-31T18:00:00.000Z"}},"example":{"kind":"RESERVATION","id":"a42073ae-5313-4ace-86d8-86fb33fde1a9","referenceCode":"EXAMPLE","revision":1,"status":"REQUESTED","partySize":0,"scheduledAt":"2026-01-15T12:00:00.000Z","endsAt":"2026-12-31T18:00:00.000Z"}},{"type":"object","description":"Guest-safe waitlist management view.","required":["kind","id","referenceCode","revision","status","partySize","claimExpiresAt"],"properties":{"kind":{"type":"string","description":"Kind of the guest-managed entity.","enum":["WAITLIST"],"example":"WAITLIST"},"id":{"type":"string","description":"Reservation or waitlist entry identifier.","format":"uuid","example":"a7476fce-e842-42a4-896a-c23b0e88b420"},"referenceCode":{"type":"string","description":"Guest-facing reference code.","example":"EXAMPLE"},"revision":{"type":"integer","description":"Current entity revision.","example":1},"status":{"type":"string","description":"Current entity status.","enum":["WAITING","NOTIFIED","CLAIMED","SKIPPED","SEATED","CANCELED","NO_SHOW"],"example":"WAITING"},"partySize":{"type":"integer","description":"Number of guests.","example":0},"claimExpiresAt":{"type":"string","description":"Deadline to claim the waitlist offer; null when no active claim window exists.","nullable":true,"format":"date-time","example":"2026-12-31T18:00:00.000Z"}},"example":{"kind":"WAITLIST","id":"a7476fce-e842-42a4-896a-c23b0e88b420","referenceCode":"EXAMPLE","revision":1,"status":"WAITING","partySize":0,"claimExpiresAt":null}}],"example":{"kind":"RESERVATION","id":"a42073ae-5313-4ace-86d8-86fb33fde1a9","referenceCode":"EXAMPLE","revision":1,"status":"REQUESTED","partySize":0,"scheduledAt":"2026-01-15T12:00:00.000Z","endsAt":"2026-12-31T18:00:00.000Z"}},"PublicManageActionDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":1,"description":"Current integer revision read by the caller; a stale value rejects the mutation. Accepted values enforce minimum 1.","example":1},"scheduledAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"servicePeriodId":{"type":"string","format":"uuid","description":"Hallify UUID identifying service period associated with public manage action.","example":"4846c409-f4df-40f6-81cc-1d7157a5c646"},"partySize":{"type":"integer","minimum":1,"maximum":99,"description":"Whole-number party size recorded for public manage action. Accepted values enforce minimum 1 and maximum 99.","example":1}},"required":["expectedRevision"],"description":"Capability-authorized reservation revision plus optional schedule, service-period, and party-size changes used by guest confirm, change, and cancel commands.","example":{"expectedRevision":1}},"ReservationCommandResultDto":{"type":"object","required":["entityId","referenceCode","revision","status","warningCodes","eventIds"],"properties":{"entityId":{"type":"string","format":"uuid","description":"Hallify UUID identifying entity associated with reservations.","example":"6b288694-8b6d-49cd-8007-264ca7224921"},"referenceCode":{"type":"string","description":"Stable reference code used to classify or address reservations.","example":"EXAMPLE"},"revision":{"type":"integer","minimum":1,"description":"Monotonic optimistic-concurrency revision for reservations. Accepted values enforce minimum 1.","example":1},"status":{"type":"string","description":"Current lifecycle status of reservations.","example":"example"},"warningCodes":{"type":"array","items":{"type":"string","example":"EXAMPLE"},"description":"Warning codes values reported by reservations for caller review or remediation.","example":["EXAMPLE"]},"eventIds":{"type":"array","items":{"type":"string","format":"uuid","example":"6825b43e-93d6-4f3b-8171-c1661099fae8"},"description":"Hallify UUIDs identifying the event set included in reservations.","example":["6825b43e-93d6-4f3b-8171-c1661099fae8"]}},"description":"Returns the reservation or waitlist command receipt, revision, lifecycle, and resulting availability state.","example":{"entityId":"6b288694-8b6d-49cd-8007-264ca7224921","referenceCode":"EXAMPLE","revision":1,"status":"example","warningCodes":["EXAMPLE"],"eventIds":["6825b43e-93d6-4f3b-8171-c1661099fae8"]}},"ReservationActionDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":1,"description":"Current integer revision read by the caller; a stale value rejects the mutation. Accepted values enforce minimum 1.","example":1},"reason":{"type":"string","maxLength":500,"description":"Human-entered reason retained with reservation action as decision or audit evidence. Accepted values enforce maximum length 500.","example":"Synthetic example"}},"required":["expectedRevision"],"description":"Expected reservation or waitlist revision and optional reason recorded with an accept, decline, confirm, arrival, cancellation, no-show, restore, notification, or guest-owned lifecycle decision.","example":{"expectedRevision":1}},"PreorderPublicCatalogResultDto":{"type":"object","properties":{"publicHandle":{"type":"string","description":"Public handle for preorder public catalog.","example":"example"},"venue":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying preorder public catalog venue.","example":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0"},"name":{"type":"string","description":"Human-readable name for preorder public catalog venue.","example":"Example name"},"timeZone":{"type":"string","description":"IANA time-zone identifier used to interpret venue-local dates and times for preorder public catalog venue.","example":"Asia/Tbilisi"}},"required":["id","name","timeZone"],"description":"Venue details embedded in preorder public catalog containing id, name, and time zone.","example":{"id":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0","name":"Example name","timeZone":"Asia/Tbilisi"}},"termsVersion":{"type":"string","description":"Terms version for preorder public catalog.","example":"example"},"privacyVersion":{"type":"string","description":"Privacy version for preorder public catalog.","example":"example"},"salesChannelId":{"type":"string","format":"uuid","description":"Hallify UUID identifying sales channel associated with preorder public catalog.","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"menuVersionId":{"type":"string","format":"uuid","description":"Hallify UUID identifying menu version associated with preorder public catalog.","example":"490ccfcb-caa6-472e-836a-a8416e8cee92"},"versionNumber":{"type":"integer","minimum":1,"description":"Whole-number version number recorded for preorder public catalog. Accepted values enforce minimum 1.","example":1},"graphHash":{"type":"string","nullable":true,"description":"Opaque digest identifying the exact published-menu graph used by preorder public catalog; clients compare it to detect graph changes. Null means no value is recorded for this representation.","example":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"},"publishedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for published at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"servedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for served at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"categories":{"type":"array","items":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"example":{"exampleKey":"example"}},"description":"Categories included as categories in preorder public catalog.","example":[{"exampleKey":"example"}]}},"required":["publicHandle","venue","termsVersion","privacyVersion","salesChannelId","menuVersionId","versionNumber","graphHash","publishedAt","servedAt","categories"],"description":"Returns the public preorder channel and its eligible catalog projection.","example":{"publicHandle":"example","venue":{"id":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0","name":"Example name","timeZone":"Asia/Tbilisi"},"termsVersion":"example","privacyVersion":"example","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","menuVersionId":"490ccfcb-caa6-472e-836a-a8416e8cee92","versionNumber":1,"graphHash":null,"publishedAt":"2026-01-15T12:00:00.000Z","servedAt":"2026-01-15T12:00:00.000Z","categories":[{"exampleKey":"example"}]}},"CreatePublicPreorderDraftDto":{"type":"object","properties":{"serviceMode":{"type":"string","enum":["DINE_IN","PICKUP","DELIVERY","CATERING"],"description":"Allowed service mode for public preorder draft: DINE_IN, PICKUP, DELIVERY, CATERING.","example":"DINE_IN"},"scheduledFor":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"partySize":{"type":"integer","minimum":1,"maximum":10000,"description":"Whole-number party size recorded for public preorder draft. Accepted values enforce minimum 1 and maximum 10000.","example":1},"contactName":{"type":"string","description":"Human-readable contact name for public preorder draft.","example":"Example name"},"contactPhone":{"type":"string","nullable":true,"description":"Telephone number recorded for contact phone in public preorder draft. Null means no value is recorded for this representation.","example":"+995555000000"},"contactEmail":{"type":"string","nullable":true,"description":"Email address recorded for contact email in public preorder draft. Null means no value is recorded for this representation.","format":"email","example":"user@example.test"},"addressLine1":{"type":"string","nullable":true,"description":"Primary street-address line for public preorder draft. Null means no value is recorded for this representation.","example":"example"},"addressLine2":{"type":"string","nullable":true,"description":"Optional secondary address details such as unit, floor, or building for public preorder draft. Null means no value is recorded for this representation.","example":"example"},"city":{"type":"string","nullable":true,"description":"City or locality recorded for the address represented by public preorder draft. Null means no value is recorded for this representation.","example":"example"},"region":{"type":"string","nullable":true,"description":"Region, state, or administrative subdivision recorded for public preorder draft. Null means no value is recorded for this representation.","example":"example"},"postalCode":{"type":"string","nullable":true,"description":"Stable postal code used to classify or address public preorder draft. Null means no value is recorded for this representation.","example":"EXAMPLE"},"countryCode":{"type":"string","nullable":true,"description":"Stable country code used to classify or address public preorder draft. Null means no value is recorded for this representation.","example":"GE"},"administrativeDivisionId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying administrative division associated with public preorder draft. Null means no value is recorded for this representation.","example":"c8efbc76-614d-4a79-8f15-db6d48283d46"},"localityId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying locality associated with public preorder draft. Null means no value is recorded for this representation.","example":"1bfa5864-39f3-4647-8093-42aea5d9d046"},"postalCodeId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying postal code associated with public preorder draft. Null means no value is recorded for this representation.","example":"7424d59b-d459-4e7b-8cbc-7f5222274f26"},"latitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true,"description":"Fraction-capable numeric latitude recorded for public preorder draft. Accepted values enforce minimum -90 and maximum 90. Null means no value is recorded for this representation.","example":41.7151},"longitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true,"description":"Fraction-capable numeric longitude recorded for public preorder draft. Accepted values enforce minimum -180 and maximum 180. Null means no value is recorded for this representation.","example":44.8271},"coordinateSource":{"type":"string","enum":["STAFF","EXTERNAL_CLIENT","GEOREFERENCE_CENTROID",null],"nullable":true,"description":"Allowed coordinate source for public preorder draft: STAFF, EXTERNAL_CLIENT, GEOREFERENCE_CENTROID. Null means no value is recorded for this representation.","example":"STAFF"},"coordinateAccuracy":{"type":"integer","minimum":0,"maximum":10,"nullable":true,"description":"Whole-number coordinate accuracy recorded for public preorder draft. Accepted values enforce minimum 0 and maximum 10. Null means no value is recorded for this representation.","example":0},"deliveryInstructions":{"type":"string","nullable":true,"description":"Delivery instructions for public preorder draft. Null means no value is recorded for this representation.","example":"example"},"note":{"type":"string","nullable":true,"description":"Human-entered note retained with public preorder draft. Null means no value is recorded for this representation.","example":"Synthetic example"},"capacityOverrideReason":{"type":"string","description":"Manager reason for an explicit capacity overbook. Requires preorders.override.","minLength":1,"maxLength":1000,"example":"Synthetic example"},"salesChannelId":{"type":"string","format":"uuid","description":"Hallify UUID identifying sales channel associated with public preorder draft.","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"clientMenuVersionId":{"type":"string","format":"uuid","description":"Hallify UUID identifying client menu version associated with public preorder draft.","example":"cd2f2c2a-ba73-4579-8e32-52da8388fd05"},"clientGraphHash":{"type":"string","description":"Opaque graph token returned by the published menu endpoint.","pattern":"^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$","example":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/PreorderCartLineDto"},"description":"Preorder cart line returned in the public preorder draft collection.","example":[{"clientLineId":"example-id","quantity":1}]},"termsVersion":{"type":"string","minLength":1,"maxLength":64,"description":"Terms version for public preorder draft. Accepted values enforce minimum length 1 and maximum length 64.","example":"example"},"privacyVersion":{"type":"string","minLength":1,"maxLength":64,"description":"Privacy version for public preorder draft. Accepted values enforce minimum length 1 and maximum length 64.","example":"example"}},"required":["serviceMode","scheduledFor","partySize","contactName","salesChannelId","clientMenuVersionId","clientGraphHash","items","termsVersion","privacyVersion"],"description":"Creates a short-lived encrypted cart and contact-verification workflow under the published venue policy, without creating an order.","example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}],"termsVersion":"example","privacyVersion":"example"}},"PreorderPublicCreateDraftResultDto":{"type":"object","properties":{"draftReference":{"type":"string","description":"Human- or provider-assigned reference used to reconcile preorder public draft with its source record.","example":"example-reference"},"resumeToken":{"type":"string","description":"Draft capability returned to resume the newly created public preorder draft. It is scoped to that draft and expires with it.","example":"synthetic-example-credential"},"status":{"type":"string","enum":["PENDING_VERIFICATION"],"description":"Current lifecycle status of preorder public draft; allowed values are PENDING_VERIFICATION.","example":"PENDING_VERIFICATION"},"verificationId":{"type":"string","format":"uuid","description":"Hallify UUID identifying verification associated with preorder public draft.","example":"904a18d4-c890-4387-8e14-bc52c879c7ff"},"verificationExpiresAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for verification expires at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"},"expiresAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for expires at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"},"testCode":{"type":"string","nullable":true,"description":"Stable test code used to classify or address preorder public draft. Null means no value is recorded for this representation.","example":"EXAMPLE"}},"required":["draftReference","resumeToken","status","verificationId","verificationExpiresAt","expiresAt"],"description":"Returns the draft reference, expiry, redacted verification state, and draft capability token.","example":{"draftReference":"example-reference","resumeToken":"synthetic-example-credential","status":"PENDING_VERIFICATION","verificationId":"904a18d4-c890-4387-8e14-bc52c879c7ff","verificationExpiresAt":"2026-12-31T18:00:00.000Z","expiresAt":"2026-12-31T18:00:00.000Z"}},"PreorderPublicGetDraftResultDto":{"type":"object","properties":{"draftReference":{"type":"string","description":"Human- or provider-assigned reference used to reconcile preorder public draft with its source record.","example":"example-reference"},"status":{"type":"string","enum":["ACTIVE","PENDING_VERIFICATION","VERIFIED","QUOTED","CONSUMED","EXPIRED","CANCELED"],"description":"Current lifecycle status of preorder public draft; allowed values are ACTIVE, PENDING_VERIFICATION, VERIFIED, QUOTED, CONSUMED, EXPIRED, CANCELED.","example":"ACTIVE"},"request":{"type":"object","properties":{"serviceMode":{"type":"string","enum":["DINE_IN","PICKUP","DELIVERY","CATERING"],"description":"Allowed service mode for preorder public draft: DINE_IN, PICKUP, DELIVERY, CATERING.","example":"DINE_IN"},"scheduledFor":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"partySize":{"type":"integer","minimum":1,"maximum":10000,"description":"Whole-number party size recorded for preorder public draft. Accepted values enforce minimum 1 and maximum 10000.","example":1},"salesChannelId":{"type":"string","format":"uuid","description":"Hallify UUID identifying sales channel associated with preorder public draft.","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"clientMenuVersionId":{"type":"string","format":"uuid","description":"Hallify UUID identifying client menu version associated with preorder public draft.","example":"cd2f2c2a-ba73-4579-8e32-52da8388fd05"},"items":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","properties":{"clientLineId":{"type":"string","description":"Opaque identifier for client line associated with preorder public draft item; clients must not assume UUID syntax.","example":"example-id"},"menuItemId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying menu item associated with preorder public draft item. Null means no value is recorded for this representation.","example":"16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"},"menuVariantId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying menu variant associated with preorder public draft item. Null means no value is recorded for this representation.","example":"94389946-e5d8-4fba-8358-e3a9c8a04b11"},"quantity":{"type":"integer","minimum":1,"maximum":999,"description":"Whole-number quantity measured in the unit established by the item or line that embeds preorder public draft item. Accepted values enforce minimum 1 and maximum 999.","example":1},"modifierOptionIds":{"type":"array","items":{"type":"string","format":"uuid","example":"d251fdb0-274c-4e59-8e7e-b1d90e1433bc"},"description":"Hallify UUIDs identifying the modifier option set included in preorder public draft item.","example":["d251fdb0-274c-4e59-8e7e-b1d90e1433bc"]},"serviceFlags":{"type":"array","items":{"type":"string","example":"example"},"description":"Service flags values included as service flags in preorder public draft item.","example":["example"]}},"required":["clientLineId","menuItemId","menuVariantId","quantity","modifierOptionIds","serviceFlags"],"example":{"clientLineId":"example-id","menuItemId":null,"menuVariantId":null,"quantity":1,"modifierOptionIds":["d251fdb0-274c-4e59-8e7e-b1d90e1433bc"],"serviceFlags":["example"]}},"description":"Items returned in the preorder public draft collection.","example":[{"clientLineId":"example-id","menuItemId":null,"menuVariantId":null,"quantity":1,"modifierOptionIds":["d251fdb0-274c-4e59-8e7e-b1d90e1433bc"],"serviceFlags":["example"]}]}},"required":["serviceMode","scheduledFor","partySize","salesChannelId","clientMenuVersionId","items"],"description":"Request details embedded in preorder public draft containing service mode, scheduled for, party size, sales channel id, client menu version id, and items.","example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","items":[{"clientLineId":"example-id","menuItemId":null,"menuVariantId":null,"quantity":1,"modifierOptionIds":["d251fdb0-274c-4e59-8e7e-b1d90e1433bc"],"serviceFlags":["example"]}]}},"quote":{"type":"object","nullable":true,"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying preorder public draft quote.","example":"9cf6502c-081b-4f02-8b21-5b6146192a9e"},"status":{"type":"string","enum":["ISSUED","ACCEPTED","DECLINED","EXPIRED","SUPERSEDED"],"description":"Current lifecycle status of preorder public draft quote; allowed values are ISSUED, ACCEPTED, DECLINED, EXPIRED, SUPERSEDED.","example":"ISSUED"},"reference":{"type":"string","description":"Human- or provider-assigned reference used to reconcile preorder public draft quote with its source record.","example":"example-reference"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"ISO 4217 currency code for the monetary values carried by preorder public draft quote.","example":"GEL"},"subtotal":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary subtotal serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"discount":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary discount serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"serviceCharge":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary service charge serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"tax":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary tax serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"deliveryFee":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary delivery fee serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"total":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary total serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.","example":"1.00"},"depositRequired":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Deposit required for preorder public draft quote.","example":"1.00"},"expiresAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for expires at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"}},"required":["id","status","reference","currency","subtotal","discount","serviceCharge","tax","deliveryFee","total","depositRequired","expiresAt"],"description":"Quote details embedded in preorder public draft containing id, status, reference, currency, subtotal, and discount. Null means no value is recorded for this representation.","example":{"id":"9cf6502c-081b-4f02-8b21-5b6146192a9e","status":"ISSUED","reference":"example-reference","currency":"GEL","subtotal":"1.00","discount":"1.00","serviceCharge":"1.00","tax":"1.00","deliveryFee":"1.00","total":"1.00","depositRequired":"1.00","expiresAt":"2026-12-31T18:00:00.000Z"}},"expiresAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for expires at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for updated at; offsets represent the same absolute instant.","example":"2026-01-15T13:00:00.000Z"}},"required":["draftReference","status","request","quote","expiresAt","updatedAt"],"description":"Returns the capability-owned public draft and its allowed next actions.","example":{"draftReference":"example-reference","status":"ACTIVE","request":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","items":[{"clientLineId":"example-id","menuItemId":null,"menuVariantId":null,"quantity":1,"modifierOptionIds":["d251fdb0-274c-4e59-8e7e-b1d90e1433bc"],"serviceFlags":["example"]}]},"quote":null,"expiresAt":"2026-12-31T18:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z"}},"UpdatePublicPreorderDraftDto":{"type":"object","properties":{"serviceMode":{"type":"string","enum":["DINE_IN","PICKUP","DELIVERY","CATERING"],"description":"Allowed service mode for public preorder draft: DINE_IN, PICKUP, DELIVERY, CATERING.","example":"DINE_IN"},"scheduledFor":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"partySize":{"type":"integer","minimum":1,"maximum":10000,"description":"Whole-number party size recorded for public preorder draft. Accepted values enforce minimum 1 and maximum 10000.","example":1},"contactName":{"type":"string","description":"Human-readable contact name for public preorder draft.","example":"Example name"},"contactPhone":{"type":"string","nullable":true,"description":"Telephone number recorded for contact phone in public preorder draft. Null means no value is recorded for this representation.","example":"+995555000000"},"contactEmail":{"type":"string","nullable":true,"description":"Email address recorded for contact email in public preorder draft. Null means no value is recorded for this representation.","format":"email","example":"user@example.test"},"addressLine1":{"type":"string","nullable":true,"description":"Primary street-address line for public preorder draft. Null means no value is recorded for this representation.","example":"example"},"addressLine2":{"type":"string","nullable":true,"description":"Optional secondary address details such as unit, floor, or building for public preorder draft. Null means no value is recorded for this representation.","example":"example"},"city":{"type":"string","nullable":true,"description":"City or locality recorded for the address represented by public preorder draft. Null means no value is recorded for this representation.","example":"example"},"region":{"type":"string","nullable":true,"description":"Region, state, or administrative subdivision recorded for public preorder draft. Null means no value is recorded for this representation.","example":"example"},"postalCode":{"type":"string","nullable":true,"description":"Stable postal code used to classify or address public preorder draft. Null means no value is recorded for this representation.","example":"EXAMPLE"},"countryCode":{"type":"string","nullable":true,"description":"Stable country code used to classify or address public preorder draft. Null means no value is recorded for this representation.","example":"GE"},"administrativeDivisionId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying administrative division associated with public preorder draft. Null means no value is recorded for this representation.","example":"c8efbc76-614d-4a79-8f15-db6d48283d46"},"localityId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying locality associated with public preorder draft. Null means no value is recorded for this representation.","example":"1bfa5864-39f3-4647-8093-42aea5d9d046"},"postalCodeId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying postal code associated with public preorder draft. Null means no value is recorded for this representation.","example":"7424d59b-d459-4e7b-8cbc-7f5222274f26"},"latitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true,"description":"Fraction-capable numeric latitude recorded for public preorder draft. Accepted values enforce minimum -90 and maximum 90. Null means no value is recorded for this representation.","example":41.7151},"longitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true,"description":"Fraction-capable numeric longitude recorded for public preorder draft. Accepted values enforce minimum -180 and maximum 180. Null means no value is recorded for this representation.","example":44.8271},"coordinateSource":{"type":"string","enum":["STAFF","EXTERNAL_CLIENT","GEOREFERENCE_CENTROID",null],"nullable":true,"description":"Allowed coordinate source for public preorder draft: STAFF, EXTERNAL_CLIENT, GEOREFERENCE_CENTROID. Null means no value is recorded for this representation.","example":"STAFF"},"coordinateAccuracy":{"type":"integer","minimum":0,"maximum":10,"nullable":true,"description":"Whole-number coordinate accuracy recorded for public preorder draft. Accepted values enforce minimum 0 and maximum 10. Null means no value is recorded for this representation.","example":0},"deliveryInstructions":{"type":"string","nullable":true,"description":"Delivery instructions for public preorder draft. Null means no value is recorded for this representation.","example":"example"},"note":{"type":"string","nullable":true,"description":"Human-entered note retained with public preorder draft. Null means no value is recorded for this representation.","example":"Synthetic example"},"capacityOverrideReason":{"type":"string","description":"Manager reason for an explicit capacity overbook. Requires preorders.override.","minLength":1,"maxLength":1000,"example":"Synthetic example"},"salesChannelId":{"type":"string","format":"uuid","description":"Hallify UUID identifying sales channel associated with public preorder draft.","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"clientMenuVersionId":{"type":"string","format":"uuid","description":"Hallify UUID identifying client menu version associated with public preorder draft.","example":"cd2f2c2a-ba73-4579-8e32-52da8388fd05"},"clientGraphHash":{"type":"string","description":"Opaque graph token returned by the published menu endpoint.","pattern":"^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$","example":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/PreorderCartLineDto"},"description":"Preorder cart line returned in the public preorder draft collection.","example":[{"clientLineId":"example-id","quantity":1}]},"termsVersion":{"type":"string","minLength":1,"maxLength":64,"description":"Terms version for public preorder draft. Accepted values enforce minimum length 1 and maximum length 64.","example":"example"},"privacyVersion":{"type":"string","minLength":1,"maxLength":64,"description":"Privacy version for public preorder draft. Accepted values enforce minimum length 1 and maximum length 64.","example":"example"}},"required":["serviceMode","scheduledFor","partySize","contactName","salesChannelId","clientMenuVersionId","clientGraphHash","items","termsVersion","privacyVersion"],"description":"Uses the draft capability token to replace eligible cart, contact, or fulfillment details at the expected revision and restarts verification when protected contact data changes.","example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}],"termsVersion":"example","privacyVersion":"example"}},"PreorderPublicUpdateDraftResultDto":{"type":"object","properties":{"draftReference":{"type":"string","description":"Human- or provider-assigned reference used to reconcile preorder public draft with its source record.","example":"example-reference"},"status":{"type":"string","enum":["PENDING_VERIFICATION"],"description":"Current lifecycle status of preorder public draft; allowed values are PENDING_VERIFICATION.","example":"PENDING_VERIFICATION"},"verificationId":{"type":"string","format":"uuid","description":"Hallify UUID identifying verification associated with preorder public draft.","example":"904a18d4-c890-4387-8e14-bc52c879c7ff"},"verificationExpiresAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for verification expires at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"},"testCode":{"type":"string","nullable":true,"description":"Stable test code used to classify or address preorder public draft. Null means no value is recorded for this representation.","example":"EXAMPLE"}},"required":["draftReference","status","verificationId","verificationExpiresAt"],"description":"Returns the updated draft, revision, expiry, and current verification state.","example":{"draftReference":"example-reference","status":"PENDING_VERIFICATION","verificationId":"904a18d4-c890-4387-8e14-bc52c879c7ff","verificationExpiresAt":"2026-12-31T18:00:00.000Z"}},"VerifyPublicPreorderDraftDto":{"type":"object","properties":{"code":{"type":"string","minLength":6,"maxLength":6,"description":"Stable code used to classify or address verify public preorder draft. Accepted values enforce minimum length 6 and maximum length 6.","example":"000001"}},"required":["code"],"description":"Uses the draft capability token to validate the contact code, verify the current cart and fulfillment slot, and issue a time-limited single-use commercial quote.","example":{"code":"000001"}},"AcceptPublicPreorderQuoteDto":{"type":"object","properties":{"quoteId":{"type":"string","format":"uuid","description":"Hallify UUID identifying quote associated with accept public preorder quote.","example":"123728f6-ac4b-43a8-8f9e-44585ec81783"},"quoteToken":{"type":"string","description":"Signed quote token binding acceptance to the priced preorder draft, quote contents, and expiry. It cannot be reused for a different draft or quote.","example":"synthetic-example-credential"}},"required":["quoteId","quoteToken"],"description":"Uses the draft capability to consume the quote bound to that draft, create the preorder atomically, and issue a revocable manage grant scoped only to the new preorder.","example":{"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","quoteToken":"synthetic-example-credential"}},"PreorderPublicAcceptQuoteResultDto":{"type":"object","properties":{"orderId":{"type":"string","format":"uuid","description":"Hallify UUID identifying order associated with preorder public accept quote.","example":"f3127edf-ce4f-4da7-8be5-81b962024e6c"},"fulfillmentId":{"type":"string","format":"uuid","description":"Hallify UUID identifying fulfillment associated with preorder public accept quote.","example":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88"},"status":{"type":"string","enum":["DRAFT","HELD","CONFIRMED","IN_PREPARATION","READY_FOR_HANDOFF","OUT_FOR_DELIVERY","COMPLETED","CANCELED","EXPIRED"],"description":"Current lifecycle status of preorder public accept quote; allowed values are DRAFT, HELD, CONFIRMED, IN_PREPARATION, READY_FOR_HANDOFF, OUT_FOR_DELIVERY, COMPLETED, CANCELED, EXPIRED.","example":"DRAFT"},"revision":{"type":"integer","minimum":1,"description":"Monotonic optimistic-concurrency revision for preorder public accept quote. Accepted values enforce minimum 1.","example":1},"manageExchangeToken":{"type":"string","description":"Single-use exchange token returned after quote acceptance and used only to obtain the long-lived preorder manage capability.","example":"synthetic-example-credential"},"manageExchangeExpiresAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for manage exchange expires at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"}},"required":["orderId","fulfillmentId","status","revision","manageExchangeToken","manageExchangeExpiresAt"],"description":"Returns the created preorder projection and one-time manage grant.","example":{"orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","fulfillmentId":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88","status":"DRAFT","revision":1,"manageExchangeToken":"synthetic-example-credential","manageExchangeExpiresAt":"2026-12-31T18:00:00.000Z"}},"DeclinePublicPreorderQuoteDto":{"type":"object","properties":{"quoteId":{"type":"string","format":"uuid","description":"Hallify UUID identifying quote associated with decline public preorder quote.","example":"123728f6-ac4b-43a8-8f9e-44585ec81783"}},"required":["quoteId"],"description":"Marks the active quote as declined under the draft capability so it cannot later be accepted.","example":{"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783"}},"PreorderPublicDeclineQuoteResultDto":{"type":"object","properties":{"quoteId":{"type":"string","format":"uuid","description":"Hallify UUID identifying quote associated with preorder public decline quote.","example":"123728f6-ac4b-43a8-8f9e-44585ec81783"},"status":{"type":"string","enum":["DECLINED"],"description":"Current lifecycle status of preorder public decline quote; allowed values are DECLINED.","example":"DECLINED"},"declinedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for declined at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"}},"required":["quoteId","status","declinedAt"],"description":"Returns the draft and quote in their recorded declined state.","example":{"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","status":"DECLINED","declinedAt":"2026-01-15T12:00:00.000Z"}},"ExchangePreorderManageGrantDto":{"type":"object","properties":{"token":{"type":"string","description":"Single-use exchange grant presented to obtain the preorder manage capability after quote acceptance. Expired or consumed grants are rejected.","example":"synthetic-example-credential"}},"required":["token"],"description":"Consumes the one-time URL-safe grant and issues a revocable bearer session for managing only its preorder.","example":{"token":"synthetic-example-credential"}},"PreorderPublicExchangeManageGrantResultDto":{"type":"object","properties":{"manageToken":{"type":"string","description":"Revocable preorder manage capability returned after consuming the exchange grant and scoped to the accepted preorder.","example":"synthetic-example-credential"},"expiresAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for expires at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"}},"required":["manageToken","expiresAt"],"description":"Returns the guest-manage bearer token, expiry, and owned preorder projection.","example":{"manageToken":"synthetic-example-credential","expiresAt":"2026-12-31T18:00:00.000Z"}},"PreorderPublicManageResultDto":{"type":"object","properties":{"fulfillmentId":{"type":"string","format":"uuid","description":"Hallify UUID identifying fulfillment associated with preorder public manage.","example":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88"},"orderId":{"type":"string","format":"uuid","description":"Hallify UUID identifying order associated with preorder public manage.","example":"f3127edf-ce4f-4da7-8be5-81b962024e6c"},"revision":{"type":"integer","minimum":1,"description":"Monotonic optimistic-concurrency revision for preorder public manage. Accepted values enforce minimum 1.","example":1},"status":{"type":"string","enum":["DRAFT","HELD","CONFIRMED","IN_PREPARATION","READY_FOR_HANDOFF","OUT_FOR_DELIVERY","COMPLETED","CANCELED","EXPIRED"],"description":"Current lifecycle status of preorder public manage; allowed values are DRAFT, HELD, CONFIRMED, IN_PREPARATION, READY_FOR_HANDOFF, OUT_FOR_DELIVERY, COMPLETED, CANCELED, EXPIRED.","example":"DRAFT"},"serviceMode":{"type":"string","enum":["DINE_IN","PICKUP","DELIVERY","CATERING"],"description":"Allowed service mode for preorder public manage: DINE_IN, PICKUP, DELIVERY, CATERING.","example":"DINE_IN"},"partySize":{"type":"integer","minimum":1,"description":"Whole-number party size recorded for preorder public manage. Accepted values enforce minimum 1.","example":1},"scheduledFor":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"venue":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying preorder public manage venue.","example":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0"},"name":{"type":"string","description":"Human-readable name for preorder public manage venue.","example":"Example name"},"timeZone":{"type":"string","description":"IANA time-zone identifier used to interpret venue-local dates and times for preorder public manage venue.","example":"Asia/Tbilisi"}},"required":["id","name","timeZone"],"description":"Venue details embedded in preorder public manage containing id, name, and time zone.","example":{"id":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0","name":"Example name","timeZone":"Asia/Tbilisi"}},"channel":{"type":"object","properties":{"publicHandle":{"type":"string","description":"Public handle for preorder public manage channel.","example":"example"},"salesChannelId":{"type":"string","format":"uuid","description":"Hallify UUID identifying sales channel associated with preorder public manage channel.","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"termsVersion":{"type":"string","description":"Terms version for preorder public manage channel.","example":"example"},"privacyVersion":{"type":"string","description":"Privacy version for preorder public manage channel.","example":"example"}},"required":["publicHandle","salesChannelId","termsVersion","privacyVersion"],"description":"Channel details embedded in preorder public manage containing public handle, sales channel id, terms version, and privacy version.","example":{"publicHandle":"example","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","termsVersion":"example","privacyVersion":"example"}},"contact":{"type":"object","nullable":true,"properties":{"contactName":{"type":"string","description":"Human-readable contact name for preorder public manage contact.","example":"Example name"},"contactPhone":{"type":"string","nullable":true,"description":"Telephone number recorded for contact phone in preorder public manage contact. Null means no value is recorded for this representation.","example":"+995555000000"},"contactEmail":{"type":"string","nullable":true,"description":"Email address recorded for contact email in preorder public manage contact. Null means no value is recorded for this representation.","format":"email","example":"user@example.test"},"addressLine1":{"type":"string","nullable":true,"description":"Primary street-address line for preorder public manage contact. Null means no value is recorded for this representation.","example":"example"},"addressLine2":{"type":"string","nullable":true,"description":"Optional secondary address details such as unit, floor, or building for preorder public manage contact. Null means no value is recorded for this representation.","example":"example"},"city":{"type":"string","nullable":true,"description":"City or locality recorded for the address represented by preorder public manage contact. Null means no value is recorded for this representation.","example":"example"},"region":{"type":"string","nullable":true,"description":"Region, state, or administrative subdivision recorded for preorder public manage contact. Null means no value is recorded for this representation.","example":"example"},"postalCode":{"type":"string","nullable":true,"description":"Stable postal code used to classify or address preorder public manage contact. Null means no value is recorded for this representation.","example":"EXAMPLE"},"countryCode":{"type":"string","nullable":true,"description":"Stable country code used to classify or address preorder public manage contact. Null means no value is recorded for this representation.","example":"GE"},"administrativeDivisionId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying administrative division associated with preorder public manage contact. Null means no value is recorded for this representation.","example":"c8efbc76-614d-4a79-8f15-db6d48283d46"},"localityId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying locality associated with preorder public manage contact. Null means no value is recorded for this representation.","example":"1bfa5864-39f3-4647-8093-42aea5d9d046"},"postalCodeId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying postal code associated with preorder public manage contact. Null means no value is recorded for this representation.","example":"7424d59b-d459-4e7b-8cbc-7f5222274f26"},"latitude":{"type":"number","nullable":true,"description":"Fraction-capable numeric latitude recorded for preorder public manage contact. Null means no value is recorded for this representation.","example":41.7151},"longitude":{"type":"number","nullable":true,"description":"Fraction-capable numeric longitude recorded for preorder public manage contact. Null means no value is recorded for this representation.","example":44.8271},"coordinateSource":{"type":"string","nullable":true,"enum":["STAFF","EXTERNAL_CLIENT","GEOREFERENCE_CENTROID",null],"description":"Allowed coordinate source for preorder public manage contact: STAFF, EXTERNAL_CLIENT, GEOREFERENCE_CENTROID. Null means no value is recorded for this representation.","example":"STAFF"},"coordinateAccuracy":{"type":"integer","minimum":0,"maximum":10,"nullable":true,"description":"Whole-number coordinate accuracy recorded for preorder public manage contact. Accepted values enforce minimum 0 and maximum 10. Null means no value is recorded for this representation.","example":0},"deliveryInstructions":{"type":"string","nullable":true,"description":"Delivery instructions for preorder public manage contact. Null means no value is recorded for this representation.","example":"example"}},"required":["contactName","contactPhone","contactEmail","addressLine1","addressLine2","city","region","postalCode","countryCode","administrativeDivisionId","localityId","postalCodeId","latitude","longitude","coordinateSource","coordinateAccuracy","deliveryInstructions"],"description":"Contact details embedded in preorder public manage containing contact name, contact phone, contact email, address line1, address line2, and city. Null means no value is recorded for this representation.","example":{"contactName":"Example name","contactPhone":null,"contactEmail":null,"addressLine1":null,"addressLine2":null,"city":null,"region":null,"postalCode":null,"countryCode":null,"administrativeDivisionId":null,"localityId":null,"postalCodeId":null,"latitude":null,"longitude":null,"coordinateSource":null,"coordinateAccuracy":null,"deliveryInstructions":null}},"deposit":{"type":"object","properties":{"status":{"type":"string","enum":["NOT_REQUIRED","REQUIRED","PARTIALLY_PAID","PAID","OVERDUE"],"description":"Current lifecycle status of preorder public manage deposit; allowed values are NOT_REQUIRED, REQUIRED, PARTIALLY_PAID, PAID, OVERDUE.","example":"NOT_REQUIRED"},"requiredAmount":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary required amount serialized as a string in the currency identified by the financial document or policy that embeds preorder public manage deposit; zero is a recorded amount, not absence.","example":"1.00"},"paidAmount":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary paid amount serialized as a string in the currency identified by the financial document or policy that embeds preorder public manage deposit; zero is a recorded amount, not absence.","example":"1.00"},"dueAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for due at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-12-31T18:00:00.000Z"}},"required":["status","requiredAmount","paidAmount","dueAt"],"description":"Deposit details embedded in preorder public manage containing status, required amount, paid amount, and due at.","example":{"status":"NOT_REQUIRED","requiredAmount":"1.00","paidAmount":"1.00","dueAt":null}},"delivery":{"type":"object","properties":{"zoneId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying zone associated with preorder public manage delivery. Null means no value is recorded for this representation.","example":"f6864a47-6a06-4534-8879-1bfd5a7ed49b"},"feeAmount":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary fee amount serialized as a string in the currency identified by the financial document or policy that embeds preorder public manage delivery; zero is a recorded amount, not absence.","example":"1.00"}},"required":["zoneId","feeAmount"],"description":"Delivery details embedded in preorder public manage containing zone id and fee amount.","example":{"zoneId":null,"feeAmount":"1.00"}},"items":{"type":"array","items":{"type":"object","properties":{"clientLineId":{"type":"string","minLength":1,"maxLength":80,"description":"Opaque identifier for client line associated with preorder public manage item; clients must not assume UUID syntax. Accepted values enforce minimum length 1 and maximum length 80.","example":"example-id"},"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying preorder public manage item.","example":"9fbff223-7cc1-4311-8644-0bd59ff2477a"},"menuVersionId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying menu version associated with preorder public manage item. Null means no value is recorded for this representation.","example":"490ccfcb-caa6-472e-836a-a8416e8cee92"},"salesChannelId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying sales channel associated with preorder public manage item. Null means no value is recorded for this representation.","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"menuItemId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying menu item associated with preorder public manage item. Null means no value is recorded for this representation.","example":"16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"},"menuVariantId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying menu variant associated with preorder public manage item. Null means no value is recorded for this representation.","example":"94389946-e5d8-4fba-8358-e3a9c8a04b11"},"name":{"type":"string","description":"Human-readable name for preorder public manage item.","example":"Example name"},"rootItemStructureKind":{"type":"string","enum":["SINGLE_ITEM","SIZED_PORTIONED","COMBO_MEAL_DEAL","FIXED_PRICE_COURSE_MENU","BUILD_YOUR_OWN","BUNDLE_KIT","MEASURED","OPEN_PRICE","CATERING_PREORDER","CUSTOM"],"description":"Allowed root item structure kind for preorder public manage item: SINGLE_ITEM, SIZED_PORTIONED, COMBO_MEAL_DEAL, FIXED_PRICE_COURSE_MENU, BUILD_YOUR_OWN, BUNDLE_KIT, MEASURED, OPEN_PRICE, CATERING_PREORDER, CUSTOM.","example":"SINGLE_ITEM"},"itemStructureExecutionMode":{"type":"string","enum":["DIRECT_ITEM","SELLABLE_VERSION","COMPONENT_GROUPS","COURSE_SEQUENCE","GUIDED_STAGES","BUNDLE_SECTIONS","MEASURED_QUANTITY","OPEN_PRICE_ENTRY","PREORDER_PACKAGE","CUSTOM_POLICY"],"description":"Allowed item structure execution mode for preorder public manage item: DIRECT_ITEM, SELLABLE_VERSION, COMPONENT_GROUPS, COURSE_SEQUENCE, GUIDED_STAGES, BUNDLE_SECTIONS, MEASURED_QUANTITY, OPEN_PRICE_ENTRY, PREORDER_PACKAGE, CUSTOM_POLICY.","example":"DIRECT_ITEM"},"effectiveExecutionMode":{"type":"string","enum":["DIRECT_ITEM","SELLABLE_VERSION","COMPONENT_GROUPS","COURSE_SEQUENCE","GUIDED_STAGES","BUNDLE_SECTIONS","MEASURED_QUANTITY","OPEN_PRICE_ENTRY","PREORDER_PACKAGE","CUSTOM_POLICY"],"description":"Allowed effective execution mode for preorder public manage item: DIRECT_ITEM, SELLABLE_VERSION, COMPONENT_GROUPS, COURSE_SEQUENCE, GUIDED_STAGES, BUNDLE_SECTIONS, MEASURED_QUANTITY, OPEN_PRICE_ENTRY, PREORDER_PACKAGE, CUSTOM_POLICY.","example":"DIRECT_ITEM"},"quantity":{"type":"integer","minimum":0,"description":"Whole-number quantity measured in the unit established by the item or line that embeds preorder public manage item. Accepted values enforce minimum 0.","example":1},"billableQuantity":{"type":"integer","minimum":0,"description":"Whole-number billable quantity measured in the unit established by the item or line that embeds preorder public manage item. Accepted values enforce minimum 0.","example":1},"unitPrice":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary unit price serialized as a string in the currency identified by the financial document or policy that embeds preorder public manage item; zero is a recorded amount, not absence.","example":"1.00"},"totalAmount":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary total amount serialized as a string in the currency identified by the financial document or policy that embeds preorder public manage item; zero is a recorded amount, not absence.","example":"1.00"},"specialRequest":{"type":"string","nullable":true,"description":"Special request for preorder public manage item. Null means no value is recorded for this representation.","example":"example"},"serviceFlags":{"type":"array","items":{"type":"string","example":"example"},"description":"Service flags values included as service flags in preorder public manage item.","example":["example"]},"allergenCodes":{"type":"array","items":{"type":"string","example":"EXAMPLE"},"description":"Allergen codes values included as allergen codes in preorder public manage item.","example":["EXAMPLE"]},"kitchenStatus":{"type":"string","example":"PENDING","description":"Current lifecycle status of preorder public manage item."},"modifiers":{"type":"array","items":{"type":"object","properties":{"optionId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying option associated with preorder public manage item modifiers item. Null means no value is recorded for this representation.","example":"c3152e09-81b4-4a57-8893-2eca47cc44e8"},"groupName":{"type":"string","description":"Human-readable group name for preorder public manage item modifiers item.","example":"Example name"},"optionName":{"type":"string","description":"Human-readable option name for preorder public manage item modifiers item.","example":"Example name"},"priceDelta":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary price delta serialized as a string in the currency identified by the financial document or policy that embeds preorder public manage item modifiers item; zero is a recorded amount, not absence.","example":"1.00"},"allergenCodes":{"type":"array","items":{"type":"string","example":"EXAMPLE"},"description":"Allergen codes values included as allergen codes in preorder public manage item modifiers item.","example":["EXAMPLE"]}},"required":["optionId","groupName","optionName","priceDelta","allergenCodes"],"example":{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}},"description":"Modifiers included as modifiers in preorder public manage item.","example":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}]},"components":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying preorder public manage item components item.","example":"cada95b5-09b4-4bdd-8379-2e6df6ee6198"},"operationalRole":{"type":"string","enum":["GUEST_SELECTION","ASSEMBLY"],"description":"Allowed operational role for preorder public manage item components item: GUEST_SELECTION, ASSEMBLY.","example":"GUEST_SELECTION"},"name":{"type":"string","description":"Human-readable name for preorder public manage item components item.","example":"Example name"},"menuVariantId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying menu variant associated with preorder public manage item components item. Null means no value is recorded for this representation.","example":"94389946-e5d8-4fba-8358-e3a9c8a04b11"},"quantity":{"type":"integer","minimum":0,"description":"Whole-number quantity measured in the unit established by the item or line that embeds preorder public manage item components item. Accepted values enforce minimum 0.","example":1},"componentGroupId":{"type":"string","description":"Opaque identifier for component group associated with preorder public manage item components item; clients must not assume UUID syntax.","example":"example-id"},"componentGroupName":{"type":"string","description":"Human-readable component group name for preorder public manage item components item.","example":"Example name"},"componentChoiceId":{"type":"string","description":"Opaque identifier for component choice associated with preorder public manage item components item; clients must not assume UUID syntax.","example":"example-id"},"componentQuantity":{"type":"number","minimum":0,"description":"Fraction-capable component quantity measured in the unit established by the item or line that embeds preorder public manage item components item. Accepted values enforce minimum 0.","example":1},"componentUpcharge":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary component upcharge serialized as a string in the currency identified by the financial document or policy that embeds preorder public manage item components item; zero is a recorded amount, not absence.","example":"1.00"},"componentIsDefault":{"type":"boolean","description":"Whether this component is selected by default when a new item configuration is created.","example":true},"kitchenStatus":{"type":"string","example":"PENDING","description":"Current lifecycle status of preorder public manage item components item."},"modifiers":{"type":"array","items":{"type":"object","properties":{"optionId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying option associated with preorder public manage item components item modifiers item. Null means no value is recorded for this representation.","example":"c3152e09-81b4-4a57-8893-2eca47cc44e8"},"groupName":{"type":"string","description":"Human-readable group name for preorder public manage item components item modifiers item.","example":"Example name"},"optionName":{"type":"string","description":"Human-readable option name for preorder public manage item components item modifiers item.","example":"Example name"},"priceDelta":{"type":"string","pattern":"^\\d+\\.\\d{2}$","description":"Decimal monetary price delta serialized as a string in the currency identified by the financial document or policy that embeds preorder public manage item components item modifiers item; zero is a recorded amount, not absence.","example":"1.00"},"allergenCodes":{"type":"array","items":{"type":"string","example":"EXAMPLE"},"description":"Allergen codes values included as allergen codes in preorder public manage item components item modifiers item.","example":["EXAMPLE"]}},"required":["optionId","groupName","optionName","priceDelta","allergenCodes"],"example":{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}},"description":"Modifiers included as modifiers in preorder public manage item components item.","example":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}]}},"required":["id","operationalRole","name","menuVariantId","quantity","componentGroupId","componentGroupName","componentChoiceId","componentQuantity","componentUpcharge","componentIsDefault","kitchenStatus","modifiers"],"example":{"id":"cada95b5-09b4-4bdd-8379-2e6df6ee6198","operationalRole":"GUEST_SELECTION","name":"Example name","menuVariantId":null,"quantity":1,"componentGroupId":"example-id","componentGroupName":"Example name","componentChoiceId":"example-id","componentQuantity":1,"componentUpcharge":"1.00","componentIsDefault":true,"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}]}},"description":"Components included as components in preorder public manage item.","example":[{"id":"cada95b5-09b4-4bdd-8379-2e6df6ee6198","operationalRole":"GUEST_SELECTION","name":"Example name","menuVariantId":null,"quantity":1,"componentGroupId":"example-id","componentGroupName":"Example name","componentChoiceId":"example-id","componentQuantity":1,"componentUpcharge":"1.00","componentIsDefault":true,"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}]}]}},"required":["clientLineId","id","menuVersionId","salesChannelId","menuItemId","menuVariantId","name","rootItemStructureKind","itemStructureExecutionMode","effectiveExecutionMode","quantity","billableQuantity","unitPrice","totalAmount","specialRequest","serviceFlags","allergenCodes","kitchenStatus","modifiers","components"],"example":{"clientLineId":"example-id","id":"9fbff223-7cc1-4311-8644-0bd59ff2477a","menuVersionId":null,"salesChannelId":null,"menuItemId":null,"menuVariantId":null,"name":"Example name","rootItemStructureKind":"SINGLE_ITEM","itemStructureExecutionMode":"DIRECT_ITEM","effectiveExecutionMode":"DIRECT_ITEM","quantity":1,"billableQuantity":1,"unitPrice":"1.00","totalAmount":"1.00","specialRequest":null,"serviceFlags":["example"],"allergenCodes":["EXAMPLE"],"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}],"components":[{"id":"cada95b5-09b4-4bdd-8379-2e6df6ee6198","operationalRole":"GUEST_SELECTION","name":"Example name","menuVariantId":null,"quantity":1,"componentGroupId":"example-id","componentGroupName":"Example name","componentChoiceId":"example-id","componentQuantity":1,"componentUpcharge":"1.00","componentIsDefault":true,"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}]}]}},"description":"Items returned in the preorder public manage collection.","example":[{"clientLineId":"example-id","id":"9fbff223-7cc1-4311-8644-0bd59ff2477a","menuVersionId":null,"salesChannelId":null,"menuItemId":null,"menuVariantId":null,"name":"Example name","rootItemStructureKind":"SINGLE_ITEM","itemStructureExecutionMode":"DIRECT_ITEM","effectiveExecutionMode":"DIRECT_ITEM","quantity":1,"billableQuantity":1,"unitPrice":"1.00","totalAmount":"1.00","specialRequest":null,"serviceFlags":["example"],"allergenCodes":["EXAMPLE"],"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}],"components":[{"id":"cada95b5-09b4-4bdd-8379-2e6df6ee6198","operationalRole":"GUEST_SELECTION","name":"Example name","menuVariantId":null,"quantity":1,"componentGroupId":"example-id","componentGroupName":"Example name","componentChoiceId":"example-id","componentQuantity":1,"componentUpcharge":"1.00","componentIsDefault":true,"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}]}]}]},"allowedActions":{"type":"object","properties":{"cancel":{"type":"boolean","description":"Whether the caller may cancel; false means the action is unavailable in the current lifecycle and permission context.","example":true},"reschedule":{"type":"boolean","description":"Whether the caller may reschedule; false means the action is unavailable in the current lifecycle and permission context.","example":true},"changeRequest":{"type":"boolean","description":"Whether the caller may change request; false means the action is unavailable in the current lifecycle and permission context.","example":true}},"required":["cancel","reschedule","changeRequest"],"description":"Allowed actions details embedded in preorder public manage containing cancel, reschedule, and change request.","example":{"cancel":true,"reschedule":true,"changeRequest":true}},"generatedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for generated at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"}},"required":["fulfillmentId","orderId","revision","status","serviceMode","partySize","scheduledFor","venue","channel","contact","deposit","delivery","items","allowedActions","generatedAt"],"description":"Returns the guest-visible preorder projection and current revision.","example":{"fulfillmentId":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88","orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","revision":1,"status":"DRAFT","serviceMode":"DINE_IN","partySize":1,"scheduledFor":"2026-01-15T12:00:00.000Z","venue":{"id":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0","name":"Example name","timeZone":"Asia/Tbilisi"},"channel":{"publicHandle":"example","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","termsVersion":"example","privacyVersion":"example"},"contact":null,"deposit":{"status":"NOT_REQUIRED","requiredAmount":"1.00","paidAmount":"1.00","dueAt":null},"delivery":{"zoneId":null,"feeAmount":"1.00"},"items":[{"clientLineId":"example-id","id":"9fbff223-7cc1-4311-8644-0bd59ff2477a","menuVersionId":null,"salesChannelId":null,"menuItemId":null,"menuVariantId":null,"name":"Example name","rootItemStructureKind":"SINGLE_ITEM","itemStructureExecutionMode":"DIRECT_ITEM","effectiveExecutionMode":"DIRECT_ITEM","quantity":1,"billableQuantity":1,"unitPrice":"1.00","totalAmount":"1.00","specialRequest":null,"serviceFlags":["example"],"allergenCodes":["EXAMPLE"],"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}],"components":[{"id":"cada95b5-09b4-4bdd-8379-2e6df6ee6198","operationalRole":"GUEST_SELECTION","name":"Example name","menuVariantId":null,"quantity":1,"componentGroupId":"example-id","componentGroupName":"Example name","componentChoiceId":"example-id","componentQuantity":1,"componentUpcharge":"1.00","componentIsDefault":true,"kitchenStatus":"PENDING","modifiers":[{"optionId":null,"groupName":"Example name","optionName":"Example name","priceDelta":"1.00","allergenCodes":["EXAMPLE"]}]}]}],"allowedActions":{"cancel":true,"reschedule":true,"changeRequest":true},"generatedAt":"2026-01-15T12:00:00.000Z"}},"PublicPreorderManageActionDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":1,"description":"Current integer revision read by the caller; a stale value rejects the mutation. Accepted values enforce minimum 1.","example":1},"reason":{"type":"string","maxLength":500,"description":"Human-entered reason retained with public preorder manage action as decision or audit evidence. Accepted values enforce maximum length 500.","example":"Synthetic example"}},"required":["expectedRevision"],"description":"Cancels the capability-owned preorder at the expected revision only while the published guest-cancellation policy permits it.","example":{"expectedRevision":1}},"PreorderPublicCancelResultDto":{"type":"object","properties":{"orderId":{"type":"string","format":"uuid","description":"Hallify UUID identifying order associated with preorder public.","example":"f3127edf-ce4f-4da7-8be5-81b962024e6c"},"fulfillmentId":{"type":"string","format":"uuid","description":"Hallify UUID identifying fulfillment associated with preorder public.","example":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88"},"revision":{"type":"integer","minimum":1,"description":"Monotonic optimistic-concurrency revision for preorder public. Accepted values enforce minimum 1.","example":1},"status":{"type":"string","enum":["DRAFT","HELD","CONFIRMED","IN_PREPARATION","READY_FOR_HANDOFF","OUT_FOR_DELIVERY","COMPLETED","CANCELED","EXPIRED"],"description":"Current lifecycle status of preorder public; allowed values are DRAFT, HELD, CONFIRMED, IN_PREPARATION, READY_FOR_HANDOFF, OUT_FOR_DELIVERY, COMPLETED, CANCELED, EXPIRED.","example":"DRAFT"}},"required":["orderId","fulfillmentId","revision","status"],"description":"Returns the preorder in its canceled fulfillment state with the recorded reason.","example":{"orderId":"f3127edf-ce4f-4da7-8be5-81b962024e6c","fulfillmentId":"0a81282f-ea3b-40be-8ef7-4ad39e32ea88","revision":1,"status":"DRAFT"}},"QuotePublicPreorderAmendmentDto":{"type":"object","properties":{"serviceMode":{"type":"string","enum":["DINE_IN","PICKUP","DELIVERY","CATERING"],"description":"Allowed service mode for quote public preorder amendment: DINE_IN, PICKUP, DELIVERY, CATERING.","example":"DINE_IN"},"scheduledFor":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"partySize":{"type":"integer","minimum":1,"maximum":10000,"description":"Whole-number party size recorded for quote public preorder amendment. Accepted values enforce minimum 1 and maximum 10000.","example":1},"contactName":{"type":"string","description":"Human-readable contact name for quote public preorder amendment.","example":"Example name"},"contactPhone":{"type":"string","nullable":true,"description":"Telephone number recorded for contact phone in quote public preorder amendment. Null means no value is recorded for this representation.","example":"+995555000000"},"contactEmail":{"type":"string","nullable":true,"description":"Email address recorded for contact email in quote public preorder amendment. Null means no value is recorded for this representation.","format":"email","example":"user@example.test"},"addressLine1":{"type":"string","nullable":true,"description":"Primary street-address line for quote public preorder amendment. Null means no value is recorded for this representation.","example":"example"},"addressLine2":{"type":"string","nullable":true,"description":"Optional secondary address details such as unit, floor, or building for quote public preorder amendment. Null means no value is recorded for this representation.","example":"example"},"city":{"type":"string","nullable":true,"description":"City or locality recorded for the address represented by quote public preorder amendment. Null means no value is recorded for this representation.","example":"example"},"region":{"type":"string","nullable":true,"description":"Region, state, or administrative subdivision recorded for quote public preorder amendment. Null means no value is recorded for this representation.","example":"example"},"postalCode":{"type":"string","nullable":true,"description":"Stable postal code used to classify or address quote public preorder amendment. Null means no value is recorded for this representation.","example":"EXAMPLE"},"countryCode":{"type":"string","nullable":true,"description":"Stable country code used to classify or address quote public preorder amendment. Null means no value is recorded for this representation.","example":"GE"},"administrativeDivisionId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying administrative division associated with quote public preorder amendment. Null means no value is recorded for this representation.","example":"c8efbc76-614d-4a79-8f15-db6d48283d46"},"localityId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying locality associated with quote public preorder amendment. Null means no value is recorded for this representation.","example":"1bfa5864-39f3-4647-8093-42aea5d9d046"},"postalCodeId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying postal code associated with quote public preorder amendment. Null means no value is recorded for this representation.","example":"7424d59b-d459-4e7b-8cbc-7f5222274f26"},"latitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true,"description":"Fraction-capable numeric latitude recorded for quote public preorder amendment. Accepted values enforce minimum -90 and maximum 90. Null means no value is recorded for this representation.","example":41.7151},"longitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true,"description":"Fraction-capable numeric longitude recorded for quote public preorder amendment. Accepted values enforce minimum -180 and maximum 180. Null means no value is recorded for this representation.","example":44.8271},"coordinateSource":{"type":"string","enum":["STAFF","EXTERNAL_CLIENT","GEOREFERENCE_CENTROID",null],"nullable":true,"description":"Allowed coordinate source for quote public preorder amendment: STAFF, EXTERNAL_CLIENT, GEOREFERENCE_CENTROID. Null means no value is recorded for this representation.","example":"STAFF"},"coordinateAccuracy":{"type":"integer","minimum":0,"maximum":10,"nullable":true,"description":"Whole-number coordinate accuracy recorded for quote public preorder amendment. Accepted values enforce minimum 0 and maximum 10. Null means no value is recorded for this representation.","example":0},"deliveryInstructions":{"type":"string","nullable":true,"description":"Delivery instructions for quote public preorder amendment. Null means no value is recorded for this representation.","example":"example"},"note":{"type":"string","nullable":true,"description":"Human-entered note retained with quote public preorder amendment. Null means no value is recorded for this representation.","example":"Synthetic example"},"capacityOverrideReason":{"type":"string","description":"Manager reason for an explicit capacity overbook. Requires preorders.override.","minLength":1,"maxLength":1000,"example":"Synthetic example"},"salesChannelId":{"type":"string","format":"uuid","description":"Hallify UUID identifying sales channel associated with quote public preorder amendment.","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"clientMenuVersionId":{"type":"string","format":"uuid","description":"Hallify UUID identifying client menu version associated with quote public preorder amendment.","example":"cd2f2c2a-ba73-4579-8e32-52da8388fd05"},"clientGraphHash":{"type":"string","description":"Opaque graph token returned by the published menu endpoint.","pattern":"^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$","example":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/PreorderCartLineDto"},"description":"Preorder cart line returned in the quote public preorder amendment collection.","example":[{"clientLineId":"example-id","quantity":1}]},"expectedRevision":{"type":"integer","minimum":1,"description":"Current integer revision read by the caller; a stale value rejects the mutation. Accepted values enforce minimum 1.","example":1}},"required":["serviceMode","scheduledFor","partySize","contactName","salesChannelId","clientMenuVersionId","clientGraphHash","items","expectedRevision"],"description":"Capability-owned proposed fulfillment, guest, address, menu, channel, and cart values plus the expected preorder revision.","example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}],"expectedRevision":1}},"AcceptPublicPreorderAmendmentDto":{"type":"object","properties":{"serviceMode":{"type":"string","enum":["DINE_IN","PICKUP","DELIVERY","CATERING"],"description":"Allowed service mode for accept public preorder amendment: DINE_IN, PICKUP, DELIVERY, CATERING.","example":"DINE_IN"},"scheduledFor":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"partySize":{"type":"integer","minimum":1,"maximum":10000,"description":"Whole-number party size recorded for accept public preorder amendment. Accepted values enforce minimum 1 and maximum 10000.","example":1},"contactName":{"type":"string","description":"Human-readable contact name for accept public preorder amendment.","example":"Example name"},"contactPhone":{"type":"string","nullable":true,"description":"Telephone number recorded for contact phone in accept public preorder amendment. Null means no value is recorded for this representation.","example":"+995555000000"},"contactEmail":{"type":"string","nullable":true,"description":"Email address recorded for contact email in accept public preorder amendment. Null means no value is recorded for this representation.","format":"email","example":"user@example.test"},"addressLine1":{"type":"string","nullable":true,"description":"Primary street-address line for accept public preorder amendment. Null means no value is recorded for this representation.","example":"example"},"addressLine2":{"type":"string","nullable":true,"description":"Optional secondary address details such as unit, floor, or building for accept public preorder amendment. Null means no value is recorded for this representation.","example":"example"},"city":{"type":"string","nullable":true,"description":"City or locality recorded for the address represented by accept public preorder amendment. Null means no value is recorded for this representation.","example":"example"},"region":{"type":"string","nullable":true,"description":"Region, state, or administrative subdivision recorded for accept public preorder amendment. Null means no value is recorded for this representation.","example":"example"},"postalCode":{"type":"string","nullable":true,"description":"Stable postal code used to classify or address accept public preorder amendment. Null means no value is recorded for this representation.","example":"EXAMPLE"},"countryCode":{"type":"string","nullable":true,"description":"Stable country code used to classify or address accept public preorder amendment. Null means no value is recorded for this representation.","example":"GE"},"administrativeDivisionId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying administrative division associated with accept public preorder amendment. Null means no value is recorded for this representation.","example":"c8efbc76-614d-4a79-8f15-db6d48283d46"},"localityId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying locality associated with accept public preorder amendment. Null means no value is recorded for this representation.","example":"1bfa5864-39f3-4647-8093-42aea5d9d046"},"postalCodeId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying postal code associated with accept public preorder amendment. Null means no value is recorded for this representation.","example":"7424d59b-d459-4e7b-8cbc-7f5222274f26"},"latitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true,"description":"Fraction-capable numeric latitude recorded for accept public preorder amendment. Accepted values enforce minimum -90 and maximum 90. Null means no value is recorded for this representation.","example":41.7151},"longitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true,"description":"Fraction-capable numeric longitude recorded for accept public preorder amendment. Accepted values enforce minimum -180 and maximum 180. Null means no value is recorded for this representation.","example":44.8271},"coordinateSource":{"type":"string","enum":["STAFF","EXTERNAL_CLIENT","GEOREFERENCE_CENTROID",null],"nullable":true,"description":"Allowed coordinate source for accept public preorder amendment: STAFF, EXTERNAL_CLIENT, GEOREFERENCE_CENTROID. Null means no value is recorded for this representation.","example":"STAFF"},"coordinateAccuracy":{"type":"integer","minimum":0,"maximum":10,"nullable":true,"description":"Whole-number coordinate accuracy recorded for accept public preorder amendment. Accepted values enforce minimum 0 and maximum 10. Null means no value is recorded for this representation.","example":0},"deliveryInstructions":{"type":"string","nullable":true,"description":"Delivery instructions for accept public preorder amendment. Null means no value is recorded for this representation.","example":"example"},"note":{"type":"string","nullable":true,"description":"Human-entered note retained with accept public preorder amendment. Null means no value is recorded for this representation.","example":"Synthetic example"},"capacityOverrideReason":{"type":"string","description":"Manager reason for an explicit capacity overbook. Requires preorders.override.","minLength":1,"maxLength":1000,"example":"Synthetic example"},"salesChannelId":{"type":"string","format":"uuid","description":"Hallify UUID identifying sales channel associated with accept public preorder amendment.","example":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"},"clientMenuVersionId":{"type":"string","format":"uuid","description":"Hallify UUID identifying client menu version associated with accept public preorder amendment.","example":"cd2f2c2a-ba73-4579-8e32-52da8388fd05"},"clientGraphHash":{"type":"string","description":"Opaque graph token returned by the published menu endpoint.","pattern":"^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$","example":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/PreorderCartLineDto"},"description":"Preorder cart line returned in the accept public preorder amendment collection.","example":[{"clientLineId":"example-id","quantity":1}]},"quoteId":{"type":"string","format":"uuid","description":"Hallify UUID identifying quote associated with accept public preorder amendment.","example":"123728f6-ac4b-43a8-8f9e-44585ec81783"},"quoteToken":{"type":"string","description":"Short-lived server-signed single-use token.","example":"synthetic-example-credential"},"expectedRevision":{"type":"integer","minimum":1,"description":"Current integer revision read by the caller; a stale value rejects the mutation. Accepted values enforce minimum 1.","example":1}},"required":["serviceMode","scheduledFor","partySize","contactName","salesChannelId","clientMenuVersionId","clientGraphHash","items","quoteId","quoteToken","expectedRevision"],"description":"Uses the guest manage capability token to consume the valid amendment quote and apply the reschedule or cart change atomically at the expected preorder revision.","example":{"serviceMode":"DINE_IN","scheduledFor":"2026-01-15T12:00:00.000Z","partySize":1,"contactName":"Example name","salesChannelId":"ff0fa725-ba44-4e7a-82bb-a15650e0a0cc","clientMenuVersionId":"cd2f2c2a-ba73-4579-8e32-52da8388fd05","clientGraphHash":"menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","items":[{"clientLineId":"example-id","quantity":1}],"quoteId":"123728f6-ac4b-43a8-8f9e-44585ec81783","quoteToken":"synthetic-example-credential","expectedRevision":1}},"ExchangeGuestPortalTokenDto":{"type":"object","properties":{"token":{"type":"string","minLength":48,"maxLength":48,"pattern":"^gpb2_[A-Za-z0-9_-]{43}$","example":"gpb2_synthetic-example-credentialxxxxxxxxxxxxxxx","description":"Bootstrap token recovered from the URL fragment."}},"required":["token"],"description":"One-time Guest Portal bootstrap-token exchange request.","example":{"token":"gpb2_synthetic-example-credentialxxxxxxxxxxxxxxx"}},"GuestPortalBootstrapExchangeResultDto":{"type":"object","description":"Short-lived continuation returned after one-time bootstrap-token consumption.","required":["token","expiresAt"],"properties":{"token":{"type":"string","minLength":32,"description":"Rotated Guest Portal continuation token.","example":"synthetic-example-credentialxxxx"},"expiresAt":{"type":"string","format":"date-time","description":"Absolute expiration time for the continuation token.","example":"2026-12-31T18:00:00.000Z"}},"example":{"token":"synthetic-example-credentialxxxx","expiresAt":"2026-12-31T18:00:00.000Z"}},"GuestPortalProfileResultDto":{"type":"object","required":["guest"],"properties":{"venue":{"required":["id","name","currency"],"type":"object","nullable":true,"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying guest portal profile venue.","example":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0"},"name":{"type":"string","description":"Human-readable name for guest portal profile venue.","example":"Example name"},"currency":{"type":"string","description":"ISO 4217 currency code for the monetary values carried by guest portal profile venue.","example":"GEL"}},"description":"Venue details embedded in guest portal profile containing id, name, and currency. Null means no value is recorded for this representation.","example":{"id":"fbc6db41-f1c2-4f74-862d-210bd28ee2a0","name":"Example name","currency":"GEL"}},"guest":{"type":"object","required":["id","identityId","displayName","revision","identityRevision"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying guest portal profile guest.","example":"bd109aad-7d4b-40c6-8678-546bcd7bc5fe"},"identityId":{"type":"string","format":"uuid","description":"Hallify UUID identifying identity associated with guest portal profile guest.","example":"68927ddd-82be-42e0-8918-ef5107d35a10"},"displayName":{"type":"string","description":"Human-readable display name for guest portal profile guest.","example":"Example name"},"givenName":{"type":"string","nullable":true,"description":"Human-readable given name for guest portal profile guest. Null means no value is recorded for this representation.","example":"Example name"},"familyName":{"type":"string","nullable":true,"description":"Human-readable family name for guest portal profile guest. Null means no value is recorded for this representation.","example":"Example name"},"email":{"type":"string","nullable":true,"description":"Email address recorded for email in guest portal profile guest. Null means no value is recorded for this representation.","format":"email","example":"user@example.test"},"phone":{"type":"string","nullable":true,"description":"Telephone number recorded for phone in guest portal profile guest. Null means no value is recorded for this representation.","example":"+995555000000"},"preferredLanguage":{"type":"string","nullable":true,"description":"BCP 47 language tag preferred for guest- or worker-facing communication in guest portal profile guest. Null means no value is recorded for this representation.","example":"en"},"defaultPartySize":{"type":"integer","nullable":true,"description":"Whole-number default party size recorded for guest portal profile guest. Null means no value is recorded for this representation.","example":0},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for guest portal profile guest.","example":1},"identityRevision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for guest portal profile guest.","example":1}},"description":"Guest details embedded in guest portal profile containing id, identity id, display name, given name, family name, and email.","example":{"id":"bd109aad-7d4b-40c6-8678-546bcd7bc5fe","identityId":"68927ddd-82be-42e0-8918-ef5107d35a10","displayName":"Example name","revision":1,"identityRevision":1}}},"description":"Returns the guest-owned profile, venue context, and editable-field revision.","example":{"guest":{"id":"bd109aad-7d4b-40c6-8678-546bcd7bc5fe","identityId":"68927ddd-82be-42e0-8918-ef5107d35a10","displayName":"Example name","revision":1,"identityRevision":1}}},"UpdateGuestPortalProfileDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":1,"description":"Current integer revision read by the caller; a stale value rejects the mutation. Accepted values enforce minimum 1.","example":1},"displayName":{"type":"string","maxLength":255,"description":"Human-readable display name for guest portal profile. Accepted values enforce maximum length 255.","example":"Example name"},"givenName":{"type":"string","maxLength":120,"nullable":true,"description":"Human-readable given name for guest portal profile. Accepted values enforce maximum length 120. Null means no value is recorded for this representation.","example":"Example name"},"familyName":{"type":"string","maxLength":120,"nullable":true,"description":"Human-readable family name for guest portal profile. Accepted values enforce maximum length 120. Null means no value is recorded for this representation.","example":"Example name"},"email":{"type":"string","format":"email","maxLength":254,"nullable":true,"description":"Validated email address for email in guest portal profile. Accepted values enforce maximum length 254. Null means no value is recorded for this representation.","example":"user@example.test"},"phone":{"type":"string","maxLength":32,"nullable":true,"description":"Telephone number recorded for phone in guest portal profile. Accepted values enforce maximum length 32. Null means no value is recorded for this representation.","example":"+995555000000"},"defaultPartySize":{"type":"integer","minimum":1,"maximum":100,"nullable":true,"description":"Whole-number default party size recorded for guest portal profile. Accepted values enforce minimum 1 and maximum 100. Null means no value is recorded for this representation.","example":1},"preferredLanguage":{"type":"string","maxLength":16,"nullable":true,"description":"BCP 47 language tag preferred for guest- or worker-facing communication in guest portal profile. Accepted values enforce maximum length 16. Null means no value is recorded for this representation.","example":"en"}},"required":["expectedRevision"],"description":"Expected profile revision and optional self-service identity, contact, party-size, and language changes submitted by the guest.","example":{"expectedRevision":1}},"GuestConsentWorkspaceDto":{"type":"object","required":["identityRevision","policyVersion","consents","marketingPreference"],"properties":{"identityRevision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for guest portal consents.","example":1},"policyVersion":{"type":"string","description":"Policy version for guest portal consents.","example":"example"},"consents":{"type":"array","items":{"type":"object","required":["id","purpose","status","captureSource","policyVersion","effectiveAt"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying guest portal consents item.","example":"4aebbd5f-0775-4a9f-8cdf-18303bfc76dd"},"purpose":{"type":"string","enum":["MARKETING_EMAIL","MARKETING_SMS","MARKETING_PHONE","MARKETING_WHATSAPP","PROFILING"],"description":"Allowed purpose for guest portal consents item: MARKETING_EMAIL, MARKETING_SMS, MARKETING_PHONE, MARKETING_WHATSAPP, PROFILING.","example":"MARKETING_EMAIL"},"status":{"type":"string","enum":["UNKNOWN","OPTED_IN","OPTED_OUT"],"description":"Current lifecycle status of guest portal consents item; allowed values are UNKNOWN, OPTED_IN, OPTED_OUT.","example":"UNKNOWN"},"captureSource":{"type":"string","enum":["STAFF","GUEST_PORTAL","RESERVATION","IMPORT","PROVIDER"],"description":"Allowed capture source for guest portal consents item: STAFF, GUEST_PORTAL, RESERVATION, IMPORT, PROVIDER.","example":"STAFF"},"policyVersion":{"type":"string","description":"Policy version for guest portal consents item.","example":"example"},"evidence":{"type":"string","nullable":true,"description":"Human-entered evidence retained with guest portal consents item for audit or later review. Null means no value is recorded for this representation.","example":"example"},"effectiveAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for effective at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"expiresAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for expires at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-12-31T18:00:00.000Z"}},"example":{"id":"4aebbd5f-0775-4a9f-8cdf-18303bfc76dd","purpose":"MARKETING_EMAIL","status":"UNKNOWN","captureSource":"STAFF","policyVersion":"example","effectiveAt":"2026-01-15T12:00:00.000Z"}},"description":"Consents included as consents in guest portal consents.","example":[{"id":"4aebbd5f-0775-4a9f-8cdf-18303bfc76dd","purpose":"MARKETING_EMAIL","status":"UNKNOWN","captureSource":"STAFF","policyVersion":"example","effectiveAt":"2026-01-15T12:00:00.000Z"}]},"marketingPreference":{"type":"object","required":["frequency","preferredChannels","topics","revision"],"properties":{"frequency":{"type":"string","enum":["TRANSACTIONAL_ONLY","OCCASIONAL","WEEKLY","MONTHLY"],"description":"Allowed frequency for guest portal consents marketing preference: TRANSACTIONAL_ONLY, OCCASIONAL, WEEKLY, MONTHLY.","example":"TRANSACTIONAL_ONLY"},"preferredChannels":{"type":"array","items":{"type":"string","enum":["EMAIL","SMS","PHONE","WHATSAPP"],"example":"EMAIL"},"description":"Preferred channels values included as preferred channels in guest portal consents marketing preference.","example":["EMAIL"]},"topics":{"type":"array","items":{"type":"string","example":"example"},"description":"Topics values included as topics in guest portal consents marketing preference.","example":["example"]},"suppressedUntil":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for suppressed until; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-12-31T18:00:00.000Z"},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for guest portal consents marketing preference.","example":1}},"description":"Marketing preference details embedded in guest portal consents containing frequency, preferred channels, topics, suppressed until, and revision.","example":{"frequency":"TRANSACTIONAL_ONLY","preferredChannels":["EMAIL"],"topics":["example"],"revision":1}}},"description":"Returns current consent, channel preferences, sources, and decision timestamps.","example":{"identityRevision":1,"policyVersion":"example","consents":[{"id":"4aebbd5f-0775-4a9f-8cdf-18303bfc76dd","purpose":"MARKETING_EMAIL","status":"UNKNOWN","captureSource":"STAFF","policyVersion":"example","effectiveAt":"2026-01-15T12:00:00.000Z"}],"marketingPreference":{"frequency":"TRANSACTIONAL_ONLY","preferredChannels":["EMAIL"],"topics":["example"],"revision":1}}},"RecordGuestPortalConsentDto":{"type":"object","properties":{"expectedIdentityRevision":{"type":"integer","minimum":1,"description":"Monotonic optimistic-concurrency revision for guest portal consent. Accepted values enforce minimum 1.","example":1},"purpose":{"type":"string","enum":["MARKETING_EMAIL","MARKETING_SMS","MARKETING_PHONE","MARKETING_WHATSAPP","PROFILING"],"description":"Allowed purpose for guest portal consent: MARKETING_EMAIL, MARKETING_SMS, MARKETING_PHONE, MARKETING_WHATSAPP, PROFILING.","example":"MARKETING_EMAIL"},"status":{"type":"string","enum":["UNKNOWN","OPTED_IN","OPTED_OUT"],"description":"Current lifecycle status of guest portal consent; allowed values are UNKNOWN, OPTED_IN, OPTED_OUT.","example":"UNKNOWN"},"evidence":{"type":"string","maxLength":2000,"description":"Human-entered evidence retained with guest portal consent for audit or later review. Accepted values enforce maximum length 2000.","example":"example"},"expiresAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for expires at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"}},"required":["expectedIdentityRevision","purpose","status"],"description":"Uses the presented Guest Portal capability to append an explicit consent decision for the identity, organization, and venue owned by that capability.","example":{"expectedIdentityRevision":1,"purpose":"MARKETING_EMAIL","status":"UNKNOWN"}},"UpdateGuestMarketingPreferenceDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Current integer revision read by the caller; a stale value rejects the mutation. Accepted values enforce minimum 0.","example":1},"frequency":{"type":"string","enum":["TRANSACTIONAL_ONLY","OCCASIONAL","WEEKLY","MONTHLY"],"description":"Allowed frequency for guest marketing preference: TRANSACTIONAL_ONLY, OCCASIONAL, WEEKLY, MONTHLY.","example":"TRANSACTIONAL_ONLY"},"preferredChannels":{"type":"array","items":{"type":"string","enum":["EMAIL","SMS","PHONE","WHATSAPP"],"example":"EMAIL"},"description":"Preferred channels values included as preferred channels in guest marketing preference.","example":["EMAIL"]},"topics":{"maxItems":20,"type":"array","items":{"type":"string","example":"example"},"description":"Topics values included as topics in guest marketing preference.","example":["example"]},"suppressedUntil":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for suppressed until; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-12-31T18:00:00.000Z"}},"required":["expectedRevision","frequency","preferredChannels","topics"],"description":"Expected preference revision plus frequency, channels, topics, and suppression deadline used by guest-owned and venue-managed preference updates.","example":{"expectedRevision":1,"frequency":"TRANSACTIONAL_ONLY","preferredChannels":["EMAIL"],"topics":["example"]}},"GuestLoyaltyWorkspaceDto":{"type":"object","required":["adjustments"],"properties":{"program":{"type":"object","required":["id","name","status","pointsName","currency","pointsPerCurrencyUnit","redemptionValuePerPoint","revision","tiers"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying guest portal loyalty program.","example":"222a791a-08cc-49d5-8a38-85ae79bc2a8f"},"venueId":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID identifying venue associated with guest portal loyalty program. Null means no value is recorded for this representation.","example":"0604de3a-da74-4ad5-89f6-2dfe000d5391"},"name":{"type":"string","description":"Human-readable name for guest portal loyalty program.","example":"Example name"},"status":{"type":"string","enum":["DRAFT","ACTIVE","PAUSED","ARCHIVED"],"description":"Current lifecycle status of guest portal loyalty program; allowed values are DRAFT, ACTIVE, PAUSED, ARCHIVED.","example":"DRAFT"},"pointsName":{"type":"string","description":"Human-readable points name for guest portal loyalty program.","example":"Example name"},"currency":{"type":"string","description":"ISO 4217 currency code for the monetary values carried by guest portal loyalty program.","example":"GEL"},"pointsPerCurrencyUnit":{"type":"string","description":"ISO 4217 currency code for the monetary values carried by guest portal loyalty program.","example":"GEL"},"redemptionValuePerPoint":{"type":"string","description":"Redemption value per point for guest portal loyalty program.","example":"example"},"pointsExpiryDays":{"type":"integer","nullable":true,"description":"Whole-number points expiry days recorded for guest portal loyalty program. Null means no value is recorded for this representation.","example":0},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for guest portal loyalty program.","example":1},"tiers":{"type":"array","items":{"type":"object","required":["id","name","minimumLifetimePoints","isActive","revision"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying guest portal loyalty program tiers item.","example":"a088d985-d2c9-4968-8593-7fbdfd8fa9cb"},"name":{"type":"string","description":"Human-readable name for guest portal loyalty program tiers item.","example":"Example name"},"minimumLifetimePoints":{"type":"integer","description":"Whole-number minimum lifetime points recorded for guest portal loyalty program tiers item.","example":0},"benefits":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"nullable":true,"description":"Benefit definitions granted by guest portal loyalty program tiers item. Null means no value is recorded for this representation.","example":{"exampleKey":"example"}},"isActive":{"type":"boolean","description":"Whether guest portal loyalty program tiers item is active and available for its documented use; false means it is inactive.","example":true},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for guest portal loyalty program tiers item.","example":1}},"example":{"id":"a088d985-d2c9-4968-8593-7fbdfd8fa9cb","name":"Example name","minimumLifetimePoints":0,"isActive":true,"revision":1}},"description":"Tiers included as tiers in guest portal loyalty program.","example":[{"id":"a088d985-d2c9-4968-8593-7fbdfd8fa9cb","name":"Example name","minimumLifetimePoints":0,"isActive":true,"revision":1}]}},"nullable":true,"description":"Program details embedded in guest portal loyalty containing id, venue id, name, status, points name, and currency. Null means no value is recorded for this representation.","example":{"id":"222a791a-08cc-49d5-8a38-85ae79bc2a8f","name":"Example name","status":"DRAFT","pointsName":"Example name","currency":"GEL","pointsPerCurrencyUnit":"GEL","redemptionValuePerPoint":"example","revision":1,"tiers":[{"id":"a088d985-d2c9-4968-8593-7fbdfd8fa9cb","name":"Example name","minimumLifetimePoints":0,"isActive":true,"revision":1}]}},"account":{"type":"object","nullable":true,"required":["id","pointsBalance","lifetimePoints","revision","enrolledAt"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying guest portal loyalty account.","example":"f9b88121-702a-4576-8ac2-dd88ef58b3f0"},"pointsBalance":{"type":"integer","description":"Whole-number points balance recorded for guest portal loyalty account.","example":0},"lifetimePoints":{"type":"integer","description":"Whole-number lifetime points recorded for guest portal loyalty account.","example":0},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for guest portal loyalty account.","example":1},"enrolledAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for enrolled at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"lastActivityAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for last activity at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-01-15T12:00:00.000Z"},"tier":{"required":["id","name","minimumLifetimePoints","benefits"],"type":"object","nullable":true,"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying guest portal loyalty account tier.","example":"dc560371-b113-4aec-80d5-67bd830de231"},"name":{"type":"string","description":"Human-readable name for guest portal loyalty account tier.","example":"Example name"},"minimumLifetimePoints":{"type":"integer","description":"Whole-number minimum lifetime points recorded for guest portal loyalty account tier.","example":0},"benefits":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"nullable":true,"description":"Benefit definitions granted by guest portal loyalty account tier. Null means no value is recorded for this representation.","example":{"exampleKey":"example"}}},"description":"Tier details embedded in guest portal loyalty account containing id, name, minimum lifetime points, and benefits. Null means no value is recorded for this representation.","example":{"id":"dc560371-b113-4aec-80d5-67bd830de231","name":"Example name","minimumLifetimePoints":0,"benefits":null}}},"description":"Account details embedded in guest portal loyalty containing id, points balance, lifetime points, revision, enrolled at, and last activity at. Null means no value is recorded for this representation.","example":{"id":"f9b88121-702a-4576-8ac2-dd88ef58b3f0","pointsBalance":0,"lifetimePoints":0,"revision":1,"enrolledAt":"2026-01-15T12:00:00.000Z"}},"adjustments":{"type":"array","items":{"type":"object","required":["id","points","reason","status","revision","requestedById","requestedAt"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying guest portal loyalty adjustments item.","example":"69437603-0ae1-4d42-848b-150f80c54e15"},"points":{"type":"integer","description":"Whole-number points recorded for guest portal loyalty adjustments item.","example":0},"reason":{"type":"string","description":"Human-entered reason retained with guest portal loyalty adjustments item as decision or audit evidence.","example":"Synthetic example"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED","APPLIED"],"description":"Current lifecycle status of guest portal loyalty adjustments item; allowed values are PENDING, APPROVED, REJECTED, APPLIED.","example":"PENDING"},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for guest portal loyalty adjustments item.","example":1},"requestedById":{"type":"string","format":"uuid","description":"Hallify UUID of the user that requested guest portal loyalty adjustments item.","example":"e84b4c3f-5e8d-4601-8a63-dafba13b902d"},"decidedById":{"type":"string","format":"uuid","nullable":true,"description":"Hallify UUID of the user that decided guest portal loyalty adjustments item. Null means no value is recorded for this representation.","example":"12f638d0-9411-4c61-8f2d-aa3e985672c0"},"requestedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for requested at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"decidedAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for decided at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-01-15T12:00:00.000Z"}},"example":{"id":"69437603-0ae1-4d42-848b-150f80c54e15","points":0,"reason":"Synthetic example","status":"PENDING","revision":1,"requestedById":"e84b4c3f-5e8d-4601-8a63-dafba13b902d","requestedAt":"2026-01-15T12:00:00.000Z"}},"description":"Adjustments included as adjustments in guest portal loyalty.","example":[{"id":"69437603-0ae1-4d42-848b-150f80c54e15","points":0,"reason":"Synthetic example","status":"PENDING","revision":1,"requestedById":"e84b4c3f-5e8d-4601-8a63-dafba13b902d","requestedAt":"2026-01-15T12:00:00.000Z"}]}},"description":"Returns the current guest loyalty account projection.","example":{"adjustments":[{"id":"69437603-0ae1-4d42-848b-150f80c54e15","points":0,"reason":"Synthetic example","status":"PENDING","revision":1,"requestedById":"e84b4c3f-5e8d-4601-8a63-dafba13b902d","requestedAt":"2026-01-15T12:00:00.000Z"}]}},"GuestPrivacyCasePageDto":{"type":"object","required":["identityRevision","items"],"properties":{"identityRevision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for guest portal privacy cases.","example":1},"items":{"type":"array","items":{"type":"object","required":["id","requestType","status","request","revision","dueAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying guest portal privacy cases item.","example":"49292092-5109-4c46-8f6a-bd183b6e0aeb"},"requestType":{"type":"string","enum":["ACCESS","PORTABILITY","RECTIFICATION","RESTRICTION","ERASURE","OBJECTION"],"description":"Allowed request type for guest portal privacy cases item: ACCESS, PORTABILITY, RECTIFICATION, RESTRICTION, ERASURE, OBJECTION.","example":"ACCESS"},"status":{"type":"string","enum":["OPEN","VERIFIED","APPROVED","REJECTED","PROCESSING","COMPLETED","CANCELED"],"description":"Current lifecycle status of guest portal privacy cases item; allowed values are OPEN, VERIFIED, APPROVED, REJECTED, PROCESSING, COMPLETED, CANCELED.","example":"OPEN"},"request":{"type":"string","description":"Human-entered request details submitted through guest portal privacy cases item.","example":"example"},"requesterVerification":{"type":"string","nullable":true,"description":"Verification method or state recorded for the requester represented by guest portal privacy cases item. Null means no value is recorded for this representation.","example":"example"},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for guest portal privacy cases item.","example":1},"dueAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for due at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"},"approvedAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for approved at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-01-15T12:00:00.000Z"},"completedAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for completed at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-01-15T13:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for created at; offsets represent the same absolute instant.","example":"2026-01-15T10:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for updated at; offsets represent the same absolute instant.","example":"2026-01-15T13:00:00.000Z"}},"example":{"id":"49292092-5109-4c46-8f6a-bd183b6e0aeb","requestType":"ACCESS","status":"OPEN","request":"example","revision":1,"dueAt":"2026-12-31T18:00:00.000Z","createdAt":"2026-01-15T10:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z"}},"description":"Items returned in the guest portal privacy cases collection.","example":[{"id":"49292092-5109-4c46-8f6a-bd183b6e0aeb","requestType":"ACCESS","status":"OPEN","request":"example","revision":1,"dueAt":"2026-12-31T18:00:00.000Z","createdAt":"2026-01-15T10:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z"}]}},"description":"Returns the guest-visible privacy cases and statuses.","example":{"identityRevision":1,"items":[{"id":"49292092-5109-4c46-8f6a-bd183b6e0aeb","requestType":"ACCESS","status":"OPEN","request":"example","revision":1,"dueAt":"2026-12-31T18:00:00.000Z","createdAt":"2026-01-15T10:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z"}]}},"CreateGuestPortalPrivacyCaseDto":{"type":"object","properties":{"requestType":{"type":"string","enum":["ACCESS","PORTABILITY","RECTIFICATION","RESTRICTION","ERASURE","OBJECTION"],"description":"Allowed request type for guest portal privacy case: ACCESS, PORTABILITY, RECTIFICATION, RESTRICTION, ERASURE, OBJECTION.","example":"ACCESS"},"request":{"type":"string","minLength":1,"maxLength":5000,"description":"Human-entered request details submitted through guest portal privacy case. Accepted values enforce minimum length 1 and maximum length 5000.","example":"example"}},"required":["requestType","request"],"description":"Privacy-request type and the structured request details submitted for the capability-owned guest identity.","example":{"requestType":"ACCESS","request":"example"}},"GuestPrivacyCaseDto":{"type":"object","required":["id","requestType","status","request","revision","dueAt","createdAt","updatedAt"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying guest portal privacy case.","example":"9b8f9433-35f3-4cdc-8620-be3bb8e1ad5b"},"requestType":{"type":"string","enum":["ACCESS","PORTABILITY","RECTIFICATION","RESTRICTION","ERASURE","OBJECTION"],"description":"Allowed request type for guest portal privacy case: ACCESS, PORTABILITY, RECTIFICATION, RESTRICTION, ERASURE, OBJECTION.","example":"ACCESS"},"status":{"type":"string","enum":["OPEN","VERIFIED","APPROVED","REJECTED","PROCESSING","COMPLETED","CANCELED"],"description":"Current lifecycle status of guest portal privacy case; allowed values are OPEN, VERIFIED, APPROVED, REJECTED, PROCESSING, COMPLETED, CANCELED.","example":"OPEN"},"request":{"type":"string","description":"Human-entered request details submitted through guest portal privacy case.","example":"example"},"requesterVerification":{"type":"string","nullable":true,"description":"Verification method or state recorded for the requester represented by guest portal privacy case. Null means no value is recorded for this representation.","example":"example"},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for guest portal privacy case.","example":1},"dueAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for due at; offsets represent the same absolute instant.","example":"2026-12-31T18:00:00.000Z"},"approvedAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for approved at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-01-15T12:00:00.000Z"},"completedAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for completed at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-01-15T13:00:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for created at; offsets represent the same absolute instant.","example":"2026-01-15T10:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for updated at; offsets represent the same absolute instant.","example":"2026-01-15T13:00:00.000Z"}},"description":"Returns the guest privacy case with its current verification, decision, export, and completion state.","example":{"id":"9b8f9433-35f3-4cdc-8620-be3bb8e1ad5b","requestType":"ACCESS","status":"OPEN","request":"example","revision":1,"dueAt":"2026-12-31T18:00:00.000Z","createdAt":"2026-01-15T10:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z"}},"GuestPortalHistoryResultDto":{"type":"object","required":["items","hasMore"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","type","status","occurredAt","partySize"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying guest portal history item.","example":"af924415-09ad-48f0-8889-e7ae8d3b1d06"},"type":{"type":"string","enum":["RESERVATION","VISIT","ORDER"],"description":"Allowed type for guest portal history item: RESERVATION, VISIT, ORDER.","example":"RESERVATION"},"status":{"type":"string","description":"Current lifecycle status of guest portal history item.","example":"example"},"occurredAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for occurred at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"completedAt":{"type":"string","format":"date-time","nullable":true,"description":"RFC 3339 timestamp for completed at; offsets represent the same absolute instant. Null means no value is recorded for this representation.","example":"2026-01-15T13:00:00.000Z"},"partySize":{"type":"integer","description":"Whole-number party size recorded for guest portal history item.","example":0},"reference":{"type":"string","nullable":true,"description":"Human- or provider-assigned reference used to reconcile guest portal history item with its source record. Null means no value is recorded for this representation.","example":"example-reference"}},"example":{"id":"af924415-09ad-48f0-8889-e7ae8d3b1d06","type":"RESERVATION","status":"example","occurredAt":"2026-01-15T12:00:00.000Z","partySize":0}},"description":"Items returned in the guest portal history collection.","example":[{"id":"af924415-09ad-48f0-8889-e7ae8d3b1d06","type":"RESERVATION","status":"example","occurredAt":"2026-01-15T12:00:00.000Z","partySize":0}]},"nextCursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor for guest portal history; return it unchanged with the same filters. Null means no value is recorded for this representation.","example":"example"},"hasMore":{"type":"boolean","description":"Whether guest portal history has more.","example":true}},"description":"Returns one cursor page of guest-owned history and continuation metadata.","example":{"items":[{"id":"af924415-09ad-48f0-8889-e7ae8d3b1d06","type":"RESERVATION","status":"example","occurredAt":"2026-01-15T12:00:00.000Z","partySize":0}],"hasMore":true}},"GuestPortalRevokeResultDto":{"type":"object","required":["revoked"],"properties":{"revoked":{"type":"boolean","enum":[true],"description":"Allowed revoked for guest portal revoke: true.","example":true}},"description":"Confirms revocation of the guest portal capability session.","example":{"revoked":true}},"PublicCareerPostingDto":{"type":"object","properties":{"publicSlug":{"type":"string","description":"Public slug for public career posting.","example":"example-slug"},"organizationName":{"type":"string","description":"Human-readable organization name for public career posting.","example":"Example name"},"title":{"type":"string","description":"Human-readable title shown for public career posting.","example":"Example title"},"summary":{"type":"string","description":"Concise human-readable summary of public career posting.","example":"Synthetic example"},"description":{"type":"string","description":"Human-readable description of public career posting.","example":"Synthetic example"},"locationText":{"type":"string","description":"Location text for public career posting.","example":"example"},"closesAt":{"type":"string","nullable":true,"description":"Timestamp recording when closes occurred for public career posting. Null means no value is recorded for this representation.","format":"date-time","example":"2026-01-15T12:00:00.000Z"},"privacyNoticeVersion":{"type":"string","description":"Privacy notice version for public career posting.","example":"example"}},"required":["publicSlug","organizationName","title","summary","description","locationText","privacyNoticeVersion"],"description":"Public posting details for a role that is currently accepting applications.","example":{"publicSlug":"example-slug","organizationName":"Example name","title":"Example title","summary":"Synthetic example","description":"Synthetic example","locationText":"example","privacyNoticeVersion":"example"}},"PublicCandidateApplicationDto":{"type":"object","properties":{"submissionKey":{"type":"string","format":"uuid","description":"Hallify UUID identifying submission key associated with public candidate application.","example":"e8d3f2b3-bd92-4056-8aa4-7c77fa2f8e4b"},"firstName":{"type":"string","maxLength":120,"description":"Human-readable first name for public candidate application. Accepted values enforce maximum length 120.","example":"Example"},"lastName":{"type":"string","maxLength":120,"description":"Human-readable last name for public candidate application. Accepted values enforce maximum length 120.","example":"User"},"preferredName":{"type":"string","maxLength":120,"nullable":true,"description":"Human-readable preferred name for public candidate application. Accepted values enforce maximum length 120. Null means no value is recorded for this representation.","example":"Example name"},"email":{"type":"string","maxLength":254,"description":"Email address recorded for email in public candidate application. Accepted values enforce maximum length 254.","format":"email","example":"user@example.test"},"phone":{"type":"string","maxLength":32,"nullable":true,"description":"Telephone number recorded for phone in public candidate application. Accepted values enforce maximum length 32. Null means no value is recorded for this representation.","example":"+995555000000"},"coverLetter":{"type":"string","maxLength":20000,"nullable":true,"description":"Cover letter for public candidate application. Accepted values enforce maximum length 20000. Null means no value is recorded for this representation.","example":"example"},"source":{"type":"string","maxLength":120,"nullable":true,"description":"Source classification identifying where source originated. Accepted values enforce maximum length 120. Null means no value is recorded for this representation.","example":"example"},"privacyNoticeVersion":{"type":"string","default":"2026-07-28","description":"Privacy notice version for public candidate application.","example":"2026-07-28"}},"required":["submissionKey","firstName","lastName","email","privacyNoticeVersion"],"description":"Atomically creates the candidate, application, initial APPLIED-stage history, candidate-portal session, and audit evidence after validating the current privacy notice and posting availability.","example":{"submissionKey":"e8d3f2b3-bd92-4056-8aa4-7c77fa2f8e4b","firstName":"Example","lastName":"User","email":"user@example.test","privacyNoticeVersion":"2026-07-28"}},"PublicApplicationCreatedDto":{"type":"object","properties":{"application":{"allOf":[{"$ref":"#/components/schemas/CandidatePortalApplicationDto"}],"description":"Candidate portal application embedded as application in public application created.","example":{"id":"0120f0fe-6880-47e8-895d-c092d269cdd1","requisitionTitle":"Example title","currentStage":{"id":"f97fe865-5ff8-488a-8fab-9e27e748514c","code":"EXAMPLE","name":"Example name","category":"APPLIED","isTerminal":true,"sortOrder":1,"revision":1},"status":"ACTIVE","appliedAt":"2026-01-15T12:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z","revision":1,"canWithdraw":true}},"candidatePortalToken":{"type":"string","description":"One-time candidate portal credential. Only its hash is persisted.","example":"synthetic-example-credential"},"candidatePortalTokenExpiresAt":{"type":"string","description":"Expiration time of the candidate portal token; after this instant the credential is rejected.","format":"date-time","example":"2026-12-31T18:00:00.000Z"}},"required":["application","candidatePortalToken","candidatePortalTokenExpiresAt"],"description":"Created application in the APPLIED stage together with the candidate-portal token and its expiration time.","example":{"application":{"id":"0120f0fe-6880-47e8-895d-c092d269cdd1","requisitionTitle":"Example title","currentStage":{"id":"f97fe865-5ff8-488a-8fab-9e27e748514c","code":"EXAMPLE","name":"Example name","category":"APPLIED","isTerminal":true,"sortOrder":1,"revision":1},"status":"ACTIVE","appliedAt":"2026-01-15T12:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z","revision":1,"canWithdraw":true},"candidatePortalToken":"synthetic-example-credential","candidatePortalTokenExpiresAt":"2026-12-31T18:00:00.000Z"}},"CandidatePortalApplicationDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying candidate portal application.","example":"0120f0fe-6880-47e8-895d-c092d269cdd1"},"requisitionTitle":{"type":"string","description":"Requisition title for candidate portal application.","example":"Example title"},"currentStage":{"allOf":[{"$ref":"#/components/schemas/RecruitingStageDto"}],"description":"Recruiting stage embedded as current stage in candidate portal application.","example":{"id":"f97fe865-5ff8-488a-8fab-9e27e748514c","code":"EXAMPLE","name":"Example name","category":"APPLIED","isTerminal":true,"sortOrder":1,"revision":1}},"status":{"type":"string","enum":["ACTIVE","OFFERED","HIRED","REJECTED","WITHDRAWN"],"description":"Current lifecycle status of candidate portal application; allowed values are ACTIVE, OFFERED, HIRED, REJECTED, WITHDRAWN.","example":"ACTIVE"},"appliedAt":{"type":"string","description":"Timestamp recording when applied occurred for candidate portal application.","format":"date-time","example":"2026-01-15T12:00:00.000Z"},"updatedAt":{"type":"string","description":"Timestamp recording when updated occurred for candidate portal application.","format":"date-time","example":"2026-01-15T13:00:00.000Z"},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for candidate portal application.","example":1},"offer":{"nullable":true,"type":"object","description":"Offer details embedded in candidate portal application. Null means no value is recorded for this representation.","properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying candidate portal offer.","example":"dfa73755-b161-462c-87aa-7f0d20d8a424"},"status":{"type":"string","enum":["DRAFT","SENT","ACCEPTED","DECLINED","EXPIRED","WITHDRAWN","CONVERTED"],"description":"Current lifecycle status of candidate portal offer; allowed values are DRAFT, SENT, ACCEPTED, DECLINED, EXPIRED, WITHDRAWN, CONVERTED.","example":"DRAFT"},"legalEntity":{"allOf":[{"$ref":"#/components/schemas/RecruitingReferenceItemDto"}],"description":"Recruiting reference item embedded as legal entity in candidate portal offer.","example":{"id":"ba0372fd-c434-407b-8ec5-0634b02050cc","name":"Example name"}},"venue":{"allOf":[{"$ref":"#/components/schemas/RecruitingReferenceItemDto"}],"description":"Recruiting reference item embedded as venue in candidate portal offer.","example":{"id":"ba0372fd-c434-407b-8ec5-0634b02050cc","name":"Example name"}},"department":{"nullable":true,"type":"object","description":"Department details embedded in candidate portal offer. Null means no value is recorded for this representation.","properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying recruiting reference item.","example":"e6112f96-9ef5-48fb-82cf-4187a8ce329c"},"name":{"type":"string","description":"Human-readable name for recruiting reference item.","example":"Example name"},"code":{"type":"string","nullable":true,"description":"Stable code used to classify or address recruiting reference item. Null means no value is recorded for this representation.","example":"EXAMPLE"}},"required":["id","name"],"example":{"id":"e6112f96-9ef5-48fb-82cf-4187a8ce329c","name":"Example name"}},"jobProfile":{"nullable":true,"type":"object","description":"Job profile details embedded in candidate portal offer. Null means no value is recorded for this representation.","properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying recruiting reference item.","example":"66c21fb4-4f9b-4f13-817d-088bf2bee5ca"},"name":{"type":"string","description":"Human-readable name for recruiting reference item.","example":"Example name"},"code":{"type":"string","nullable":true,"description":"Stable code used to classify or address recruiting reference item. Null means no value is recorded for this representation.","example":"EXAMPLE"}},"required":["id","name"],"example":{"id":"66c21fb4-4f9b-4f13-817d-088bf2bee5ca","name":"Example name"}},"classification":{"type":"string","enum":["EMPLOYEE","CONTRACTOR","INTERN","APPRENTICE"],"description":"Allowed classification for candidate portal offer: EMPLOYEE, CONTRACTOR, INTERN, APPRENTICE.","example":"EMPLOYEE"},"contractType":{"type":"string","enum":["FULL_TIME","PART_TIME","FIXED_TERM","CASUAL","SEASONAL","ON_CALL"],"description":"Allowed contract type for candidate portal offer: FULL_TIME, PART_TIME, FIXED_TERM, CASUAL, SEASONAL, ON_CALL.","example":"FULL_TIME"},"startDate":{"type":"string","description":"Calendar date for start date serialized as ISO 8601 YYYY-MM-DD without an implicit time of day.","format":"date","example":"2026-01-15"},"compensationAmount":{"type":"string","nullable":true,"description":"Decimal monetary compensation amount serialized as a string in the currency identified by the `compensationCurrency` field; zero is a recorded amount, not absence. Null means no value is recorded for this representation.","example":"1.00"},"compensationCurrency":{"type":"string","nullable":true,"description":"ISO 4217 currency code for the monetary values carried by candidate portal offer. Null means no value is recorded for this representation.","example":"GEL"},"compensationPeriod":{"type":"string","enum":["HOURLY","DAILY","WEEKLY","MONTHLY","ANNUAL",null],"nullable":true,"description":"Allowed compensation period for candidate portal offer: HOURLY, DAILY, WEEKLY, MONTHLY, ANNUAL. Null means no value is recorded for this representation.","example":"HOURLY"},"terms":{"type":"string","description":"Terms for candidate portal offer.","example":"example"},"expiresAt":{"type":"string","nullable":true,"description":"Timestamp recording when expires occurred for candidate portal offer. Null means no value is recorded for this representation.","format":"date-time","example":"2026-12-31T18:00:00.000Z"},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for candidate portal offer.","example":1},"canRespond":{"type":"boolean","description":"Whether the caller can respond through candidate portal offer.","example":true}},"required":["id","status","legalEntity","venue","classification","contractType","startDate","terms","revision","canRespond"],"example":{"id":"dfa73755-b161-462c-87aa-7f0d20d8a424","status":"DRAFT","legalEntity":{"id":"ba0372fd-c434-407b-8ec5-0634b02050cc","name":"Example name"},"venue":{"id":"ba0372fd-c434-407b-8ec5-0634b02050cc","name":"Example name"},"classification":"EMPLOYEE","contractType":"FULL_TIME","startDate":"2026-01-15","terms":"example","revision":1,"canRespond":true}},"canWithdraw":{"type":"boolean","description":"Whether the caller can withdraw through candidate portal application.","example":true}},"required":["id","requisitionTitle","currentStage","status","appliedAt","updatedAt","revision","canWithdraw"],"description":"Candidate-owned application in its withdrawn terminal stage with the updated revision and preserved submission evidence.","example":{"id":"0120f0fe-6880-47e8-895d-c092d269cdd1","requisitionTitle":"Example title","currentStage":{"id":"f97fe865-5ff8-488a-8fab-9e27e748514c","code":"EXAMPLE","name":"Example name","category":"APPLIED","isTerminal":true,"sortOrder":1,"revision":1},"status":"ACTIVE","appliedAt":"2026-01-15T12:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z","revision":1,"canWithdraw":true}},"RecruitingStageDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying recruiting stage.","example":"f97fe865-5ff8-488a-8fab-9e27e748514c"},"code":{"type":"string","description":"Stable code used to classify or address recruiting stage.","example":"EXAMPLE"},"name":{"type":"string","description":"Human-readable name for recruiting stage.","example":"Example name"},"category":{"type":"string","enum":["APPLIED","SCREENING","INTERVIEW","ASSESSMENT","OFFER","HIRED","REJECTED","WITHDRAWN"],"description":"Allowed category for recruiting stage: APPLIED, SCREENING, INTERVIEW, ASSESSMENT, OFFER, HIRED, REJECTED, WITHDRAWN.","example":"APPLIED"},"isTerminal":{"type":"boolean","description":"True when recruiting stage is a terminal recruiting stage from which the candidate does not advance automatically.","example":true},"sortOrder":{"type":"integer","description":"Whole-number ordering position for sort order in recruiting stage; smaller values sort first.","example":1},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for recruiting stage.","example":1}},"required":["id","code","name","category","isTerminal","sortOrder","revision"],"description":"Recruiting stage ordered workflow stage with its category and terminal-state semantics.","example":{"id":"f97fe865-5ff8-488a-8fab-9e27e748514c","code":"EXAMPLE","name":"Example name","category":"APPLIED","isTerminal":true,"sortOrder":1,"revision":1}},"RecruitingReferenceItemDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying recruiting reference item.","example":"ba0372fd-c434-407b-8ec5-0634b02050cc"},"name":{"type":"string","description":"Human-readable name for recruiting reference item.","example":"Example name"},"code":{"type":"string","nullable":true,"description":"Stable code used to classify or address recruiting reference item. Null means no value is recorded for this representation.","example":"EXAMPLE"}},"required":["id","name"],"description":"Recruiting reference entry embedded in a workforce collection or aggregate.","example":{"id":"ba0372fd-c434-407b-8ec5-0634b02050cc","name":"Example name"}},"CandidatePortalMeDto":{"type":"object","properties":{"candidate":{"allOf":[{"$ref":"#/components/schemas/RecruitingCandidateDto"}],"description":"Recruiting candidate embedded as candidate in candidate portal me.","example":{"id":"794ae235-ae89-44f0-8118-f8817918f169","firstName":"Example","lastName":"User","email":"user@example.test","status":"ACTIVE","revision":1}},"applications":{"type":"array","items":{"$ref":"#/components/schemas/CandidatePortalApplicationDto"},"description":"Candidate portal application included as applications in candidate portal me.","example":[{"id":"0120f0fe-6880-47e8-895d-c092d269cdd1","requisitionTitle":"Example title","currentStage":{"id":"f97fe865-5ff8-488a-8fab-9e27e748514c","code":"EXAMPLE","name":"Example name","category":"APPLIED","isTerminal":true,"sortOrder":1,"revision":1},"status":"ACTIVE","appliedAt":"2026-01-15T12:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z","revision":1,"canWithdraw":true}]},"nextCursor":{"type":"string","nullable":true,"description":"Opaque pagination cursor for candidate portal me; return it unchanged with the same filters. Null means no value is recorded for this representation.","example":"example"},"sessionExpiresAt":{"type":"string","description":"Timestamp recording when session expires occurred for candidate portal me.","format":"date-time","example":"2026-12-31T18:00:00.000Z"},"serverTime":{"type":"string","description":"Server-generated timestamp representing when candidate portal me was assembled.","format":"date-time","example":"2026-01-15T12:00:00.000Z"}},"required":["candidate","applications","sessionExpiresAt","serverTime"],"description":"The candidate profile, applications, interviews, offers, and allowed actions owned by the authenticated candidate capability.","example":{"candidate":{"id":"794ae235-ae89-44f0-8118-f8817918f169","firstName":"Example","lastName":"User","email":"user@example.test","status":"ACTIVE","revision":1},"applications":[{"id":"0120f0fe-6880-47e8-895d-c092d269cdd1","requisitionTitle":"Example title","currentStage":{"id":"f97fe865-5ff8-488a-8fab-9e27e748514c","code":"EXAMPLE","name":"Example name","category":"APPLIED","isTerminal":true,"sortOrder":1,"revision":1},"status":"ACTIVE","appliedAt":"2026-01-15T12:00:00.000Z","updatedAt":"2026-01-15T13:00:00.000Z","revision":1,"canWithdraw":true}],"sessionExpiresAt":"2026-12-31T18:00:00.000Z","serverTime":"2026-01-15T12:00:00.000Z"}},"RecruitingCandidateDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying recruiting candidate.","example":"794ae235-ae89-44f0-8118-f8817918f169"},"firstName":{"type":"string","description":"Human-readable first name for recruiting candidate.","example":"Example"},"lastName":{"type":"string","description":"Human-readable last name for recruiting candidate.","example":"User"},"preferredName":{"type":"string","nullable":true,"description":"Human-readable preferred name for recruiting candidate. Null means no value is recorded for this representation.","example":"Example name"},"email":{"type":"string","description":"Email address recorded for email in recruiting candidate.","format":"email","example":"user@example.test"},"phone":{"type":"string","nullable":true,"description":"Telephone number recorded for phone in recruiting candidate. Null means no value is recorded for this representation.","example":"+995555000000"},"source":{"type":"string","nullable":true,"description":"Source classification identifying where source originated. Null means no value is recorded for this representation.","example":"example"},"status":{"type":"string","enum":["ACTIVE","HIRED","WITHDRAWN","ARCHIVED"],"description":"Current lifecycle status of recruiting candidate; allowed values are ACTIVE, HIRED, WITHDRAWN, ARCHIVED.","example":"ACTIVE"},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for recruiting candidate.","example":1}},"required":["id","firstName","lastName","email","status","revision"],"description":"Recruiting candidate identity, contact channels, source, lifecycle status, and revision.","example":{"id":"794ae235-ae89-44f0-8118-f8817918f169","firstName":"Example","lastName":"User","email":"user@example.test","status":"ACTIVE","revision":1}},"CandidateWithdrawApplicationDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":1,"description":"Current integer revision read by the caller; a stale value rejects the mutation. Accepted values enforce minimum 1.","example":1},"commandKey":{"type":"string","format":"uuid","description":"Hallify UUID identifying command key associated with candidate withdraw application.","example":"144a3af2-662b-401d-8893-0abf596c5088"},"reason":{"type":"string","minLength":2,"maxLength":500,"description":"Human-entered reason retained with candidate withdraw application as decision or audit evidence. Accepted values enforce minimum length 2 and maximum length 500.","example":"Synthetic example"}},"required":["expectedRevision","commandKey","reason"],"description":"Uses the Candidate Portal capability to withdraw only the candidate-owned eligible application identified by the route.","example":{"expectedRevision":1,"commandKey":"144a3af2-662b-401d-8893-0abf596c5088","reason":"Synthetic example"}},"CandidateOfferResponseDto":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":1,"description":"Current integer revision read by the caller; a stale value rejects the mutation. Accepted values enforce minimum 1.","example":1},"commandKey":{"type":"string","format":"uuid","description":"Hallify UUID identifying command key associated with candidate offer representation.","example":"144a3af2-662b-401d-8893-0abf596c5088"},"response":{"type":"string","enum":["ACCEPT","DECLINE"],"description":"Allowed response for candidate offer representation: ACCEPT, DECLINE.","example":"ACCEPT"},"reason":{"type":"string","maxLength":500,"description":"Human-entered reason retained with candidate offer representation as decision or audit evidence. Accepted values enforce maximum length 500.","example":"Synthetic example"}},"required":["expectedRevision","commandKey","response"],"description":"Uses the Candidate Portal capability to accept or decline only the candidate-owned active offer identified by the route.","example":{"expectedRevision":1,"commandKey":"144a3af2-662b-401d-8893-0abf596c5088","response":"ACCEPT"}},"AuditIngestionResultDto":{"type":"object","required":["batchId","accepted","deduplicated","events"],"properties":{"batchId":{"type":"string","description":"Opaque identifier for batch associated with audit inbound ingestion ingest; clients must not assume UUID syntax.","example":"example-id"},"accepted":{"type":"integer","minimum":0,"description":"Whole-number accepted recorded for audit inbound ingestion ingest. Accepted values enforce minimum 0.","example":0},"deduplicated":{"type":"integer","minimum":0,"description":"Whole-number deduplicated recorded for audit inbound ingestion ingest. Accepted values enforce minimum 0.","example":0},"events":{"type":"array","items":{"type":"object","required":["id","receivedAt","deduplicated"],"properties":{"id":{"type":"string","format":"uuid","description":"Hallify UUID identifying audit inbound ingestion ingest events item.","example":"64edc395-c85f-4e3b-8e3a-d593a4973acc"},"receivedAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for received at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"deduplicated":{"type":"boolean","description":"Whether the inbound audit event matched an event already accepted under the source replay rules.","example":true}},"example":{"id":"64edc395-c85f-4e3b-8e3a-d593a4973acc","receivedAt":"2026-01-15T12:00:00.000Z","deduplicated":true}},"description":"Events that compose the corresponding events section of audit inbound ingestion ingest.","example":[{"id":"64edc395-c85f-4e3b-8e3a-d593a4973acc","receivedAt":"2026-01-15T12:00:00.000Z","deduplicated":true}]}},"description":"Accepted batch identifier and counts for ingested or deduplicated audit events.","example":{"batchId":"example-id","accepted":0,"deduplicated":0,"events":[{"id":"64edc395-c85f-4e3b-8e3a-d593a4973acc","receivedAt":"2026-01-15T12:00:00.000Z","deduplicated":true}]}},"WorkforceIntegrationWebhookDto":{"type":"object","properties":{"externalEventId":{"type":"string","maxLength":191,"description":"Opaque identifier for external event associated with workforce integration webhook; clients must not assume UUID syntax. Accepted values enforce maximum length 191.","example":"example-id"},"eventType":{"type":"string","maxLength":160,"description":"Event type for workforce integration webhook. Accepted values enforce maximum length 160.","example":"1.000"},"payload":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"description":"Structured event or provider payload carried by workforce integration webhook.","example":{"exampleKey":"example"}}},"required":["externalEventId","eventType","payload"],"description":"Accepts a workforce provider event only after profile-specific HMAC verification over stable JSON, timestamp freshness, and replay checks.","example":{"externalEventId":"example-id","eventType":"1.000","payload":{"exampleKey":"example"}}},"WorkforceIntegrationWebhookResultDto":{"type":"object","properties":{"eventId":{"type":"string","format":"uuid","description":"Hallify UUID identifying event associated with workforce integration webhook.","example":"84a46351-8af3-4a2c-8698-e4a6a5cafb2b"},"accepted":{"type":"boolean","description":"Whether the submitted operation was accepted for processing.","example":true},"duplicate":{"type":"boolean","description":"Whether the submitted event was already accepted and handled as a duplicate.","example":true}},"required":["eventId","accepted","duplicate"],"description":"Accepts a workforce provider event only after profile-specific HMAC verification over stable JSON, timestamp freshness, and replay checks.","example":{"eventId":"84a46351-8af3-4a2c-8698-e4a6a5cafb2b","accepted":true,"duplicate":true}},"GuestProviderInboundMessageDto":{"type":"object","properties":{"externalEventId":{"type":"string","maxLength":191,"description":"Opaque identifier for external event associated with guest provider inbound message; clients must not assume UUID syntax. Accepted values enforce maximum length 191.","example":"Synthetic example"},"externalMessageId":{"type":"string","maxLength":191,"description":"Opaque identifier for external message associated with guest provider inbound message; clients must not assume UUID syntax. Accepted values enforce maximum length 191.","example":"Synthetic example"},"contactValue":{"type":"string","maxLength":254,"description":"Contact value interpreted according to the sibling type, kind, unit, or policy fields in guest provider inbound message. Accepted values enforce maximum length 254.","example":"Synthetic example"},"subject":{"type":"string","maxLength":255,"description":"Human-readable subject line used by guest provider inbound message. Accepted values enforce maximum length 255.","example":"Synthetic example"},"body":{"type":"string","minLength":1,"maxLength":5000,"description":"Human-authored body content stored with guest provider inbound message. Accepted values enforce minimum length 1 and maximum length 5000.","example":"Synthetic example"},"occurredAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for occurred at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"}},"required":["externalEventId","externalMessageId","contactValue","body","occurredAt"],"description":"Authenticates the provider event, deduplicates its event identifier, and appends the inbound message to the matching venue conversation.","example":{"externalEventId":"Synthetic example","externalMessageId":"Synthetic example","contactValue":"Synthetic example","body":"Synthetic example","occurredAt":"2026-01-15T12:00:00.000Z"}},"GuestProviderWebhooksInboundResultDto":{"type":"object","required":["accepted","messageId","conversationId","duplicate"],"properties":{"accepted":{"type":"boolean","enum":[true],"description":"Allowed accepted for guest provider webhooks inbound: true.","example":true},"messageId":{"type":"string","format":"uuid","description":"Hallify UUID identifying message associated with guest provider webhooks inbound.","example":"6656e43a-a70a-4ac5-8f2c-e049d62f80c7"},"conversationId":{"type":"string","format":"uuid","description":"Hallify UUID identifying conversation associated with guest provider webhooks inbound.","example":"d6993a6a-84c6-4c36-8812-5d181ae025cd"},"duplicate":{"type":"boolean","description":"Whether the submitted event was already accepted and handled as a duplicate.","example":true}},"description":"Returns the matched conversation and whether the provider event was newly applied or replayed.","example":{"accepted":true,"messageId":"6656e43a-a70a-4ac5-8f2c-e049d62f80c7","conversationId":"d6993a6a-84c6-4c36-8812-5d181ae025cd","duplicate":true}},"GuestProviderDeliveryEventDto":{"type":"object","properties":{"externalEventId":{"type":"string","maxLength":191,"description":"Opaque identifier for external event associated with guest provider delivery event; clients must not assume UUID syntax. Accepted values enforce maximum length 191.","example":"example-id"},"externalMessageId":{"type":"string","maxLength":191,"description":"Opaque identifier for external message associated with guest provider delivery event; clients must not assume UUID syntax. Accepted values enforce maximum length 191.","example":"Synthetic example"},"status":{"type":"string","enum":["QUEUED","SENDING","SENT","DELIVERED","FAILED","RECEIVED"],"description":"Current lifecycle status of guest provider delivery event; allowed values are QUEUED, SENDING, SENT, DELIVERED, FAILED, RECEIVED.","example":"QUEUED"},"occurredAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for occurred at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"payload":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"description":"Structured event or provider payload carried by guest provider delivery event.","example":{"exampleKey":"example"}}},"required":["externalEventId","externalMessageId","status","occurredAt"],"description":"Authenticates and deduplicates the provider event, then advances the referenced outbound message delivery state without rewriting prior attempts.","example":{"externalEventId":"example-id","externalMessageId":"Synthetic example","status":"QUEUED","occurredAt":"2026-01-15T12:00:00.000Z"}},"GuestProviderWebhooksDeliveryResultDto":{"type":"object","required":["accepted","duplicate"],"properties":{"accepted":{"type":"boolean","enum":[true],"description":"Allowed accepted for guest provider webhooks delivery: true.","example":true},"duplicate":{"type":"boolean","description":"Whether the submitted event was already accepted and handled as a duplicate.","example":true}},"description":"Returns the updated message delivery state and whether the event was newly applied or replayed.","example":{"accepted":true,"duplicate":true}},"PaymentProviderWebhookDto":{"type":"object","properties":{"attemptId":{"type":"string","format":"uuid","description":"Hallify UUID identifying attempt associated with payment provider webhook.","example":"ebc45c68-e765-435d-8f7f-7ef875ce04bf"},"eventId":{"type":"string","maxLength":191,"description":"Opaque identifier for event associated with payment provider webhook; clients must not assume UUID syntax. Accepted values enforce maximum length 191.","example":"example-id"},"status":{"type":"string","enum":["AUTHORIZED","CAPTURED","DECLINED","FAILED","CANCELED"],"description":"Current lifecycle status of payment provider webhook; allowed values are AUTHORIZED, CAPTURED, DECLINED, FAILED, CANCELED.","example":"AUTHORIZED"},"occurredAt":{"type":"string","format":"date-time","description":"RFC 3339 timestamp for occurred at; offsets represent the same absolute instant.","example":"2026-01-15T12:00:00.000Z"},"externalReference":{"type":"string","maxLength":128,"description":"Reference assigned by an external system and retained for reconciliation with payment provider webhook. Accepted values enforce maximum length 128.","example":"example-reference"},"cardBrand":{"type":"string","maxLength":32,"description":"Card brand for payment provider webhook. Accepted values enforce maximum length 32.","example":"example"},"cardLast4":{"type":"string","pattern":"^\\d{4}$","description":"Card last4 for payment provider webhook.","example":"0001"}},"required":["attemptId","eventId","status","occurredAt"],"description":"Signed payment-provider event payload after HMAC verification at the provider webhook boundary.","example":{"attemptId":"fc6f0fa9-b807-43e6-87b6-56edb271fb3f","eventId":"evt_01JHALLIFYEXAMPLE","status":"CAPTURED","occurredAt":"2026-08-11T10:30:00.000Z","externalReference":"provider-payment-1842","cardBrand":"visa","cardLast4":"4242"}},"PaymentProviderWebhookResultDto":{"type":"object","properties":{"attemptId":{"type":"string","format":"uuid","description":"Hallify UUID identifying attempt associated with payment provider webhook.","example":"ebc45c68-e765-435d-8f7f-7ef875ce04bf"},"status":{"type":"string","enum":["PENDING","APPROVED","FAILED","CANCELED","CREATED","REQUIRES_ACTION","AUTHORIZED","CAPTURED","DECLINED","OFFLINE_ACCEPTED","RECONCILIATION_REQUIRED"],"description":"Current lifecycle status of payment provider webhook; allowed values are PENDING, APPROVED, FAILED, CANCELED, CREATED, REQUIRES_ACTION, AUTHORIZED, CAPTURED, DECLINED, OFFLINE_ACCEPTED, RECONCILIATION_REQUIRED.","example":"PENDING"},"revision":{"type":"integer","description":"Monotonic optimistic-concurrency revision for payment provider webhook.","example":1},"duplicate":{"type":"boolean","description":"Whether the submitted event was already accepted and handled as a duplicate.","example":true}},"required":["attemptId","status","revision","duplicate"],"description":"Returns whether the signed provider event was applied or recognized as an idempotent replay.","example":{"attemptId":"ebc45c68-e765-435d-8f7f-7ef875ce04bf","status":"PENDING","revision":1,"duplicate":true}},"FinancialBankWebhookResultDto":{"type":"object","properties":{"accepted":{"type":"boolean","description":"True after the signed provider callback passes environment, timestamp, body, and replay validation.","example":true},"replay":{"type":"boolean","description":"True when the callback matches an already accepted immutable receipt and causes no duplicate processing.","example":true}},"required":["accepted","replay"],"description":"Source-owned Finance PRO representation of financial bank webhook result.","example":{"accepted":true,"replay":true}}},"responses":{"PreorderPartnerAuthenticationRequired":{"description":"Rejects a missing, malformed, expired, revoked, or invalid preorderPartnerKey credential at the owning domain boundary.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":401,"error":"errors:http.unauthorized","code":"HTTP_UNAUTHORIZED","message":"errors:http.unauthorized","translationKey":"errors:http.unauthorized"}}}},"IdempotencyConflict":{"description":"Idempotency key is already in progress or was reused with a different payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdempotencyConflictError"},"example":{"statusCode":409,"error":"errors:http.conflict","code":"IDEMPOTENCY_REQUEST_IN_PROGRESS","message":"errors:idempotency.inProgress","translationKey":"errors:idempotency.inProgress"}}}},"ExternalOrderAuthenticationFailed":{"description":"External-order HMAC signature is invalid or stale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":401,"error":"errors:http.unauthorized","code":"HTTP_UNAUTHORIZED","message":"errors:http.unauthorized","translationKey":"errors:http.unauthorized"}}}},"ExternalOrderDependencyUnavailable":{"description":"External-order signing secret is unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":503,"error":"errors:http.serviceUnavailable","code":"HTTP_SERVICE_UNAVAILABLE","message":"errors:http.serviceUnavailable","translationKey":"errors:http.serviceUnavailable"}}}},"ReservationManagementAuthenticationRequired":{"description":"Rejects a missing, malformed, expired, revoked, or invalid reservationManageToken credential at the owning domain boundary.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":401,"error":"errors:http.unauthorized","code":"HTTP_UNAUTHORIZED","message":"errors:http.unauthorized","translationKey":"errors:http.unauthorized"}}}},"PreorderDraftAuthenticationRequired":{"description":"Rejects a missing, malformed, expired, revoked, or invalid preorderDraftToken credential at the owning domain boundary.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":401,"error":"errors:http.unauthorized","code":"HTTP_UNAUTHORIZED","message":"errors:http.unauthorized","translationKey":"errors:http.unauthorized"}}}},"PreorderManagementAuthenticationRequired":{"description":"Rejects a missing, malformed, expired, revoked, or invalid preorderManageToken credential at the owning domain boundary.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":401,"error":"errors:http.unauthorized","code":"HTTP_UNAUTHORIZED","message":"errors:http.unauthorized","translationKey":"errors:http.unauthorized"}}}},"GuestPortalAuthenticationRequired":{"description":"Rejects a missing, malformed, expired, revoked, or invalid guestPortalToken credential at the owning domain boundary.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":401,"error":"errors:http.unauthorized","code":"HTTP_UNAUTHORIZED","message":"errors:http.unauthorized","translationKey":"errors:http.unauthorized"}}}},"CandidatePortalAuthenticationRequired":{"description":"Rejects a missing, malformed, expired, revoked, or invalid candidatePortalToken credential at the owning domain boundary.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":401,"error":"errors:http.unauthorized","code":"HTTP_UNAUTHORIZED","message":"errors:http.unauthorized","translationKey":"errors:http.unauthorized"}}}},"GuestProviderAuthenticationFailed":{"description":"Provider is unavailable or its HMAC signature is invalid or stale","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":401,"error":"errors:http.unauthorized","code":"HTTP_UNAUTHORIZED","message":"errors:http.unauthorized","translationKey":"errors:http.unauthorized"}}}},"GuestProviderDependencyUnavailable":{"description":"Provider signing secret could not be decrypted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslatedErrorDto"},"example":{"statusCode":503,"error":"errors:http.serviceUnavailable","code":"HTTP_SERVICE_UNAVAILABLE","message":"errors:http.serviceUnavailable","translationKey":"errors:http.serviceUnavailable"}}}}},"securitySchemes":{"preorderPartnerKey":{"scheme":"bearer","bearerFormat":"Hallify partner key","type":"http","description":"Partner-scoped preorder credential."},"hallifyHmacSignature":{"type":"apiKey","in":"header","name":"x-hallify-signature","description":"HMAC-SHA256 signature credential. Each operation documents its exact protocol through x-hallify-hmac metadata and the operation description."},"reservationManageToken":{"scheme":"bearer","bearerFormat":"Hallify reservation manage token","type":"http","description":"Guest-owned capability for managing a reservation or waitlist entry."},"preorderDraftToken":{"scheme":"bearer","bearerFormat":"Hallify preorder draft token","type":"http","description":"Guest-owned capability for a public preorder draft."},"preorderManageToken":{"scheme":"bearer","bearerFormat":"Hallify preorder manage token","type":"http","description":"Guest-owned capability for managing a preorder."},"guestPortalToken":{"type":"apiKey","in":"header","name":"x-guest-portal-token","description":"Guest-owned portal session token."},"candidatePortalToken":{"type":"apiKey","in":"header","name":"Authorization","description":"Candidate portal credential in `Candidate <token>` form."}}},"x-hallify-public-message-keys":{"common":["errors:apiErrors.authenticatedActorIsRequiredForPrincipalScopedIdempotency","errors:apiErrors.currencyReferenceDatasetIsNotAvailable","errors:apiErrors.geoReferenceDatasetIsNotAvailable","errors:apiErrors.idempotencyKeyCannotBeEmpty","errors:apiErrors.idempotencyKeyCannotExceedValueCharacters","errors:apiErrors.idempotencyKeyHeaderIsRequiredForThisOperation","errors:apiErrors.oneOrMoreReferenceCodesAreNotSupported","errors:apiErrors.platformScopeRequiresOrganizationIdOrALegacyVenueId","errors:apiErrors.venuePlatformScopeMappingIsInconsistent","errors:http.badGateway","errors:http.badRequest","errors:http.conflict","errors:http.failure","errors:http.forbidden","errors:http.gatewayTimeout","errors:http.gone","errors:http.internalServerError","errors:http.methodNotAllowed","errors:http.notFound","errors:http.notImplemented","errors:http.payloadTooLarge","errors:http.preconditionFailed","errors:http.requestTimeout","errors:http.serviceUnavailable","errors:http.tooManyRequests","errors:http.unauthorized","errors:http.unprocessableEntity","errors:http.unsupportedMediaType","errors:idempotency.inProgress","errors:idempotency.notReady","errors:idempotency.payloadMismatch","errors:idempotency.scopeIncomplete","validation:ExactlyOneDefined","validation:apiErrors.cannotConvertValueToValue","validation:apiErrors.quantityExceedsDecimal123Storage","validation:apiErrors.quantityIsBelowStoragePrecisionOrEqualsZero","validation:apiErrors.quantityMustBePositive","validation:apiErrors.unitCostExceedsDecimal124Storage","validation:apiErrors.unitCostMustNotBeNegative","validation:apiErrors.valueMustBeAFiniteDecimal","validation:approvalAssigneeIdentity","validation:arrayMaxSize","validation:arrayMinSize","validation:arrayNotEmpty","validation:arrayUnique","validation:equals","validation:invalidField","validation:invalidRequest","validation:isArray","validation:isBase64","validation:isBoolean","validation:isDate","validation:isDateString","validation:isDefined","validation:isEmail","validation:isEnum","validation:isHexColor","validation:isISO8601","validation:isIn","validation:isInt","validation:isLength","validation:isMimeType","validation:isNotEmpty","validation:isNumber","validation:isNumberString","validation:isObject","validation:isPhoneNumber","validation:isRFC3339","validation:isString","validation:isUUID","validation:isUrl","validation:matches","validation:max","validation:maxLength","validation:min","validation:minLength","validation:nestedValidation","validation:nonNullablePatchFields","validation:notEquals","validation:priceListBreakTotal","validation:rfqCriterionShape","validation:rfqLineReference","validation:rfqQuoteLineResponseShape","validation:unknownValue","validation:whitelistValidation"],"partner-preorders":["menu:apiErrors.aBundleComponentCannotBeBilledSafelyThroughThisFixedPriceBundle","menu:apiErrors.aCateringPackageIsOneImmutableFulfillmentPackageUsePartySizeToScaleIt","menu:apiErrors.aDeliberateStaffCredentialIsRequiredToApproveThisEffectiveOpenPrice","menu:apiErrors.aFulfillmentNoteIsRequiredForThisPackage","menu:apiErrors.aModifierOptionCannotBeSelectedMoreThanOnce","menu:apiErrors.aPackageComponentCannotBeBilledSafelyThroughThisPackage","menu:apiErrors.aPackageComponentHasNoImmutablePortionRule","menu:apiErrors.aScaledPackageComponentExceedsPersistenceLimits","menu:apiErrors.aSelectedBuildComponentCannotBeBilledSafelyThroughThisItem","menu:apiErrors.aSelectedBundleComponentIsUnavailableInThisSalesChannel","menu:apiErrors.aSelectedComboComponentCannotBeBilledSafelyThroughThisFixedPriceCombo","menu:apiErrors.aSelectedComponentDoesNotBelongToThisBundleSection","menu:apiErrors.aSelectedComponentIsNotPresentInThePublishedMenu","menu:apiErrors.aSelectedCourseDishCannotBeBilledSafelyThroughThisFixedPriceMenu","menu:apiErrors.aSelectedCourseDoesNotBelongToThisMenu","menu:apiErrors.aSelectedDishDoesNotBelongToThisCourse","menu:apiErrors.aSelectedSectionDoesNotBelongToThisBundle","menu:apiErrors.addOneFixedPriceCourseMenuPerGuestSoEveryGuestKeepsAnIndependentSelection","menu:apiErrors.anAuditNoteIsRequiredForThisOpenPriceItem","menu:apiErrors.approvalCredentialCouldNotBeVerified","menu:apiErrors.approvalCredentialIsTemporarilyLocked","menu:apiErrors.approvalCredentialsAreOnlyAcceptedWhenTheEffectiveOpenPriceRequiresApproval","menu:apiErrors.approvalThresholdMustStayInsideTheAllowedAmountRange","menu:apiErrors.approvalThresholdRequiresApprovalToBeEnabled","menu:apiErrors.atLeastOneGuidedBuildStageIsRequired","menu:apiErrors.buildYourOwnItemsCannotBeOrderedThroughAVersion","menu:apiErrors.bundleComponentValuesAreInvalid","menu:apiErrors.bundleSectionSourceIsInvalid","menu:apiErrors.bundleSectionsAreIncomplete","menu:apiErrors.bundleSectionsAreNotConfiguredForOrdering","menu:apiErrors.bundleSectionsMustUsePublishedCatalogItems","menu:apiErrors.cateringPackageInventoryMustBeModeledByExplicitPackageComponents","menu:apiErrors.cateringPackageModifiersMustBeModeledAsExplicitOptionalPackageComponents","menu:apiErrors.cateringPackagesCanOnlyBeResolvedInsideAServerAuthoritativeScheduledFulfillment","menu:apiErrors.choiceValueCannotBeSelectedMoreThanOnceInGuidedStageValue","menu:apiErrors.choiceValueIsNotAllowedForGuidedStageValue","menu:apiErrors.choiceValueIsNotValidForGuidedStageValue","menu:apiErrors.chooseASellableVersionForThisBundleComponent","menu:apiErrors.chooseASellableVersionForThisComponent","menu:apiErrors.chooseASellableVersionForThisPackageComponent","menu:apiErrors.clientMenuVersionContextIsRequired","menu:apiErrors.combinedBaseAndModifierRecipeExceedsPersistenceLimits","menu:apiErrors.combinedModifierRecipeForIngredientValueExceedsPersistenceLimits","menu:apiErrors.comboComponentChoiceValueHasInvalidQuantityOrUpcharge","menu:apiErrors.comboComponentChoiceValueIsNotAllowedForGroupValue","menu:apiErrors.comboComponentGroupValueMustUseCatalogItems","menu:apiErrors.comboComponentGroupValueRequiresValueValueSelections","menu:apiErrors.comboComponentGroupsAreNotConfigured","menu:apiErrors.componentQuantitiesMustBePositiveAndSupplementsCannotBeNegative","menu:apiErrors.componentSelectionsAreNotSupportedByOpenPriceItems","menu:apiErrors.componentSelectionsAreNotSupportedByThisItemStructure","menu:apiErrors.contactDetailsAreRequiredForThisPackage","menu:apiErrors.courseDishQuantityMustBeAPositiveWholeNumber","menu:apiErrors.courseDishSupplementCannotBeNegative","menu:apiErrors.courseStepsMustUsePublishedCatalogDishes","menu:apiErrors.duplicateComboComponentChoiceValue","menu:apiErrors.duplicateGuidedStageChoiceValue","menu:apiErrors.effectiveUnitPriceAfterModifiersIsOutsideTheAllowedRange","menu:apiErrors.everyBundleSectionAndComponentMustHaveStableCatalogIdentities","menu:apiErrors.fixedBundleContentsCannotBeRemovedOrSubstituted","menu:apiErrors.fixedBundleContentsMustResolveToOneDirectCatalogItem","menu:apiErrors.fixedPackageContentsMustResolveToDirectCatalogItems","menu:apiErrors.fixedPriceCourseServiceStepsAreIncomplete","menu:apiErrors.guidedBuildCannotContainMoreThanValueSelections","menu:apiErrors.guidedBuildCannotContainMoreThanValueStages","menu:apiErrors.guidedBuildDefaultsExceedTheValueSelectionRequestLimit","menu:apiErrors.guidedBuildSelectionCapacityExceedsTheValueSelectionRequestLimit","menu:apiErrors.guidedBuildStageIdValueExceedsValueCharacters","menu:apiErrors.guidedBuildStageIdValueIsDuplicated","menu:apiErrors.guidedBuildStageValueCannotAllowMoreThanValueSelections","menu:apiErrors.guidedBuildStageValueHasAnInvalidSelectionRange","menu:apiErrors.guidedBuildStageValueHasAnUnsupportedSourceType","menu:apiErrors.guidedBuildStageValueNameExceeds255Characters","menu:apiErrors.guidedBuildStageValueRequiredFlagMustMatchItsMinimumSelections","menu:apiErrors.guidedCatalogChoiceIdValueExceedsValueCharacters","menu:apiErrors.guidedCatalogChoiceValueLabelExceeds255Characters","menu:apiErrors.guidedCatalogChoiceValueQuantityMustFitDecimal123AndBeGreaterThanZero","menu:apiErrors.guidedCatalogChoiceValueUpchargeIsInvalid","menu:apiErrors.guidedCatalogStageValueCannotUseASTEPModifierRule","menu:apiErrors.guidedCatalogStageValueChoiceIdValueIsDuplicated","menu:apiErrors.guidedCatalogStageValueDefaultsMustSatisfyItsSelectionRange","menu:apiErrors.guidedCatalogStageValueMustExposeConfiguredChoicesDirectlyInsteadOfSubstitutionRules","menu:apiErrors.guidedCatalogStageValueReferencesUnknownDefaultChoiceValue","menu:apiErrors.guidedCatalogStageValueRequiresAtLeastOneChoice","menu:apiErrors.guidedCatalogStageValueRequiresOneSelectionRule","menu:apiErrors.guidedCatalogStageValueSelectionRuleIsOutOfSync","menu:apiErrors.guidedModifierStageValueCannotContainCatalogChoices","menu:apiErrors.guidedModifierStageValueDoesNotAcceptAVersionOrNestedModifiers","menu:apiErrors.guidedModifierStageValueRequiresExactlyOneSTEPRule","menu:apiErrors.guidedModifierStageValueSelectionRuleIsOutOfSync","menu:apiErrors.guidedStageConfigurationEntriesMustBeObjects","menu:apiErrors.guidedStageModifierOptionsMustBeSelectedThroughComponentSelections","menu:apiErrors.guidedStageValueDefaultsDoNotSatisfyItsSelectionRange","menu:apiErrors.guidedStageValueDoesNotHaveEnoughAvailableOptions","menu:apiErrors.guidedStageValueHasMultipleSelectionRules","menu:apiErrors.guidedStageValueRequiresValueValueSelections","menu:apiErrors.invalidOrderItemIdentity","menu:apiErrors.manualOpenPricePolicyCannotContainASuggestedAmount","menu:apiErrors.maximumAmountMustBeGreaterThanMinimumAmount","menu:apiErrors.measuredItemsCannotBeOrderedThroughAVersion","menu:apiErrors.measuredItemsCannotContainComponentSelections","menu:apiErrors.measuredItemsUseOneAtomicOrderLineChangeTheMeasuredAmountInstead","menu:apiErrors.measuredQuantityIsOnlySupportedByMeasuredItemStructures","menu:apiErrors.measuredQuantityIsOutsideThePublishedRange","menu:apiErrors.measuredQuantityIsRequired","menu:apiErrors.measuredQuantityMustAlignToThePublishedSaleIncrement","menu:apiErrors.measuredRecipeCostForValueIsOutsideSupportedBounds","menu:apiErrors.measuredRecipeCostIsOutsideSupportedBounds","menu:apiErrors.measuredRecipeQuantityForValueIsOutsideInventoryPrecision","menu:apiErrors.menuChangedSinceThisItemWasOpened","menu:apiErrors.menuItemIsCurrentlyUnavailable","menu:apiErrors.menuItemIsNotSellableOnThisChannel","menu:apiErrors.menuModifierOptionIsCurrentlyUnavailable","menu:apiErrors.menuPriceChangedSinceThisItemWasComposed","menu:apiErrors.modifierGroupForGuidedStageValueIsUnavailable","menu:apiErrors.modifierGroupValueCannotBeBothARootModifierAndAGuidedStage","menu:apiErrors.modifierGroupValueCannotBeReusedAcrossGuidedStages","menu:apiErrors.modifierOptionValueCannotBeSelectedMoreThanOnce","menu:apiErrors.modifierSelectionLimit","menu:apiErrors.nestedItemStructuresCannotBeSoldAsAComponent","menu:apiErrors.nestedItemStructuresCannotBeSoldInsideABundle","menu:apiErrors.nestedItemStructuresCannotBeSoldInsideACateringPackage","menu:apiErrors.noPublishedMenuIsActiveForThisChannel","menu:apiErrors.noPublishedMenuVersionIsActiveForThisChannel","menu:apiErrors.oneOrMoreSelectedModifierOptionsAreInvalidForThisPublishedItem","menu:apiErrors.openPriceApprovalAndAuditNoteControlsMustBeExplicit","menu:apiErrors.openPriceAuditNoteCannotExceedValueCharacters","menu:apiErrors.openPriceAuditNoteMustBeText","menu:apiErrors.openPriceConfigurationMustContainExactlyOnePricingRule","menu:apiErrors.openPriceEntriesRequireAnAuthenticatedActor","menu:apiErrors.openPriceEntryModeIsInvalid","menu:apiErrors.openPriceInputIsOnlyValidForAnOpenPriceItem","menu:apiErrors.openPricePricingRuleIsMissing","menu:apiErrors.openPriceQuantityMustBeAPositiveSafeInteger","menu:apiErrors.partySizeDoesNotMatchThePublishedPackageRangeAndStep","menu:apiErrors.publishedIngredientValueHasInconsistentModifierRecipeSnapshots","menu:apiErrors.publishedMenuItemNotFound","menu:apiErrors.publishedMenuVariantNotFound","menu:apiErrors.publishedModifierGroupNotFound","menu:apiErrors.publishedModifierGroupValueIsAmbiguous","menu:apiErrors.publishedModifierOptionIdentifierValueIsAmbiguousInGroupValue","menu:apiErrors.publishedModifierSafetyMetadataIsInconsistent","menu:apiErrors.publishedModifierValueHasAnInvalidAdditiveRecipeDelta","menu:apiErrors.resolvedGuidedBuildPriceExceedsPersistenceLimits","menu:apiErrors.sTEPModifierRuleReferencesUnknownGuidedStageValue","menu:apiErrors.scheduledFulfillmentIsOutsideThePackageLeadTimeOrBookingHorizon","menu:apiErrors.scheduledFulfillmentTimeIsInvalid","menu:apiErrors.selectionRuleReferencesUnknownGuidedStageValue","menu:apiErrors.suggestedAmountMustBePositiveAndInsideTheAllowedRange","menu:apiErrors.theCateringPackageIsNotConfiguredForOrdering","menu:apiErrors.theOriginalCateringPackageDoesNotContainValidImmutableFulfillmentEvidence","menu:apiErrors.thePackageCutoffDoesNotExistInTheVenueTimeZoneOnThisDate","menu:apiErrors.thePublishedCustomStructurePolicyIsMissingStaleOrUnsupported","menu:apiErrors.theResolvedPackagePriceExceedsOrderMoneyLimits","menu:apiErrors.theSameBundleComponentCannotBeSelectedTwice","menu:apiErrors.theSameDishCannotBeSelectedTwiceInOneCourse","menu:apiErrors.theSelectedComponentVersionIsUnavailable","menu:apiErrors.theSelectedVersionDoesNotBelongToThisComponent","menu:apiErrors.theVenueLocalBookingCutoffForThisPackageHasPassed","menu:apiErrors.thisBundleComponentDoesNotSupportSellableVersions","menu:apiErrors.thisComponentDoesNotSupportSellableVersions","menu:apiErrors.thisCustomPolicyDoesNotDelegateSellableVersionOrdering","menu:apiErrors.thisItemStructureIsNotAvailableForOrdering","menu:apiErrors.thisModifierCanOnlyBeSelectedForAnAlcoholicItem","menu:apiErrors.thisPackageComponentDoesNotSupportSellableVersions","menu:apiErrors.thisPackageIsNotAvailableForTheSelectedFulfillmentMode","menu:apiErrors.thisPackageIsNotAvailableOnTheSelectedVenueLocalWeekday","menu:apiErrors.thisStaffCredentialIsNotAvailableForApproval","menu:apiErrors.unknownComboComponentGroupValue","menu:apiErrors.unknownGuidedBuildStageValue","menu:apiErrors.valueContainDuplicateIds","menu:apiErrors.valueIsRequired","menu:apiErrors.valueMustBeABoolean","menu:apiErrors.valueMustBeAFiniteNumber","menu:apiErrors.valueMustBeANonEmptyString","menu:apiErrors.valueMustBeAPositiveDecimalWithAtMostThreeFractionDigits","menu:apiErrors.valueMustBeAnArray","menu:apiErrors.valueMustBeAnIntegerGreaterThanOrEqualToValue","menu:apiErrors.valueMustBeNonNegativeDecimal122MoneyNoGreaterThanValue","menu:apiErrors.valueMustBeNonNegativeMoneyWithAtMostTwoDecimalPlacesAndNoMoreThan","menu:apiErrors.valueMustFitTheSupportedCurrencyPrecision","menu:apiErrors.valueRequiresAtLeastOneSelection","menu:apiErrors.valueRequiresValueValueDishSelections","menu:apiErrors.valueRequiresValueValueSelections","menu:apiErrors.venueTimeZoneIsInvalid","preorders:apiErrors.aCartLineIsOutsideItsServiceModeQuantityLeadOrBookingHorizonRule","preorders:apiErrors.aContactNameIsRequiredForThisPreorder","preorders:apiErrors.aFulfillmentNoteIsRequiredForThisPackage","preorders:apiErrors.aLockedFinancialPolicyIsRequiredToQuoteThisPreorder","preorders:apiErrors.aPhoneNumberOrEmailIsRequiredForThisPackage","preorders:apiErrors.aPreorderSalesChannelCannotBeChangedByAmendmentUseAnExplicitMigrationAndRepriceFlow","preorders:apiErrors.aQuotedCartLineCanNoLongerBeResolvedFromTheCurrentPublishedMenu","preorders:apiErrors.aValidPreorderPartnerCredentialIsRequired","preorders:apiErrors.activeDeliveryZoneWasNotFound","preorders:apiErrors.activeFulfillmentPolicyIsNotConfigured","preorders:apiErrors.activeFulfillmentWindowsMustFitAtLeastOneCompleteSlot","preorders:apiErrors.allKitchenItemsMustBeReadyDeliveredOrCanceled","preorders:apiErrors.anActiveFulfillmentPolicyNeedsAtLeastOneActiveWindow","preorders:apiErrors.cancellationNowRequiresManagerApproval","preorders:apiErrors.cannotConfirmAnEmptyPreorder","preorders:apiErrors.capacityHoldExpiredEditTheOrderToAcquireANewSlot","preorders:apiErrors.cartLineIdsMustBeUniqueAndEachLineMustSelectExactlyOneItemOrVariant","preorders:apiErrors.cashDepositEvidenceRequiresAPOSRegisterSession","preorders:apiErrors.cashDepositRegisterEvidenceIsInvalid","preorders:apiErrors.catalogRuleNotFound","preorders:apiErrors.completionRequiresTheServiceModeHandoffStateAndOutcome","preorders:apiErrors.confirmedPaymentRefundLiabilityMustBeResolvedBeforeKitchenRelease","preorders:apiErrors.confirmedPaymentsRequireManualRefundResolution","preorders:apiErrors.contactIsRequired","preorders:apiErrors.contactNameIsRequired","preorders:apiErrors.deliveryCoordinatesRequireLatitudeLongitudeAndACoordinateSourceTogether","preorders:apiErrors.deliveryReferenceIdsDoNotShareTheSelectedCountryHierarchy","preorders:apiErrors.deliveryRequiresAddressCityPostalCodeAndCountryCode","preorders:apiErrors.deliveryRequiresAddressLineCityPostalCodeAndISOCountryCode","preorders:apiErrors.deliveryZoneChangedReloadBeforeSaving","preorders:apiErrors.deliveryZoneGeometryDoesNotMatchItsKind","preorders:apiErrors.deliveryZoneNotFound","preorders:apiErrors.depositAllocationMustConsumeTheConfirmedPaymentEvidenceUpToTheOutstandingRequirement","preorders:apiErrors.depositAllocationMustReferenceConfirmedPaymentEvidenceFromThisOrder","preorders:apiErrors.depositAllocationNotFound","preorders:apiErrors.dineInDoesNotUseFulfillmentSlots","preorders:apiErrors.dineInDoesNotUseScheduledFulfillment","preorders:apiErrors.dineInIsNotAScheduledFulfillmentMode","preorders:apiErrors.draftRevisionIsRequired","preorders:apiErrors.exceptionNotFound","preorders:apiErrors.exceptionWindowIsInvalid","preorders:apiErrors.fulfillmentCapacityHoldIsNoLongerValid","preorders:apiErrors.fulfillmentDepositPolicySnapshotIsInvalid","preorders:apiErrors.fulfillmentIsNotConfirmed","preorders:apiErrors.fulfillmentPolicyChangedReloadBeforeSaving","preorders:apiErrors.fulfillmentPolicyNotFound","preorders:apiErrors.fulfillmentPolicySnapshotIsInvalid","preorders:apiErrors.fulfillmentPrivacyPolicySnapshotIsInvalid","preorders:apiErrors.fulfillmentWindowIsInvalid","preorders:apiErrors.fulfillmentWindowsCannotOverlap","preorders:apiErrors.guestAndHandoffDetailsCorrected","preorders:apiErrors.guestContactSearchRequiresPreordersPiiSearch","preorders:apiErrors.idempotencyKeyHeaderIsRequired","preorders:apiErrors.ingredientStockReservationHasAShortfall","preorders:apiErrors.insufficientIngredientStockForScheduledFulfillment","preorders:apiErrors.invalidFulfillmentDepositPolicy","preorders:apiErrors.invalidServiceDate","preorders:apiErrors.itemLevelDiscountsOrTaxExemptionsMustBeReviewedBeforeReplacingAPreorderPackage","preorders:apiErrors.kitchenItemsMustBeReadyDeliveredOrCanceledBeforeCompletion","preorders:apiErrors.kitchenReleaseIsNotDue","preorders:apiErrors.kitchenReleaseTimeHasNotArrived","preorders:apiErrors.kitchenWorkMustBeDeliveredOrCanceledBeforeCompletion","preorders:apiErrors.maximumQuantityCannotBeBelowMinimum","preorders:apiErrors.menuPolicySettlementDepositOrCurrencyEvidenceChangedAfterQuoteIssuance","preorders:apiErrors.minimumBookingLeadCannotExceedTheBookingHorizon","preorders:apiErrors.minimumBookingLeadMustCoverThePlannedKitchenReleaseLead","preorders:apiErrors.noActiveFulfillmentWindowCoversThisSlot","preorders:apiErrors.oneOrMoreSalesChannelsWereNotFound","preorders:apiErrors.onlyAReadyDeliveryPreorderCanLeaveForDelivery","preorders:apiErrors.onlyActiveHeldOrConfirmedPreordersCanCorrectGuestDetails","preorders:apiErrors.onlyFulfillmentInPreparationCanBeMarkedReady","preorders:apiErrors.onlyHeldOrConfirmedPreordersCanBeAmended","preorders:apiErrors.onlyHeldPreordersCanBeEdited","preorders:apiErrors.paidPreordersPriceReductionsAndRefundLiabilitiesRequireRefundAuthority","preorders:apiErrors.paymentEvidenceIsAlreadyBoundToAnotherOrVoidedDepositAllocation","preorders:apiErrors.paymentIsAlreadyAllocatedAsDepositEvidence","preorders:apiErrors.policyTemplateNotFound","preorders:apiErrors.preorderActivityCursorIsInvalid","preorders:apiErrors.preorderActivityRecorded","preorders:apiErrors.preorderCanceledByGuest","preorders:apiErrors.preorderCanceledByStaff","preorders:apiErrors.preorderCapacityHeld","preorders:apiErrors.preorderChangedFromAnAcceptedQuote","preorders:apiErrors.preorderConfirmed","preorders:apiErrors.preorderCursorIsInvalidForTheSelectedFiltersAndSort","preorders:apiErrors.preorderDraftChangedReloadBeforeSaving","preorders:apiErrors.preorderDraftIsTooLarge","preorders:apiErrors.preorderDraftNotFound","preorders:apiErrors.preorderExternalCredentialNotFound","preorders:apiErrors.preorderHandedOffForDelivery","preorders:apiErrors.preorderHandoffCompleted","preorders:apiErrors.preorderIsNotHeldForConfirmation","preorders:apiErrors.preorderNotFound","preorders:apiErrors.preorderNotificationNotFound","preorders:apiErrors.preorderPartnerCredentialsAreUnavailable","preorders:apiErrors.preorderQuoteSigningIsNotConfigured","preorders:apiErrors.preorderReadyForHandoff","preorders:apiErrors.preorderReleasedToProduction","preorders:apiErrors.preorderScheduleChanged","preorders:apiErrors.protectedPreorderDataIsUnavailable","preorders:apiErrors.protectedPreorderDetailsAreNoLongerAvailable","preorders:apiErrors.publicChannelChangedReloadBeforeSaving","preorders:apiErrors.publicChannelOriginMustUseHTTPOrHTTPS","preorders:apiErrors.publicChannelServiceActorMustBeAnActiveVenueMember","preorders:apiErrors.publishedMenuItemNotFound","preorders:apiErrors.releasedPreordersUseTheNormalCorrectionCancellationFlow","preorders:apiErrors.requiredDepositIsNotFullyAllocated","preorders:apiErrors.requiredDepositIsOverdueAndFulfillmentCannotBeReleased","preorders:apiErrors.requiredPreorderDepositHasNotBeenPaid","preorders:apiErrors.salesChannelNotFound","preorders:apiErrors.salesChannelPolicyAcceptanceOrContactDetailsAreInvalid","preorders:apiErrors.scheduledForMustIncludeAnExplicitUTCOffset","preorders:apiErrors.scheduledFulfillmentChangedRefreshAndTryAgain","preorders:apiErrors.scheduledFulfillmentReleaseTimeHasNotArrived","preorders:apiErrors.scheduledOrderNotFound","preorders:apiErrors.scheduledOrderWithDepositEvidenceCannotBeEdited","preorders:apiErrors.scheduledStockInventoryScopeIsIncomplete","preorders:apiErrors.scheduledStockRecipeEvidenceIsIncomplete","preorders:apiErrors.scheduledStockRequiresAnImmutablePublishedRecipeSnapshotForEveryInventoryLine","preorders:apiErrors.scheduledStockReservationEvidenceIsIncomplete","preorders:apiErrors.scheduledStockReservationGenerationEvidenceIsInconsistent","preorders:apiErrors.scheduledStockReservationGenerationIsMissing","preorders:apiErrors.scheduledStockReservationGenerationPointerIsInconsistent","preorders:apiErrors.scheduledStockReservationGenerationScopeIsInvalid","preorders:apiErrors.scheduledStockReservationMetadataConflictsWithImmutableEvidence","preorders:apiErrors.scheduledStockReservationMetadataIsIncomplete","preorders:apiErrors.scheduledStockReservationNoLongerMatchesTheImmutableOrderRecipe","preorders:apiErrors.scheduledStockReservationScopeIsInvalid","preorders:apiErrors.scheduledTimeIsNotAlignedToTheConfiguredSlotInterval","preorders:apiErrors.scheduledTimeIsOutsideTheFulfillmentBookingRange","preorders:apiErrors.slotAvailabilityRangeIsInvalid","preorders:apiErrors.stockReservationIsScheduledButNotDueYet","preorders:apiErrors.stockReservationMustBeDueBeforeTheFulfillmentRelease","preorders:apiErrors.theCartDoesNotMeetTheSelectedDeliveryZoneMinimum","preorders:apiErrors.theCommercialQuoteChangedExpiredOrWasAlreadyConsumed","preorders:apiErrors.theDeliveryAddressIsOutsideActiveVenueDeliveryZones","preorders:apiErrors.theDeliveryZoneHasNoRemainingCapacityInThisWindow","preorders:apiErrors.theFulfillmentSlotHasNoRemainingCapacity","preorders:apiErrors.theNotificationIsAlreadyScheduledForDelivery","preorders:apiErrors.thePreorderDoesNotHaveImmutableFinancialPolicyEvidence","preorders:apiErrors.thePreorderDoesNotHaveImmutableSalesChannelEvidence","preorders:apiErrors.thePreorderDraftWasAlreadyConsumed","preorders:apiErrors.thePreorderHasNoCanonicalCartLineIdentity","preorders:apiErrors.thePreorderOverridePermissionIsRequired","preorders:apiErrors.thePreorderPartnerCredentialIsInvalid","preorders:apiErrors.thePreorderPartnerCredentialIsInvalidOrOutOfScope","preorders:apiErrors.thePreorderQuoteIsInvalidOrExpired","preorders:apiErrors.theQuoteIsNoLongerAvailableToDecline","preorders:apiErrors.theRequestedPreorderResourceIsUnavailable","preorders:apiErrors.theSelectedDeliveryZoneRequiresMorePreparationTime","preorders:apiErrors.theSelectedItemIsNotEnabledForScheduledFulfillment","preorders:apiErrors.theSelectedPackageHasInvalidImmutablePolicyEvidence","preorders:apiErrors.theVerifiedDraftIsNoLongerReadyForAcceptance","preorders:apiErrors.thisFulfillmentHasNoOutstandingDepositRequirement","preorders:apiErrors.thisPreorderCanNoLongerBeCanceledWithoutStaffAssistance","preorders:apiErrors.tooManyPreorderRequests","preorders:apiErrors.useSignedPreorderAmendmentForSchedulePackageOrPartyChangesAndPreorderGuestDetailsForContact","preorders:apiErrors.venueCurrencyChangedAfterThisPreorderWasCreatedAmendmentRequiresFinancialReview","preorders:apiErrors.venueNotFound","preorders:apiErrors.webhookEndpointMustBeASafeHTTPSURL","preorders:apiErrors.webhookSubscriptionNotFound"],"external-orders":["menu:apiErrors.aBundleComponentCannotBeBilledSafelyThroughThisFixedPriceBundle","menu:apiErrors.aCateringPackageIsOneImmutableFulfillmentPackageUsePartySizeToScaleIt","menu:apiErrors.aDeliberateStaffCredentialIsRequiredToApproveThisEffectiveOpenPrice","menu:apiErrors.aFulfillmentNoteIsRequiredForThisPackage","menu:apiErrors.aModifierOptionCannotBeSelectedMoreThanOnce","menu:apiErrors.aPackageComponentCannotBeBilledSafelyThroughThisPackage","menu:apiErrors.aPackageComponentHasNoImmutablePortionRule","menu:apiErrors.aScaledPackageComponentExceedsPersistenceLimits","menu:apiErrors.aSelectedBuildComponentCannotBeBilledSafelyThroughThisItem","menu:apiErrors.aSelectedBundleComponentIsUnavailableInThisSalesChannel","menu:apiErrors.aSelectedComboComponentCannotBeBilledSafelyThroughThisFixedPriceCombo","menu:apiErrors.aSelectedComponentDoesNotBelongToThisBundleSection","menu:apiErrors.aSelectedComponentIsNotPresentInThePublishedMenu","menu:apiErrors.aSelectedCourseDishCannotBeBilledSafelyThroughThisFixedPriceMenu","menu:apiErrors.aSelectedCourseDoesNotBelongToThisMenu","menu:apiErrors.aSelectedDishDoesNotBelongToThisCourse","menu:apiErrors.aSelectedSectionDoesNotBelongToThisBundle","menu:apiErrors.addOneFixedPriceCourseMenuPerGuestSoEveryGuestKeepsAnIndependentSelection","menu:apiErrors.anAuditNoteIsRequiredForThisOpenPriceItem","menu:apiErrors.approvalCredentialCouldNotBeVerified","menu:apiErrors.approvalCredentialIsTemporarilyLocked","menu:apiErrors.approvalCredentialsAreOnlyAcceptedWhenTheEffectiveOpenPriceRequiresApproval","menu:apiErrors.approvalThresholdMustStayInsideTheAllowedAmountRange","menu:apiErrors.approvalThresholdRequiresApprovalToBeEnabled","menu:apiErrors.atLeastOneGuidedBuildStageIsRequired","menu:apiErrors.buildYourOwnItemsCannotBeOrderedThroughAVersion","menu:apiErrors.bundleComponentValuesAreInvalid","menu:apiErrors.bundleSectionSourceIsInvalid","menu:apiErrors.bundleSectionsAreIncomplete","menu:apiErrors.bundleSectionsAreNotConfiguredForOrdering","menu:apiErrors.bundleSectionsMustUsePublishedCatalogItems","menu:apiErrors.cateringPackageInventoryMustBeModeledByExplicitPackageComponents","menu:apiErrors.cateringPackageModifiersMustBeModeledAsExplicitOptionalPackageComponents","menu:apiErrors.cateringPackagesCanOnlyBeResolvedInsideAServerAuthoritativeScheduledFulfillment","menu:apiErrors.choiceValueCannotBeSelectedMoreThanOnceInGuidedStageValue","menu:apiErrors.choiceValueIsNotAllowedForGuidedStageValue","menu:apiErrors.choiceValueIsNotValidForGuidedStageValue","menu:apiErrors.chooseASellableVersionForThisBundleComponent","menu:apiErrors.chooseASellableVersionForThisComponent","menu:apiErrors.chooseASellableVersionForThisPackageComponent","menu:apiErrors.clientMenuVersionContextIsRequired","menu:apiErrors.combinedBaseAndModifierRecipeExceedsPersistenceLimits","menu:apiErrors.combinedModifierRecipeForIngredientValueExceedsPersistenceLimits","menu:apiErrors.comboComponentChoiceValueHasInvalidQuantityOrUpcharge","menu:apiErrors.comboComponentChoiceValueIsNotAllowedForGroupValue","menu:apiErrors.comboComponentGroupValueMustUseCatalogItems","menu:apiErrors.comboComponentGroupValueRequiresValueValueSelections","menu:apiErrors.comboComponentGroupsAreNotConfigured","menu:apiErrors.componentQuantitiesMustBePositiveAndSupplementsCannotBeNegative","menu:apiErrors.componentSelectionsAreNotSupportedByOpenPriceItems","menu:apiErrors.componentSelectionsAreNotSupportedByThisItemStructure","menu:apiErrors.contactDetailsAreRequiredForThisPackage","menu:apiErrors.courseDishQuantityMustBeAPositiveWholeNumber","menu:apiErrors.courseDishSupplementCannotBeNegative","menu:apiErrors.courseStepsMustUsePublishedCatalogDishes","menu:apiErrors.duplicateComboComponentChoiceValue","menu:apiErrors.duplicateGuidedStageChoiceValue","menu:apiErrors.effectiveUnitPriceAfterModifiersIsOutsideTheAllowedRange","menu:apiErrors.everyBundleSectionAndComponentMustHaveStableCatalogIdentities","menu:apiErrors.fixedBundleContentsCannotBeRemovedOrSubstituted","menu:apiErrors.fixedBundleContentsMustResolveToOneDirectCatalogItem","menu:apiErrors.fixedPackageContentsMustResolveToDirectCatalogItems","menu:apiErrors.fixedPriceCourseServiceStepsAreIncomplete","menu:apiErrors.guidedBuildCannotContainMoreThanValueSelections","menu:apiErrors.guidedBuildCannotContainMoreThanValueStages","menu:apiErrors.guidedBuildDefaultsExceedTheValueSelectionRequestLimit","menu:apiErrors.guidedBuildSelectionCapacityExceedsTheValueSelectionRequestLimit","menu:apiErrors.guidedBuildStageIdValueExceedsValueCharacters","menu:apiErrors.guidedBuildStageIdValueIsDuplicated","menu:apiErrors.guidedBuildStageValueCannotAllowMoreThanValueSelections","menu:apiErrors.guidedBuildStageValueHasAnInvalidSelectionRange","menu:apiErrors.guidedBuildStageValueHasAnUnsupportedSourceType","menu:apiErrors.guidedBuildStageValueNameExceeds255Characters","menu:apiErrors.guidedBuildStageValueRequiredFlagMustMatchItsMinimumSelections","menu:apiErrors.guidedCatalogChoiceIdValueExceedsValueCharacters","menu:apiErrors.guidedCatalogChoiceValueLabelExceeds255Characters","menu:apiErrors.guidedCatalogChoiceValueQuantityMustFitDecimal123AndBeGreaterThanZero","menu:apiErrors.guidedCatalogChoiceValueUpchargeIsInvalid","menu:apiErrors.guidedCatalogStageValueCannotUseASTEPModifierRule","menu:apiErrors.guidedCatalogStageValueChoiceIdValueIsDuplicated","menu:apiErrors.guidedCatalogStageValueDefaultsMustSatisfyItsSelectionRange","menu:apiErrors.guidedCatalogStageValueMustExposeConfiguredChoicesDirectlyInsteadOfSubstitutionRules","menu:apiErrors.guidedCatalogStageValueReferencesUnknownDefaultChoiceValue","menu:apiErrors.guidedCatalogStageValueRequiresAtLeastOneChoice","menu:apiErrors.guidedCatalogStageValueRequiresOneSelectionRule","menu:apiErrors.guidedCatalogStageValueSelectionRuleIsOutOfSync","menu:apiErrors.guidedModifierStageValueCannotContainCatalogChoices","menu:apiErrors.guidedModifierStageValueDoesNotAcceptAVersionOrNestedModifiers","menu:apiErrors.guidedModifierStageValueRequiresExactlyOneSTEPRule","menu:apiErrors.guidedModifierStageValueSelectionRuleIsOutOfSync","menu:apiErrors.guidedStageConfigurationEntriesMustBeObjects","menu:apiErrors.guidedStageModifierOptionsMustBeSelectedThroughComponentSelections","menu:apiErrors.guidedStageValueDefaultsDoNotSatisfyItsSelectionRange","menu:apiErrors.guidedStageValueDoesNotHaveEnoughAvailableOptions","menu:apiErrors.guidedStageValueHasMultipleSelectionRules","menu:apiErrors.guidedStageValueRequiresValueValueSelections","menu:apiErrors.invalidOrderItemIdentity","menu:apiErrors.manualOpenPricePolicyCannotContainASuggestedAmount","menu:apiErrors.maximumAmountMustBeGreaterThanMinimumAmount","menu:apiErrors.measuredItemsCannotBeOrderedThroughAVersion","menu:apiErrors.measuredItemsCannotContainComponentSelections","menu:apiErrors.measuredItemsUseOneAtomicOrderLineChangeTheMeasuredAmountInstead","menu:apiErrors.measuredQuantityIsOnlySupportedByMeasuredItemStructures","menu:apiErrors.measuredQuantityIsOutsideThePublishedRange","menu:apiErrors.measuredQuantityIsRequired","menu:apiErrors.measuredQuantityMustAlignToThePublishedSaleIncrement","menu:apiErrors.measuredRecipeCostForValueIsOutsideSupportedBounds","menu:apiErrors.measuredRecipeCostIsOutsideSupportedBounds","menu:apiErrors.measuredRecipeQuantityForValueIsOutsideInventoryPrecision","menu:apiErrors.menuChangedSinceThisItemWasOpened","menu:apiErrors.menuItemIsCurrentlyUnavailable","menu:apiErrors.menuItemIsNotSellableOnThisChannel","menu:apiErrors.menuModifierOptionIsCurrentlyUnavailable","menu:apiErrors.menuPriceChangedSinceThisItemWasComposed","menu:apiErrors.modifierGroupForGuidedStageValueIsUnavailable","menu:apiErrors.modifierGroupValueCannotBeBothARootModifierAndAGuidedStage","menu:apiErrors.modifierGroupValueCannotBeReusedAcrossGuidedStages","menu:apiErrors.modifierOptionValueCannotBeSelectedMoreThanOnce","menu:apiErrors.modifierSelectionLimit","menu:apiErrors.nestedItemStructuresCannotBeSoldAsAComponent","menu:apiErrors.nestedItemStructuresCannotBeSoldInsideABundle","menu:apiErrors.nestedItemStructuresCannotBeSoldInsideACateringPackage","menu:apiErrors.noPublishedMenuIsActiveForThisChannel","menu:apiErrors.noPublishedMenuVersionIsActiveForThisChannel","menu:apiErrors.oneOrMoreSelectedModifierOptionsAreInvalidForThisPublishedItem","menu:apiErrors.openPriceApprovalAndAuditNoteControlsMustBeExplicit","menu:apiErrors.openPriceAuditNoteCannotExceedValueCharacters","menu:apiErrors.openPriceAuditNoteMustBeText","menu:apiErrors.openPriceConfigurationMustContainExactlyOnePricingRule","menu:apiErrors.openPriceEntriesRequireAnAuthenticatedActor","menu:apiErrors.openPriceEntryModeIsInvalid","menu:apiErrors.openPriceInputIsOnlyValidForAnOpenPriceItem","menu:apiErrors.openPricePricingRuleIsMissing","menu:apiErrors.openPriceQuantityMustBeAPositiveSafeInteger","menu:apiErrors.partySizeDoesNotMatchThePublishedPackageRangeAndStep","menu:apiErrors.publishedIngredientValueHasInconsistentModifierRecipeSnapshots","menu:apiErrors.publishedMenuItemNotFound","menu:apiErrors.publishedMenuVariantNotFound","menu:apiErrors.publishedModifierGroupNotFound","menu:apiErrors.publishedModifierGroupValueIsAmbiguous","menu:apiErrors.publishedModifierOptionIdentifierValueIsAmbiguousInGroupValue","menu:apiErrors.publishedModifierSafetyMetadataIsInconsistent","menu:apiErrors.publishedModifierValueHasAnInvalidAdditiveRecipeDelta","menu:apiErrors.resolvedGuidedBuildPriceExceedsPersistenceLimits","menu:apiErrors.sTEPModifierRuleReferencesUnknownGuidedStageValue","menu:apiErrors.scheduledFulfillmentIsOutsideThePackageLeadTimeOrBookingHorizon","menu:apiErrors.scheduledFulfillmentTimeIsInvalid","menu:apiErrors.selectionRuleReferencesUnknownGuidedStageValue","menu:apiErrors.suggestedAmountMustBePositiveAndInsideTheAllowedRange","menu:apiErrors.theCateringPackageIsNotConfiguredForOrdering","menu:apiErrors.theOriginalCateringPackageDoesNotContainValidImmutableFulfillmentEvidence","menu:apiErrors.thePackageCutoffDoesNotExistInTheVenueTimeZoneOnThisDate","menu:apiErrors.thePublishedCustomStructurePolicyIsMissingStaleOrUnsupported","menu:apiErrors.theResolvedPackagePriceExceedsOrderMoneyLimits","menu:apiErrors.theSameBundleComponentCannotBeSelectedTwice","menu:apiErrors.theSameDishCannotBeSelectedTwiceInOneCourse","menu:apiErrors.theSelectedComponentVersionIsUnavailable","menu:apiErrors.theSelectedVersionDoesNotBelongToThisComponent","menu:apiErrors.theVenueLocalBookingCutoffForThisPackageHasPassed","menu:apiErrors.thisBundleComponentDoesNotSupportSellableVersions","menu:apiErrors.thisComponentDoesNotSupportSellableVersions","menu:apiErrors.thisCustomPolicyDoesNotDelegateSellableVersionOrdering","menu:apiErrors.thisItemStructureIsNotAvailableForOrdering","menu:apiErrors.thisModifierCanOnlyBeSelectedForAnAlcoholicItem","menu:apiErrors.thisPackageComponentDoesNotSupportSellableVersions","menu:apiErrors.thisPackageIsNotAvailableForTheSelectedFulfillmentMode","menu:apiErrors.thisPackageIsNotAvailableOnTheSelectedVenueLocalWeekday","menu:apiErrors.thisStaffCredentialIsNotAvailableForApproval","menu:apiErrors.unknownComboComponentGroupValue","menu:apiErrors.unknownGuidedBuildStageValue","menu:apiErrors.valueContainDuplicateIds","menu:apiErrors.valueIsRequired","menu:apiErrors.valueMustBeABoolean","menu:apiErrors.valueMustBeAFiniteNumber","menu:apiErrors.valueMustBeANonEmptyString","menu:apiErrors.valueMustBeAPositiveDecimalWithAtMostThreeFractionDigits","menu:apiErrors.valueMustBeAnArray","menu:apiErrors.valueMustBeAnIntegerGreaterThanOrEqualToValue","menu:apiErrors.valueMustBeNonNegativeDecimal122MoneyNoGreaterThanValue","menu:apiErrors.valueMustBeNonNegativeMoneyWithAtMostTwoDecimalPlacesAndNoMoreThan","menu:apiErrors.valueMustFitTheSupportedCurrencyPrecision","menu:apiErrors.valueRequiresAtLeastOneSelection","menu:apiErrors.valueRequiresValueValueDishSelections","menu:apiErrors.valueRequiresValueValueSelections","menu:apiErrors.venueTimeZoneIsInvalid","orders:apiErrors.aCateringPackageUsesOneImmutableOrderLineAndScalesFromFulfillmentPartySize","orders:apiErrors.aFixedPriceCourseMenuCanBeAssignedToExactlyOneGuest","orders:apiErrors.addAnotherFixedPriceMenuLineForAGuestWithDifferentCourseChoices","orders:apiErrors.assignedQuantityExceedsAvailableItemQuantity","orders:apiErrors.canceledCoursesCannotBeRemade","orders:apiErrors.canceledOrderItemCannotBeReleased","orders:apiErrors.canceledOrdersCannotBeCorrected","orders:apiErrors.confirmedScheduledOrderItemsAreImmutable","orders:apiErrors.courseComponentRemakeMustKeepTheOriginalDishIdentity","orders:apiErrors.courseComponentRemakeQuantityMustMatchTheCorrectedQuantity","orders:apiErrors.courseDishIsNoLongerAssignedToACourse","orders:apiErrors.courseDishIsNoLongerAssignedToAnActiveCourse","orders:apiErrors.deliveredOrderItemCannotBeReleased","orders:apiErrors.eachTableSessionGuestCanBeAssignedOnlyOncePerOrderItem","orders:apiErrors.fireLaterItemsCanBeReleasedOnlyAfterTheOrderIsSubmitted","orders:apiErrors.fixedPriceCourseMenusMustBeReleasedOneCourseAtATime","orders:apiErrors.guestAssignmentsCanBeChangedOnlyBeforeTheOrderIsPaidOrCanceled","orders:apiErrors.guestAssignmentsCannotBeChangedAfterThisItemIsPaid","orders:apiErrors.itemLevelDiscountsAndTaxExemptionsMustBeReviewedBeforeReplacingAScheduledPreorderPackage","orders:apiErrors.kitchenItemNotFound","orders:apiErrors.kitchenReleaseAccessRequired","orders:apiErrors.managerReviewIsRequiredBeforeReleasingAnOverdueItem","orders:apiErrors.measuredItemsUseOneAtomicOrderLineEditTheMeasuredAmountInstead","orders:apiErrors.offPremiseOrdersDoNotHaveTableSessionGuests","orders:apiErrors.onlyACourseDishThatEnteredPreparationCanBeRemade","orders:apiErrors.onlyAnIncludedFixedPriceCourseDishCanUseTheComponentRemakeWorkflow","orders:apiErrors.onlySubmittedOrPaidCourseDishesCanBeRemade","orders:apiErrors.openPriceLineTotalCannotExceedDecimal122StorageBounds","orders:apiErrors.orderIsLockedToADifferentSalesChannel","orders:apiErrors.orderIsNotOpen","orders:apiErrors.orderItemAvailabilityChangedRefreshAndTryAgain","orders:apiErrors.orderItemCannotBeReleasedAfterKitchenWorkHasStarted","orders:apiErrors.orderItemCourseIsNotAvailableForRelease","orders:apiErrors.orderItemDoesNotRequireKitchenRelease","orders:apiErrors.orderItemHasAlreadyBeenReleasedToKitchen","orders:apiErrors.orderItemHasNoActiveQuantityToRelease","orders:apiErrors.orderItemIsNotHeldForKitchenRelease","orders:apiErrors.orderItemNotFound","orders:apiErrors.orderNotFound","orders:apiErrors.persistedMeasuredOrderEvidenceIsInvalid","orders:apiErrors.provideExactlyOneOfMenuItemIdOrMenuVariantId","orders:apiErrors.quantityPortionMustBeGreaterThan0","orders:apiErrors.readyOrPartiallyReadyOrderItemCannotBeReleasedAgain","orders:apiErrors.remakeQuantityExceedsTheRemainingCorrectableCourseDishQuantity","orders:apiErrors.replaceABuildYourOwnItemWithTheSameImmutableGuidedPlanComponentCorrectionsRemainOwned","orders:apiErrors.replaceABundleWithTheSameImmutablePackagePlanNestedPackageCorrectionsRemainOwnedByThe","orders:apiErrors.replaceACateringPackageOnlyWithTheSameImmutablePolicyFulfillmentAndComponentScalingPlan","orders:apiErrors.replaceACustomStructureWithTheSameImmutablePolicyAndDelegatePlan","orders:apiErrors.replaceAFixedPriceCourseMenuWithTheSameServicePlanOrUseTheExplicitRemake","orders:apiErrors.replaceAMeasuredItemWithTheSameImmutableUnitAndQuantityPolicy","orders:apiErrors.replacementMustDifferFromTheVoidedItem","orders:apiErrors.storedCustomPolicyEvidenceFailedItsIntegrityCheck","orders:apiErrors.tableSessionGuestNotFound","orders:apiErrors.theOriginalPackageSnapshotNoLongerMatchesTheAuthoritativeScheduledFulfillment","orders:apiErrors.useTheNormalEditFlowBeforeCheckout","orders:apiErrors.voidQuantityExceedsRemainingBillableQuantity","pos:apiErrors.acceptedOrResolvedExternalOrdersRequireAnExplicitOperatorAction","pos:apiErrors.externalCancellationRevisionIsStale","pos:apiErrors.externalOrderChangedBeforeItCouldBeCanceled","pos:apiErrors.externalOrderChangedBeforeItCouldBeRejected","pos:apiErrors.externalOrderChangedBeforeItsRevisionCouldBeReplaced","pos:apiErrors.externalOrderIsAlreadyResolved","pos:apiErrors.externalOrderNotFound","pos:apiErrors.externalOrderRevisionIsStale","pos:apiErrors.externalOrderRevisionWasReusedWithADifferentPayload","pos:apiErrors.externalOrderSourceNotFound","pos:apiErrors.externalOrderWebhookSecretIsInvalid","pos:apiErrors.externalRevisionChanged","pos:apiErrors.salesChannelNotFound","pos:apiErrors.valueMustBeABase64Encoded32ByteKey","pos:apiErrors.webhookSignatureIsInvalid","pos:apiErrors.webhookTimestampIsStale","validation:ExactlyOneDefined"],"reservations":["reservations:apiErrors.aBearerManageTokenIsRequired","reservations:apiErrors.aValidIdempotencyKeyHeaderIsRequired","reservations:apiErrors.anAuthorizedOverrideAndReasonAreRequired","reservations:apiErrors.atLeastOneTransactionalChannelIsRequired","reservations:apiErrors.businessDateMustUseYYYYMMDD","reservations:apiErrors.changingAWaitQuoteRequiresAReason","reservations:apiErrors.couldNotAllocateAPublicReference","reservations:apiErrors.couldNotAllocateAReservationReference","reservations:apiErrors.couldNotAllocateAWaitlistReference","reservations:apiErrors.guestContactSearchRequiresAdditionalPermission","reservations:apiErrors.maximumWaitMustBeGreaterThanMinimumWait","reservations:apiErrors.messageDeliveryFailedCheckTheProviderConfigurationAndRetryStatus","reservations:apiErrors.nOTIFIEDIsSetOnlyAfterProviderAcceptance","reservations:apiErrors.noEligibleTableIsAvailable","reservations:apiErrors.noPendingGuaranteeCanBeWaived","reservations:apiErrors.oneOrMoreSelectedTablesAreUnavailable","reservations:apiErrors.onlyTerminalReservationsCanBeRestored","reservations:apiErrors.partyExceedsTheServicePeriodLimit","reservations:apiErrors.policyAcceptanceVersionIsOutdated","reservations:apiErrors.protectedReservationDataIsUnavailable","reservations:apiErrors.publicBookingCannotBePublished","reservations:apiErrors.publicChannelConfigurationChanged","reservations:apiErrors.remoteWaitlistIsCurrentlyFull","reservations:apiErrors.reservationCannotTransitionFromValueToValue","reservations:apiErrors.reservationRulesChangedSinceTheyWereLoaded","reservations:apiErrors.reservationServiceIsNotConfigured","reservations:apiErrors.resourceWasNotFound","reservations:apiErrors.scheduledTimeIsOutsideTheServicePeriod","reservations:apiErrors.scheduledTimeIsOutsideTheServicePeriodWeekday","reservations:apiErrors.servicePeriodHoursAndCapacityLimitsAreInvalid","reservations:apiErrors.servicePeriodNamesMustBeUniquePerWeekday","reservations:apiErrors.tableCombinationIsInvalid","reservations:apiErrors.tablePolicyLimitsAreInvalid","reservations:apiErrors.theBookingIntentHasExpired","reservations:apiErrors.theRecordChangedSinceItWasLoaded","reservations:apiErrors.theRequestedActionIsNotAvailable","reservations:apiErrors.theRequestedSlotIsNoLongerAvailable","reservations:apiErrors.theRequestedTimeIsNoLongerAvailable","reservations:apiErrors.theRequestedTimeIsNotPubliclyBookable","reservations:apiErrors.theRequestedWaitlistActionIsNoLongerAvailable","reservations:apiErrors.theReservationsCursorIsInvalidOrNoLongerApplicable","reservations:apiErrors.theServiceIsClosedOnThisDate","reservations:apiErrors.theWaitlistIsCurrentlyFull","reservations:apiErrors.thisReservationCanNoLongerBeEdited","reservations:apiErrors.tooManyBookingAttempts","reservations:apiErrors.tooManyPublicBookingRequests","reservations:apiErrors.turnRuleLimitsAreInvalid","reservations:apiErrors.unknownServicePeriod","reservations:apiErrors.venueNotFound","reservations:apiErrors.waitlistEntryCannotTransitionFromValueToValue","reservations:apiErrors.waitlistServiceIsNotConfigured"],"public-preorders":["menu:apiErrors.aBundleComponentCannotBeBilledSafelyThroughThisFixedPriceBundle","menu:apiErrors.aCateringPackageIsOneImmutableFulfillmentPackageUsePartySizeToScaleIt","menu:apiErrors.aDeliberateStaffCredentialIsRequiredToApproveThisEffectiveOpenPrice","menu:apiErrors.aFulfillmentNoteIsRequiredForThisPackage","menu:apiErrors.aModifierOptionCannotBeSelectedMoreThanOnce","menu:apiErrors.aPackageComponentCannotBeBilledSafelyThroughThisPackage","menu:apiErrors.aPackageComponentHasNoImmutablePortionRule","menu:apiErrors.aScaledPackageComponentExceedsPersistenceLimits","menu:apiErrors.aSelectedBuildComponentCannotBeBilledSafelyThroughThisItem","menu:apiErrors.aSelectedBundleComponentIsUnavailableInThisSalesChannel","menu:apiErrors.aSelectedComboComponentCannotBeBilledSafelyThroughThisFixedPriceCombo","menu:apiErrors.aSelectedComponentDoesNotBelongToThisBundleSection","menu:apiErrors.aSelectedComponentIsNotPresentInThePublishedMenu","menu:apiErrors.aSelectedCourseDishCannotBeBilledSafelyThroughThisFixedPriceMenu","menu:apiErrors.aSelectedCourseDoesNotBelongToThisMenu","menu:apiErrors.aSelectedDishDoesNotBelongToThisCourse","menu:apiErrors.aSelectedSectionDoesNotBelongToThisBundle","menu:apiErrors.addOneFixedPriceCourseMenuPerGuestSoEveryGuestKeepsAnIndependentSelection","menu:apiErrors.anAuditNoteIsRequiredForThisOpenPriceItem","menu:apiErrors.approvalCredentialCouldNotBeVerified","menu:apiErrors.approvalCredentialIsTemporarilyLocked","menu:apiErrors.approvalCredentialsAreOnlyAcceptedWhenTheEffectiveOpenPriceRequiresApproval","menu:apiErrors.approvalThresholdMustStayInsideTheAllowedAmountRange","menu:apiErrors.approvalThresholdRequiresApprovalToBeEnabled","menu:apiErrors.atLeastOneGuidedBuildStageIsRequired","menu:apiErrors.buildYourOwnItemsCannotBeOrderedThroughAVersion","menu:apiErrors.bundleComponentValuesAreInvalid","menu:apiErrors.bundleSectionSourceIsInvalid","menu:apiErrors.bundleSectionsAreIncomplete","menu:apiErrors.bundleSectionsAreNotConfiguredForOrdering","menu:apiErrors.bundleSectionsMustUsePublishedCatalogItems","menu:apiErrors.cateringPackageInventoryMustBeModeledByExplicitPackageComponents","menu:apiErrors.cateringPackageModifiersMustBeModeledAsExplicitOptionalPackageComponents","menu:apiErrors.cateringPackagesCanOnlyBeResolvedInsideAServerAuthoritativeScheduledFulfillment","menu:apiErrors.choiceValueCannotBeSelectedMoreThanOnceInGuidedStageValue","menu:apiErrors.choiceValueIsNotAllowedForGuidedStageValue","menu:apiErrors.choiceValueIsNotValidForGuidedStageValue","menu:apiErrors.chooseASellableVersionForThisBundleComponent","menu:apiErrors.chooseASellableVersionForThisComponent","menu:apiErrors.chooseASellableVersionForThisPackageComponent","menu:apiErrors.clientMenuVersionContextIsRequired","menu:apiErrors.combinedBaseAndModifierRecipeExceedsPersistenceLimits","menu:apiErrors.combinedModifierRecipeForIngredientValueExceedsPersistenceLimits","menu:apiErrors.comboComponentChoiceValueHasInvalidQuantityOrUpcharge","menu:apiErrors.comboComponentChoiceValueIsNotAllowedForGroupValue","menu:apiErrors.comboComponentGroupValueMustUseCatalogItems","menu:apiErrors.comboComponentGroupValueRequiresValueValueSelections","menu:apiErrors.comboComponentGroupsAreNotConfigured","menu:apiErrors.componentQuantitiesMustBePositiveAndSupplementsCannotBeNegative","menu:apiErrors.componentSelectionsAreNotSupportedByOpenPriceItems","menu:apiErrors.componentSelectionsAreNotSupportedByThisItemStructure","menu:apiErrors.contactDetailsAreRequiredForThisPackage","menu:apiErrors.courseDishQuantityMustBeAPositiveWholeNumber","menu:apiErrors.courseDishSupplementCannotBeNegative","menu:apiErrors.courseStepsMustUsePublishedCatalogDishes","menu:apiErrors.duplicateComboComponentChoiceValue","menu:apiErrors.duplicateGuidedStageChoiceValue","menu:apiErrors.effectiveUnitPriceAfterModifiersIsOutsideTheAllowedRange","menu:apiErrors.everyBundleSectionAndComponentMustHaveStableCatalogIdentities","menu:apiErrors.fixedBundleContentsCannotBeRemovedOrSubstituted","menu:apiErrors.fixedBundleContentsMustResolveToOneDirectCatalogItem","menu:apiErrors.fixedPackageContentsMustResolveToDirectCatalogItems","menu:apiErrors.fixedPriceCourseServiceStepsAreIncomplete","menu:apiErrors.guidedBuildCannotContainMoreThanValueSelections","menu:apiErrors.guidedBuildCannotContainMoreThanValueStages","menu:apiErrors.guidedBuildDefaultsExceedTheValueSelectionRequestLimit","menu:apiErrors.guidedBuildSelectionCapacityExceedsTheValueSelectionRequestLimit","menu:apiErrors.guidedBuildStageIdValueExceedsValueCharacters","menu:apiErrors.guidedBuildStageIdValueIsDuplicated","menu:apiErrors.guidedBuildStageValueCannotAllowMoreThanValueSelections","menu:apiErrors.guidedBuildStageValueHasAnInvalidSelectionRange","menu:apiErrors.guidedBuildStageValueHasAnUnsupportedSourceType","menu:apiErrors.guidedBuildStageValueNameExceeds255Characters","menu:apiErrors.guidedBuildStageValueRequiredFlagMustMatchItsMinimumSelections","menu:apiErrors.guidedCatalogChoiceIdValueExceedsValueCharacters","menu:apiErrors.guidedCatalogChoiceValueLabelExceeds255Characters","menu:apiErrors.guidedCatalogChoiceValueQuantityMustFitDecimal123AndBeGreaterThanZero","menu:apiErrors.guidedCatalogChoiceValueUpchargeIsInvalid","menu:apiErrors.guidedCatalogStageValueCannotUseASTEPModifierRule","menu:apiErrors.guidedCatalogStageValueChoiceIdValueIsDuplicated","menu:apiErrors.guidedCatalogStageValueDefaultsMustSatisfyItsSelectionRange","menu:apiErrors.guidedCatalogStageValueMustExposeConfiguredChoicesDirectlyInsteadOfSubstitutionRules","menu:apiErrors.guidedCatalogStageValueReferencesUnknownDefaultChoiceValue","menu:apiErrors.guidedCatalogStageValueRequiresAtLeastOneChoice","menu:apiErrors.guidedCatalogStageValueRequiresOneSelectionRule","menu:apiErrors.guidedCatalogStageValueSelectionRuleIsOutOfSync","menu:apiErrors.guidedModifierStageValueCannotContainCatalogChoices","menu:apiErrors.guidedModifierStageValueDoesNotAcceptAVersionOrNestedModifiers","menu:apiErrors.guidedModifierStageValueRequiresExactlyOneSTEPRule","menu:apiErrors.guidedModifierStageValueSelectionRuleIsOutOfSync","menu:apiErrors.guidedStageConfigurationEntriesMustBeObjects","menu:apiErrors.guidedStageModifierOptionsMustBeSelectedThroughComponentSelections","menu:apiErrors.guidedStageValueDefaultsDoNotSatisfyItsSelectionRange","menu:apiErrors.guidedStageValueDoesNotHaveEnoughAvailableOptions","menu:apiErrors.guidedStageValueHasMultipleSelectionRules","menu:apiErrors.guidedStageValueRequiresValueValueSelections","menu:apiErrors.invalidOrderItemIdentity","menu:apiErrors.manualOpenPricePolicyCannotContainASuggestedAmount","menu:apiErrors.maximumAmountMustBeGreaterThanMinimumAmount","menu:apiErrors.measuredItemsCannotBeOrderedThroughAVersion","menu:apiErrors.measuredItemsCannotContainComponentSelections","menu:apiErrors.measuredItemsUseOneAtomicOrderLineChangeTheMeasuredAmountInstead","menu:apiErrors.measuredQuantityIsOnlySupportedByMeasuredItemStructures","menu:apiErrors.measuredQuantityIsOutsideThePublishedRange","menu:apiErrors.measuredQuantityIsRequired","menu:apiErrors.measuredQuantityMustAlignToThePublishedSaleIncrement","menu:apiErrors.measuredRecipeCostForValueIsOutsideSupportedBounds","menu:apiErrors.measuredRecipeCostIsOutsideSupportedBounds","menu:apiErrors.measuredRecipeQuantityForValueIsOutsideInventoryPrecision","menu:apiErrors.menuChangedSinceThisItemWasOpened","menu:apiErrors.menuItemIsCurrentlyUnavailable","menu:apiErrors.menuItemIsNotSellableOnThisChannel","menu:apiErrors.menuModifierOptionIsCurrentlyUnavailable","menu:apiErrors.menuPriceChangedSinceThisItemWasComposed","menu:apiErrors.modifierGroupForGuidedStageValueIsUnavailable","menu:apiErrors.modifierGroupValueCannotBeBothARootModifierAndAGuidedStage","menu:apiErrors.modifierGroupValueCannotBeReusedAcrossGuidedStages","menu:apiErrors.modifierOptionValueCannotBeSelectedMoreThanOnce","menu:apiErrors.modifierSelectionLimit","menu:apiErrors.nestedItemStructuresCannotBeSoldAsAComponent","menu:apiErrors.nestedItemStructuresCannotBeSoldInsideABundle","menu:apiErrors.nestedItemStructuresCannotBeSoldInsideACateringPackage","menu:apiErrors.noPublishedMenuIsActiveForThisChannel","menu:apiErrors.noPublishedMenuVersionIsActiveForThisChannel","menu:apiErrors.oneOrMoreSelectedModifierOptionsAreInvalidForThisPublishedItem","menu:apiErrors.openPriceApprovalAndAuditNoteControlsMustBeExplicit","menu:apiErrors.openPriceAuditNoteCannotExceedValueCharacters","menu:apiErrors.openPriceAuditNoteMustBeText","menu:apiErrors.openPriceConfigurationMustContainExactlyOnePricingRule","menu:apiErrors.openPriceEntriesRequireAnAuthenticatedActor","menu:apiErrors.openPriceEntryModeIsInvalid","menu:apiErrors.openPriceInputIsOnlyValidForAnOpenPriceItem","menu:apiErrors.openPricePricingRuleIsMissing","menu:apiErrors.openPriceQuantityMustBeAPositiveSafeInteger","menu:apiErrors.partySizeDoesNotMatchThePublishedPackageRangeAndStep","menu:apiErrors.publishedIngredientValueHasInconsistentModifierRecipeSnapshots","menu:apiErrors.publishedMenuItemNotFound","menu:apiErrors.publishedMenuVariantNotFound","menu:apiErrors.publishedModifierGroupNotFound","menu:apiErrors.publishedModifierGroupValueIsAmbiguous","menu:apiErrors.publishedModifierOptionIdentifierValueIsAmbiguousInGroupValue","menu:apiErrors.publishedModifierSafetyMetadataIsInconsistent","menu:apiErrors.publishedModifierValueHasAnInvalidAdditiveRecipeDelta","menu:apiErrors.resolvedGuidedBuildPriceExceedsPersistenceLimits","menu:apiErrors.sTEPModifierRuleReferencesUnknownGuidedStageValue","menu:apiErrors.scheduledFulfillmentIsOutsideThePackageLeadTimeOrBookingHorizon","menu:apiErrors.scheduledFulfillmentTimeIsInvalid","menu:apiErrors.selectionRuleReferencesUnknownGuidedStageValue","menu:apiErrors.suggestedAmountMustBePositiveAndInsideTheAllowedRange","menu:apiErrors.theCateringPackageIsNotConfiguredForOrdering","menu:apiErrors.theOriginalCateringPackageDoesNotContainValidImmutableFulfillmentEvidence","menu:apiErrors.thePackageCutoffDoesNotExistInTheVenueTimeZoneOnThisDate","menu:apiErrors.thePublishedCustomStructurePolicyIsMissingStaleOrUnsupported","menu:apiErrors.theResolvedPackagePriceExceedsOrderMoneyLimits","menu:apiErrors.theSameBundleComponentCannotBeSelectedTwice","menu:apiErrors.theSameDishCannotBeSelectedTwiceInOneCourse","menu:apiErrors.theSelectedComponentVersionIsUnavailable","menu:apiErrors.theSelectedVersionDoesNotBelongToThisComponent","menu:apiErrors.theVenueLocalBookingCutoffForThisPackageHasPassed","menu:apiErrors.thisBundleComponentDoesNotSupportSellableVersions","menu:apiErrors.thisComponentDoesNotSupportSellableVersions","menu:apiErrors.thisCustomPolicyDoesNotDelegateSellableVersionOrdering","menu:apiErrors.thisItemStructureIsNotAvailableForOrdering","menu:apiErrors.thisModifierCanOnlyBeSelectedForAnAlcoholicItem","menu:apiErrors.thisPackageComponentDoesNotSupportSellableVersions","menu:apiErrors.thisPackageIsNotAvailableForTheSelectedFulfillmentMode","menu:apiErrors.thisPackageIsNotAvailableOnTheSelectedVenueLocalWeekday","menu:apiErrors.thisStaffCredentialIsNotAvailableForApproval","menu:apiErrors.unknownComboComponentGroupValue","menu:apiErrors.unknownGuidedBuildStageValue","menu:apiErrors.valueContainDuplicateIds","menu:apiErrors.valueIsRequired","menu:apiErrors.valueMustBeABoolean","menu:apiErrors.valueMustBeAFiniteNumber","menu:apiErrors.valueMustBeANonEmptyString","menu:apiErrors.valueMustBeAPositiveDecimalWithAtMostThreeFractionDigits","menu:apiErrors.valueMustBeAnArray","menu:apiErrors.valueMustBeAnIntegerGreaterThanOrEqualToValue","menu:apiErrors.valueMustBeNonNegativeDecimal122MoneyNoGreaterThanValue","menu:apiErrors.valueMustBeNonNegativeMoneyWithAtMostTwoDecimalPlacesAndNoMoreThan","menu:apiErrors.valueMustFitTheSupportedCurrencyPrecision","menu:apiErrors.valueRequiresAtLeastOneSelection","menu:apiErrors.valueRequiresValueValueDishSelections","menu:apiErrors.valueRequiresValueValueSelections","menu:apiErrors.venueTimeZoneIsInvalid","preorders:apiErrors.aCartLineIsOutsideItsServiceModeQuantityLeadOrBookingHorizonRule","preorders:apiErrors.aContactNameIsRequiredForThisPreorder","preorders:apiErrors.aFulfillmentNoteIsRequiredForThisPackage","preorders:apiErrors.aLockedFinancialPolicyIsRequiredToQuoteThisPreorder","preorders:apiErrors.aPhoneNumberOrEmailIsRequiredForThisPackage","preorders:apiErrors.aPreorderSalesChannelCannotBeChangedByAmendmentUseAnExplicitMigrationAndRepriceFlow","preorders:apiErrors.aQuotedCartLineCanNoLongerBeResolvedFromTheCurrentPublishedMenu","preorders:apiErrors.aValidPreorderPartnerCredentialIsRequired","preorders:apiErrors.activeDeliveryZoneWasNotFound","preorders:apiErrors.activeFulfillmentPolicyIsNotConfigured","preorders:apiErrors.activeFulfillmentWindowsMustFitAtLeastOneCompleteSlot","preorders:apiErrors.allKitchenItemsMustBeReadyDeliveredOrCanceled","preorders:apiErrors.anActiveFulfillmentPolicyNeedsAtLeastOneActiveWindow","preorders:apiErrors.cancellationNowRequiresManagerApproval","preorders:apiErrors.cannotConfirmAnEmptyPreorder","preorders:apiErrors.capacityHoldExpiredEditTheOrderToAcquireANewSlot","preorders:apiErrors.cartLineIdsMustBeUniqueAndEachLineMustSelectExactlyOneItemOrVariant","preorders:apiErrors.cashDepositEvidenceRequiresAPOSRegisterSession","preorders:apiErrors.cashDepositRegisterEvidenceIsInvalid","preorders:apiErrors.catalogRuleNotFound","preorders:apiErrors.completionRequiresTheServiceModeHandoffStateAndOutcome","preorders:apiErrors.confirmedPaymentRefundLiabilityMustBeResolvedBeforeKitchenRelease","preorders:apiErrors.confirmedPaymentsRequireManualRefundResolution","preorders:apiErrors.contactIsRequired","preorders:apiErrors.contactNameIsRequired","preorders:apiErrors.deliveryCoordinatesRequireLatitudeLongitudeAndACoordinateSourceTogether","preorders:apiErrors.deliveryReferenceIdsDoNotShareTheSelectedCountryHierarchy","preorders:apiErrors.deliveryRequiresAddressCityPostalCodeAndCountryCode","preorders:apiErrors.deliveryRequiresAddressLineCityPostalCodeAndISOCountryCode","preorders:apiErrors.deliveryZoneChangedReloadBeforeSaving","preorders:apiErrors.deliveryZoneGeometryDoesNotMatchItsKind","preorders:apiErrors.deliveryZoneNotFound","preorders:apiErrors.depositAllocationMustConsumeTheConfirmedPaymentEvidenceUpToTheOutstandingRequirement","preorders:apiErrors.depositAllocationMustReferenceConfirmedPaymentEvidenceFromThisOrder","preorders:apiErrors.depositAllocationNotFound","preorders:apiErrors.dineInDoesNotUseFulfillmentSlots","preorders:apiErrors.dineInDoesNotUseScheduledFulfillment","preorders:apiErrors.dineInIsNotAScheduledFulfillmentMode","preorders:apiErrors.draftRevisionIsRequired","preorders:apiErrors.exceptionNotFound","preorders:apiErrors.exceptionWindowIsInvalid","preorders:apiErrors.fulfillmentCapacityHoldIsNoLongerValid","preorders:apiErrors.fulfillmentDepositPolicySnapshotIsInvalid","preorders:apiErrors.fulfillmentIsNotConfirmed","preorders:apiErrors.fulfillmentPolicyChangedReloadBeforeSaving","preorders:apiErrors.fulfillmentPolicyNotFound","preorders:apiErrors.fulfillmentPolicySnapshotIsInvalid","preorders:apiErrors.fulfillmentPrivacyPolicySnapshotIsInvalid","preorders:apiErrors.fulfillmentWindowIsInvalid","preorders:apiErrors.fulfillmentWindowsCannotOverlap","preorders:apiErrors.guestAndHandoffDetailsCorrected","preorders:apiErrors.guestContactSearchRequiresPreordersPiiSearch","preorders:apiErrors.idempotencyKeyHeaderIsRequired","preorders:apiErrors.ingredientStockReservationHasAShortfall","preorders:apiErrors.insufficientIngredientStockForScheduledFulfillment","preorders:apiErrors.invalidFulfillmentDepositPolicy","preorders:apiErrors.invalidServiceDate","preorders:apiErrors.itemLevelDiscountsOrTaxExemptionsMustBeReviewedBeforeReplacingAPreorderPackage","preorders:apiErrors.kitchenItemsMustBeReadyDeliveredOrCanceledBeforeCompletion","preorders:apiErrors.kitchenReleaseIsNotDue","preorders:apiErrors.kitchenReleaseTimeHasNotArrived","preorders:apiErrors.kitchenWorkMustBeDeliveredOrCanceledBeforeCompletion","preorders:apiErrors.maximumQuantityCannotBeBelowMinimum","preorders:apiErrors.menuPolicySettlementDepositOrCurrencyEvidenceChangedAfterQuoteIssuance","preorders:apiErrors.minimumBookingLeadCannotExceedTheBookingHorizon","preorders:apiErrors.minimumBookingLeadMustCoverThePlannedKitchenReleaseLead","preorders:apiErrors.noActiveFulfillmentWindowCoversThisSlot","preorders:apiErrors.oneOrMoreSalesChannelsWereNotFound","preorders:apiErrors.onlyAReadyDeliveryPreorderCanLeaveForDelivery","preorders:apiErrors.onlyActiveHeldOrConfirmedPreordersCanCorrectGuestDetails","preorders:apiErrors.onlyFulfillmentInPreparationCanBeMarkedReady","preorders:apiErrors.onlyHeldOrConfirmedPreordersCanBeAmended","preorders:apiErrors.onlyHeldPreordersCanBeEdited","preorders:apiErrors.paidPreordersPriceReductionsAndRefundLiabilitiesRequireRefundAuthority","preorders:apiErrors.paymentEvidenceIsAlreadyBoundToAnotherOrVoidedDepositAllocation","preorders:apiErrors.paymentIsAlreadyAllocatedAsDepositEvidence","preorders:apiErrors.policyTemplateNotFound","preorders:apiErrors.preorderActivityCursorIsInvalid","preorders:apiErrors.preorderActivityRecorded","preorders:apiErrors.preorderCanceledByGuest","preorders:apiErrors.preorderCanceledByStaff","preorders:apiErrors.preorderCapacityHeld","preorders:apiErrors.preorderChangedFromAnAcceptedQuote","preorders:apiErrors.preorderConfirmed","preorders:apiErrors.preorderCursorIsInvalidForTheSelectedFiltersAndSort","preorders:apiErrors.preorderDraftChangedReloadBeforeSaving","preorders:apiErrors.preorderDraftIsTooLarge","preorders:apiErrors.preorderDraftNotFound","preorders:apiErrors.preorderExternalCredentialNotFound","preorders:apiErrors.preorderHandedOffForDelivery","preorders:apiErrors.preorderHandoffCompleted","preorders:apiErrors.preorderIsNotHeldForConfirmation","preorders:apiErrors.preorderNotFound","preorders:apiErrors.preorderNotificationNotFound","preorders:apiErrors.preorderPartnerCredentialsAreUnavailable","preorders:apiErrors.preorderQuoteSigningIsNotConfigured","preorders:apiErrors.preorderReadyForHandoff","preorders:apiErrors.preorderReleasedToProduction","preorders:apiErrors.preorderScheduleChanged","preorders:apiErrors.protectedPreorderDataIsUnavailable","preorders:apiErrors.protectedPreorderDetailsAreNoLongerAvailable","preorders:apiErrors.publicChannelChangedReloadBeforeSaving","preorders:apiErrors.publicChannelOriginMustUseHTTPOrHTTPS","preorders:apiErrors.publicChannelServiceActorMustBeAnActiveVenueMember","preorders:apiErrors.publishedMenuItemNotFound","preorders:apiErrors.releasedPreordersUseTheNormalCorrectionCancellationFlow","preorders:apiErrors.requiredDepositIsNotFullyAllocated","preorders:apiErrors.requiredDepositIsOverdueAndFulfillmentCannotBeReleased","preorders:apiErrors.requiredPreorderDepositHasNotBeenPaid","preorders:apiErrors.salesChannelNotFound","preorders:apiErrors.salesChannelPolicyAcceptanceOrContactDetailsAreInvalid","preorders:apiErrors.scheduledForMustIncludeAnExplicitUTCOffset","preorders:apiErrors.scheduledFulfillmentChangedRefreshAndTryAgain","preorders:apiErrors.scheduledFulfillmentReleaseTimeHasNotArrived","preorders:apiErrors.scheduledOrderNotFound","preorders:apiErrors.scheduledOrderWithDepositEvidenceCannotBeEdited","preorders:apiErrors.scheduledStockInventoryScopeIsIncomplete","preorders:apiErrors.scheduledStockRecipeEvidenceIsIncomplete","preorders:apiErrors.scheduledStockRequiresAnImmutablePublishedRecipeSnapshotForEveryInventoryLine","preorders:apiErrors.scheduledStockReservationEvidenceIsIncomplete","preorders:apiErrors.scheduledStockReservationGenerationEvidenceIsInconsistent","preorders:apiErrors.scheduledStockReservationGenerationIsMissing","preorders:apiErrors.scheduledStockReservationGenerationPointerIsInconsistent","preorders:apiErrors.scheduledStockReservationGenerationScopeIsInvalid","preorders:apiErrors.scheduledStockReservationMetadataConflictsWithImmutableEvidence","preorders:apiErrors.scheduledStockReservationMetadataIsIncomplete","preorders:apiErrors.scheduledStockReservationNoLongerMatchesTheImmutableOrderRecipe","preorders:apiErrors.scheduledStockReservationScopeIsInvalid","preorders:apiErrors.scheduledTimeIsNotAlignedToTheConfiguredSlotInterval","preorders:apiErrors.scheduledTimeIsOutsideTheFulfillmentBookingRange","preorders:apiErrors.slotAvailabilityRangeIsInvalid","preorders:apiErrors.stockReservationIsScheduledButNotDueYet","preorders:apiErrors.stockReservationMustBeDueBeforeTheFulfillmentRelease","preorders:apiErrors.theCartDoesNotMeetTheSelectedDeliveryZoneMinimum","preorders:apiErrors.theCommercialQuoteChangedExpiredOrWasAlreadyConsumed","preorders:apiErrors.theDeliveryAddressIsOutsideActiveVenueDeliveryZones","preorders:apiErrors.theDeliveryZoneHasNoRemainingCapacityInThisWindow","preorders:apiErrors.theFulfillmentSlotHasNoRemainingCapacity","preorders:apiErrors.theNotificationIsAlreadyScheduledForDelivery","preorders:apiErrors.thePreorderDoesNotHaveImmutableFinancialPolicyEvidence","preorders:apiErrors.thePreorderDoesNotHaveImmutableSalesChannelEvidence","preorders:apiErrors.thePreorderDraftWasAlreadyConsumed","preorders:apiErrors.thePreorderHasNoCanonicalCartLineIdentity","preorders:apiErrors.thePreorderOverridePermissionIsRequired","preorders:apiErrors.thePreorderPartnerCredentialIsInvalid","preorders:apiErrors.thePreorderPartnerCredentialIsInvalidOrOutOfScope","preorders:apiErrors.thePreorderQuoteIsInvalidOrExpired","preorders:apiErrors.theQuoteIsNoLongerAvailableToDecline","preorders:apiErrors.theRequestedPreorderResourceIsUnavailable","preorders:apiErrors.theSelectedDeliveryZoneRequiresMorePreparationTime","preorders:apiErrors.theSelectedItemIsNotEnabledForScheduledFulfillment","preorders:apiErrors.theSelectedPackageHasInvalidImmutablePolicyEvidence","preorders:apiErrors.theVerifiedDraftIsNoLongerReadyForAcceptance","preorders:apiErrors.thisFulfillmentHasNoOutstandingDepositRequirement","preorders:apiErrors.thisPreorderCanNoLongerBeCanceledWithoutStaffAssistance","preorders:apiErrors.tooManyPreorderRequests","preorders:apiErrors.useSignedPreorderAmendmentForSchedulePackageOrPartyChangesAndPreorderGuestDetailsForContact","preorders:apiErrors.venueCurrencyChangedAfterThisPreorderWasCreatedAmendmentRequiresFinancialReview","preorders:apiErrors.venueNotFound","preorders:apiErrors.webhookEndpointMustBeASafeHTTPSURL","preorders:apiErrors.webhookSubscriptionNotFound"],"guest-portal":["guests:apiErrors.aGuestProfileCannotBeMergedIntoItself","guests:apiErrors.aGuestTagWithThisNameAlreadyExists","guests:apiErrors.activityRecorded","guests:apiErrors.anActiveGuestLoyaltyProgramIsRequired","guests:apiErrors.anActiveProviderIsRequiredForThisChannel","guests:apiErrors.anActiveProviderIsRequiredToReply","guests:apiErrors.anActiveZeroPointBaseTierIsRequired","guests:apiErrors.anApprovedAccessOrPortabilityCaseIsRequiredForDataExport","guests:apiErrors.anApprovedErasureCaseIsRequiredForAnonymization","guests:apiErrors.anonymizedLoyaltyAdjustment","guests:apiErrors.atLeastOneSegmentCriterionIsRequired","guests:apiErrors.campaignProviderDoesNotMatchTheVenueAndChannel","guests:apiErrors.campaignSegmentIsNotAvailable","guests:apiErrors.campaignTemplateIsNotAvailable","guests:apiErrors.campaignTemplateMustBeActiveBeforePreparation","guests:apiErrors.consentPurposeAndStatusMustBeConfiguredTogether","guests:apiErrors.conversationContactIsUnavailable","guests:apiErrors.deliveryEventStatusIsNotSupported","guests:apiErrors.duplicateGuestIdentityMerged","guests:apiErrors.emailTemplatesRequireASubject","guests:apiErrors.guestActivityCursorIsInvalidOrExpired","guests:apiErrors.guestAddedToHousehold","guests:apiErrors.guestCampaignChangedRefreshBeforeRetrying","guests:apiErrors.guestCampaignCursorDoesNotMatchThisVenue","guests:apiErrors.guestCampaignCursorIsInvalidOrExpired","guests:apiErrors.guestCampaignMessageSent","guests:apiErrors.guestCampaignRecipientCursorDoesNotMatchThisCampaign","guests:apiErrors.guestCampaignRecipientCursorIsInvalidOrExpired","guests:apiErrors.guestCampaignWasNotFound","guests:apiErrors.guestCommunicationAdapterIsNotSupported","guests:apiErrors.guestCommunicationProviderSecretsAreUnavailable","guests:apiErrors.guestCommunicationProviderWasNotFound","guests:apiErrors.guestCommunicationSettingsChangedReloadBeforeSaving","guests:apiErrors.guestCommunicationTemplateWasNotFound","guests:apiErrors.guestConsentPreferenceChanged","guests:apiErrors.guestConsentPreferencesChangedReloadBeforeSavingAgain","guests:apiErrors.guestConversationChangedRefreshBeforeRetrying","guests:apiErrors.guestConversationWasNotFound","guests:apiErrors.guestDataExportGenerated","guests:apiErrors.guestDirectoryCursorDoesNotMatchTheCurrentQuery","guests:apiErrors.guestDirectoryCursorIsInvalidOrExpired","guests:apiErrors.guestGovernanceSettingsChangedRefreshBeforeRetrying","guests:apiErrors.guestHouseholdArchived","guests:apiErrors.guestHouseholdChangedRefreshBeforeRetrying","guests:apiErrors.guestHouseholdCreated","guests:apiErrors.guestHouseholdMemberWasNotFound","guests:apiErrors.guestHouseholdPrimaryChanged","guests:apiErrors.guestHouseholdRestored","guests:apiErrors.guestHouseholdUpdated","guests:apiErrors.guestHouseholdWasNotFound","guests:apiErrors.guestIdentityAnonymized","guests:apiErrors.guestIdentityAnonymizedByRetentionPolicy","guests:apiErrors.guestInboxCursorDoesNotMatchThisVenue","guests:apiErrors.guestInboxCursorIsInvalidOrExpired","guests:apiErrors.guestInboxReplySent","guests:apiErrors.guestLoyaltyAccountWasNotFound","guests:apiErrors.guestLoyaltyBalanceAdjusted","guests:apiErrors.guestLoyaltyCursorDoesNotMatchThisGuest","guests:apiErrors.guestLoyaltyCursorIsInvalidOrExpired","guests:apiErrors.guestLoyaltyDataChangedReloadBeforeContinuing","guests:apiErrors.guestLoyaltyPointsEarned","guests:apiErrors.guestLoyaltyProgramWasNotFound","guests:apiErrors.guestLoyaltyTierChanged","guests:apiErrors.guestMessageCursorDoesNotMatchThisConversation","guests:apiErrors.guestMessageCursorIsInvalidOrExpired","guests:apiErrors.guestMessageReceived","guests:apiErrors.guestMessageWasNotFound","guests:apiErrors.guestNoteAdded","guests:apiErrors.guestNoteChangedReloadItBeforeSavingAgain","guests:apiErrors.guestNotePolicyClassIsNotPermitted","guests:apiErrors.guestNoteRemoved","guests:apiErrors.guestNoteUpdated","guests:apiErrors.guestNoteWasNotFound","guests:apiErrors.guestPersonalInformationSearchIsNotPermitted","guests:apiErrors.guestPortalHistoryCursorDoesNotMatchThisProfile","guests:apiErrors.guestPortalHistoryCursorIsInvalidOrExpired","guests:apiErrors.guestPortalLinksAreUnavailable","guests:apiErrors.guestPortalProfileWasNotFound","guests:apiErrors.guestPortalSessionIsInvalidOrExpired","guests:apiErrors.guestPreferenceChangedReloadItBeforeSavingAgain","guests:apiErrors.guestPreferenceRemoved","guests:apiErrors.guestPreferenceUpdated","guests:apiErrors.guestPreferenceWasNotFound","guests:apiErrors.guestPrivacyCaseWasNotFound","guests:apiErrors.guestPrivacyRequestOpened","guests:apiErrors.guestProfileArchived","guests:apiErrors.guestProfileChangedReloadItBeforeSavingAgain","guests:apiErrors.guestProfileCreated","guests:apiErrors.guestProfileRestored","guests:apiErrors.guestProfileUpdated","guests:apiErrors.guestProviderWebhookCouldNotBeVerified","guests:apiErrors.guestRemovedFromHousehold","guests:apiErrors.guestSafetyContextAdded","guests:apiErrors.guestSafetyContextChangedReloadItBeforeSavingAgain","guests:apiErrors.guestSafetyContextRemoved","guests:apiErrors.guestSafetyContextUpdated","guests:apiErrors.guestSafetyContextWasNotFound","guests:apiErrors.guestSearchQueryIsNotSpecificEnough","guests:apiErrors.guestSegmentChangedReloadBeforeSavingAgain","guests:apiErrors.guestSegmentCursorDoesNotMatchThisSegment","guests:apiErrors.guestSegmentCursorIsInvalidOrExpired","guests:apiErrors.guestSegmentWasNotFound","guests:apiErrors.guestTagWasNotFound","guests:apiErrors.guestVenueProfileWasNotFound","guests:apiErrors.householdMembersMustBelongToTheSameOrganization","guests:apiErrors.loyaltyProgramCurrencyMustMatchTheVenueCurrency","guests:apiErrors.marketingTemplatesRequireAnUnsubscribeURL","guests:apiErrors.messageDeliveryFailedCheckTheProviderConfigurationAndRetryStatus","guests:apiErrors.oneOfTheGuestProfilesChangedReviewTheMergeAgain","guests:apiErrors.oneOrMoreLoyaltyTiersDoNotBelongToThisVenue","guests:apiErrors.oneOrMoreSegmentTagsDoNotBelongToThisVenue","guests:apiErrors.onlyActiveGuestIdentitiesCanBeMerged","guests:apiErrors.onlyActiveGuestProfilesCanBeAddedToAHousehold","guests:apiErrors.outboundProviderEndpointsAreServerManaged","guests:apiErrors.outboundProviderProfileIsUnavailableOrOutOfScope","guests:apiErrors.preferenceAddedValue","guests:apiErrors.protectedGuestDataCouldNotBeDecrypted","guests:apiErrors.protectedGuestDataIsUnavailable","guests:apiErrors.protectedGuestSearchIsUnavailable","guests:apiErrors.tagAssignedValue","guests:apiErrors.tagRemovedValue","guests:apiErrors.templateContainsAnUnsupportedPlaceholder","guests:apiErrors.theActiveZeroPointBaseTierCannotBeRemoved","guests:apiErrors.theAdjustmentWouldCreateANegativePointsBalance","guests:apiErrors.theIdentitiesBelongToDifferentHouseholdsResolveTheHouseholdRelationshipBeforeMerging","guests:apiErrors.thePrivacyCaseChangedReloadItBeforeContinuing","guests:apiErrors.theReplyCouldNotBeDelivered","guests:apiErrors.theSelectedProfilesAlreadyBelongToTheSameIdentity","guests:apiErrors.theTargetGuestProfileWasNotFoundInThisOrganization","guests:apiErrors.thisGuestAlreadyBelongsToAHousehold","guests:apiErrors.thisIdentityIsUsedByMoreThanOneVenueAndRequiresOrganizationMergePermission","guests:apiErrors.thisSafetyContextAlreadyExistsForTheGuest","guests:apiErrors.transferThePrimaryRoleBeforeRemovingThisMember","guests:apiErrors.useThePrimaryTransferActionToAssignANewPrimary","guests:apiErrors.venueWasNotFound","guests:apiErrors.visitedWithinDaysMustExceedNotVisitedForDaysWhenBothAreSet"],"careers":["staff:apiErrors.aHiredStageMustBeConfiguredBeforeConversion","staff:apiErrors.acceptedOfferConvertedToWorker","staff:apiErrors.amountCurrencyAndPeriodMustBeProvidedTogether","staff:apiErrors.anAcceptedOfferIsRequiredBeforeHireConversion","staff:apiErrors.anOfferCanOnlyBeCreatedOnceForAnActiveApplication","staff:apiErrors.anOfferStageMustBeConfiguredBeforeSendingOffers","staff:apiErrors.applicationIsAlreadyInThisStage","staff:apiErrors.archivedRequisitionsCannotBeChanged","staff:apiErrors.cancelledInterviewsCannotReceiveScorecards","staff:apiErrors.candidateApplicationSubmitted","staff:apiErrors.candidateSessionIsInvalidOrExpired","staff:apiErrors.careerPostingWasNotFound","staff:apiErrors.closedJobPostingsCannotBeChanged","staff:apiErrors.completedInterviewsCannotBeRescheduled","staff:apiErrors.employeeNumberAlreadyExistsForThisLegalEntity","staff:apiErrors.employeeNumberOrConvertedWorkforceRecordAlreadyExists","staff:apiErrors.headcountCannotBeLowerThanFilledPositions","staff:apiErrors.interviewWindowOrVenueWallTimeEvidenceIsInvalid","staff:apiErrors.jobPostingCannotEnterTheRequestedState","staff:apiErrors.offerExpiryMustBeInTheFuture","staff:apiErrors.offerMustBeACurrentDraftForAnActiveApplication","staff:apiErrors.offerOrEmployeeNumberAlreadyExists","staff:apiErrors.offerSentToCandidate","staff:apiErrors.onlyActiveApplicationsCanMoveBetweenStages","staff:apiErrors.onlyAnActiveApplicationCanBeWithdrawn","staff:apiErrors.onlyAnAssignedInterviewerCanSubmitThisScorecard","staff:apiErrors.onlyDraftOrSentOffersCanBeWithdrawn","staff:apiErrors.recruitingCursorIsInvalidForThisRequest","staff:apiErrors.recruitingRecordWasNotFound","staff:apiErrors.recruitingStagesMustBeConfiguredBeforeOpeningARequisition","staff:apiErrors.recruitingValueMustBeSelectedThroughBoundedSearch","staff:apiErrors.requisitionCannotEnterTheRequestedState","staff:apiErrors.requisitionCodeOrPublicPostingURLAlreadyExists","staff:apiErrors.requisitionLifecycleCursorIsInvalidForThisRequest","staff:apiErrors.requisitionReferencesMustBelongToTheSameOrganization","staff:apiErrors.reviewTheCurrentCandidatePrivacyNoticeBeforeApplying","staff:apiErrors.thisApplicationHasAlreadyBeenConverted","staff:apiErrors.thisOfferCanNoLongerBeAcceptedOrDeclined","staff:apiErrors.thisRecordChangedWhileYouWereEditingIt","staff:apiErrors.thisRoleIsNotAcceptingApplications","staff:apiErrors.tooManyCandidatePortalRequests","staff:apiErrors.workforceHCMIsNotAvailable"],"candidate-portal":["staff:apiErrors.aHiredStageMustBeConfiguredBeforeConversion","staff:apiErrors.acceptedOfferConvertedToWorker","staff:apiErrors.amountCurrencyAndPeriodMustBeProvidedTogether","staff:apiErrors.anAcceptedOfferIsRequiredBeforeHireConversion","staff:apiErrors.anOfferCanOnlyBeCreatedOnceForAnActiveApplication","staff:apiErrors.anOfferStageMustBeConfiguredBeforeSendingOffers","staff:apiErrors.applicationIsAlreadyInThisStage","staff:apiErrors.archivedRequisitionsCannotBeChanged","staff:apiErrors.cancelledInterviewsCannotReceiveScorecards","staff:apiErrors.candidateApplicationSubmitted","staff:apiErrors.candidateSessionIsInvalidOrExpired","staff:apiErrors.careerPostingWasNotFound","staff:apiErrors.closedJobPostingsCannotBeChanged","staff:apiErrors.completedInterviewsCannotBeRescheduled","staff:apiErrors.employeeNumberAlreadyExistsForThisLegalEntity","staff:apiErrors.employeeNumberOrConvertedWorkforceRecordAlreadyExists","staff:apiErrors.headcountCannotBeLowerThanFilledPositions","staff:apiErrors.interviewWindowOrVenueWallTimeEvidenceIsInvalid","staff:apiErrors.jobPostingCannotEnterTheRequestedState","staff:apiErrors.offerExpiryMustBeInTheFuture","staff:apiErrors.offerMustBeACurrentDraftForAnActiveApplication","staff:apiErrors.offerOrEmployeeNumberAlreadyExists","staff:apiErrors.offerSentToCandidate","staff:apiErrors.onlyActiveApplicationsCanMoveBetweenStages","staff:apiErrors.onlyAnActiveApplicationCanBeWithdrawn","staff:apiErrors.onlyAnAssignedInterviewerCanSubmitThisScorecard","staff:apiErrors.onlyDraftOrSentOffersCanBeWithdrawn","staff:apiErrors.recruitingCursorIsInvalidForThisRequest","staff:apiErrors.recruitingRecordWasNotFound","staff:apiErrors.recruitingStagesMustBeConfiguredBeforeOpeningARequisition","staff:apiErrors.recruitingValueMustBeSelectedThroughBoundedSearch","staff:apiErrors.requisitionCannotEnterTheRequestedState","staff:apiErrors.requisitionCodeOrPublicPostingURLAlreadyExists","staff:apiErrors.requisitionLifecycleCursorIsInvalidForThisRequest","staff:apiErrors.requisitionReferencesMustBelongToTheSameOrganization","staff:apiErrors.reviewTheCurrentCandidatePrivacyNoticeBeforeApplying","staff:apiErrors.thisApplicationHasAlreadyBeenConverted","staff:apiErrors.thisOfferCanNoLongerBeAcceptedOrDeclined","staff:apiErrors.thisRecordChangedWhileYouWereEditingIt","staff:apiErrors.thisRoleIsNotAcceptingApplications","staff:apiErrors.tooManyCandidatePortalRequests","staff:apiErrors.workforceHCMIsNotAvailable"],"audit":["audit:apiErrors.aUDITKMSSECRETKEYIDIsNotConfigured","audit:apiErrors.activeInboundAuditSourceNotFound","audit:apiErrors.activeInboundAuditSourceRequired","audit:apiErrors.auditPublicEvidenceMustBeAnObject","audit:apiErrors.forbiddenAuditEvidenceKeyAtValue","audit:apiErrors.inboundAuditSignatureIsInvalidOrExpired","audit:apiErrors.inboundAuditSourceNotFound","audit:apiErrors.kMSDidNotReturnDecryptedSecretMaterial","audit:apiErrors.kMSDidNotReturnEncryptedSecretEvidence","audit:apiErrors.networkFingerprintFieldCollisionAtValueValue","audit:apiErrors.networkIdentifierAtValueValueMustBeANonEmptyString","audit:apiErrors.networkIdentifiersCannotBeIngestedWithoutAStrongFingerprintKey","audit:apiErrors.oCSFBatchMustContainBetween1And500Events","audit:apiErrors.oCSFEventClassIsNotAllowedForThisSource","audit:apiErrors.oCSFEventMustBeAnObject","audit:apiErrors.oCSFNDJSONContainsInvalidJSON","audit:apiErrors.signedTelemetryRequestWasAlreadyProcessed","audit:apiErrors.telemetryBatchOrdinalsMustBeUnique","audit:apiErrors.telemetryEventPayloadHashDoesNotMatchNormalizedBytes","audit:apiErrors.thirdPartyScopeMustComeFromTheSourceBindingNotValueValue","audit:apiErrors.unknownAuditEventIdentity","audit:apiErrors.unknownPublicEvidenceKeyForValue"],"workforce":["staff:apiErrors.integrationCannotMoveFromValueToValue","staff:apiErrors.integrationWebhookPayloadExceedsTheAcceptedLimit","staff:apiErrors.integrationWebhookSignatureOrTimestampIsInvalid","staff:apiErrors.tooManyWorkforceIntegrationWebhookRequests","staff:apiErrors.webhookEventIDWasReusedWithADifferentSignedPayload","staff:apiErrors.workforceHCMIsNotAvailable","staff:apiErrors.workforceIntegrationChangedSinceItWasLoaded","staff:apiErrors.workforceIntegrationCursorIsInvalidForThisFilter","staff:apiErrors.workforceIntegrationRecordWasNotFound"],"communications":["guests:apiErrors.aGuestProfileCannotBeMergedIntoItself","guests:apiErrors.aGuestTagWithThisNameAlreadyExists","guests:apiErrors.activityRecorded","guests:apiErrors.anActiveGuestLoyaltyProgramIsRequired","guests:apiErrors.anActiveProviderIsRequiredForThisChannel","guests:apiErrors.anActiveProviderIsRequiredToReply","guests:apiErrors.anActiveZeroPointBaseTierIsRequired","guests:apiErrors.anApprovedAccessOrPortabilityCaseIsRequiredForDataExport","guests:apiErrors.anApprovedErasureCaseIsRequiredForAnonymization","guests:apiErrors.anonymizedLoyaltyAdjustment","guests:apiErrors.atLeastOneSegmentCriterionIsRequired","guests:apiErrors.campaignProviderDoesNotMatchTheVenueAndChannel","guests:apiErrors.campaignSegmentIsNotAvailable","guests:apiErrors.campaignTemplateIsNotAvailable","guests:apiErrors.campaignTemplateMustBeActiveBeforePreparation","guests:apiErrors.consentPurposeAndStatusMustBeConfiguredTogether","guests:apiErrors.conversationContactIsUnavailable","guests:apiErrors.deliveryEventStatusIsNotSupported","guests:apiErrors.duplicateGuestIdentityMerged","guests:apiErrors.emailTemplatesRequireASubject","guests:apiErrors.guestActivityCursorIsInvalidOrExpired","guests:apiErrors.guestAddedToHousehold","guests:apiErrors.guestCampaignChangedRefreshBeforeRetrying","guests:apiErrors.guestCampaignCursorDoesNotMatchThisVenue","guests:apiErrors.guestCampaignCursorIsInvalidOrExpired","guests:apiErrors.guestCampaignMessageSent","guests:apiErrors.guestCampaignRecipientCursorDoesNotMatchThisCampaign","guests:apiErrors.guestCampaignRecipientCursorIsInvalidOrExpired","guests:apiErrors.guestCampaignWasNotFound","guests:apiErrors.guestCommunicationAdapterIsNotSupported","guests:apiErrors.guestCommunicationProviderSecretsAreUnavailable","guests:apiErrors.guestCommunicationProviderWasNotFound","guests:apiErrors.guestCommunicationSettingsChangedReloadBeforeSaving","guests:apiErrors.guestCommunicationTemplateWasNotFound","guests:apiErrors.guestConsentPreferenceChanged","guests:apiErrors.guestConsentPreferencesChangedReloadBeforeSavingAgain","guests:apiErrors.guestConversationChangedRefreshBeforeRetrying","guests:apiErrors.guestConversationWasNotFound","guests:apiErrors.guestDataExportGenerated","guests:apiErrors.guestDirectoryCursorDoesNotMatchTheCurrentQuery","guests:apiErrors.guestDirectoryCursorIsInvalidOrExpired","guests:apiErrors.guestGovernanceSettingsChangedRefreshBeforeRetrying","guests:apiErrors.guestHouseholdArchived","guests:apiErrors.guestHouseholdChangedRefreshBeforeRetrying","guests:apiErrors.guestHouseholdCreated","guests:apiErrors.guestHouseholdMemberWasNotFound","guests:apiErrors.guestHouseholdPrimaryChanged","guests:apiErrors.guestHouseholdRestored","guests:apiErrors.guestHouseholdUpdated","guests:apiErrors.guestHouseholdWasNotFound","guests:apiErrors.guestIdentityAnonymized","guests:apiErrors.guestIdentityAnonymizedByRetentionPolicy","guests:apiErrors.guestInboxCursorDoesNotMatchThisVenue","guests:apiErrors.guestInboxCursorIsInvalidOrExpired","guests:apiErrors.guestInboxReplySent","guests:apiErrors.guestLoyaltyAccountWasNotFound","guests:apiErrors.guestLoyaltyBalanceAdjusted","guests:apiErrors.guestLoyaltyCursorDoesNotMatchThisGuest","guests:apiErrors.guestLoyaltyCursorIsInvalidOrExpired","guests:apiErrors.guestLoyaltyDataChangedReloadBeforeContinuing","guests:apiErrors.guestLoyaltyPointsEarned","guests:apiErrors.guestLoyaltyProgramWasNotFound","guests:apiErrors.guestLoyaltyTierChanged","guests:apiErrors.guestMessageCursorDoesNotMatchThisConversation","guests:apiErrors.guestMessageCursorIsInvalidOrExpired","guests:apiErrors.guestMessageReceived","guests:apiErrors.guestMessageWasNotFound","guests:apiErrors.guestNoteAdded","guests:apiErrors.guestNoteChangedReloadItBeforeSavingAgain","guests:apiErrors.guestNotePolicyClassIsNotPermitted","guests:apiErrors.guestNoteRemoved","guests:apiErrors.guestNoteUpdated","guests:apiErrors.guestNoteWasNotFound","guests:apiErrors.guestPersonalInformationSearchIsNotPermitted","guests:apiErrors.guestPortalHistoryCursorDoesNotMatchThisProfile","guests:apiErrors.guestPortalHistoryCursorIsInvalidOrExpired","guests:apiErrors.guestPortalLinksAreUnavailable","guests:apiErrors.guestPortalProfileWasNotFound","guests:apiErrors.guestPortalSessionIsInvalidOrExpired","guests:apiErrors.guestPreferenceChangedReloadItBeforeSavingAgain","guests:apiErrors.guestPreferenceRemoved","guests:apiErrors.guestPreferenceUpdated","guests:apiErrors.guestPreferenceWasNotFound","guests:apiErrors.guestPrivacyCaseWasNotFound","guests:apiErrors.guestPrivacyRequestOpened","guests:apiErrors.guestProfileArchived","guests:apiErrors.guestProfileChangedReloadItBeforeSavingAgain","guests:apiErrors.guestProfileCreated","guests:apiErrors.guestProfileRestored","guests:apiErrors.guestProfileUpdated","guests:apiErrors.guestProviderWebhookCouldNotBeVerified","guests:apiErrors.guestRemovedFromHousehold","guests:apiErrors.guestSafetyContextAdded","guests:apiErrors.guestSafetyContextChangedReloadItBeforeSavingAgain","guests:apiErrors.guestSafetyContextRemoved","guests:apiErrors.guestSafetyContextUpdated","guests:apiErrors.guestSafetyContextWasNotFound","guests:apiErrors.guestSearchQueryIsNotSpecificEnough","guests:apiErrors.guestSegmentChangedReloadBeforeSavingAgain","guests:apiErrors.guestSegmentCursorDoesNotMatchThisSegment","guests:apiErrors.guestSegmentCursorIsInvalidOrExpired","guests:apiErrors.guestSegmentWasNotFound","guests:apiErrors.guestTagWasNotFound","guests:apiErrors.guestVenueProfileWasNotFound","guests:apiErrors.householdMembersMustBelongToTheSameOrganization","guests:apiErrors.loyaltyProgramCurrencyMustMatchTheVenueCurrency","guests:apiErrors.marketingTemplatesRequireAnUnsubscribeURL","guests:apiErrors.messageDeliveryFailedCheckTheProviderConfigurationAndRetryStatus","guests:apiErrors.oneOfTheGuestProfilesChangedReviewTheMergeAgain","guests:apiErrors.oneOrMoreLoyaltyTiersDoNotBelongToThisVenue","guests:apiErrors.oneOrMoreSegmentTagsDoNotBelongToThisVenue","guests:apiErrors.onlyActiveGuestIdentitiesCanBeMerged","guests:apiErrors.onlyActiveGuestProfilesCanBeAddedToAHousehold","guests:apiErrors.outboundProviderEndpointsAreServerManaged","guests:apiErrors.outboundProviderProfileIsUnavailableOrOutOfScope","guests:apiErrors.preferenceAddedValue","guests:apiErrors.protectedGuestDataCouldNotBeDecrypted","guests:apiErrors.protectedGuestDataIsUnavailable","guests:apiErrors.protectedGuestSearchIsUnavailable","guests:apiErrors.tagAssignedValue","guests:apiErrors.tagRemovedValue","guests:apiErrors.templateContainsAnUnsupportedPlaceholder","guests:apiErrors.theActiveZeroPointBaseTierCannotBeRemoved","guests:apiErrors.theAdjustmentWouldCreateANegativePointsBalance","guests:apiErrors.theIdentitiesBelongToDifferentHouseholdsResolveTheHouseholdRelationshipBeforeMerging","guests:apiErrors.thePrivacyCaseChangedReloadItBeforeContinuing","guests:apiErrors.theReplyCouldNotBeDelivered","guests:apiErrors.theSelectedProfilesAlreadyBelongToTheSameIdentity","guests:apiErrors.theTargetGuestProfileWasNotFoundInThisOrganization","guests:apiErrors.thisGuestAlreadyBelongsToAHousehold","guests:apiErrors.thisIdentityIsUsedByMoreThanOneVenueAndRequiresOrganizationMergePermission","guests:apiErrors.thisSafetyContextAlreadyExistsForTheGuest","guests:apiErrors.transferThePrimaryRoleBeforeRemovingThisMember","guests:apiErrors.useThePrimaryTransferActionToAssignANewPrimary","guests:apiErrors.venueWasNotFound","guests:apiErrors.visitedWithinDaysMustExceedNotVisitedForDaysWhenBothAreSet"],"payments":["finance:apiErrors.capturedPaymentAttemptCannotTransition","finance:apiErrors.manualCardConfirmationRequiresAnEnabledManualTenderAndReason","finance:apiErrors.orderCannotAcceptPayments","finance:apiErrors.paymentAttemptCannotBeCanceled","finance:apiErrors.paymentAttemptIsAlreadyResolved","finance:apiErrors.paymentAttemptNotFound","finance:apiErrors.paymentProviderEventWasReusedWithADifferentPayload","finance:apiErrors.paymentTenderIsUnavailable","finance:apiErrors.paymentWebhookIsStale","finance:apiErrors.paymentWebhookIsUnavailable","finance:apiErrors.paymentWebhookSignatureIsInvalid","finance:apiErrors.thisTenderRequiresAnOpenRegister"],"banking":["finance:apiErrors.aBankSyncIsAlreadyQueuedOrRunning","finance:apiErrors.anActiveBankLinkSessionAlreadyExists","finance:apiErrors.bankConnectionCannotStartALinkSession","finance:apiErrors.bankConnectionIsNotReadyForSync","finance:apiErrors.bankConnectionWasNotFound","finance:apiErrors.bankLinkSessionChanged","finance:apiErrors.bankLinkSessionIsStaleOrExpired","finance:apiErrors.bankProviderCredentialsAreInvalid","finance:apiErrors.bankProviderCredentialsAreUnavailable","finance:apiErrors.bankProviderResponseIsInvalid","finance:apiErrors.bankProviderTransportOutcomeIsUnknown","finance:apiErrors.bankProviderWebhookCouldNotBeVerified","finance:apiErrors.bankSyncRunWasNotFound","finance:apiErrors.bankWebhookIdentifierWasReusedWithAnotherBody","finance:apiErrors.bankWebhookJSONIsInvalid","finance:apiErrors.financeBankTokenKMSKeyIsUnavailable","finance:apiErrors.kMSDidNotReturnDecryptedBankTokenMaterial","finance:apiErrors.kMSDidNotReturnEncryptedBankTokenMaterial","finance:apiErrors.plaidCredentialsAreInvalid","finance:apiErrors.plaidItemTokenIsBankProviderUnavailable","finance:apiErrors.plaidSyncCouldNotStabilize","finance:apiErrors.plaidSyncExceededTheBoundedPageLimit","finance:apiErrors.plaidWebhookVerificationKeyIsInvalid","finance:apiErrors.providerCurrencyIsInvalid","finance:apiErrors.rawBankWebhookBodyIsRequired","finance:apiErrors.saltEdgeCallbackPublicKeyIsBankProviderUnavailable","finance:apiErrors.saltEdgeConnectionIdentifierIsBankProviderUnavailable","finance:apiErrors.saltEdgeCredentialsAreInvalid","finance:apiErrors.saltEdgeLinkCompletionIsCallbackOwned","finance:apiErrors.saltEdgeRequestFailedWithHTTPValue","finance:apiErrors.saltEdgeSyncExceededTheBoundedPageLimit","finance:apiErrors.statementImportsDoNotUseProviderLinkSessions","finance:apiErrors.valueIsInvalid","finance:apiErrors.valueIsMissing"]},"x-hallify-error-status-keys":{"400":"errors:http.badRequest","401":"errors:http.unauthorized","403":"errors:http.forbidden","404":"errors:http.notFound","405":"errors:http.methodNotAllowed","408":"errors:http.requestTimeout","409":"errors:http.conflict","410":"errors:http.gone","412":"errors:http.preconditionFailed","413":"errors:http.payloadTooLarge","415":"errors:http.unsupportedMediaType","422":"errors:http.unprocessableEntity","429":"errors:http.tooManyRequests","500":"errors:http.internalServerError","501":"errors:http.notImplemented","502":"errors:http.badGateway","503":"errors:http.serviceUnavailable","504":"errors:http.gatewayTimeout","default":"errors:http.failure"},"x-hallify-message-keys":["audit:apiErrors.aUDITKMSSECRETKEYIDIsNotConfigured","audit:apiErrors.activeInboundAuditSourceNotFound","audit:apiErrors.activeInboundAuditSourceRequired","audit:apiErrors.auditPublicEvidenceMustBeAnObject","audit:apiErrors.forbiddenAuditEvidenceKeyAtValue","audit:apiErrors.inboundAuditSignatureIsInvalidOrExpired","audit:apiErrors.inboundAuditSourceNotFound","audit:apiErrors.kMSDidNotReturnDecryptedSecretMaterial","audit:apiErrors.kMSDidNotReturnEncryptedSecretEvidence","audit:apiErrors.networkFingerprintFieldCollisionAtValueValue","audit:apiErrors.networkIdentifierAtValueValueMustBeANonEmptyString","audit:apiErrors.networkIdentifiersCannotBeIngestedWithoutAStrongFingerprintKey","audit:apiErrors.oCSFBatchMustContainBetween1And500Events","audit:apiErrors.oCSFEventClassIsNotAllowedForThisSource","audit:apiErrors.oCSFEventMustBeAnObject","audit:apiErrors.oCSFNDJSONContainsInvalidJSON","audit:apiErrors.signedTelemetryRequestWasAlreadyProcessed","audit:apiErrors.telemetryBatchOrdinalsMustBeUnique","audit:apiErrors.telemetryEventPayloadHashDoesNotMatchNormalizedBytes","audit:apiErrors.thirdPartyScopeMustComeFromTheSourceBindingNotValueValue","audit:apiErrors.unknownAuditEventIdentity","audit:apiErrors.unknownPublicEvidenceKeyForValue","errors:apiErrors.authenticatedActorIsRequiredForPrincipalScopedIdempotency","errors:apiErrors.currencyReferenceDatasetIsNotAvailable","errors:apiErrors.geoReferenceDatasetIsNotAvailable","errors:apiErrors.idempotencyKeyCannotBeEmpty","errors:apiErrors.idempotencyKeyCannotExceedValueCharacters","errors:apiErrors.idempotencyKeyHeaderIsRequiredForThisOperation","errors:apiErrors.oneOrMoreReferenceCodesAreNotSupported","errors:apiErrors.platformScopeRequiresOrganizationIdOrALegacyVenueId","errors:apiErrors.venuePlatformScopeMappingIsInconsistent","errors:http.badGateway","errors:http.badRequest","errors:http.conflict","errors:http.failure","errors:http.forbidden","errors:http.gatewayTimeout","errors:http.gone","errors:http.internalServerError","errors:http.methodNotAllowed","errors:http.notFound","errors:http.notImplemented","errors:http.payloadTooLarge","errors:http.preconditionFailed","errors:http.requestTimeout","errors:http.serviceUnavailable","errors:http.tooManyRequests","errors:http.unauthorized","errors:http.unprocessableEntity","errors:http.unsupportedMediaType","errors:idempotency.inProgress","errors:idempotency.notReady","errors:idempotency.payloadMismatch","errors:idempotency.scopeIncomplete","finance:apiErrors.aBankSyncIsAlreadyQueuedOrRunning","finance:apiErrors.anActiveBankLinkSessionAlreadyExists","finance:apiErrors.bankConnectionCannotStartALinkSession","finance:apiErrors.bankConnectionIsNotReadyForSync","finance:apiErrors.bankConnectionWasNotFound","finance:apiErrors.bankLinkSessionChanged","finance:apiErrors.bankLinkSessionIsStaleOrExpired","finance:apiErrors.bankProviderCredentialsAreInvalid","finance:apiErrors.bankProviderCredentialsAreUnavailable","finance:apiErrors.bankProviderResponseIsInvalid","finance:apiErrors.bankProviderTransportOutcomeIsUnknown","finance:apiErrors.bankProviderWebhookCouldNotBeVerified","finance:apiErrors.bankSyncRunWasNotFound","finance:apiErrors.bankWebhookIdentifierWasReusedWithAnotherBody","finance:apiErrors.bankWebhookJSONIsInvalid","finance:apiErrors.capturedPaymentAttemptCannotTransition","finance:apiErrors.financeBankTokenKMSKeyIsUnavailable","finance:apiErrors.kMSDidNotReturnDecryptedBankTokenMaterial","finance:apiErrors.kMSDidNotReturnEncryptedBankTokenMaterial","finance:apiErrors.manualCardConfirmationRequiresAnEnabledManualTenderAndReason","finance:apiErrors.orderCannotAcceptPayments","finance:apiErrors.paymentAttemptCannotBeCanceled","finance:apiErrors.paymentAttemptIsAlreadyResolved","finance:apiErrors.paymentAttemptNotFound","finance:apiErrors.paymentProviderEventWasReusedWithADifferentPayload","finance:apiErrors.paymentTenderIsUnavailable","finance:apiErrors.paymentWebhookIsStale","finance:apiErrors.paymentWebhookIsUnavailable","finance:apiErrors.paymentWebhookSignatureIsInvalid","finance:apiErrors.plaidCredentialsAreInvalid","finance:apiErrors.plaidItemTokenIsBankProviderUnavailable","finance:apiErrors.plaidSyncCouldNotStabilize","finance:apiErrors.plaidSyncExceededTheBoundedPageLimit","finance:apiErrors.plaidWebhookVerificationKeyIsInvalid","finance:apiErrors.providerCurrencyIsInvalid","finance:apiErrors.rawBankWebhookBodyIsRequired","finance:apiErrors.saltEdgeCallbackPublicKeyIsBankProviderUnavailable","finance:apiErrors.saltEdgeConnectionIdentifierIsBankProviderUnavailable","finance:apiErrors.saltEdgeCredentialsAreInvalid","finance:apiErrors.saltEdgeLinkCompletionIsCallbackOwned","finance:apiErrors.saltEdgeRequestFailedWithHTTPValue","finance:apiErrors.saltEdgeSyncExceededTheBoundedPageLimit","finance:apiErrors.statementImportsDoNotUseProviderLinkSessions","finance:apiErrors.thisTenderRequiresAnOpenRegister","finance:apiErrors.valueIsInvalid","finance:apiErrors.valueIsMissing","guests:apiErrors.aGuestProfileCannotBeMergedIntoItself","guests:apiErrors.aGuestTagWithThisNameAlreadyExists","guests:apiErrors.activityRecorded","guests:apiErrors.anActiveGuestLoyaltyProgramIsRequired","guests:apiErrors.anActiveProviderIsRequiredForThisChannel","guests:apiErrors.anActiveProviderIsRequiredToReply","guests:apiErrors.anActiveZeroPointBaseTierIsRequired","guests:apiErrors.anApprovedAccessOrPortabilityCaseIsRequiredForDataExport","guests:apiErrors.anApprovedErasureCaseIsRequiredForAnonymization","guests:apiErrors.anonymizedLoyaltyAdjustment","guests:apiErrors.atLeastOneSegmentCriterionIsRequired","guests:apiErrors.campaignProviderDoesNotMatchTheVenueAndChannel","guests:apiErrors.campaignSegmentIsNotAvailable","guests:apiErrors.campaignTemplateIsNotAvailable","guests:apiErrors.campaignTemplateMustBeActiveBeforePreparation","guests:apiErrors.consentPurposeAndStatusMustBeConfiguredTogether","guests:apiErrors.conversationContactIsUnavailable","guests:apiErrors.deliveryEventStatusIsNotSupported","guests:apiErrors.duplicateGuestIdentityMerged","guests:apiErrors.emailTemplatesRequireASubject","guests:apiErrors.guestActivityCursorIsInvalidOrExpired","guests:apiErrors.guestAddedToHousehold","guests:apiErrors.guestCampaignChangedRefreshBeforeRetrying","guests:apiErrors.guestCampaignCursorDoesNotMatchThisVenue","guests:apiErrors.guestCampaignCursorIsInvalidOrExpired","guests:apiErrors.guestCampaignMessageSent","guests:apiErrors.guestCampaignRecipientCursorDoesNotMatchThisCampaign","guests:apiErrors.guestCampaignRecipientCursorIsInvalidOrExpired","guests:apiErrors.guestCampaignWasNotFound","guests:apiErrors.guestCommunicationAdapterIsNotSupported","guests:apiErrors.guestCommunicationProviderSecretsAreUnavailable","guests:apiErrors.guestCommunicationProviderWasNotFound","guests:apiErrors.guestCommunicationSettingsChangedReloadBeforeSaving","guests:apiErrors.guestCommunicationTemplateWasNotFound","guests:apiErrors.guestConsentPreferenceChanged","guests:apiErrors.guestConsentPreferencesChangedReloadBeforeSavingAgain","guests:apiErrors.guestConversationChangedRefreshBeforeRetrying","guests:apiErrors.guestConversationWasNotFound","guests:apiErrors.guestDataExportGenerated","guests:apiErrors.guestDirectoryCursorDoesNotMatchTheCurrentQuery","guests:apiErrors.guestDirectoryCursorIsInvalidOrExpired","guests:apiErrors.guestGovernanceSettingsChangedRefreshBeforeRetrying","guests:apiErrors.guestHouseholdArchived","guests:apiErrors.guestHouseholdChangedRefreshBeforeRetrying","guests:apiErrors.guestHouseholdCreated","guests:apiErrors.guestHouseholdMemberWasNotFound","guests:apiErrors.guestHouseholdPrimaryChanged","guests:apiErrors.guestHouseholdRestored","guests:apiErrors.guestHouseholdUpdated","guests:apiErrors.guestHouseholdWasNotFound","guests:apiErrors.guestIdentityAnonymized","guests:apiErrors.guestIdentityAnonymizedByRetentionPolicy","guests:apiErrors.guestInboxCursorDoesNotMatchThisVenue","guests:apiErrors.guestInboxCursorIsInvalidOrExpired","guests:apiErrors.guestInboxReplySent","guests:apiErrors.guestLoyaltyAccountWasNotFound","guests:apiErrors.guestLoyaltyBalanceAdjusted","guests:apiErrors.guestLoyaltyCursorDoesNotMatchThisGuest","guests:apiErrors.guestLoyaltyCursorIsInvalidOrExpired","guests:apiErrors.guestLoyaltyDataChangedReloadBeforeContinuing","guests:apiErrors.guestLoyaltyPointsEarned","guests:apiErrors.guestLoyaltyProgramWasNotFound","guests:apiErrors.guestLoyaltyTierChanged","guests:apiErrors.guestMessageCursorDoesNotMatchThisConversation","guests:apiErrors.guestMessageCursorIsInvalidOrExpired","guests:apiErrors.guestMessageReceived","guests:apiErrors.guestMessageWasNotFound","guests:apiErrors.guestNoteAdded","guests:apiErrors.guestNoteChangedReloadItBeforeSavingAgain","guests:apiErrors.guestNotePolicyClassIsNotPermitted","guests:apiErrors.guestNoteRemoved","guests:apiErrors.guestNoteUpdated","guests:apiErrors.guestNoteWasNotFound","guests:apiErrors.guestPersonalInformationSearchIsNotPermitted","guests:apiErrors.guestPortalHistoryCursorDoesNotMatchThisProfile","guests:apiErrors.guestPortalHistoryCursorIsInvalidOrExpired","guests:apiErrors.guestPortalLinksAreUnavailable","guests:apiErrors.guestPortalProfileWasNotFound","guests:apiErrors.guestPortalSessionIsInvalidOrExpired","guests:apiErrors.guestPreferenceChangedReloadItBeforeSavingAgain","guests:apiErrors.guestPreferenceRemoved","guests:apiErrors.guestPreferenceUpdated","guests:apiErrors.guestPreferenceWasNotFound","guests:apiErrors.guestPrivacyCaseWasNotFound","guests:apiErrors.guestPrivacyRequestOpened","guests:apiErrors.guestProfileArchived","guests:apiErrors.guestProfileChangedReloadItBeforeSavingAgain","guests:apiErrors.guestProfileCreated","guests:apiErrors.guestProfileRestored","guests:apiErrors.guestProfileUpdated","guests:apiErrors.guestProviderWebhookCouldNotBeVerified","guests:apiErrors.guestRemovedFromHousehold","guests:apiErrors.guestSafetyContextAdded","guests:apiErrors.guestSafetyContextChangedReloadItBeforeSavingAgain","guests:apiErrors.guestSafetyContextRemoved","guests:apiErrors.guestSafetyContextUpdated","guests:apiErrors.guestSafetyContextWasNotFound","guests:apiErrors.guestSearchQueryIsNotSpecificEnough","guests:apiErrors.guestSegmentChangedReloadBeforeSavingAgain","guests:apiErrors.guestSegmentCursorDoesNotMatchThisSegment","guests:apiErrors.guestSegmentCursorIsInvalidOrExpired","guests:apiErrors.guestSegmentWasNotFound","guests:apiErrors.guestTagWasNotFound","guests:apiErrors.guestVenueProfileWasNotFound","guests:apiErrors.householdMembersMustBelongToTheSameOrganization","guests:apiErrors.loyaltyProgramCurrencyMustMatchTheVenueCurrency","guests:apiErrors.marketingTemplatesRequireAnUnsubscribeURL","guests:apiErrors.messageDeliveryFailedCheckTheProviderConfigurationAndRetryStatus","guests:apiErrors.oneOfTheGuestProfilesChangedReviewTheMergeAgain","guests:apiErrors.oneOrMoreLoyaltyTiersDoNotBelongToThisVenue","guests:apiErrors.oneOrMoreSegmentTagsDoNotBelongToThisVenue","guests:apiErrors.onlyActiveGuestIdentitiesCanBeMerged","guests:apiErrors.onlyActiveGuestProfilesCanBeAddedToAHousehold","guests:apiErrors.outboundProviderEndpointsAreServerManaged","guests:apiErrors.outboundProviderProfileIsUnavailableOrOutOfScope","guests:apiErrors.preferenceAddedValue","guests:apiErrors.protectedGuestDataCouldNotBeDecrypted","guests:apiErrors.protectedGuestDataIsUnavailable","guests:apiErrors.protectedGuestSearchIsUnavailable","guests:apiErrors.tagAssignedValue","guests:apiErrors.tagRemovedValue","guests:apiErrors.templateContainsAnUnsupportedPlaceholder","guests:apiErrors.theActiveZeroPointBaseTierCannotBeRemoved","guests:apiErrors.theAdjustmentWouldCreateANegativePointsBalance","guests:apiErrors.theIdentitiesBelongToDifferentHouseholdsResolveTheHouseholdRelationshipBeforeMerging","guests:apiErrors.thePrivacyCaseChangedReloadItBeforeContinuing","guests:apiErrors.theReplyCouldNotBeDelivered","guests:apiErrors.theSelectedProfilesAlreadyBelongToTheSameIdentity","guests:apiErrors.theTargetGuestProfileWasNotFoundInThisOrganization","guests:apiErrors.thisGuestAlreadyBelongsToAHousehold","guests:apiErrors.thisIdentityIsUsedByMoreThanOneVenueAndRequiresOrganizationMergePermission","guests:apiErrors.thisSafetyContextAlreadyExistsForTheGuest","guests:apiErrors.transferThePrimaryRoleBeforeRemovingThisMember","guests:apiErrors.useThePrimaryTransferActionToAssignANewPrimary","guests:apiErrors.venueWasNotFound","guests:apiErrors.visitedWithinDaysMustExceedNotVisitedForDaysWhenBothAreSet","menu:apiErrors.aBundleComponentCannotBeBilledSafelyThroughThisFixedPriceBundle","menu:apiErrors.aCateringPackageIsOneImmutableFulfillmentPackageUsePartySizeToScaleIt","menu:apiErrors.aDeliberateStaffCredentialIsRequiredToApproveThisEffectiveOpenPrice","menu:apiErrors.aFulfillmentNoteIsRequiredForThisPackage","menu:apiErrors.aModifierOptionCannotBeSelectedMoreThanOnce","menu:apiErrors.aPackageComponentCannotBeBilledSafelyThroughThisPackage","menu:apiErrors.aPackageComponentHasNoImmutablePortionRule","menu:apiErrors.aScaledPackageComponentExceedsPersistenceLimits","menu:apiErrors.aSelectedBuildComponentCannotBeBilledSafelyThroughThisItem","menu:apiErrors.aSelectedBundleComponentIsUnavailableInThisSalesChannel","menu:apiErrors.aSelectedComboComponentCannotBeBilledSafelyThroughThisFixedPriceCombo","menu:apiErrors.aSelectedComponentDoesNotBelongToThisBundleSection","menu:apiErrors.aSelectedComponentIsNotPresentInThePublishedMenu","menu:apiErrors.aSelectedCourseDishCannotBeBilledSafelyThroughThisFixedPriceMenu","menu:apiErrors.aSelectedCourseDoesNotBelongToThisMenu","menu:apiErrors.aSelectedDishDoesNotBelongToThisCourse","menu:apiErrors.aSelectedSectionDoesNotBelongToThisBundle","menu:apiErrors.addOneFixedPriceCourseMenuPerGuestSoEveryGuestKeepsAnIndependentSelection","menu:apiErrors.anAuditNoteIsRequiredForThisOpenPriceItem","menu:apiErrors.approvalCredentialCouldNotBeVerified","menu:apiErrors.approvalCredentialIsTemporarilyLocked","menu:apiErrors.approvalCredentialsAreOnlyAcceptedWhenTheEffectiveOpenPriceRequiresApproval","menu:apiErrors.approvalThresholdMustStayInsideTheAllowedAmountRange","menu:apiErrors.approvalThresholdRequiresApprovalToBeEnabled","menu:apiErrors.atLeastOneGuidedBuildStageIsRequired","menu:apiErrors.buildYourOwnItemsCannotBeOrderedThroughAVersion","menu:apiErrors.bundleComponentValuesAreInvalid","menu:apiErrors.bundleSectionSourceIsInvalid","menu:apiErrors.bundleSectionsAreIncomplete","menu:apiErrors.bundleSectionsAreNotConfiguredForOrdering","menu:apiErrors.bundleSectionsMustUsePublishedCatalogItems","menu:apiErrors.cateringPackageInventoryMustBeModeledByExplicitPackageComponents","menu:apiErrors.cateringPackageModifiersMustBeModeledAsExplicitOptionalPackageComponents","menu:apiErrors.cateringPackagesCanOnlyBeResolvedInsideAServerAuthoritativeScheduledFulfillment","menu:apiErrors.choiceValueCannotBeSelectedMoreThanOnceInGuidedStageValue","menu:apiErrors.choiceValueIsNotAllowedForGuidedStageValue","menu:apiErrors.choiceValueIsNotValidForGuidedStageValue","menu:apiErrors.chooseASellableVersionForThisBundleComponent","menu:apiErrors.chooseASellableVersionForThisComponent","menu:apiErrors.chooseASellableVersionForThisPackageComponent","menu:apiErrors.clientMenuVersionContextIsRequired","menu:apiErrors.combinedBaseAndModifierRecipeExceedsPersistenceLimits","menu:apiErrors.combinedModifierRecipeForIngredientValueExceedsPersistenceLimits","menu:apiErrors.comboComponentChoiceValueHasInvalidQuantityOrUpcharge","menu:apiErrors.comboComponentChoiceValueIsNotAllowedForGroupValue","menu:apiErrors.comboComponentGroupValueMustUseCatalogItems","menu:apiErrors.comboComponentGroupValueRequiresValueValueSelections","menu:apiErrors.comboComponentGroupsAreNotConfigured","menu:apiErrors.componentQuantitiesMustBePositiveAndSupplementsCannotBeNegative","menu:apiErrors.componentSelectionsAreNotSupportedByOpenPriceItems","menu:apiErrors.componentSelectionsAreNotSupportedByThisItemStructure","menu:apiErrors.contactDetailsAreRequiredForThisPackage","menu:apiErrors.courseDishQuantityMustBeAPositiveWholeNumber","menu:apiErrors.courseDishSupplementCannotBeNegative","menu:apiErrors.courseStepsMustUsePublishedCatalogDishes","menu:apiErrors.duplicateComboComponentChoiceValue","menu:apiErrors.duplicateGuidedStageChoiceValue","menu:apiErrors.effectiveUnitPriceAfterModifiersIsOutsideTheAllowedRange","menu:apiErrors.everyBundleSectionAndComponentMustHaveStableCatalogIdentities","menu:apiErrors.fixedBundleContentsCannotBeRemovedOrSubstituted","menu:apiErrors.fixedBundleContentsMustResolveToOneDirectCatalogItem","menu:apiErrors.fixedPackageContentsMustResolveToDirectCatalogItems","menu:apiErrors.fixedPriceCourseServiceStepsAreIncomplete","menu:apiErrors.guidedBuildCannotContainMoreThanValueSelections","menu:apiErrors.guidedBuildCannotContainMoreThanValueStages","menu:apiErrors.guidedBuildDefaultsExceedTheValueSelectionRequestLimit","menu:apiErrors.guidedBuildSelectionCapacityExceedsTheValueSelectionRequestLimit","menu:apiErrors.guidedBuildStageIdValueExceedsValueCharacters","menu:apiErrors.guidedBuildStageIdValueIsDuplicated","menu:apiErrors.guidedBuildStageValueCannotAllowMoreThanValueSelections","menu:apiErrors.guidedBuildStageValueHasAnInvalidSelectionRange","menu:apiErrors.guidedBuildStageValueHasAnUnsupportedSourceType","menu:apiErrors.guidedBuildStageValueNameExceeds255Characters","menu:apiErrors.guidedBuildStageValueRequiredFlagMustMatchItsMinimumSelections","menu:apiErrors.guidedCatalogChoiceIdValueExceedsValueCharacters","menu:apiErrors.guidedCatalogChoiceValueLabelExceeds255Characters","menu:apiErrors.guidedCatalogChoiceValueQuantityMustFitDecimal123AndBeGreaterThanZero","menu:apiErrors.guidedCatalogChoiceValueUpchargeIsInvalid","menu:apiErrors.guidedCatalogStageValueCannotUseASTEPModifierRule","menu:apiErrors.guidedCatalogStageValueChoiceIdValueIsDuplicated","menu:apiErrors.guidedCatalogStageValueDefaultsMustSatisfyItsSelectionRange","menu:apiErrors.guidedCatalogStageValueMustExposeConfiguredChoicesDirectlyInsteadOfSubstitutionRules","menu:apiErrors.guidedCatalogStageValueReferencesUnknownDefaultChoiceValue","menu:apiErrors.guidedCatalogStageValueRequiresAtLeastOneChoice","menu:apiErrors.guidedCatalogStageValueRequiresOneSelectionRule","menu:apiErrors.guidedCatalogStageValueSelectionRuleIsOutOfSync","menu:apiErrors.guidedModifierStageValueCannotContainCatalogChoices","menu:apiErrors.guidedModifierStageValueDoesNotAcceptAVersionOrNestedModifiers","menu:apiErrors.guidedModifierStageValueRequiresExactlyOneSTEPRule","menu:apiErrors.guidedModifierStageValueSelectionRuleIsOutOfSync","menu:apiErrors.guidedStageConfigurationEntriesMustBeObjects","menu:apiErrors.guidedStageModifierOptionsMustBeSelectedThroughComponentSelections","menu:apiErrors.guidedStageValueDefaultsDoNotSatisfyItsSelectionRange","menu:apiErrors.guidedStageValueDoesNotHaveEnoughAvailableOptions","menu:apiErrors.guidedStageValueHasMultipleSelectionRules","menu:apiErrors.guidedStageValueRequiresValueValueSelections","menu:apiErrors.invalidOrderItemIdentity","menu:apiErrors.manualOpenPricePolicyCannotContainASuggestedAmount","menu:apiErrors.maximumAmountMustBeGreaterThanMinimumAmount","menu:apiErrors.measuredItemsCannotBeOrderedThroughAVersion","menu:apiErrors.measuredItemsCannotContainComponentSelections","menu:apiErrors.measuredItemsUseOneAtomicOrderLineChangeTheMeasuredAmountInstead","menu:apiErrors.measuredQuantityIsOnlySupportedByMeasuredItemStructures","menu:apiErrors.measuredQuantityIsOutsideThePublishedRange","menu:apiErrors.measuredQuantityIsRequired","menu:apiErrors.measuredQuantityMustAlignToThePublishedSaleIncrement","menu:apiErrors.measuredRecipeCostForValueIsOutsideSupportedBounds","menu:apiErrors.measuredRecipeCostIsOutsideSupportedBounds","menu:apiErrors.measuredRecipeQuantityForValueIsOutsideInventoryPrecision","menu:apiErrors.menuChangedSinceThisItemWasOpened","menu:apiErrors.menuItemIsCurrentlyUnavailable","menu:apiErrors.menuItemIsNotSellableOnThisChannel","menu:apiErrors.menuModifierOptionIsCurrentlyUnavailable","menu:apiErrors.menuPriceChangedSinceThisItemWasComposed","menu:apiErrors.modifierGroupForGuidedStageValueIsUnavailable","menu:apiErrors.modifierGroupValueCannotBeBothARootModifierAndAGuidedStage","menu:apiErrors.modifierGroupValueCannotBeReusedAcrossGuidedStages","menu:apiErrors.modifierOptionValueCannotBeSelectedMoreThanOnce","menu:apiErrors.modifierSelectionLimit","menu:apiErrors.nestedItemStructuresCannotBeSoldAsAComponent","menu:apiErrors.nestedItemStructuresCannotBeSoldInsideABundle","menu:apiErrors.nestedItemStructuresCannotBeSoldInsideACateringPackage","menu:apiErrors.noPublishedMenuIsActiveForThisChannel","menu:apiErrors.noPublishedMenuVersionIsActiveForThisChannel","menu:apiErrors.oneOrMoreSelectedModifierOptionsAreInvalidForThisPublishedItem","menu:apiErrors.openPriceApprovalAndAuditNoteControlsMustBeExplicit","menu:apiErrors.openPriceAuditNoteCannotExceedValueCharacters","menu:apiErrors.openPriceAuditNoteMustBeText","menu:apiErrors.openPriceConfigurationMustContainExactlyOnePricingRule","menu:apiErrors.openPriceEntriesRequireAnAuthenticatedActor","menu:apiErrors.openPriceEntryModeIsInvalid","menu:apiErrors.openPriceInputIsOnlyValidForAnOpenPriceItem","menu:apiErrors.openPricePricingRuleIsMissing","menu:apiErrors.openPriceQuantityMustBeAPositiveSafeInteger","menu:apiErrors.partySizeDoesNotMatchThePublishedPackageRangeAndStep","menu:apiErrors.publishedIngredientValueHasInconsistentModifierRecipeSnapshots","menu:apiErrors.publishedMenuItemNotFound","menu:apiErrors.publishedMenuVariantNotFound","menu:apiErrors.publishedModifierGroupNotFound","menu:apiErrors.publishedModifierGroupValueIsAmbiguous","menu:apiErrors.publishedModifierOptionIdentifierValueIsAmbiguousInGroupValue","menu:apiErrors.publishedModifierSafetyMetadataIsInconsistent","menu:apiErrors.publishedModifierValueHasAnInvalidAdditiveRecipeDelta","menu:apiErrors.resolvedGuidedBuildPriceExceedsPersistenceLimits","menu:apiErrors.sTEPModifierRuleReferencesUnknownGuidedStageValue","menu:apiErrors.scheduledFulfillmentIsOutsideThePackageLeadTimeOrBookingHorizon","menu:apiErrors.scheduledFulfillmentTimeIsInvalid","menu:apiErrors.selectionRuleReferencesUnknownGuidedStageValue","menu:apiErrors.suggestedAmountMustBePositiveAndInsideTheAllowedRange","menu:apiErrors.theCateringPackageIsNotConfiguredForOrdering","menu:apiErrors.theOriginalCateringPackageDoesNotContainValidImmutableFulfillmentEvidence","menu:apiErrors.thePackageCutoffDoesNotExistInTheVenueTimeZoneOnThisDate","menu:apiErrors.thePublishedCustomStructurePolicyIsMissingStaleOrUnsupported","menu:apiErrors.theResolvedPackagePriceExceedsOrderMoneyLimits","menu:apiErrors.theSameBundleComponentCannotBeSelectedTwice","menu:apiErrors.theSameDishCannotBeSelectedTwiceInOneCourse","menu:apiErrors.theSelectedComponentVersionIsUnavailable","menu:apiErrors.theSelectedVersionDoesNotBelongToThisComponent","menu:apiErrors.theVenueLocalBookingCutoffForThisPackageHasPassed","menu:apiErrors.thisBundleComponentDoesNotSupportSellableVersions","menu:apiErrors.thisComponentDoesNotSupportSellableVersions","menu:apiErrors.thisCustomPolicyDoesNotDelegateSellableVersionOrdering","menu:apiErrors.thisItemStructureIsNotAvailableForOrdering","menu:apiErrors.thisModifierCanOnlyBeSelectedForAnAlcoholicItem","menu:apiErrors.thisPackageComponentDoesNotSupportSellableVersions","menu:apiErrors.thisPackageIsNotAvailableForTheSelectedFulfillmentMode","menu:apiErrors.thisPackageIsNotAvailableOnTheSelectedVenueLocalWeekday","menu:apiErrors.thisStaffCredentialIsNotAvailableForApproval","menu:apiErrors.unknownComboComponentGroupValue","menu:apiErrors.unknownGuidedBuildStageValue","menu:apiErrors.valueContainDuplicateIds","menu:apiErrors.valueIsRequired","menu:apiErrors.valueMustBeABoolean","menu:apiErrors.valueMustBeAFiniteNumber","menu:apiErrors.valueMustBeANonEmptyString","menu:apiErrors.valueMustBeAPositiveDecimalWithAtMostThreeFractionDigits","menu:apiErrors.valueMustBeAnArray","menu:apiErrors.valueMustBeAnIntegerGreaterThanOrEqualToValue","menu:apiErrors.valueMustBeNonNegativeDecimal122MoneyNoGreaterThanValue","menu:apiErrors.valueMustBeNonNegativeMoneyWithAtMostTwoDecimalPlacesAndNoMoreThan","menu:apiErrors.valueMustFitTheSupportedCurrencyPrecision","menu:apiErrors.valueRequiresAtLeastOneSelection","menu:apiErrors.valueRequiresValueValueDishSelections","menu:apiErrors.valueRequiresValueValueSelections","menu:apiErrors.venueTimeZoneIsInvalid","orders:apiErrors.aCateringPackageUsesOneImmutableOrderLineAndScalesFromFulfillmentPartySize","orders:apiErrors.aFixedPriceCourseMenuCanBeAssignedToExactlyOneGuest","orders:apiErrors.addAnotherFixedPriceMenuLineForAGuestWithDifferentCourseChoices","orders:apiErrors.assignedQuantityExceedsAvailableItemQuantity","orders:apiErrors.canceledCoursesCannotBeRemade","orders:apiErrors.canceledOrderItemCannotBeReleased","orders:apiErrors.canceledOrdersCannotBeCorrected","orders:apiErrors.confirmedScheduledOrderItemsAreImmutable","orders:apiErrors.courseComponentRemakeMustKeepTheOriginalDishIdentity","orders:apiErrors.courseComponentRemakeQuantityMustMatchTheCorrectedQuantity","orders:apiErrors.courseDishIsNoLongerAssignedToACourse","orders:apiErrors.courseDishIsNoLongerAssignedToAnActiveCourse","orders:apiErrors.deliveredOrderItemCannotBeReleased","orders:apiErrors.eachTableSessionGuestCanBeAssignedOnlyOncePerOrderItem","orders:apiErrors.fireLaterItemsCanBeReleasedOnlyAfterTheOrderIsSubmitted","orders:apiErrors.fixedPriceCourseMenusMustBeReleasedOneCourseAtATime","orders:apiErrors.guestAssignmentsCanBeChangedOnlyBeforeTheOrderIsPaidOrCanceled","orders:apiErrors.guestAssignmentsCannotBeChangedAfterThisItemIsPaid","orders:apiErrors.itemLevelDiscountsAndTaxExemptionsMustBeReviewedBeforeReplacingAScheduledPreorderPackage","orders:apiErrors.kitchenItemNotFound","orders:apiErrors.kitchenReleaseAccessRequired","orders:apiErrors.managerReviewIsRequiredBeforeReleasingAnOverdueItem","orders:apiErrors.measuredItemsUseOneAtomicOrderLineEditTheMeasuredAmountInstead","orders:apiErrors.offPremiseOrdersDoNotHaveTableSessionGuests","orders:apiErrors.onlyACourseDishThatEnteredPreparationCanBeRemade","orders:apiErrors.onlyAnIncludedFixedPriceCourseDishCanUseTheComponentRemakeWorkflow","orders:apiErrors.onlySubmittedOrPaidCourseDishesCanBeRemade","orders:apiErrors.openPriceLineTotalCannotExceedDecimal122StorageBounds","orders:apiErrors.orderIsLockedToADifferentSalesChannel","orders:apiErrors.orderIsNotOpen","orders:apiErrors.orderItemAvailabilityChangedRefreshAndTryAgain","orders:apiErrors.orderItemCannotBeReleasedAfterKitchenWorkHasStarted","orders:apiErrors.orderItemCourseIsNotAvailableForRelease","orders:apiErrors.orderItemDoesNotRequireKitchenRelease","orders:apiErrors.orderItemHasAlreadyBeenReleasedToKitchen","orders:apiErrors.orderItemHasNoActiveQuantityToRelease","orders:apiErrors.orderItemIsNotHeldForKitchenRelease","orders:apiErrors.orderItemNotFound","orders:apiErrors.orderNotFound","orders:apiErrors.persistedMeasuredOrderEvidenceIsInvalid","orders:apiErrors.provideExactlyOneOfMenuItemIdOrMenuVariantId","orders:apiErrors.quantityPortionMustBeGreaterThan0","orders:apiErrors.readyOrPartiallyReadyOrderItemCannotBeReleasedAgain","orders:apiErrors.remakeQuantityExceedsTheRemainingCorrectableCourseDishQuantity","orders:apiErrors.replaceABuildYourOwnItemWithTheSameImmutableGuidedPlanComponentCorrectionsRemainOwned","orders:apiErrors.replaceABundleWithTheSameImmutablePackagePlanNestedPackageCorrectionsRemainOwnedByThe","orders:apiErrors.replaceACateringPackageOnlyWithTheSameImmutablePolicyFulfillmentAndComponentScalingPlan","orders:apiErrors.replaceACustomStructureWithTheSameImmutablePolicyAndDelegatePlan","orders:apiErrors.replaceAFixedPriceCourseMenuWithTheSameServicePlanOrUseTheExplicitRemake","orders:apiErrors.replaceAMeasuredItemWithTheSameImmutableUnitAndQuantityPolicy","orders:apiErrors.replacementMustDifferFromTheVoidedItem","orders:apiErrors.storedCustomPolicyEvidenceFailedItsIntegrityCheck","orders:apiErrors.tableSessionGuestNotFound","orders:apiErrors.theOriginalPackageSnapshotNoLongerMatchesTheAuthoritativeScheduledFulfillment","orders:apiErrors.useTheNormalEditFlowBeforeCheckout","orders:apiErrors.voidQuantityExceedsRemainingBillableQuantity","pos:apiErrors.acceptedOrResolvedExternalOrdersRequireAnExplicitOperatorAction","pos:apiErrors.externalCancellationRevisionIsStale","pos:apiErrors.externalOrderChangedBeforeItCouldBeCanceled","pos:apiErrors.externalOrderChangedBeforeItCouldBeRejected","pos:apiErrors.externalOrderChangedBeforeItsRevisionCouldBeReplaced","pos:apiErrors.externalOrderIsAlreadyResolved","pos:apiErrors.externalOrderNotFound","pos:apiErrors.externalOrderRevisionIsStale","pos:apiErrors.externalOrderRevisionWasReusedWithADifferentPayload","pos:apiErrors.externalOrderSourceNotFound","pos:apiErrors.externalOrderWebhookSecretIsInvalid","pos:apiErrors.externalRevisionChanged","pos:apiErrors.salesChannelNotFound","pos:apiErrors.valueMustBeABase64Encoded32ByteKey","pos:apiErrors.webhookSignatureIsInvalid","pos:apiErrors.webhookTimestampIsStale","preorders:apiErrors.aCartLineIsOutsideItsServiceModeQuantityLeadOrBookingHorizonRule","preorders:apiErrors.aContactNameIsRequiredForThisPreorder","preorders:apiErrors.aFulfillmentNoteIsRequiredForThisPackage","preorders:apiErrors.aLockedFinancialPolicyIsRequiredToQuoteThisPreorder","preorders:apiErrors.aPhoneNumberOrEmailIsRequiredForThisPackage","preorders:apiErrors.aPreorderSalesChannelCannotBeChangedByAmendmentUseAnExplicitMigrationAndRepriceFlow","preorders:apiErrors.aQuotedCartLineCanNoLongerBeResolvedFromTheCurrentPublishedMenu","preorders:apiErrors.aValidPreorderPartnerCredentialIsRequired","preorders:apiErrors.activeDeliveryZoneWasNotFound","preorders:apiErrors.activeFulfillmentPolicyIsNotConfigured","preorders:apiErrors.activeFulfillmentWindowsMustFitAtLeastOneCompleteSlot","preorders:apiErrors.allKitchenItemsMustBeReadyDeliveredOrCanceled","preorders:apiErrors.anActiveFulfillmentPolicyNeedsAtLeastOneActiveWindow","preorders:apiErrors.cancellationNowRequiresManagerApproval","preorders:apiErrors.cannotConfirmAnEmptyPreorder","preorders:apiErrors.capacityHoldExpiredEditTheOrderToAcquireANewSlot","preorders:apiErrors.cartLineIdsMustBeUniqueAndEachLineMustSelectExactlyOneItemOrVariant","preorders:apiErrors.cashDepositEvidenceRequiresAPOSRegisterSession","preorders:apiErrors.cashDepositRegisterEvidenceIsInvalid","preorders:apiErrors.catalogRuleNotFound","preorders:apiErrors.completionRequiresTheServiceModeHandoffStateAndOutcome","preorders:apiErrors.confirmedPaymentRefundLiabilityMustBeResolvedBeforeKitchenRelease","preorders:apiErrors.confirmedPaymentsRequireManualRefundResolution","preorders:apiErrors.contactIsRequired","preorders:apiErrors.contactNameIsRequired","preorders:apiErrors.deliveryCoordinatesRequireLatitudeLongitudeAndACoordinateSourceTogether","preorders:apiErrors.deliveryReferenceIdsDoNotShareTheSelectedCountryHierarchy","preorders:apiErrors.deliveryRequiresAddressCityPostalCodeAndCountryCode","preorders:apiErrors.deliveryRequiresAddressLineCityPostalCodeAndISOCountryCode","preorders:apiErrors.deliveryZoneChangedReloadBeforeSaving","preorders:apiErrors.deliveryZoneGeometryDoesNotMatchItsKind","preorders:apiErrors.deliveryZoneNotFound","preorders:apiErrors.depositAllocationMustConsumeTheConfirmedPaymentEvidenceUpToTheOutstandingRequirement","preorders:apiErrors.depositAllocationMustReferenceConfirmedPaymentEvidenceFromThisOrder","preorders:apiErrors.depositAllocationNotFound","preorders:apiErrors.dineInDoesNotUseFulfillmentSlots","preorders:apiErrors.dineInDoesNotUseScheduledFulfillment","preorders:apiErrors.dineInIsNotAScheduledFulfillmentMode","preorders:apiErrors.draftRevisionIsRequired","preorders:apiErrors.exceptionNotFound","preorders:apiErrors.exceptionWindowIsInvalid","preorders:apiErrors.fulfillmentCapacityHoldIsNoLongerValid","preorders:apiErrors.fulfillmentDepositPolicySnapshotIsInvalid","preorders:apiErrors.fulfillmentIsNotConfirmed","preorders:apiErrors.fulfillmentPolicyChangedReloadBeforeSaving","preorders:apiErrors.fulfillmentPolicyNotFound","preorders:apiErrors.fulfillmentPolicySnapshotIsInvalid","preorders:apiErrors.fulfillmentPrivacyPolicySnapshotIsInvalid","preorders:apiErrors.fulfillmentWindowIsInvalid","preorders:apiErrors.fulfillmentWindowsCannotOverlap","preorders:apiErrors.guestAndHandoffDetailsCorrected","preorders:apiErrors.guestContactSearchRequiresPreordersPiiSearch","preorders:apiErrors.idempotencyKeyHeaderIsRequired","preorders:apiErrors.ingredientStockReservationHasAShortfall","preorders:apiErrors.insufficientIngredientStockForScheduledFulfillment","preorders:apiErrors.invalidFulfillmentDepositPolicy","preorders:apiErrors.invalidServiceDate","preorders:apiErrors.itemLevelDiscountsOrTaxExemptionsMustBeReviewedBeforeReplacingAPreorderPackage","preorders:apiErrors.kitchenItemsMustBeReadyDeliveredOrCanceledBeforeCompletion","preorders:apiErrors.kitchenReleaseIsNotDue","preorders:apiErrors.kitchenReleaseTimeHasNotArrived","preorders:apiErrors.kitchenWorkMustBeDeliveredOrCanceledBeforeCompletion","preorders:apiErrors.maximumQuantityCannotBeBelowMinimum","preorders:apiErrors.menuPolicySettlementDepositOrCurrencyEvidenceChangedAfterQuoteIssuance","preorders:apiErrors.minimumBookingLeadCannotExceedTheBookingHorizon","preorders:apiErrors.minimumBookingLeadMustCoverThePlannedKitchenReleaseLead","preorders:apiErrors.noActiveFulfillmentWindowCoversThisSlot","preorders:apiErrors.oneOrMoreSalesChannelsWereNotFound","preorders:apiErrors.onlyAReadyDeliveryPreorderCanLeaveForDelivery","preorders:apiErrors.onlyActiveHeldOrConfirmedPreordersCanCorrectGuestDetails","preorders:apiErrors.onlyFulfillmentInPreparationCanBeMarkedReady","preorders:apiErrors.onlyHeldOrConfirmedPreordersCanBeAmended","preorders:apiErrors.onlyHeldPreordersCanBeEdited","preorders:apiErrors.paidPreordersPriceReductionsAndRefundLiabilitiesRequireRefundAuthority","preorders:apiErrors.paymentEvidenceIsAlreadyBoundToAnotherOrVoidedDepositAllocation","preorders:apiErrors.paymentIsAlreadyAllocatedAsDepositEvidence","preorders:apiErrors.policyTemplateNotFound","preorders:apiErrors.preorderActivityCursorIsInvalid","preorders:apiErrors.preorderActivityRecorded","preorders:apiErrors.preorderCanceledByGuest","preorders:apiErrors.preorderCanceledByStaff","preorders:apiErrors.preorderCapacityHeld","preorders:apiErrors.preorderChangedFromAnAcceptedQuote","preorders:apiErrors.preorderConfirmed","preorders:apiErrors.preorderCursorIsInvalidForTheSelectedFiltersAndSort","preorders:apiErrors.preorderDraftChangedReloadBeforeSaving","preorders:apiErrors.preorderDraftIsTooLarge","preorders:apiErrors.preorderDraftNotFound","preorders:apiErrors.preorderExternalCredentialNotFound","preorders:apiErrors.preorderHandedOffForDelivery","preorders:apiErrors.preorderHandoffCompleted","preorders:apiErrors.preorderIsNotHeldForConfirmation","preorders:apiErrors.preorderNotFound","preorders:apiErrors.preorderNotificationNotFound","preorders:apiErrors.preorderPartnerCredentialsAreUnavailable","preorders:apiErrors.preorderQuoteSigningIsNotConfigured","preorders:apiErrors.preorderReadyForHandoff","preorders:apiErrors.preorderReleasedToProduction","preorders:apiErrors.preorderScheduleChanged","preorders:apiErrors.protectedPreorderDataIsUnavailable","preorders:apiErrors.protectedPreorderDetailsAreNoLongerAvailable","preorders:apiErrors.publicChannelChangedReloadBeforeSaving","preorders:apiErrors.publicChannelOriginMustUseHTTPOrHTTPS","preorders:apiErrors.publicChannelServiceActorMustBeAnActiveVenueMember","preorders:apiErrors.publishedMenuItemNotFound","preorders:apiErrors.releasedPreordersUseTheNormalCorrectionCancellationFlow","preorders:apiErrors.requiredDepositIsNotFullyAllocated","preorders:apiErrors.requiredDepositIsOverdueAndFulfillmentCannotBeReleased","preorders:apiErrors.requiredPreorderDepositHasNotBeenPaid","preorders:apiErrors.salesChannelNotFound","preorders:apiErrors.salesChannelPolicyAcceptanceOrContactDetailsAreInvalid","preorders:apiErrors.scheduledForMustIncludeAnExplicitUTCOffset","preorders:apiErrors.scheduledFulfillmentChangedRefreshAndTryAgain","preorders:apiErrors.scheduledFulfillmentReleaseTimeHasNotArrived","preorders:apiErrors.scheduledOrderNotFound","preorders:apiErrors.scheduledOrderWithDepositEvidenceCannotBeEdited","preorders:apiErrors.scheduledStockInventoryScopeIsIncomplete","preorders:apiErrors.scheduledStockRecipeEvidenceIsIncomplete","preorders:apiErrors.scheduledStockRequiresAnImmutablePublishedRecipeSnapshotForEveryInventoryLine","preorders:apiErrors.scheduledStockReservationEvidenceIsIncomplete","preorders:apiErrors.scheduledStockReservationGenerationEvidenceIsInconsistent","preorders:apiErrors.scheduledStockReservationGenerationIsMissing","preorders:apiErrors.scheduledStockReservationGenerationPointerIsInconsistent","preorders:apiErrors.scheduledStockReservationGenerationScopeIsInvalid","preorders:apiErrors.scheduledStockReservationMetadataConflictsWithImmutableEvidence","preorders:apiErrors.scheduledStockReservationMetadataIsIncomplete","preorders:apiErrors.scheduledStockReservationNoLongerMatchesTheImmutableOrderRecipe","preorders:apiErrors.scheduledStockReservationScopeIsInvalid","preorders:apiErrors.scheduledTimeIsNotAlignedToTheConfiguredSlotInterval","preorders:apiErrors.scheduledTimeIsOutsideTheFulfillmentBookingRange","preorders:apiErrors.slotAvailabilityRangeIsInvalid","preorders:apiErrors.stockReservationIsScheduledButNotDueYet","preorders:apiErrors.stockReservationMustBeDueBeforeTheFulfillmentRelease","preorders:apiErrors.theCartDoesNotMeetTheSelectedDeliveryZoneMinimum","preorders:apiErrors.theCommercialQuoteChangedExpiredOrWasAlreadyConsumed","preorders:apiErrors.theDeliveryAddressIsOutsideActiveVenueDeliveryZones","preorders:apiErrors.theDeliveryZoneHasNoRemainingCapacityInThisWindow","preorders:apiErrors.theFulfillmentSlotHasNoRemainingCapacity","preorders:apiErrors.theNotificationIsAlreadyScheduledForDelivery","preorders:apiErrors.thePreorderDoesNotHaveImmutableFinancialPolicyEvidence","preorders:apiErrors.thePreorderDoesNotHaveImmutableSalesChannelEvidence","preorders:apiErrors.thePreorderDraftWasAlreadyConsumed","preorders:apiErrors.thePreorderHasNoCanonicalCartLineIdentity","preorders:apiErrors.thePreorderOverridePermissionIsRequired","preorders:apiErrors.thePreorderPartnerCredentialIsInvalid","preorders:apiErrors.thePreorderPartnerCredentialIsInvalidOrOutOfScope","preorders:apiErrors.thePreorderQuoteIsInvalidOrExpired","preorders:apiErrors.theQuoteIsNoLongerAvailableToDecline","preorders:apiErrors.theRequestedPreorderResourceIsUnavailable","preorders:apiErrors.theSelectedDeliveryZoneRequiresMorePreparationTime","preorders:apiErrors.theSelectedItemIsNotEnabledForScheduledFulfillment","preorders:apiErrors.theSelectedPackageHasInvalidImmutablePolicyEvidence","preorders:apiErrors.theVerifiedDraftIsNoLongerReadyForAcceptance","preorders:apiErrors.thisFulfillmentHasNoOutstandingDepositRequirement","preorders:apiErrors.thisPreorderCanNoLongerBeCanceledWithoutStaffAssistance","preorders:apiErrors.tooManyPreorderRequests","preorders:apiErrors.useSignedPreorderAmendmentForSchedulePackageOrPartyChangesAndPreorderGuestDetailsForContact","preorders:apiErrors.venueCurrencyChangedAfterThisPreorderWasCreatedAmendmentRequiresFinancialReview","preorders:apiErrors.venueNotFound","preorders:apiErrors.webhookEndpointMustBeASafeHTTPSURL","preorders:apiErrors.webhookSubscriptionNotFound","reservations:apiErrors.aBearerManageTokenIsRequired","reservations:apiErrors.aValidIdempotencyKeyHeaderIsRequired","reservations:apiErrors.anAuthorizedOverrideAndReasonAreRequired","reservations:apiErrors.atLeastOneTransactionalChannelIsRequired","reservations:apiErrors.businessDateMustUseYYYYMMDD","reservations:apiErrors.changingAWaitQuoteRequiresAReason","reservations:apiErrors.couldNotAllocateAPublicReference","reservations:apiErrors.couldNotAllocateAReservationReference","reservations:apiErrors.couldNotAllocateAWaitlistReference","reservations:apiErrors.guestContactSearchRequiresAdditionalPermission","reservations:apiErrors.maximumWaitMustBeGreaterThanMinimumWait","reservations:apiErrors.messageDeliveryFailedCheckTheProviderConfigurationAndRetryStatus","reservations:apiErrors.nOTIFIEDIsSetOnlyAfterProviderAcceptance","reservations:apiErrors.noEligibleTableIsAvailable","reservations:apiErrors.noPendingGuaranteeCanBeWaived","reservations:apiErrors.oneOrMoreSelectedTablesAreUnavailable","reservations:apiErrors.onlyTerminalReservationsCanBeRestored","reservations:apiErrors.partyExceedsTheServicePeriodLimit","reservations:apiErrors.policyAcceptanceVersionIsOutdated","reservations:apiErrors.protectedReservationDataIsUnavailable","reservations:apiErrors.publicBookingCannotBePublished","reservations:apiErrors.publicChannelConfigurationChanged","reservations:apiErrors.remoteWaitlistIsCurrentlyFull","reservations:apiErrors.reservationCannotTransitionFromValueToValue","reservations:apiErrors.reservationRulesChangedSinceTheyWereLoaded","reservations:apiErrors.reservationServiceIsNotConfigured","reservations:apiErrors.resourceWasNotFound","reservations:apiErrors.scheduledTimeIsOutsideTheServicePeriod","reservations:apiErrors.scheduledTimeIsOutsideTheServicePeriodWeekday","reservations:apiErrors.servicePeriodHoursAndCapacityLimitsAreInvalid","reservations:apiErrors.servicePeriodNamesMustBeUniquePerWeekday","reservations:apiErrors.tableCombinationIsInvalid","reservations:apiErrors.tablePolicyLimitsAreInvalid","reservations:apiErrors.theBookingIntentHasExpired","reservations:apiErrors.theRecordChangedSinceItWasLoaded","reservations:apiErrors.theRequestedActionIsNotAvailable","reservations:apiErrors.theRequestedSlotIsNoLongerAvailable","reservations:apiErrors.theRequestedTimeIsNoLongerAvailable","reservations:apiErrors.theRequestedTimeIsNotPubliclyBookable","reservations:apiErrors.theRequestedWaitlistActionIsNoLongerAvailable","reservations:apiErrors.theReservationsCursorIsInvalidOrNoLongerApplicable","reservations:apiErrors.theServiceIsClosedOnThisDate","reservations:apiErrors.theWaitlistIsCurrentlyFull","reservations:apiErrors.thisReservationCanNoLongerBeEdited","reservations:apiErrors.tooManyBookingAttempts","reservations:apiErrors.tooManyPublicBookingRequests","reservations:apiErrors.turnRuleLimitsAreInvalid","reservations:apiErrors.unknownServicePeriod","reservations:apiErrors.venueNotFound","reservations:apiErrors.waitlistEntryCannotTransitionFromValueToValue","reservations:apiErrors.waitlistServiceIsNotConfigured","staff:apiErrors.aHiredStageMustBeConfiguredBeforeConversion","staff:apiErrors.acceptedOfferConvertedToWorker","staff:apiErrors.amountCurrencyAndPeriodMustBeProvidedTogether","staff:apiErrors.anAcceptedOfferIsRequiredBeforeHireConversion","staff:apiErrors.anOfferCanOnlyBeCreatedOnceForAnActiveApplication","staff:apiErrors.anOfferStageMustBeConfiguredBeforeSendingOffers","staff:apiErrors.applicationIsAlreadyInThisStage","staff:apiErrors.archivedRequisitionsCannotBeChanged","staff:apiErrors.cancelledInterviewsCannotReceiveScorecards","staff:apiErrors.candidateApplicationSubmitted","staff:apiErrors.candidateSessionIsInvalidOrExpired","staff:apiErrors.careerPostingWasNotFound","staff:apiErrors.closedJobPostingsCannotBeChanged","staff:apiErrors.completedInterviewsCannotBeRescheduled","staff:apiErrors.employeeNumberAlreadyExistsForThisLegalEntity","staff:apiErrors.employeeNumberOrConvertedWorkforceRecordAlreadyExists","staff:apiErrors.headcountCannotBeLowerThanFilledPositions","staff:apiErrors.integrationCannotMoveFromValueToValue","staff:apiErrors.integrationWebhookPayloadExceedsTheAcceptedLimit","staff:apiErrors.integrationWebhookSignatureOrTimestampIsInvalid","staff:apiErrors.interviewWindowOrVenueWallTimeEvidenceIsInvalid","staff:apiErrors.jobPostingCannotEnterTheRequestedState","staff:apiErrors.offerExpiryMustBeInTheFuture","staff:apiErrors.offerMustBeACurrentDraftForAnActiveApplication","staff:apiErrors.offerOrEmployeeNumberAlreadyExists","staff:apiErrors.offerSentToCandidate","staff:apiErrors.onlyActiveApplicationsCanMoveBetweenStages","staff:apiErrors.onlyAnActiveApplicationCanBeWithdrawn","staff:apiErrors.onlyAnAssignedInterviewerCanSubmitThisScorecard","staff:apiErrors.onlyDraftOrSentOffersCanBeWithdrawn","staff:apiErrors.recruitingCursorIsInvalidForThisRequest","staff:apiErrors.recruitingRecordWasNotFound","staff:apiErrors.recruitingStagesMustBeConfiguredBeforeOpeningARequisition","staff:apiErrors.recruitingValueMustBeSelectedThroughBoundedSearch","staff:apiErrors.requisitionCannotEnterTheRequestedState","staff:apiErrors.requisitionCodeOrPublicPostingURLAlreadyExists","staff:apiErrors.requisitionLifecycleCursorIsInvalidForThisRequest","staff:apiErrors.requisitionReferencesMustBelongToTheSameOrganization","staff:apiErrors.reviewTheCurrentCandidatePrivacyNoticeBeforeApplying","staff:apiErrors.thisApplicationHasAlreadyBeenConverted","staff:apiErrors.thisOfferCanNoLongerBeAcceptedOrDeclined","staff:apiErrors.thisRecordChangedWhileYouWereEditingIt","staff:apiErrors.thisRoleIsNotAcceptingApplications","staff:apiErrors.tooManyCandidatePortalRequests","staff:apiErrors.tooManyWorkforceIntegrationWebhookRequests","staff:apiErrors.webhookEventIDWasReusedWithADifferentSignedPayload","staff:apiErrors.workforceHCMIsNotAvailable","staff:apiErrors.workforceIntegrationChangedSinceItWasLoaded","staff:apiErrors.workforceIntegrationCursorIsInvalidForThisFilter","staff:apiErrors.workforceIntegrationRecordWasNotFound","validation:ExactlyOneDefined","validation:apiErrors.cannotConvertValueToValue","validation:apiErrors.quantityExceedsDecimal123Storage","validation:apiErrors.quantityIsBelowStoragePrecisionOrEqualsZero","validation:apiErrors.quantityMustBePositive","validation:apiErrors.unitCostExceedsDecimal124Storage","validation:apiErrors.unitCostMustNotBeNegative","validation:apiErrors.valueMustBeAFiniteDecimal","validation:approvalAssigneeIdentity","validation:arrayMaxSize","validation:arrayMinSize","validation:arrayNotEmpty","validation:arrayUnique","validation:equals","validation:invalidField","validation:invalidRequest","validation:isArray","validation:isBase64","validation:isBoolean","validation:isDate","validation:isDateString","validation:isDefined","validation:isEmail","validation:isEnum","validation:isHexColor","validation:isISO8601","validation:isIn","validation:isInt","validation:isLength","validation:isMimeType","validation:isNotEmpty","validation:isNumber","validation:isNumberString","validation:isObject","validation:isPhoneNumber","validation:isRFC3339","validation:isString","validation:isUUID","validation:isUrl","validation:matches","validation:max","validation:maxLength","validation:min","validation:minLength","validation:nestedValidation","validation:nonNullablePatchFields","validation:notEquals","validation:priceListBreakTotal","validation:rfqCriterionShape","validation:rfqLineReference","validation:rfqQuoteLineResponseShape","validation:unknownValue","validation:whitelistValidation"]}