Skip to content
Sections

QR table access and ordering

Quote an owned guest table-order batch

POST/public/table-sessions/{sessionId}/order-requests/quote

Native ordering resolves every selection and amount without creating or changing an Order, item, kitchen demand or financial revision. The bounded original quote is bound to current membership, actual Origin and native/presentation authority.

Authentication

Authorization: Bearer <HALLIFY_TABLE_GUEST_TOKEN>

Guest-owned table membership capability constrained by its native venue, session, guest, current access epochs, presentation resource and browser origin.

Connection guide

Parameters

originHeader · Required

Actual browser-managed request origin used to validate approved presentation provenance and its current resource binding. Browser clients preserve this value; the separate join or membership credential supplies guest authorization.

string · uri
Full definition
{
  "type": "string",
  "format": "uri",
  "example": "https://example.test/resource"
}
sessionIdPath · Required

Native primary table-service session that owns the public access, admission requests and guest memberships addressed by this operation.

string · uuid
Full definition
{
  "format": "uuid",
  "type": "string",
  "example": "9b6163a8-afea-4877-818b-8e2ae28a2845"
}

Request body

Required

Published item/variant selections only; no client-selected guest, staff identity, tenant, order or authoritative amount.

application/json

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

Responses

200Exact native quote, effective expiry, current admission mode and opaque QR proof.
TablePublicOrderQuoteDto
Full definition
{
  "$ref": "#/components/schemas/TablePublicOrderQuoteDto"
}
Example response · 200 · application/json
{
  "quote": {
    "version": 1,
    "scope": {
      "organizationId": "1adea4d1-2821-4a8b-8161-849f3b5973ed",
      "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
      "tableSessionId": "9b456a94-f735-466f-84ba-67aa863b2905",
      "tableSessionGuestId": "cbca9476-6eef-441b-874e-918d61f54560"
    },
    "salesChannelId": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc",
    "basisOrderId": null,
    "basisOrderRevision": null,
    "clientMenuVersionId": "cd2f2c2a-ba73-4579-8e32-52da8388fd05",
    "clientGraphHash": "menu-cost-v1.graph.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
    "financialPolicyVersionId": "b36de587-2415-41cd-8269-c8dc9aa8ee66",
    "pricingHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "items": [
      {
        "clientLineId": "guest-line-1",
        "quantity": 1
      }
    ],
    "currency": "GEL",
    "lines": [
      {
        "clientLineId": "example-id",
        "name": "Example name",
        "quantity": 1,
        "unitPrice": "12.00",
        "total": "12.00"
      }
    ],
    "amounts": {
      "subtotal": "12.00",
      "discount": "0.00",
      "serviceCharge": "0.00",
      "tax": "0.00",
      "total": "12.00"
    },
    "createdAt": "2026-01-15T13:00:00.000Z",
    "expiresAt": "2026-12-31T18:00:00.000Z"
  },
  "mode": "DIRECT",
  "expiresAt": "2026-12-31T18:00:00.000Z",
  "proof": "example"
}
400The supplied identifier, query or credential shape is invalid.
TranslatedErrorDto
Full definition
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Example response · 400 · application/json
{
  "statusCode": 400,
  "error": "errors:http.badRequest",
  "code": "HTTP_BAD_REQUEST",
  "message": "errors:http.badRequest",
  "translationKey": "errors:http.badRequest"
}
401The QR credential, current native authority or exact requesting Origin is denied.
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"
}
404The current public locator, presentation binding or owned native resource is unavailable.
TranslatedErrorDto
Full definition
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Example response · 404 · application/json
{
  "statusCode": 404,
  "error": "errors:http.notFound",
  "code": "HTTP_NOT_FOUND",
  "message": "errors:http.notFound",
  "translationKey": "errors:http.notFound"
}
409Published menu or native financial/channel basis changed. Obtain a fresh catalog and quote; no native order demand was created.
TranslatedErrorDto
Full definition
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Example response · 409 · application/json
{
  "statusCode": 409,
  "error": "errors:http.conflict",
  "code": "HTTP_CONFLICT",
  "message": "errors:http.conflict",
  "translationKey": "errors:http.conflict"
}
429The hashed membership/source attempt budget is exhausted. TABLE_PUBLIC_THROTTLED includes retryAfterSeconds; no new native work is performed.

Response headers

Retry-After

Whole seconds the client must wait before retrying the rejected request.

integer
Full definition
{
  "type": "integer",
  "minimum": 1,
  "example": 60
}
TranslatedErrorDto
Full definition
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Example response · 429 · application/json
{
  "statusCode": 429,
  "error": "errors:http.tooManyRequests",
  "code": "HTTP_TOO_MANY_REQUESTS",
  "message": "errors:http.tooManyRequests",
  "translationKey": "errors:http.tooManyRequests"
}
503QR key material or authoritative native state cannot be safely used.
TranslatedErrorDto
Full definition
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Example response · 503 · application/json
{
  "statusCode": 503,
  "error": "errors:http.serviceUnavailable",
  "code": "HTTP_SERVICE_UNAVAILABLE",
  "message": "errors:http.serviceUnavailable",
  "translationKey": "errors:http.serviceUnavailable"
}

