Skip to content
Sections

Guest preorders

Update and re-verify a public preorder draft

PUT/public/preorders/drafts/{draftReference}

Uses the draft capability token to replace eligible cart, contact, or fulfillment details at the expected revision and restarts verification when protected contact data changes. A required Idempotency-Key makes retries with the same payload return the stored status and body; reusing the key with a different payload returns 409.

Authentication

Authorization: Bearer <HALLIFY_PREORDER_DRAFT_TOKEN>

Guest-owned capability for a public preorder draft.

Connection guide

Parameters

draftReferencePath · Required

Opaque reference identifying the public preorder draft; authorization still requires the separate draft capability.

string
Full definition
{
  "type": "string",
  "example": "example"
}
idempotency-keyHeader · Required

Required idempotency key, up to 128 characters

string
Full definition
{
  "type": "string",
  "minLength": 1,
  "maxLength": 128,
  "example": "example"
}
originHeader · Required

Browser Origin evaluated against the public channel allowlist; a missing or disallowed origin is rejected without exposing private venue configuration.

string
Full 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

UpdatePublicPreorderDraftDto
Full definition
{
  "$ref": "#/components/schemas/UpdatePublicPreorderDraftDto"
}

Responses

200Returns the updated draft, revision, expiry, and current verification state.
PreorderPublicUpdateDraftResultDto
Full definition
{
  "$ref": "#/components/schemas/PreorderPublicUpdateDraftResultDto"
}
Example response · 200 · application/json
{
  "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.
TranslatedErrorDto
Full definition
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Example response · 401 · application/json
{
  "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
IdempotencyConflictError
Full definition
{
  "$ref": "#/components/schemas/IdempotencyConflictError"
}
Example response · 409 · application/json
{
  "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.

serviceModeRequired

Allowed service mode for public preorder draft: DINE_IN, PICKUP, DELIVERY, CATERING.

string
Full 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"
}
scheduledForRequired

RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.

string · date-time
Full 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"
}
partySizeRequired

Whole-number party size recorded for public preorder draft. Accepted values enforce minimum 1 and maximum 10000.

integer
Full 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
}
contactNameRequired

Human-readable contact name for public preorder draft.

string
Full definition
{
  "type": "string",
  "description": "Human-readable contact name for public preorder draft.",
  "example": "Example name"
}
contactPhoneOptional

Telephone number recorded for contact phone in public preorder draft. Null means no value is recorded for this representation.

string · null
Full 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"
}
contactEmailOptional

Email address recorded for contact email in public preorder draft. Null means no value is recorded for this representation.

string · email · null
Full 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"
}
addressLine1Optional

Primary street-address line for public preorder draft. Null means no value is recorded for this representation.

string · null
Full 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"
}
addressLine2Optional

Optional secondary address details such as unit, floor, or building for public preorder draft. Null means no value is recorded for this representation.

string · null
Full 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"
}
cityOptional

City or locality recorded for the address represented by public preorder draft. Null means no value is recorded for this representation.

string · null
Full 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"
}
regionOptional

Region, state, or administrative subdivision recorded for public preorder draft. Null means no value is recorded for this representation.

string · null
Full 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"
}
postalCodeOptional

Stable postal code used to classify or address public preorder draft. Null means no value is recorded for this representation.

string · null
Full 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"
}
countryCodeOptional

Stable country code used to classify or address public preorder draft. Null means no value is recorded for this representation.

string · null
Full 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"
}
administrativeDivisionIdOptional

Hallify UUID identifying administrative division associated with public preorder draft. Null means no value is recorded for this representation.

string · uuid · null
Full 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"
}
localityIdOptional

Hallify UUID identifying locality associated with public preorder draft. Null means no value is recorded for this representation.

string · uuid · null
Full 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"
}
postalCodeIdOptional

Hallify UUID identifying postal code associated with public preorder draft. Null means no value is recorded for this representation.

string · uuid · null
Full 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"
}
latitudeOptional

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.

number · null
Full 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
}
longitudeOptional

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.

number · null
Full 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
}
coordinateSourceOptional

Allowed coordinate source for public preorder draft: STAFF, EXTERNAL_CLIENT, GEOREFERENCE_CENTROID. Null means no value is recorded for this representation.

string · null
Full 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"
}
coordinateAccuracyOptional

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.

integer · null
Full 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
}
deliveryInstructionsOptional

Delivery instructions for public preorder draft. Null means no value is recorded for this representation.

string · null
Full definition
{
  "type": "string",
  "nullable": true,
  "description": "Delivery instructions for public preorder draft. Null means no value is recorded for this representation.",
  "example": "example"
}
noteOptional

Human-entered note retained with public preorder draft. Null means no value is recorded for this representation.

string · null
Full 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"
}
capacityOverrideReasonOptional

Manager reason for an explicit capacity overbook. Requires preorders.override.

string
Full definition
{
  "type": "string",
  "description": "Manager reason for an explicit capacity overbook. Requires preorders.override.",
  "minLength": 1,
  "maxLength": 1000,
  "example": "Synthetic example"
}
salesChannelIdRequired

Hallify UUID identifying sales channel associated with public preorder draft.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Hallify UUID identifying sales channel associated with public preorder draft.",
  "example": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"
}
clientMenuVersionIdRequired

