Authentication
x-hallify-widget-context: <HALLIFY_STOREFRONT_WIDGET_CONTEXT>Short-lived server-authenticated widget presentation proof. It binds the configured frame origin to the exact verified parent binding and connection authority. Widget new demand requires this proof; existing native capabilities remain separate and retain their original authority and deadlines.
Parameters
publicHandlePath · RequiredOpaque public channel handle used to resolve one venue’s published guest-facing configuration; it is not a credential.
stringFull definition
{ "type": "string", "example": "example" }idempotency-keyHeader · RequiredRequired idempotency key, up to 128 characters
stringFull definition
{ "type": "string", "minLength": 1, "maxLength": 128, "example": "example" }originHeader · RequiredActual browser Origin required for new draft issuance. The server authorizes the canonical Hallify origin or exact Storefront presentation. Widgets use their isolated frame Origin; the parent Origin never replaces it.
stringFull definition
{ "type": "string", "maxLength": 2048, "example": "example" }x-hallify-connection-idHeader · OptionalNonsecret Storefront connection locator for initial draft issuance. When supplied, the server resolves that exact authorized native Resource even on the canonical Hallify origin; the locator does not grant access.
stringFull definition
{ "type": "string", "minLength": 1, "maxLength": 64, "pattern": "^[A-Za-z0-9_-]{1,64}$", "example": "example" }
Request body
Required
Native public ordering input. Scheduled requests require scheduledFor and may omit timingMode for legacy compatibility. ASAP requests require timingMode=ASAP and forbid scheduledFor; the native quote freezes the server-selected promise.
application/json
oneOfFull definition
{
"oneOf": [
{
"$ref": "#/components/schemas/PublicPreorderScheduledDraftBodyDto"
},
{
"allOf": [
{
"$ref": "#/components/schemas/PublicPreorderAsapDraftBodyDto"
}
],
"not": {
"required": [
"scheduledFor"
],
"example": {
"scheduledFor": "example"
}
},
"example": {
"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",
"serviceMode": "PICKUP",
"timingMode": "ASAP"
}
}
],
"example": {
"serviceMode": "DINE_IN",
"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",
"scheduledFor": "2026-01-15T12:00:00.000Z"
}
}Responses
201Returns the draft reference, expiry, redacted verification state, and draft capability token.
Full definition
{
"$ref": "#/components/schemas/PreorderPublicCreateDraftResultDto"
}{
"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"
}402Commercial coverage is required for new demand, or this operation has no original commercial admission evidence. Existing authorized reads and financial recovery remain available.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 402,
"error": "errors:http.failure",
"code": "HTTP_402",
"message": "errors:http.failure",
"translationKey": "errors:http.failure"
}404The public channel, original bootstrap source, widget proof or exact presentation is unavailable. Error codes: PREORDER_PUBLIC_RESOURCE_NOT_FOUND, STOREFRONT_PRESENTATION_UNAVAILABLE.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 404,
"error": "errors:http.notFound",
"code": "HTTP_NOT_FOUND",
"message": "errors:http.notFound",
"translationKey": "errors:http.notFound"
}409Idempotency key is already in progress or was reused with a different payload
Full definition
{
"$ref": "#/components/schemas/IdempotencyConflictError"
}{
"statusCode": 409,
"error": "errors:http.conflict",
"code": "IDEMPOTENCY_REQUEST_IN_PROGRESS",
"message": "errors:idempotency.inProgress",
"translationKey": "errors:idempotency.inProgress"
}503Authoritative commercial state is unavailable or cannot be read within its bounded source contract. Retry the same operation after recovery. Authoritative commercial state is unavailable or cannot be read within its bounded source contract, or widget authority configuration is unavailable. Widget configuration failure uses STOREFRONT_WIDGET_UNAVAILABLE. Retry the same operation after recovery.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 503,
"error": "errors:http.serviceUnavailable",
"code": "HTTP_SERVICE_UNAVAILABLE",
"message": "errors:http.serviceUnavailable",
"translationKey": "errors:http.serviceUnavailable"
}Schemas
PublicPreorderScheduledDraftBodyDto
Scheduled public ordering draft input. An omitted timingMode preserves the existing scheduled request format. The caller supplies the exact scheduledFor instant; all native policy, menu and capacity rules remain authoritative.
serviceModeRequiredAllowed service mode for public preorder draft: DINE_IN, PICKUP, DELIVERY, CATERING.
stringFull definition
{ "type": "string", "enum": [ "DINE_IN", "PICKUP", "DELIVERY", "CATERING" ], "description": "Allowed service mode for public preorder draft: DINE_IN, PICKUP, DELIVERY, CATERING.", "example": "DINE_IN" }partySizeRequiredWhole-number party size recorded for public preorder draft. Accepted values enforce minimum 1 and maximum 10000.
integerFull definition
{ "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 }contactNameRequiredHuman-readable contact name for public preorder draft.
stringFull definition
{ "type": "string", "description": "Human-readable contact name for public preorder draft.", "example": "Example name" }contactPhoneOptionalTelephone number recorded for contact phone in public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }contactEmailOptionalEmail address recorded for contact email in public preorder draft. Null means no value is recorded for this representation.
string · email · nullFull definition
{ "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" }addressLine1OptionalPrimary street-address line for public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "type": "string", "nullable": true, "description": "Primary street-address line for public preorder draft. Null means no value is recorded for this representation.", "example": "example" }addressLine2OptionalOptional secondary address details such as unit, floor, or building for public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }cityOptionalCity or locality recorded for the address represented by public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }regionOptionalRegion, state, or administrative subdivision recorded for public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }postalCodeOptionalStable postal code used to classify or address public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }countryCodeOptionalStable country code used to classify or address public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }administrativeDivisionIdOptionalHallify UUID identifying administrative division associated with public preorder draft. Null means no value is recorded for this representation.
string · uuid · nullFull definition
{ "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" }localityIdOptionalHallify UUID identifying locality associated with public preorder draft. Null means no value is recorded for this representation.
string · uuid · nullFull definition
{ "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" }postalCodeIdOptionalHallify UUID identifying postal code associated with public preorder draft. Null means no value is recorded for this representation.
string · uuid · nullFull definition
{ "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" }latitudeOptionalFraction-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.
number · nullFull definition
{ "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 }longitudeOptionalFraction-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.
number · nullFull definition
{ "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 }deliveryInstructionsOptionalDelivery instructions for public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "type": "string", "nullable": true, "description": "Delivery instructions for public preorder draft. Null means no value is recorded for this representation.", "example": "example" }noteOptionalHuman-entered note retained with public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }deliveryMethodOptionalRequested delivery method. Omission preserves venue SELF delivery; other service modes must omit it.
stringFull definition
{ "type": "string", "enum": [ "SELF", "UBER_DIRECT", "WOLT_DRIVE" ], "description": "Requested delivery method. Omission preserves venue SELF delivery; other service modes must omit it.", "example": "SELF" }deliveryQuoteIdOptionalNative prepared delivery quote selected for this exact demand. Historical SELF acceptance may retain null or omission.
string · uuid · nullFull definition
{ "type": "string", "format": "uuid", "nullable": true, "description": "Native prepared delivery quote selected for this exact demand. Historical SELF acceptance may retain null or omission.", "example": "6cd7f319-5499-46ba-88b6-d3c97f979668" }salesChannelIdRequiredHallify UUID identifying sales channel associated with public preorder draft.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "Hallify UUID identifying sales channel associated with public preorder draft.", "example": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc" }clientMenuVersionIdRequiredHallify UUID identifying client menu version associated with public preorder draft.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "Hallify UUID identifying client menu version associated with public preorder draft.", "example": "cd2f2c2a-ba73-4579-8e32-52da8388fd05" }clientGraphHashRequiredOpaque graph token returned by the published menu endpoint.
stringFull definition
{ "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" }itemsRequiredPreorder cart line returned in the public preorder draft collection.
arrayFull definition
{ "minItems": 1, "maxItems": 100, "type": "array", "items": { "$ref": "#/components/schemas/PublicPreorderCartLineDto" }, "description": "Preorder cart line returned in the public preorder draft collection.", "example": [ { "clientLineId": "example-id", "quantity": 1 } ] }termsVersionRequiredTerms version for public preorder draft. Accepted values enforce minimum length 1 and maximum length 64.
stringFull definition
{ "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" }privacyVersionRequiredPrivacy version for public preorder draft. Accepted values enforce minimum length 1 and maximum length 64.
stringFull definition
{ "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" }timingModeOptionalExplicit scheduled timing intent. Existing clients may omit this property; omission is retained rather than inserted into the original request fingerprint.
stringFull definition
{ "type": "string", "enum": [ "SCHEDULED" ], "description": "Explicit scheduled timing intent. Existing clients may omit this property; omission is retained rather than inserted into the original request fingerprint.", "example": "SCHEDULED" }scheduledForRequiredRequested scheduled fulfillment instant with an explicit UTC offset. The native owner validates its lead time, venue timezone, service window and capacity.
string · date-timeFull definition
{ "type": "string", "format": "date-time", "pattern": "(?:Z|[+-]\\d{2}:\\d{2})$", "description": "Requested scheduled fulfillment instant with an explicit UTC offset. The native owner validates its lead time, venue timezone, service window and capacity.", "example": "2026-01-15T12:00:00.000Z" }
Full definition
{
"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"
},
"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
},
"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"
},
"deliveryMethod": {
"type": "string",
"enum": [
"SELF",
"UBER_DIRECT",
"WOLT_DRIVE"
],
"description": "Requested delivery method. Omission preserves venue SELF delivery; other service modes must omit it.",
"example": "SELF"
},
"deliveryQuoteId": {
"type": "string",
"format": "uuid",
"nullable": true,
"description": "Native prepared delivery quote selected for this exact demand. Historical SELF acceptance may retain null or omission.",
"example": "6cd7f319-5499-46ba-88b6-d3c97f979668"
},
"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/PublicPreorderCartLineDto"
},
"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"
},
"timingMode": {
"type": "string",
"enum": [
"SCHEDULED"
],
"description": "Explicit scheduled timing intent. Existing clients may omit this property; omission is retained rather than inserted into the original request fingerprint.",
"example": "SCHEDULED"
},
"scheduledFor": {
"type": "string",
"format": "date-time",
"pattern": "(?:Z|[+-]\\d{2}:\\d{2})$",
"description": "Requested scheduled fulfillment instant with an explicit UTC offset. The native owner validates its lead time, venue timezone, service window and capacity.",
"example": "2026-01-15T12:00:00.000Z"
}
},
"description": "Scheduled public ordering draft input. An omitted timingMode preserves the existing scheduled request format. The caller supplies the exact scheduledFor instant; all native policy, menu and capacity rules remain authoritative.",
"required": [
"serviceMode",
"partySize",
"contactName",
"salesChannelId",
"clientMenuVersionId",
"clientGraphHash",
"items",
"termsVersion",
"privacyVersion",
"scheduledFor"
],
"example": {
"serviceMode": "DINE_IN",
"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",
"scheduledFor": "2026-01-15T12:00:00.000Z"
}
}PublicPreorderCartLineDto
Guest preorder cart line containing published item or variant identity, quantity, modifiers, component selections, and a kitchen request.
clientLineIdRequiredStable cart line identifier generated by the guest client and retained across quote and acceptance.
stringFull definition
{ "type": "string", "description": "Stable cart line identifier generated by the guest client and retained across quote and acceptance.", "pattern": "^[A-Za-z0-9][A-Za-z0-9:_-]{0,79}$", "example": "example-id" }menuItemIdOptionalHallify UUID of the published menu item selected when the line does not select a menu variant.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "Hallify UUID of the published menu item selected when the line does not select a menu variant.", "example": "16ee6f36-c0cb-4311-85e8-2d2b3edea0fd" }menuVariantIdOptionalHallify UUID of the published menu variant selected instead of a menu item identity.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "Hallify UUID of the published menu variant selected instead of a menu item identity.", "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11" }quantityRequiredRequested whole-number line quantity from 1 through 999, subject to the published preorder eligibility rules.
integerFull definition
{ "type": "integer", "minimum": 1, "maximum": 999, "description": "Requested whole-number line quantity from 1 through 999, subject to the published preorder eligibility rules.", "example": 1 }modifierOptionIdsOptionalUp to 20 distinct published modifier option UUIDs selected for the cart line.
arrayFull definition
{ "maxItems": 20, "type": "array", "items": { "type": "string", "format": "uuid", "example": "d251fdb0-274c-4e59-8e7e-b1d90e1433bc" }, "description": "Up to 20 distinct published modifier option UUIDs selected for the cart line.", "example": [ "d251fdb0-274c-4e59-8e7e-b1d90e1433bc" ] }specialRequestOptionalOptional guest request shown to the kitchen, limited to 500 characters.
stringFull definition
{ "type": "string", "maxLength": 500, "description": "Optional guest request shown to the kitchen, limited to 500 characters.", "example": "example" }componentSelectionsOptionalUp to 50 guest component selections validated against the published item structure.
arrayFull definition
{ "maxItems": 50, "type": "array", "items": { "$ref": "#/components/schemas/PublicPreorderComponentSelectionDto" }, "description": "Up to 50 guest component selections validated against the published item structure.", "example": [ { "groupId": "example-id", "choiceId": "example-id" } ] }
Full definition
{
"type": "object",
"properties": {
"clientLineId": {
"type": "string",
"description": "Stable cart line identifier generated by the guest client and retained across quote and acceptance.",
"pattern": "^[A-Za-z0-9][A-Za-z0-9:_-]{0,79}$",
"example": "example-id"
},
"menuItemId": {
"type": "string",
"format": "uuid",
"description": "Hallify UUID of the published menu item selected when the line does not select a menu variant.",
"example": "16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"
},
"menuVariantId": {
"type": "string",
"format": "uuid",
"description": "Hallify UUID of the published menu variant selected instead of a menu item identity.",
"example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 999,
"description": "Requested whole-number line quantity from 1 through 999, subject to the published preorder eligibility rules.",
"example": 1
},
"modifierOptionIds": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"example": "d251fdb0-274c-4e59-8e7e-b1d90e1433bc"
},
"description": "Up to 20 distinct published modifier option UUIDs selected for the cart line.",
"example": [
"d251fdb0-274c-4e59-8e7e-b1d90e1433bc"
]
},
"specialRequest": {
"type": "string",
"maxLength": 500,
"description": "Optional guest request shown to the kitchen, limited to 500 characters.",
"example": "example"
},
"componentSelections": {
"maxItems": 50,
"type": "array",
"items": {
"$ref": "#/components/schemas/PublicPreorderComponentSelectionDto"
},
"description": "Up to 50 guest component selections validated against the published item structure.",
"example": [
{
"groupId": "example-id",
"choiceId": "example-id"
}
]
}
},
"required": [
"clientLineId",
"quantity"
],
"description": "Guest preorder cart line containing published item or variant identity, quantity, modifiers, component selections, and a kitchen request.",
"example": {
"clientLineId": "example-id",
"quantity": 1
}
}PublicPreorderComponentSelectionDto
Guest-selected component group, choice, sellable version, and modifiers from the published preorder menu.
groupIdRequiredStable component group identifier from the published item structure.
stringFull definition
{ "type": "string", "description": "Stable component group identifier from the published item structure.", "maxLength": 96, "example": "example-id" }choiceIdRequiredStable selected choice identifier within the published component group.
stringFull definition
{ "type": "string", "description": "Stable selected choice identifier within the published component group.", "maxLength": 160, "example": "example-id" }menuVariantIdOptionalHallify UUID of the selected sellable version when the component offers variants.
string · uuidFull definition
{ "type": "string", "description": "Hallify UUID of the selected sellable version when the component offers variants.", "format": "uuid", "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11" }modifierOptionIdsOptionalUp to 20 distinct published modifier option UUIDs selected for this component.
arrayFull definition
{ "description": "Up to 20 distinct published modifier option UUIDs selected for this component.", "type": "array", "items": { "type": "string", "format": "uuid", "example": "d251fdb0-274c-4e59-8e7e-b1d90e1433bc" }, "example": [ "d251fdb0-274c-4e59-8e7e-b1d90e1433bc" ] }
Full definition
{
"type": "object",
"properties": {
"groupId": {
"type": "string",
"description": "Stable component group identifier from the published item structure.",
"maxLength": 96,
"example": "example-id"
},
"choiceId": {
"type": "string",
"description": "Stable selected choice identifier within the published component group.",
"maxLength": 160,
"example": "example-id"
},
"menuVariantId": {
"type": "string",
"description": "Hallify UUID of the selected sellable version when the component offers variants.",
"format": "uuid",
"example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
},
"modifierOptionIds": {
"description": "Up to 20 distinct published modifier option UUIDs 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": "Guest-selected component group, choice, sellable version, and modifiers from the published preorder menu.",
"example": {
"groupId": "example-id",
"choiceId": "example-id"
}
}PublicPreorderAsapDraftBodyDto
Explicit ASAP public ordering draft input. The caller must omit scheduledFor. At quote creation the server resolves a bounded native fulfillment interval and freezes that promise for original acceptance and recovery; requesting ASAP does not guarantee availability.
partySizeRequiredWhole-number party size recorded for public preorder draft. Accepted values enforce minimum 1 and maximum 10000.
integerFull definition
{ "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 }contactNameRequiredHuman-readable contact name for public preorder draft.
stringFull definition
{ "type": "string", "description": "Human-readable contact name for public preorder draft.", "example": "Example name" }contactPhoneOptionalTelephone number recorded for contact phone in public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }contactEmailOptionalEmail address recorded for contact email in public preorder draft. Null means no value is recorded for this representation.
string · email · nullFull definition
{ "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" }addressLine1OptionalPrimary street-address line for public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "type": "string", "nullable": true, "description": "Primary street-address line for public preorder draft. Null means no value is recorded for this representation.", "example": "example" }addressLine2OptionalOptional secondary address details such as unit, floor, or building for public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }cityOptionalCity or locality recorded for the address represented by public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }regionOptionalRegion, state, or administrative subdivision recorded for public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }postalCodeOptionalStable postal code used to classify or address public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }countryCodeOptionalStable country code used to classify or address public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }administrativeDivisionIdOptionalHallify UUID identifying administrative division associated with public preorder draft. Null means no value is recorded for this representation.
string · uuid · nullFull definition
{ "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" }localityIdOptionalHallify UUID identifying locality associated with public preorder draft. Null means no value is recorded for this representation.
string · uuid · nullFull definition
{ "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" }postalCodeIdOptionalHallify UUID identifying postal code associated with public preorder draft. Null means no value is recorded for this representation.
string · uuid · nullFull definition
{ "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" }latitudeOptionalFraction-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.
number · nullFull definition
{ "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 }longitudeOptionalFraction-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.
number · nullFull definition
{ "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 }deliveryInstructionsOptionalDelivery instructions for public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "type": "string", "nullable": true, "description": "Delivery instructions for public preorder draft. Null means no value is recorded for this representation.", "example": "example" }noteOptionalHuman-entered note retained with public preorder draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }deliveryMethodOptionalRequested delivery method. Omission preserves venue SELF delivery; other service modes must omit it.
stringFull definition
{ "type": "string", "enum": [ "SELF", "UBER_DIRECT", "WOLT_DRIVE" ], "description": "Requested delivery method. Omission preserves venue SELF delivery; other service modes must omit it.", "example": "SELF" }deliveryQuoteIdOptionalNative prepared delivery quote selected for this exact demand. Historical SELF acceptance may retain null or omission.
string · uuid · nullFull definition
{ "type": "string", "format": "uuid", "nullable": true, "description": "Native prepared delivery quote selected for this exact demand. Historical SELF acceptance may retain null or omission.", "example": "6cd7f319-5499-46ba-88b6-d3c97f979668" }salesChannelIdRequiredHallify UUID identifying sales channel associated with public preorder draft.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "Hallify UUID identifying sales channel associated with public preorder draft.", "example": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc" }clientMenuVersionIdRequiredHallify UUID identifying client menu version associated with public preorder draft.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "Hallify UUID identifying client menu version associated with public preorder draft.", "example": "cd2f2c2a-ba73-4579-8e32-52da8388fd05" }clientGraphHashRequiredOpaque graph token returned by the published menu endpoint.
stringFull definition
{ "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" }itemsRequiredPreorder cart line returned in the public preorder draft collection.
arrayFull definition
{ "minItems": 1, "maxItems": 100, "type": "array", "items": { "$ref": "#/components/schemas/PublicPreorderCartLineDto" }, "description": "Preorder cart line returned in the public preorder draft collection.", "example": [ { "clientLineId": "example-id", "quantity": 1 } ] }termsVersionRequiredTerms version for public preorder draft. Accepted values enforce minimum length 1 and maximum length 64.
stringFull definition
{ "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" }privacyVersionRequiredPrivacy version for public preorder draft. Accepted values enforce minimum length 1 and maximum length 64.
stringFull definition
{ "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" }serviceModeRequiredOff-premise service requested for ASAP. Native policy, delivery-zone and capacity checks still determine whether it can be quoted.
stringFull definition
{ "type": "string", "enum": [ "PICKUP", "DELIVERY" ], "description": "Off-premise service requested for ASAP. Native policy, delivery-zone and capacity checks still determine whether it can be quoted.", "example": "PICKUP" }timingModeRequiredExplicit request for the earliest server-admitted fulfillment interval within the supported ASAP horizon. The client supplies no fulfillment timestamp.
stringFull definition
{ "type": "string", "enum": [ "ASAP" ], "description": "Explicit request for the earliest server-admitted fulfillment interval within the supported ASAP horizon. The client supplies no fulfillment timestamp.", "example": "ASAP" }
Full definition
{
"type": "object",
"properties": {
"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
},
"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"
},
"deliveryMethod": {
"type": "string",
"enum": [
"SELF",
"UBER_DIRECT",
"WOLT_DRIVE"
],
"description": "Requested delivery method. Omission preserves venue SELF delivery; other service modes must omit it.",
"example": "SELF"
},
"deliveryQuoteId": {
"type": "string",
"format": "uuid",
"nullable": true,
"description": "Native prepared delivery quote selected for this exact demand. Historical SELF acceptance may retain null or omission.",
"example": "6cd7f319-5499-46ba-88b6-d3c97f979668"
},
"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/PublicPreorderCartLineDto"
},
"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"
},
"serviceMode": {
"type": "string",
"enum": [
"PICKUP",
"DELIVERY"
],
"description": "Off-premise service requested for ASAP. Native policy, delivery-zone and capacity checks still determine whether it can be quoted.",
"example": "PICKUP"
},
"timingMode": {
"type": "string",
"enum": [
"ASAP"
],
"description": "Explicit request for the earliest server-admitted fulfillment interval within the supported ASAP horizon. The client supplies no fulfillment timestamp.",
"example": "ASAP"
}
},
"description": "Explicit ASAP public ordering draft input. The caller must omit scheduledFor. At quote creation the server resolves a bounded native fulfillment interval and freezes that promise for original acceptance and recovery; requesting ASAP does not guarantee availability.",
"required": [
"partySize",
"contactName",
"salesChannelId",
"clientMenuVersionId",
"clientGraphHash",
"items",
"termsVersion",
"privacyVersion",
"serviceMode",
"timingMode"
],
"example": {
"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",
"serviceMode": "PICKUP",
"timingMode": "ASAP"
}
}PreorderPublicCreateDraftResultDto
Returns the draft reference, expiry, redacted verification state, and draft capability token.
draftReferenceRequiredHuman- or provider-assigned reference used to reconcile preorder public draft with its source record.
stringFull definition
{ "type": "string", "description": "Human- or provider-assigned reference used to reconcile preorder public draft with its source record.", "example": "example-reference" }resumeTokenRequiredDraft capability returned to resume the newly created public preorder draft. It is scoped to that draft and expires with it.
stringFull definition
{ "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" }statusRequiredCurrent lifecycle status of preorder public draft; allowed values are PENDING_VERIFICATION.
stringFull definition
{ "type": "string", "enum": [ "PENDING_VERIFICATION" ], "description": "Current lifecycle status of preorder public draft; allowed values are PENDING_VERIFICATION.", "example": "PENDING_VERIFICATION" }verificationIdRequiredHallify UUID identifying verification associated with preorder public draft.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "Hallify UUID identifying verification associated with preorder public draft.", "example": "904a18d4-c890-4387-8e14-bc52c879c7ff" }verificationExpiresAtRequiredRFC 3339 timestamp for verification expires at; offsets represent the same absolute instant.
string · date-timeFull definition
{ "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" }expiresAtRequiredRFC 3339 timestamp for expires at; offsets represent the same absolute instant.
string · date-timeFull definition
{ "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" }testCodeOptionalStable test code used to classify or address preorder public draft. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }
Full definition
{
"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"
}
}TranslatedErrorDto
Stable error envelope emitted by the global HTTP exception boundary. Domain-specific machine data, when present, is nested under details.
statusCodeRequiredHTTP status code repeated from the response.
integerFull definition
{ "type": "integer", "description": "HTTP status code repeated from the response.", "example": 400 }errorRequiredTranslation key for the HTTP category, such as errors:http.conflict. The specific cause is identified by code and translationKey.
stringFull definition
{ "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" }codeRequiredStable 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.
stringFull definition
{ "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." }messageRequiredTranslation key, identical to translationKey. The API does not return localized display text. Resolve the key and translationValues in the consuming application.
stringFull definition
{ "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." }translationKeyRequiredCanonical 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.
stringFull definition
{ "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." }translationValuesOptionalOptional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.
objectFull definition
{ "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" } }validationErrorsOptionalField validation failures with translation keys and stable validator codes. Submitted values and raw validator text are not included.
arrayFull definition
{ "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" } ] }detailsOptionalOptional domain-specific blocker or validation details
oneOfFull definition
{ "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" ] }
Full definition
{
"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
Field validation failure with a field path, stable validator code and a translation key. Human-readable text belongs to the consuming application.
fieldRequiredPublic field path. Nested properties and array indices are separated by dots.
stringFull definition
{ "type": "string", "example": "email", "description": "Public field path. Nested properties and array indices are separated by dots." }translationKeyRequiredTranslation key for this validator, identical to message. Resolve it using a client dictionary; see the public Developers error catalog.
stringFull definition
{ "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." }codeRequiredStable validator identifier for this field failure. Custom validators may define additional identifiers.
stringFull definition
{ "type": "string", "example": "isEmail", "description": "Stable validator identifier for this field failure. Custom validators may define additional identifiers." }messageRequiredTranslation key describing this field validation failure, identical to translationKey. Submitted values and validator prose are not included.
stringFull definition
{ "type": "string", "example": "validation:isEmail", "description": "Translation key describing this field validation failure, identical to translationKey. Submitted values and validator prose are not included." }translationValuesOptionalOptional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.
objectFull definition
{ "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" } }
Full definition
{
"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"
}
}JsonValue
Recursively JSON-safe value used only where the owning contract intentionally allows free-form structured data.
Full definition
{
"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"
}IdempotencyConflictError
Idempotency key is already in progress or was reused with a different payload.
Full definition
{
"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."
}