Authentication
Authorization: Bearer <HALLIFY_PREORDER_DRAFT_TOKEN>Guest-owned capability for a public preorder draft.
Parameters
draftReferencePath · RequiredOpaque reference identifying the public preorder draft; authorization still requires the separate draft capability.
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 · RequiredBrowser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.
stringFull definition
{ "type": "string", "example": "example" }
Request body
Required
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.
application/json
Full definition
{
"$ref": "#/components/schemas/UpdatePublicPreorderDraftDto"
}Responses
200Returns the updated draft, revision, expiry, and current verification state.
Full definition
{
"$ref": "#/components/schemas/PreorderPublicUpdateDraftResultDto"
}{
"draftReference": "example-reference",
"status": "PENDING_VERIFICATION",
"verificationId": "904a18d4-c890-4387-8e14-bc52c879c7ff",
"verificationExpiresAt": "2026-12-31T18:00:00.000Z"
}401Rejects a missing, malformed, expired, revoked, or invalid preorderDraftToken credential at the owning domain boundary.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 401,
"error": "errors:http.unauthorized",
"code": "HTTP_UNAUTHORIZED",
"message": "errors:http.unauthorized",
"translationKey": "errors:http.unauthorized"
}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"
}Schemas
UpdatePublicPreorderDraftDto
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.
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" }scheduledForRequiredRFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.
string · date-timeFull definition
{ "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" }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 }coordinateSourceOptionalAllowed coordinate source for public preorder draft: STAFF, EXTERNAL_CLIENT, GEOREFERENCE_CENTROID. Null means no value is recorded for this representation.
string · nullFull definition
{ "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" }coordinateAccuracyOptionalWhole-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.
integer · nullFull definition
{ "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 }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" }capacityOverrideReasonOptionalManager reason for an explicit capacity overbook. Requires preorders.override.
stringFull definition
{ "type": "string", "description": "Manager reason for an explicit capacity overbook. Requires preorders.override.", "minLength": 1, "maxLength": 1000, "example": "Synthetic example" }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/PreorderCartLineDto" }, "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" }
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"
},
"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"
}
}PreorderCartLineDto
Preorder cart entry embedded in a operations collection or aggregate.
clientLineIdRequiredStable cart line id generated by the client.
stringFull definition
{ "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" }menuItemIdOptionalHallify UUID identifying menu item associated with preorder cart line.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "Hallify UUID identifying menu item associated with preorder cart line.", "example": "16ee6f36-c0cb-4311-85e8-2d2b3edea0fd" }menuVariantIdOptionalHallify UUID identifying menu variant associated with preorder cart line.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "Hallify UUID identifying menu variant associated with preorder cart line.", "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11" }quantityRequiredWhole-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.
integerFull definition
{ "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 }modifierOptionIdsOptionalHallify UUIDs identifying the modifier option set included in preorder cart line.
arrayFull definition
{ "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" ] }componentSelectionsOptionalOrder item component selection included as component selections in preorder cart line.
arrayFull definition
{ "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" } ] }serviceFlagsOptionalService flags values included as service flags in preorder cart line.
arrayFull definition
{ "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" ] }specialRequestOptionalSpecial request for preorder cart line. Accepted values enforce maximum length 500.
stringFull definition
{ "type": "string", "maxLength": 500, "description": "Special request for preorder cart line. Accepted values enforce maximum length 500.", "example": "example" }
Full definition
{
"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
Order item component selection selected component identities applied to the parent item configuration.
groupIdRequiredStable component group id from the published structure.
stringFull definition
{ "type": "string", "description": "Stable component group id from the published structure.", "maxLength": 96, "example": "example-id" }choiceIdRequiredStable component choice id from the published structure.
stringFull definition
{ "type": "string", "description": "Stable component choice id from the published structure.", "maxLength": 160, "example": "example-id" }menuVariantIdOptionalSelected sellable version when the component item has versions.
string · uuidFull definition
{ "type": "string", "description": "Selected sellable version when the component item has versions.", "format": "uuid", "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11" }modifierOptionIdsOptionalModifier option ids selected for this component.
arrayFull definition
{ "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" ] }
Full definition
{
"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"
}
}PreorderPublicUpdateDraftResultDto
Returns the updated draft, revision, expiry, and current verification state.
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" }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" }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"
},
"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"
}
}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."
}