Schemas

QuoteTablePublicOrderDto

Published menu selection for an owned native table session. Tenant, slot, channel, staff actor and amounts are resolved by the server.

itemsRequired

One immutable guest batch with unique caller-stable clientLineId values. Each line is priced and admitted through native Orders.

array
Full definition
{
  "minItems": 1,
  "maxItems": 100,
  "description": "One immutable guest batch with unique caller-stable clientLineId values. Each line is priced and admitted through native Orders.",
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/TablePublicOrderLineDto"
  },
  "example": [
    {
      "clientLineId": "guest-line-1",
      "quantity": 1
    }
  ]
}
clientMenuVersionIdRequired

Exact published menu version returned by the native catalog.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Exact published menu version returned by the native catalog.",
  "example": "cd2f2c2a-ba73-4579-8e32-52da8388fd05"
}
clientGraphHashRequired

Opaque public graph token from that same native catalog; the example is synthetic.

string
Full definition
{
  "type": "string",
  "pattern": "^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$",
  "example": "menu-cost-v1.graph.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
  "description": "Opaque public graph token from that same native catalog; the example is synthetic."
}
Full definition
{
  "type": "object",
  "properties": {
    "items": {
      "minItems": 1,
      "maxItems": 100,
      "description": "One immutable guest batch with unique caller-stable clientLineId values. Each line is priced and admitted through native Orders.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TablePublicOrderLineDto"
      },
      "example": [
        {
          "clientLineId": "guest-line-1",
          "quantity": 1
        }
      ]
    },
    "clientMenuVersionId": {
      "type": "string",
      "format": "uuid",
      "description": "Exact published menu version returned by the native catalog.",
      "example": "cd2f2c2a-ba73-4579-8e32-52da8388fd05"
    },
    "clientGraphHash": {
      "type": "string",
      "pattern": "^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$",
      "example": "menu-cost-v1.graph.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
      "description": "Opaque public graph token from that same native catalog; the example is synthetic."
    }
  },
  "description": "Published menu selection for an owned native table session. Tenant, slot, channel, staff actor and amounts are resolved by the server.",
  "required": [
    "items",
    "clientMenuVersionId",
    "clientGraphHash"
  ],
  "example": {
    "items": [
      {
        "clientLineId": "guest-line-1",
        "quantity": 1
      }
    ],
    "clientMenuVersionId": "cd2f2c2a-ba73-4579-8e32-52da8388fd05",
    "clientGraphHash": "menu-cost-v1.graph.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"
  }
}
TablePublicOrderLineDto

A canonical guest batch line. Exactly one published menu item or variant is required; native ordering validates eligibility and resolves every amount.

clientLineIdRequired

Caller-stable line correlation retained in the original quote and admitted item mapping; not a native item identifier.

string
Full definition
{
  "type": "string",
  "maxLength": 80,
  "pattern": "^[A-Za-z0-9][A-Za-z0-9:_-]{0,79}$",
  "example": "guest-line-1",
  "description": "Caller-stable line correlation retained in the original quote and admitted item mapping; not a native item identifier."
}
menuItemIdOptional

Required when menuVariantId is absent.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Required when menuVariantId is absent.",
  "example": "16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"
}
menuVariantIdOptional

Required when menuItemId is absent.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Required when menuItemId is absent.",
  "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
}
quantityRequired

Requested whole units of the selected published item or variant.

integer
Full definition
{
  "type": "integer",
  "minimum": 1,
  "maximum": 999,
  "example": 1,
  "description": "Requested whole units of the selected published item or variant."
}
modifierOptionIdsOptional

Published modifier option UUIDs.

array
Full definition
{
  "maxItems": 20,
  "description": "Published modifier option UUIDs.",
  "type": "array",
  "items": {
    "type": "string",
    "example": "example"
  },
  "example": [
    "example"
  ]
}
specialRequestOptional

Bounded guest preparation request; never used as an authorization or pricing instruction.

string
Full definition
{
  "type": "string",
  "maxLength": 500,
  "description": "Bounded guest preparation request; never used as an authorization or pricing instruction.",
  "example": "synthetic-example-credential"
}
componentSelectionsOptional

Bounded choices from the exact published structured-item configurator; native ordering checks group rules and compatibility.