Hallify UUID identifying client menu version associated with public preorder draft.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Hallify UUID identifying client menu version associated with public preorder draft.",
  "example": "cd2f2c2a-ba73-4579-8e32-52da8388fd05"
}
clientGraphHashRequired

Opaque graph token returned by the published menu endpoint.

string
Full 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"
}
itemsRequired

Preorder cart line returned in the public preorder draft collection.

array
Full 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
    }
  ]
}
termsVersionRequired

Terms version for public preorder draft. Accepted values enforce minimum length 1 and maximum length 64.

string
Full 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"
}
privacyVersionRequired

Privacy version for public preorder draft. Accepted values enforce minimum length 1 and maximum length 64.

string
Full 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.

clientLineIdRequired

Stable cart line id generated by the client.

string
Full 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"
}
menuItemIdOptional

Hallify UUID identifying menu item associated with preorder cart line.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Hallify UUID identifying menu item associated with preorder cart line.",
  "example": "16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"
}
menuVariantIdOptional

Hallify UUID identifying menu variant associated with preorder cart line.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Hallify UUID identifying menu variant associated with preorder cart line.",
  "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
}
quantityRequired

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.

integer
Full 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
}
modifierOptionIdsOptional

Hallify UUIDs identifying the modifier option set included in preorder cart line.

array
Full 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"
  ]
}
componentSelectionsOptional

Order item component selection included as component selections in preorder cart line.

array
Full 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"
    }
  ]
}
serviceFlagsOptional

Service flags values included as service flags in preorder cart line.

array
Full 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"
  ]
}
specialRequestOptional

Special request for preorder cart line. Accepted values enforce maximum length 500.

string
Full 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.

groupIdRequired

Stable component group id from the published structure.

string
Full definition
{
  "type": "string",
  "description": "Stable component group id from the published structure.",
  "maxLength": 96,
  "example": "example-id"
}
choiceIdRequired

Stable component choice id from the published structure.

string
Full definition
{
  "type": "string",
  "description": "Stable component choice id from the published structure.",
  "maxLength": 160,
  "example": "example-id"
}
menuVariantIdOptional

Selected sellable version when the component item has versions.

string · uuid
Full definition
{
  "type": "string",
  "description": "Selected sellable version when the component item has versions.",
  "format": "uuid",
  "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
}
modifierOptionIdsOptional

Modifier option ids selected for this component.

array
Full 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.

draftReferenceRequired

Human- or provider-assigned reference used to reconcile preorder public draft with its source record.

string
Full definition
{
  "type": "string",
  "description": "Human- or provider-assigned reference used to reconcile preorder public draft with its source record.",
  "example": "example-reference"
}
statusRequired

Current lifecycle status of preorder public draft; allowed values are PENDING_VERIFICATION.

string
Full definition
{
  "type": "string",
  "enum": [
    "PENDING_VERIFICATION"
  ],
  "description": "Current lifecycle status of preorder public draft; allowed values are PENDING_VERIFICATION.",
  "example": "PENDING_VERIFICATION"
}
verificationIdRequired

Hallify UUID identifying verification associated with preorder public draft.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Hallify UUID identifying verification associated with preorder public draft.",
  "example": "904a18d4-c890-4387-8e14-bc52c879c7ff"
}
verificationExpiresAtRequired

RFC 3339 timestamp for verification expires at; offsets represent the same absolute instant.

string · date-time
Full 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"
}
testCodeOptional

Stable test code used to classify or address preorder public draft. Null means no value is recorded for this representation.

string · null
Full 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.

statusCodeRequired

HTTP status code repeated from the response.

integer
Full definition
{
  "type": "integer",
  "description": "HTTP status code repeated from the response.",
  "example": 400
}
errorRequired

Translation key for the HTTP category, such as errors:http.conflict. The specific cause is identified by code and translationKey.

string
Full 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"
}
codeRequired

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.

string
Full 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."
}
messageRequired

Translation key, identical to translationKey. The API does not return localized display text. Resolve the key and translationValues in the consuming application.

string
Full 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."
}
translationKeyRequired

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.

string
Full 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."
}
translationValuesOptional

Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.

object
Full 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"
  }
}
validationErrorsOptional

Field validation failures with translation keys and stable validator codes. Submitted values and raw validator text are not included.

array
Full 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"
    }
  ]
}
detailsOptional

Optional domain-specific blocker or validation details

oneOf
Full 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.

fieldRequired

Public field path. Nested properties and array indices are separated by dots.

string
Full definition
{
  "type": "string",
  "example": "email",
  "description": "Public field path. Nested properties and array indices are separated by dots."
}
translationKeyRequired

Translation key for this validator, identical to message. Resolve it using a client dictionary; see the public Developers error catalog.

string
Full 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."
}
codeRequired

Stable validator identifier for this field failure. Custom validators may define additional identifiers.

string
Full definition
{
  "type": "string",
  "example": "isEmail",
  "description": "Stable validator identifier for this field failure. Custom validators may define additional identifiers."
}
messageRequired

Translation key describing this field validation failure, identical to translationKey. Submitted values and validator prose are not included.

string
Full 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."
}
translationValuesOptional

Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.

object
Full 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."
}

Hallify uses essential cookies and optional analytics.

Essential cookies keep sign-in, locale, and theme preferences working. Analytics is off until you choose to allow it.