array
Full definition
{
  "maxItems": 50,
  "description": "Bounded choices from the exact published structured-item configurator; native ordering checks group rules and compatibility.",
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/TablePublicOrderComponentSelectionDto"
  },
  "example": [
    {
      "groupId": "example-id",
      "choiceId": "example-id"
    }
  ]
}
Full definition
{
  "type": "object",
  "properties": {
    "clientLineId": {
      "type": "string",
      "maxLength": 80,
      "pattern": "^[A-Za-z0-9][A-Za-z0-9:_-]{0,79}$",
      "example": "guest-line-1",
      "description": "Caller-stable line correlation retained in the original quote and admitted item mapping; not a native item identifier."
    },
    "menuItemId": {
      "type": "string",
      "format": "uuid",
      "description": "Required when menuVariantId is absent.",
      "example": "16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"
    },
    "menuVariantId": {
      "type": "string",
      "format": "uuid",
      "description": "Required when menuItemId is absent.",
      "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "maximum": 999,
      "example": 1,
      "description": "Requested whole units of the selected published item or variant."
    },
    "modifierOptionIds": {
      "maxItems": 20,
      "description": "Published modifier option UUIDs.",
      "type": "array",
      "items": {
        "type": "string",
        "example": "example"
      },
      "example": [
        "example"
      ]
    },
    "specialRequest": {
      "type": "string",
      "maxLength": 500,
      "description": "Bounded guest preparation request; never used as an authorization or pricing instruction.",
      "example": "synthetic-example-credential"
    },
    "componentSelections": {
      "maxItems": 50,
      "description": "Bounded choices from the exact published structured-item configurator; native ordering checks group rules and compatibility.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TablePublicOrderComponentSelectionDto"
      },
      "example": [
        {
          "groupId": "example-id",
          "choiceId": "example-id"
        }
      ]
    }
  },
  "description": "A canonical guest batch line. Exactly one published menu item or variant is required; native ordering validates eligibility and resolves every amount.",
  "required": [
    "clientLineId",
    "quantity"
  ],
  "example": {
    "clientLineId": "guest-line-1",
    "quantity": 1
  }
}
TablePublicOrderComponentSelectionDto

One bounded choice from the exact published structured-item configurator.

groupIdRequired

Published component group identifier.

string
Full definition
{
  "type": "string",
  "maxLength": 96,
  "description": "Published component group identifier.",
  "example": "example-id"
}
choiceIdRequired

Published component choice identifier.

string
Full definition
{
  "type": "string",
  "maxLength": 160,
  "description": "Published component choice identifier.",
  "example": "example-id"
}
menuVariantIdOptional

Published sellable variant selected for this component, when required by its configurator.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Published sellable variant selected for this component, when required by its configurator.",
  "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
}
modifierOptionIdsOptional

Published modifier option UUIDs for this component.

array
Full definition
{
  "maxItems": 20,
  "description": "Published modifier option UUIDs for this component.",
  "type": "array",
  "items": {
    "type": "string",
    "example": "example"
  },
  "example": [
    "example"
  ]
}
Full definition
{
  "type": "object",
  "properties": {
    "groupId": {
      "type": "string",
      "maxLength": 96,
      "description": "Published component group identifier.",
      "example": "example-id"
    },
    "choiceId": {
      "type": "string",
      "maxLength": 160,
      "description": "Published component choice identifier.",
      "example": "example-id"
    },
    "menuVariantId": {
      "type": "string",
      "format": "uuid",
      "description": "Published sellable variant selected for this component, when required by its configurator.",
      "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
    },
    "modifierOptionIds": {
      "maxItems": 20,
      "description": "Published modifier option UUIDs for this component.",
      "type": "array",
      "items": {
        "type": "string",
        "example": "example"
      },
      "example": [
        "example"
      ]
    }
  },
  "description": "One bounded choice from the exact published structured-item configurator.",
  "required": [
    "groupId",
    "choiceId"
  ],
  "example": {
    "groupId": "example-id",
    "choiceId": "example-id"
  }
}
TablePublicOrderQuoteDto

A side-effect-free native guest batch quote plus its exact-document QR proof and effective source deadline.

quoteRequired

Exact native quote document to preserve unchanged with the original selection and proof.

allOf
Full definition
{
  "description": "Exact native quote document to preserve unchanged with the original selection and proof.",
  "allOf": [
    {
      "$ref": "#/components/schemas/TablePublicOrderNativeQuoteDto"
    }
  ],
  "example": {
    "version": 1,
    "scope": {
      "organizationId": "1adea4d1-2821-4a8b-8161-849f3b5973ed",
      "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
      "tableSessionId": "9b456a94-f735-466f-84ba-67aa863b2905",
      "tableSessionGuestId": "cbca9476-6eef-441b-874e-918d61f54560"
    },
    "salesChannelId": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc",
    "basisOrderId": null,
    "basisOrderRevision": null,
    "clientMenuVersionId": "cd2f2c2a-ba73-4579-8e32-52da8388fd05",
    "clientGraphHash": "menu-cost-v1.graph.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
    "financialPolicyVersionId": "b36de587-2415-41cd-8269-c8dc9aa8ee66",
    "pricingHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "items": [
      {
        "clientLineId": "guest-line-1",
        "quantity": 1
      }
    ],
    "currency": "GEL",
    "lines": [
      {
        "clientLineId": "example-id",
        "name": "Example name",
        "quantity": 1,
        "unitPrice": "12.00",
        "total": "12.00"
      }
    ],
    "amounts": {
      "subtotal": "12.00",
      "discount": "0.00",
      "serviceCharge": "0.00",
      "tax": "0.00",
      "total": "12.00"
    },
    "createdAt": "2026-01-15T13:00:00.000Z",
    "expiresAt": "2026-12-31T18:00:00.000Z"
  }
}
modeRequired

Current policy mode captured by this proof: immediate native admission or an immutable staff-confirmation request.

string
Full definition
{
  "type": "string",
  "enum": [
    "DIRECT",
    "STAFF_CONFIRM"
  ],
  "description": "Current policy mode captured by this proof: immediate native admission or an immutable staff-confirmation request.",
  "example": "DIRECT"
}
expiresAtRequired

Effective quote deadline bounded by current native membership and presentation authority.

string · date-time
Full definition
{
  "type": "string",
  "format": "date-time",
  "description": "Effective quote deadline bounded by current native membership and presentation authority.",
  "example": "2026-12-31T18:00:00.000Z"
}
proofRequired

Opaque exact-document proof. Preserve with the quote and selections for submit/recovery; it grants no independent native authority.

string
Full definition
{
  "type": "string",
  "maxLength": 24000,
  "description": "Opaque exact-document proof. Preserve with the quote and selections for submit/recovery; it grants no independent native authority.",
  "example": "example"
}
Full definition
{
  "type": "object",
  "properties": {
    "quote": {
      "description": "Exact native quote document to preserve unchanged with the original selection and proof.",
      "allOf": [
        {
          "$ref": "#/components/schemas/TablePublicOrderNativeQuoteDto"
        }
      ],
      "example": {
        "version": 1,
        "scope": {
          "organizationId": "1adea4d1-2821-4a8b-8161-849f3b5973ed",
          "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
          "tableSessionId": "9b456a94-f735-466f-84ba-67aa863b2905",
          "tableSessionGuestId": "cbca9476-6eef-441b-874e-918d61f54560"
        },
        "salesChannelId": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc",
        "basisOrderId": null,
        "basisOrderRevision": null,
        "clientMenuVersionId": "cd2f2c2a-ba73-4579-8e32-52da8388fd05",
        "clientGraphHash": "menu-cost-v1.graph.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
        "financialPolicyVersionId": "b36de587-2415-41cd-8269-c8dc9aa8ee66",
        "pricingHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "items": [
          {
            "clientLineId": "guest-line-1",
            "quantity": 1
          }
        ],
        "currency": "GEL",
        "lines": [
          {
            "clientLineId": "example-id",
            "name": "Example name",
            "quantity": 1,
            "unitPrice": "12.00",
            "total": "12.00"
          }
        ],
        "amounts": {
          "subtotal": "12.00",
          "discount": "0.00",
          "serviceCharge": "0.00",
          "tax": "0.00",
          "total": "12.00"
        },
        "createdAt": "2026-01-15T13:00:00.000Z",
        "expiresAt": "2026-12-31T18:00:00.000Z"
      }
    },
    "mode": {
      "type": "string",
      "enum": [
        "DIRECT",
        "STAFF_CONFIRM"
      ],
      "description": "Current policy mode captured by this proof: immediate native admission or an immutable staff-confirmation request.",
      "example": "DIRECT"
    },
    "expiresAt": {
      "type": "string",
      "format": "date-time",
      "description": "Effective quote deadline bounded by current native membership and presentation authority.",
      "example": "2026-12-31T18:00:00.000Z"
    },
    "proof": {
      "type": "string",
      "maxLength": 24000,
      "description": "Opaque exact-document proof. Preserve with the quote and selections for submit/recovery; it grants no independent native authority.",
      "example": "example"
    }
  },
  "description": "A side-effect-free native guest batch quote plus its exact-document QR proof and effective source deadline.",
  "required": [
    "quote",
    "mode",
    "expiresAt",
    "proof"
  ],
  "example": {
    "quote": {
      "version": 1,
      "scope": {
        "organizationId": "1adea4d1-2821-4a8b-8161-849f3b5973ed",
        "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
        "tableSessionId": "9b456a94-f735-466f-84ba-67aa863b2905",
        "tableSessionGuestId": "cbca9476-6eef-441b-874e-918d61f54560"
      },
      "salesChannelId": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc",
      "basisOrderId": null,
      "basisOrderRevision": null,
      "clientMenuVersionId": "cd2f2c2a-ba73-4579-8e32-52da8388fd05",
      "clientGraphHash": "menu-cost-v1.graph.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
      "financialPolicyVersionId": "b36de587-2415-41cd-8269-c8dc9aa8ee66",
      "pricingHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "items": [
        {
          "clientLineId": "guest-line-1",
          "quantity": 1
        }
      ],
      "currency": "GEL",
      "lines": [
        {
          "clientLineId": "example-id",
          "name": "Example name",
          "quantity": 1,
          "unitPrice": "12.00",
          "total": "12.00"
        }
      ],
      "amounts": {
        "subtotal": "12.00",
        "discount": "0.00",
        "serviceCharge": "0.00",
        "tax": "0.00",
        "total": "12.00"
      },
      "createdAt": "2026-01-15T13:00:00.000Z",
      "expiresAt": "2026-12-31T18:00:00.000Z"
    },
    "mode": "DIRECT",
    "expiresAt": "2026-12-31T18:00:00.000Z",
    "proof": "example"
  }
}
TablePublicOrderNativeQuoteDto

Canonical native guest batch quote, preserved verbatim. QR proof authenticates this exact document; native ordering owns all pricing, channel and financial evidence.

versionRequired

Canonical native guest batch quote document version.

integer
Full definition
{
  "type": "integer",
  "enum": [
    1
  ],
  "description": "Canonical native guest batch quote document version.",
  "example": 1
}
scopeRequired

Immutable server-derived tenant, session and operational guest scope.

allOf
Full definition
{
  "description": "Immutable server-derived tenant, session and operational guest scope.",
  "allOf": [
    {
      "$ref": "#/components/schemas/TablePublicOrderScopeDto"
    }
  ],
  "example": {
    "organizationId": "1adea4d1-2821-4a8b-8161-849f3b5973ed",
    "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
    "tableSessionId": "9b456a94-f735-466f-84ba-67aa863b2905",
    "tableSessionGuestId": "cbca9476-6eef-441b-874e-918d61f54560"
  }
}
salesChannelIdRequired

Native compatible sales channel selected for this batch and rechecked at admission.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Native compatible sales channel selected for this batch and rechecked at admission.",
  "example": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"
}
basisOrderIdRequired

Existing native active Order used only as a channel and financial basis, or null when no basis Order exists. Its pointer and rows are not submitted by this batch.

string · uuid · null
Full definition
{
  "type": "string",
  "format": "uuid",
  "nullable": true,
  "description": "Existing native active Order used only as a channel and financial basis, or null when no basis Order exists. Its pointer and rows are not submitted by this batch.",
  "example": "84c563bd-49f7-45e6-8212-133ba2297c16"
}
basisOrderRevisionRequired

Captured basis Order revision, or null together with the absent basis Order.

integer · null
Full definition
{
  "type": "integer",
  "minimum": 1,
  "nullable": true,
  "description": "Captured basis Order revision, or null together with the absent basis Order.",
  "example": 1
}
clientMenuVersionIdRequired

Exact published menu version against which every native batch selection was resolved.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Exact published menu version against which every native batch selection was resolved.",
  "example": "cd2f2c2a-ba73-4579-8e32-52da8388fd05"
}
clientGraphHashRequired

Opaque graph token from that published menu; stale graph evidence requires a new quote. The example is synthetic.

string
Full definition
{
  "type": "string",
  "pattern": "^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$",
  "example": "menu-cost-v1.graph.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
  "description": "Opaque graph token from that published menu; stale graph evidence requires a new quote. The example is synthetic."
}
financialPolicyVersionIdRequired

Native financial policy version whose snapshots and amounts must still match at batch admission.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Native financial policy version whose snapshots and amounts must still match at batch admission.",
  "example": "b36de587-2415-41cd-8269-c8dc9aa8ee66"
}
pricingHashRequired

Canonical native pricing evidence fingerprint; it is revalidated by Orders and never replaced with a client calculation. The example is synthetic.

string
Full definition
{
  "type": "string",
  "pattern": "^[a-f0-9]{64}$",
  "example": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "description": "Canonical native pricing evidence fingerprint; it is revalidated by Orders and never replaced with a client calculation. The example is synthetic."
}
itemsRequired

Original canonical configured selections preserved verbatim in the signed quote.

array
Full definition
{
  "minItems": 1,
  "maxItems": 100,
  "description": "Original canonical configured selections preserved verbatim in the signed quote.",
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/TablePublicOrderLineDto"
  },
  "example": [
    {
      "clientLineId": "guest-line-1",
      "quantity": 1
    }
  ]
}
currencyRequired

Native three-letter currency for all line and batch amounts in this quote.

string
Full definition
{
  "type": "string",
  "pattern": "^[A-Z]{3}$",
  "example": "GEL",
  "description": "Native three-letter currency for all line and batch amounts in this quote."
}
linesRequired

Public native line names, quantities and prices for the guest or staff review.

array
Full definition
{
  "minItems": 1,
  "maxItems": 100,
  "description": "Public native line names, quantities and prices for the guest or staff review.",
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/TablePublicOrderPricedLineDto"
  },
  "example": [
    {
      "clientLineId": "example-id",
      "name": "Example name",
      "quantity": 1,
      "unitPrice": "12.00",
      "total": "12.00"
    }
  ]
}
amountsRequired

Canonical native batch totals under the captured financial policy.

allOf
Full definition
{
  "description": "Canonical native batch totals under the captured financial policy.",
  "allOf": [
    {
      "$ref": "#/components/schemas/TablePublicOrderAmountsDto"
    }
  ],
  "example": {
    "subtotal": "12.00",
    "discount": "0.00",
    "serviceCharge": "0.00",
    "tax": "0.00",
    "total": "12.00"
  }
}
createdAtRequired

Server observation time at which native quote resolution completed.

string · date-time
Full definition
{
  "type": "string",
  "format": "date-time",
  "description": "Server observation time at which native quote resolution completed.",
  "example": "2026-01-15T13:00:00.000Z"
}
expiresAtRequired

Native quote deadline; the enclosing QR proof may narrow it to the current source authority deadline.

string · date-time
Full definition
{
  "type": "string",
  "format": "date-time",
  "description": "Native quote deadline; the enclosing QR proof may narrow it to the current source authority deadline.",
  "example": "2026-12-31T18:00:00.000Z"
}
Full definition
{
  "type": "object",
  "properties": {
    "version": {
      "type": "integer",
      "enum": [
        1
      ],
      "description": "Canonical native guest batch quote document version.",
      "example": 1
    },
    "scope": {
      "description": "Immutable server-derived tenant, session and operational guest scope.",
      "allOf": [
        {
          "$ref": "#/components/schemas/TablePublicOrderScopeDto"
        }
      ],
      "example": {
        "organizationId": "1adea4d1-2821-4a8b-8161-849f3b5973ed",
        "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
        "tableSessionId": "9b456a94-f735-466f-84ba-67aa863b2905",
        "tableSessionGuestId": "cbca9476-6eef-441b-874e-918d61f54560"
      }
    },
    "salesChannelId": {
      "type": "string",
      "format": "uuid",
      "description": "Native compatible sales channel selected for this batch and rechecked at admission.",
      "example": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"
    },
    "basisOrderId": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "Existing native active Order used only as a channel and financial basis, or null when no basis Order exists. Its pointer and rows are not submitted by this batch.",
      "example": "84c563bd-49f7-45e6-8212-133ba2297c16"
    },
    "basisOrderRevision": {
      "type": "integer",
      "minimum": 1,
      "nullable": true,
      "description": "Captured basis Order revision, or null together with the absent basis Order.",
      "example": 1
    },
    "clientMenuVersionId": {
      "type": "string",
      "format": "uuid",
      "description": "Exact published menu version against which every native batch selection was resolved.",
      "example": "cd2f2c2a-ba73-4579-8e32-52da8388fd05"
    },
    "clientGraphHash": {
      "type": "string",
      "pattern": "^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$",
      "example": "menu-cost-v1.graph.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
      "description": "Opaque graph token from that published menu; stale graph evidence requires a new quote. The example is synthetic."
    },
    "financialPolicyVersionId": {
      "type": "string",
      "format": "uuid",
      "description": "Native financial policy version whose snapshots and amounts must still match at batch admission.",
      "example": "b36de587-2415-41cd-8269-c8dc9aa8ee66"
    },
    "pricingHash": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "example": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "description": "Canonical native pricing evidence fingerprint; it is revalidated by Orders and never replaced with a client calculation. The example is synthetic."
    },
    "items": {
      "minItems": 1,
      "maxItems": 100,
      "description": "Original canonical configured selections preserved verbatim in the signed quote.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TablePublicOrderLineDto"
      },
      "example": [
        {
          "clientLineId": "guest-line-1",
          "quantity": 1
        }
      ]
    },
    "currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$",
      "example": "GEL",
      "description": "Native three-letter currency for all line and batch amounts in this quote."
    },
    "lines": {
      "minItems": 1,
      "maxItems": 100,
      "description": "Public native line names, quantities and prices for the guest or staff review.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TablePublicOrderPricedLineDto"
      },
      "example": [
        {
          "clientLineId": "example-id",
          "name": "Example name",
          "quantity": 1,
          "unitPrice": "12.00",
          "total": "12.00"
        }
      ]
    },
    "amounts": {
      "description": "Canonical native batch totals under the captured financial policy.",
      "allOf": [
        {
          "$ref": "#/components/schemas/TablePublicOrderAmountsDto"
        }
      ],
      "example": {
        "subtotal": "12.00",
        "discount": "0.00",
        "serviceCharge": "0.00",
        "tax": "0.00",
        "total": "12.00"
      }
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Server observation time at which native quote resolution completed.",
      "example": "2026-01-15T13:00:00.000Z"
    },
    "expiresAt": {
      "type": "string",
      "format": "date-time",
      "description": "Native quote deadline; the enclosing QR proof may narrow it to the current source authority deadline.",
      "example": "2026-12-31T18:00:00.000Z"
    }
  },
  "description": "Canonical native guest batch quote, preserved verbatim. QR proof authenticates this exact document; native ordering owns all pricing, channel and financial evidence.",
  "required": [
    "version",
    "scope",
    "salesChannelId",
    "basisOrderId",
    "basisOrderRevision",
    "clientMenuVersionId",
    "clientGraphHash",
    "financialPolicyVersionId",
    "pricingHash",
    "items",
    "currency",
    "lines",
    "amounts",
    "createdAt",
    "expiresAt"
  ],
  "example": {
    "version": 1,
    "scope": {
      "organizationId": "1adea4d1-2821-4a8b-8161-849f3b5973ed",
      "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
      "tableSessionId": "9b456a94-f735-466f-84ba-67aa863b2905",
      "tableSessionGuestId": "cbca9476-6eef-441b-874e-918d61f54560"
    },
    "salesChannelId": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc",
    "basisOrderId": null,
    "basisOrderRevision": null,
    "clientMenuVersionId": "cd2f2c2a-ba73-4579-8e32-52da8388fd05",
    "clientGraphHash": "menu-cost-v1.graph.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
    "financialPolicyVersionId": "b36de587-2415-41cd-8269-c8dc9aa8ee66",
    "pricingHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "items": [
      {
        "clientLineId": "guest-line-1",
        "quantity": 1
      }
    ],
    "currency": "GEL",
    "lines": [
      {
        "clientLineId": "example-id",
        "name": "Example name",
        "quantity": 1,
        "unitPrice": "12.00",
        "total": "12.00"
      }
    ],
    "amounts": {
      "subtotal": "12.00",
      "discount": "0.00",
      "serviceCharge": "0.00",
      "tax": "0.00",
      "total": "12.00"
    },
    "createdAt": "2026-01-15T13:00:00.000Z",
    "expiresAt": "2026-12-31T18:00:00.000Z"
  }
}
TablePublicOrderScopeDto

Server-derived native tenant, service session and operational guest scope captured by a guest order quote.

organizationIdRequired

Organization derived from the authenticated native membership; the guest cannot override it.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Organization derived from the authenticated native membership; the guest cannot override it.",
  "example": "1adea4d1-2821-4a8b-8161-849f3b5973ed"
}
venueIdRequired

Venue owning this native table session, quote and resulting batch Order.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Venue owning this native table session, quote and resulting batch Order.",
  "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
}
tableSessionIdRequired

Exact native primary service session captured by the guest batch quote.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Exact native primary service session captured by the guest batch quote.",
  "example": "9b456a94-f735-466f-84ba-67aa863b2905"
}
tableSessionGuestIdRequired

Operational guest slot that authored the batch and receives its native item assignments; not a CRM guest identity.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Operational guest slot that authored the batch and receives its native item assignments; not a CRM guest identity.",
  "example": "cbca9476-6eef-441b-874e-918d61f54560"
}
Full definition
{
  "type": "object",
  "properties": {
    "organizationId": {
      "type": "string",
      "format": "uuid",
      "description": "Organization derived from the authenticated native membership; the guest cannot override it.",
      "example": "1adea4d1-2821-4a8b-8161-849f3b5973ed"
    },
    "venueId": {
      "type": "string",
      "format": "uuid",
      "description": "Venue owning this native table session, quote and resulting batch Order.",
      "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
    },
    "tableSessionId": {
      "type": "string",
      "format": "uuid",
      "description": "Exact native primary service session captured by the guest batch quote.",
      "example": "9b456a94-f735-466f-84ba-67aa863b2905"
    },
    "tableSessionGuestId": {
      "type": "string",
      "format": "uuid",
      "description": "Operational guest slot that authored the batch and receives its native item assignments; not a CRM guest identity.",
      "example": "cbca9476-6eef-441b-874e-918d61f54560"
    }
  },
  "description": "Server-derived native tenant, service session and operational guest scope captured by a guest order quote.",
  "required": [
    "organizationId",
    "venueId",
    "tableSessionId",
    "tableSessionGuestId"
  ],
  "example": {
    "organizationId": "1adea4d1-2821-4a8b-8161-849f3b5973ed",
    "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
    "tableSessionId": "9b456a94-f735-466f-84ba-67aa863b2905",
    "tableSessionGuestId": "cbca9476-6eef-441b-874e-918d61f54560"
  }
}
TablePublicOrderPricedLineDto

Public line description and configured price resolved by native ordering.

clientLineIdRequired

Original caller-stable line identifier associated with this resolved public price.

string
Full definition
{
  "type": "string",
  "maxLength": 80,
  "description": "Original caller-stable line identifier associated with this resolved public price.",
  "example": "example-id"
}
nameRequired

Public published item or variant name captured by native quote resolution.

string
Full definition
{
  "type": "string",
  "maxLength": 255,
  "description": "Public published item or variant name captured by native quote resolution.",
  "example": "Example name"
}
quantityRequired

Quoted whole-unit quantity for this configured native line.

integer
Full definition
{
  "type": "integer",
  "minimum": 1,
  "description": "Quoted whole-unit quantity for this configured native line.",
  "example": 1
}
unitPriceRequired

Native resolved configured unit price in the quote currency.

string
Full definition
{
  "type": "string",
  "pattern": "^\\d+\\.\\d{2}$",
  "example": "12.00",
  "description": "Native resolved configured unit price in the quote currency."
}
totalRequired

Native resolved line total for its quoted quantity and configuration.

string
Full definition
{
  "type": "string",
  "pattern": "^\\d+\\.\\d{2}$",
  "example": "12.00",
  "description": "Native resolved line total for its quoted quantity and configuration."
}
Full definition
{
  "type": "object",
  "properties": {
    "clientLineId": {
      "type": "string",
      "maxLength": 80,
      "description": "Original caller-stable line identifier associated with this resolved public price.",
      "example": "example-id"
    },
    "name": {
      "type": "string",
      "maxLength": 255,
      "description": "Public published item or variant name captured by native quote resolution.",
      "example": "Example name"
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "description": "Quoted whole-unit quantity for this configured native line.",
      "example": 1
    },
    "unitPrice": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{2}$",
      "example": "12.00",
      "description": "Native resolved configured unit price in the quote currency."
    },
    "total": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{2}$",
      "example": "12.00",
      "description": "Native resolved line total for its quoted quantity and configuration."
    }
  },
  "description": "Public line description and configured price resolved by native ordering.",
  "required": [
    "clientLineId",
    "name",
    "quantity",
    "unitPrice",
    "total"
  ],
  "example": {
    "clientLineId": "example-id",
    "name": "Example name",
    "quantity": 1,
    "unitPrice": "12.00",
    "total": "12.00"
  }
}
TablePublicOrderAmountsDto

Canonical native order batch amounts, expressed as decimal strings in the surrounding quote or admission currency.

subtotalRequired

Native batch subtotal before its resolved discounts, service charge and tax, in quote currency.

string
Full definition
{
  "type": "string",
  "pattern": "^\\d+\\.\\d{2}$",
  "example": "12.00",
  "description": "Native batch subtotal before its resolved discounts, service charge and tax, in quote currency."
}
discountRequired

Native discount total for this quoted batch; QR does not calculate or override discounts.

string
Full definition
{
  "type": "string",
  "pattern": "^\\d+\\.\\d{2}$",
  "example": "0.00",
  "description": "Native discount total for this quoted batch; QR does not calculate or override discounts."
}
serviceChargeRequired

Service charge resolved by native financial policy for this batch.

string
Full definition
{
  "type": "string",
  "pattern": "^\\d+\\.\\d{2}$",
  "example": "0.00",
  "description": "Service charge resolved by native financial policy for this batch."
}
taxRequired

Tax total resolved by native financial policy and its canonical rounding rules.

string
Full definition
{
  "type": "string",
  "pattern": "^\\d+\\.\\d{2}$",
  "example": "0.00",
  "description": "Tax total resolved by native financial policy and its canonical rounding rules."
}
totalRequired

Native resulting batch total in quote currency; no payment or tip is collected by order admission.

string
Full definition
{
  "type": "string",
  "pattern": "^\\d+\\.\\d{2}$",
  "example": "12.00",
  "description": "Native resulting batch total in quote currency; no payment or tip is collected by order admission."
}
Full definition
{
  "type": "object",
  "properties": {
    "subtotal": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{2}$",
      "example": "12.00",
      "description": "Native batch subtotal before its resolved discounts, service charge and tax, in quote currency."
    },
    "discount": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{2}$",
      "example": "0.00",
      "description": "Native discount total for this quoted batch; QR does not calculate or override discounts."
    },
    "serviceCharge": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{2}$",
      "example": "0.00",
      "description": "Service charge resolved by native financial policy for this batch."
    },
    "tax": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{2}$",
      "example": "0.00",
      "description": "Tax total resolved by native financial policy and its canonical rounding rules."
    },
    "total": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{2}$",
      "example": "12.00",
      "description": "Native resulting batch total in quote currency; no payment or tip is collected by order admission."
    }
  },
  "description": "Canonical native order batch amounts, expressed as decimal strings in the surrounding quote or admission currency.",
  "required": [
    "subtotal",
    "discount",
    "serviceCharge",
    "tax",
    "total"
  ],
  "example": {
    "subtotal": "12.00",
    "discount": "0.00",
    "serviceCharge": "0.00",
    "tax": "0.00",
    "total": "12.00"
  }
}
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"
}

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.