Authentication
x-hallify-signature: <HALLIFY_SIGNATURE>HMAC-SHA256 signature credential. Each operation documents its exact protocol through x-hallify-hmac metadata and the operation description.
Parameters
sourceIdPath · RequiredConfigured ingestion or integration source selected within the authenticated parent scope.
string · uuidFull definition
{ "format": "uuid", "type": "string", "example": "9b6163a8-afea-4877-818b-8e2ae28a2845" }x-hallify-timestampHeader · Requiredrfc3339 timestamp; accepted clock skew is ±300 seconds.
stringFull definition
{ "type": "string", "example": "example" }
Request body
Required
External order identifier and monotonic revision, service mode, optional label and due time, and one to 200 order items consumed as the signed source revision.
application/json
Full definition
{
"$ref": "#/components/schemas/ExternalOrderIngressDto"
}Responses
201Returns the accepted external revision, mapped native order, and replay result recorded for the source.
Full definition
{
"$ref": "#/components/schemas/ExternalOrderIngressIngestResultDto"
}{
"id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
"orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
"status": "example",
"externalOrderId": "example-id",
"externalRevision": 1,
"duplicate": false
}400External-order source identifier or order payload is invalid
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 400,
"error": "errors:http.badRequest",
"code": "HTTP_BAD_REQUEST",
"message": "errors:http.badRequest",
"translationKey": "errors:http.badRequest"
}401External-order HMAC signature is invalid or stale
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 401,
"error": "errors:http.unauthorized",
"code": "HTTP_UNAUTHORIZED",
"message": "errors:http.unauthorized",
"translationKey": "errors:http.unauthorized"
}404External-order source or referenced resource was not found
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 404,
"error": "errors:http.notFound",
"code": "HTTP_NOT_FOUND",
"message": "errors:http.notFound",
"translationKey": "errors:http.notFound"
}409External-order revision, payload, or order state conflicts with current state
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 409,
"error": "errors:http.conflict",
"code": "HTTP_CONFLICT",
"message": "errors:http.conflict",
"translationKey": "errors:http.conflict"
}503External-order signing secret is unavailable
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 503,
"error": "errors:http.serviceUnavailable",
"code": "HTTP_SERVICE_UNAVAILABLE",
"message": "errors:http.serviceUnavailable",
"translationKey": "errors:http.serviceUnavailable"
}Schemas
ExternalOrderIngressDto
Authenticates the exact request body with the source-scoped HMAC secret.
externalOrderIdRequiredOpaque identifier for external order associated with external order ingress; clients must not assume UUID syntax. Accepted values enforce maximum length 191.
stringFull definition
{ "type": "string", "maxLength": 191, "description": "Opaque identifier for external order associated with external order ingress; clients must not assume UUID syntax. Accepted values enforce maximum length 191.", "example": "example-id" }externalRevisionRequiredMonotonic optimistic-concurrency revision for external order ingress. Accepted values enforce minimum 1.
integerFull definition
{ "type": "integer", "minimum": 1, "description": "Monotonic optimistic-concurrency revision for external order ingress. Accepted values enforce minimum 1.", "example": 1 }displayLabelOptionalDisplay label for external order ingress. Accepted values enforce maximum length 120.
stringFull definition
{ "type": "string", "maxLength": 120, "description": "Display label for external order ingress. Accepted values enforce maximum length 120.", "example": "example" }serviceModeRequiredAllowed service mode for external order ingress: PICKUP, DELIVERY, CATERING.
stringFull definition
{ "type": "string", "enum": [ "PICKUP", "DELIVERY", "CATERING" ], "description": "Allowed service mode for external order ingress: PICKUP, DELIVERY, CATERING.", "example": "PICKUP" }dueAtOptionalRFC 3339 timestamp for due at; offsets represent the same absolute instant.
string · date-timeFull definition
{ "type": "string", "format": "date-time", "description": "RFC 3339 timestamp for due at; offsets represent the same absolute instant.", "example": "2026-12-31T18:00:00.000Z" }itemsRequiredExternal order item returned in the external order ingress collection.
arrayFull definition
{ "type": "array", "items": { "$ref": "#/components/schemas/ExternalOrderItemDto" }, "description": "External order item returned in the external order ingress collection.", "example": [ { "clientMenuVersionId": "cd2f2c2a-ba73-4579-8e32-52da8388fd05", "clientGraphHash": "menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "quantity": 1 } ] }
Full definition
{
"type": "object",
"properties": {
"externalOrderId": {
"type": "string",
"maxLength": 191,
"description": "Opaque identifier for external order associated with external order ingress; clients must not assume UUID syntax. Accepted values enforce maximum length 191.",
"example": "example-id"
},
"externalRevision": {
"type": "integer",
"minimum": 1,
"description": "Monotonic optimistic-concurrency revision for external order ingress. Accepted values enforce minimum 1.",
"example": 1
},
"displayLabel": {
"type": "string",
"maxLength": 120,
"description": "Display label for external order ingress. Accepted values enforce maximum length 120.",
"example": "example"
},
"serviceMode": {
"type": "string",
"enum": [
"PICKUP",
"DELIVERY",
"CATERING"
],
"description": "Allowed service mode for external order ingress: PICKUP, DELIVERY, CATERING.",
"example": "PICKUP"
},
"dueAt": {
"type": "string",
"format": "date-time",
"description": "RFC 3339 timestamp for due at; offsets represent the same absolute instant.",
"example": "2026-12-31T18:00:00.000Z"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ExternalOrderItemDto"
},
"description": "External order item returned in the external order ingress collection.",
"example": [
{
"clientMenuVersionId": "cd2f2c2a-ba73-4579-8e32-52da8388fd05",
"clientGraphHash": "menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"quantity": 1
}
]
}
},
"required": [
"externalOrderId",
"externalRevision",
"serviceMode",
"items"
],
"description": "Authenticates the exact request body with the source-scoped HMAC secret.",
"example": {
"externalOrderId": "example-id",
"externalRevision": 1,
"serviceMode": "PICKUP",
"items": [
{
"clientMenuVersionId": "cd2f2c2a-ba73-4579-8e32-52da8388fd05",
"clientGraphHash": "menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"quantity": 1
}
]
}
}ExternalOrderItemDto
External order entry embedded in a operations collection or aggregate.
salesChannelIdOptionalVenue sales channel id used to resolve the active menu.
string · uuidFull definition
{ "type": "string", "description": "Venue sales channel id used to resolve the active menu.", "format": "uuid", "example": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc" }clientMenuVersionIdRequiredMenu version id that the client used while composing the item.
string · uuidFull definition
{ "type": "string", "description": "Menu version id that the client used while composing the item.", "format": "uuid", "example": "cd2f2c2a-ba73-4579-8e32-52da8388fd05" }clientGraphHashRequiredOpaque published menu graph token that the client used while composing the item.
stringFull definition
{ "type": "string", "description": "Opaque published menu graph token that the client used while composing the item.", "pattern": "^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$", "maxLength": 128, "example": "menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }expectedUnitPriceOptionalUnit price that the client displayed while composing this item.
numberFull definition
{ "type": "number", "description": "Unit price that the client displayed while composing this item.", "example": 12, "minimum": 0, "maximum": 9999999999.99 }expectedTotalOptionalTotal line price that the client displayed while composing this item.
numberFull definition
{ "type": "number", "description": "Total line price that the client displayed while composing this item.", "example": 24, "minimum": 0, "maximum": 9999999999.99 }enteredUnitPriceOptionalExplicit service-time unit amount for an open-price item. This is separate from the client price-consistency fields.
numberFull definition
{ "type": "number", "description": "Explicit service-time unit amount for an open-price item. This is separate from the client price-consistency fields.", "example": 45, "minimum": 0, "maximum": 9999999999.99 }priceEntryNoteOptionalOperational audit note for an open-price entry. Required when the published policy requires a note.
stringFull definition
{ "type": "string", "description": "Operational audit note for an open-price entry. Required when the published policy requires a note.", "maxLength": 500, "example": "Synthetic example" }openPriceApprovalCredentialOptionalDeliberate staff credential required only when the effective open price crosses its approval policy.
allOfFull definition
{ "description": "Deliberate staff credential required only when the effective open price crosses its approval policy.", "allOf": [ { "$ref": "#/components/schemas/OrderItemOpenPriceApprovalCredentialDto" } ], "example": { "employeeNumber": "1.00", "pin": "example" } }measuredQuantityOptionalExplicit measured amount for a measured item. Send a decimal string in the published measurement unit; measured order lines always use quantity 1.
stringFull definition
{ "type": "string", "description": "Explicit measured amount for a measured item. Send a decimal string in the published measurement unit; measured order lines always use quantity 1.", "example": "350", "pattern": "^(?:0|[1-9]\\d{0,8})(?:\\.\\d{1,3})?$" }menuItemIdOptionalMenu item id. Provide this OR menuVariantId.
string · uuidFull definition
{ "type": "string", "description": "Menu item id. Provide this OR menuVariantId.", "format": "uuid", "example": "16ee6f36-c0cb-4311-85e8-2d2b3edea0fd" }menuVariantIdOptionalMenu variant id. Provide this OR menuItemId.
string · uuidFull definition
{ "type": "string", "description": "Menu variant id. Provide this OR menuItemId.", "format": "uuid", "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11" }quantityRequiredQuantity for the new historical order item line.
integerFull definition
{ "type": "integer", "description": "Quantity for the new historical order item line.", "minimum": 1, "example": 1 }modifierOptionIdsOptionalSelected modifier option ids for this order item.
arrayFull definition
{ "description": "Selected modifier option ids for this order item.", "type": "array", "items": { "type": "string", "format": "uuid", "example": "d251fdb0-274c-4e59-8e7e-b1d90e1433bc" }, "example": [ "d251fdb0-274c-4e59-8e7e-b1d90e1433bc" ] }componentSelectionsOptionalSelections for component groups owned by the published item structure.
arrayFull definition
{ "description": "Selections for component groups owned by the published item structure.", "maxItems": 50, "type": "array", "items": { "$ref": "#/components/schemas/OrderItemComponentSelectionDto" }, "example": [ { "groupId": "example-id", "choiceId": "example-id" } ] }serviceFlagsOptionalStructured service flags for the item.
arrayFull definition
{ "type": "array", "description": "Structured service flags for the item.", "items": { "type": "string", "enum": [ "VIP", "RUSH", "FIRE_LATER" ], "example": "VIP" }, "example": [ "VIP" ] }specialRequestOptionalFree-text special request shown to the kitchen.
stringFull definition
{ "type": "string", "description": "Free-text special request shown to the kitchen.", "maxLength": 500, "example": "example" }
Full definition
{
"type": "object",
"properties": {
"salesChannelId": {
"type": "string",
"description": "Venue sales channel id used to resolve the active menu.",
"format": "uuid",
"example": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"
},
"clientMenuVersionId": {
"type": "string",
"description": "Menu version id that the client used while composing the item.",
"format": "uuid",
"example": "cd2f2c2a-ba73-4579-8e32-52da8388fd05"
},
"clientGraphHash": {
"type": "string",
"description": "Opaque published menu graph token that the client used while composing the item.",
"pattern": "^menu-cost-v1\\.graph\\.[A-Za-z0-9_-]{43}$",
"maxLength": 128,
"example": "menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
"expectedUnitPrice": {
"type": "number",
"description": "Unit price that the client displayed while composing this item.",
"example": 12,
"minimum": 0,
"maximum": 9999999999.99
},
"expectedTotal": {
"type": "number",
"description": "Total line price that the client displayed while composing this item.",
"example": 24,
"minimum": 0,
"maximum": 9999999999.99
},
"enteredUnitPrice": {
"type": "number",
"description": "Explicit service-time unit amount for an open-price item. This is separate from the client price-consistency fields.",
"example": 45,
"minimum": 0,
"maximum": 9999999999.99
},
"priceEntryNote": {
"type": "string",
"description": "Operational audit note for an open-price entry. Required when the published policy requires a note.",
"maxLength": 500,
"example": "Synthetic example"
},
"openPriceApprovalCredential": {
"description": "Deliberate staff credential required only when the effective open price crosses its approval policy.",
"allOf": [
{
"$ref": "#/components/schemas/OrderItemOpenPriceApprovalCredentialDto"
}
],
"example": {
"employeeNumber": "1.00",
"pin": "example"
}
},
"measuredQuantity": {
"type": "string",
"description": "Explicit measured amount for a measured item. Send a decimal string in the published measurement unit; measured order lines always use quantity 1.",
"example": "350",
"pattern": "^(?:0|[1-9]\\d{0,8})(?:\\.\\d{1,3})?$"
},
"menuItemId": {
"type": "string",
"description": "Menu item id. Provide this OR menuVariantId.",
"format": "uuid",
"example": "16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"
},
"menuVariantId": {
"type": "string",
"description": "Menu variant id. Provide this OR menuItemId.",
"format": "uuid",
"example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
},
"quantity": {
"type": "integer",
"description": "Quantity for the new historical order item line.",
"minimum": 1,
"example": 1
},
"modifierOptionIds": {
"description": "Selected modifier option ids for this order item.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"example": "d251fdb0-274c-4e59-8e7e-b1d90e1433bc"
},
"example": [
"d251fdb0-274c-4e59-8e7e-b1d90e1433bc"
]
},
"componentSelections": {
"description": "Selections for component groups owned by the published item structure.",
"maxItems": 50,
"type": "array",
"items": {
"$ref": "#/components/schemas/OrderItemComponentSelectionDto"
},
"example": [
{
"groupId": "example-id",
"choiceId": "example-id"
}
]
},
"serviceFlags": {
"type": "array",
"description": "Structured service flags for the item.",
"items": {
"type": "string",
"enum": [
"VIP",
"RUSH",
"FIRE_LATER"
],
"example": "VIP"
},
"example": [
"VIP"
]
},
"specialRequest": {
"type": "string",
"description": "Free-text special request shown to the kitchen.",
"maxLength": 500,
"example": "example"
}
},
"required": [
"clientMenuVersionId",
"clientGraphHash",
"quantity"
],
"description": "External order entry embedded in a operations collection or aggregate.",
"example": {
"clientMenuVersionId": "cd2f2c2a-ba73-4579-8e32-52da8388fd05",
"clientGraphHash": "menu-cost-v1.graph.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"quantity": 1
}
}OrderItemOpenPriceApprovalCredentialDto
Employee number and sensitive PIN consumed to approve an open price on an order item.
employeeNumberRequiredEmployee number of the worker approving the open price.
stringFull definition
{ "type": "string", "description": "Employee number of the worker approving the open price.", "maxLength": 64, "example": "1.00" }pinRequiredStaff PIN used only for server-side approval verification. It is never persisted or returned.
stringFull definition
{ "type": "string", "description": "Staff PIN used only for server-side approval verification. It is never persisted or returned.", "minLength": 4, "maxLength": 8, "example": "example" }
Full definition
{
"type": "object",
"properties": {
"employeeNumber": {
"type": "string",
"description": "Employee number of the worker approving the open price.",
"maxLength": 64,
"example": "1.00"
},
"pin": {
"type": "string",
"description": "Staff PIN used only for server-side approval verification. It is never persisted or returned.",
"minLength": 4,
"maxLength": 8,
"example": "example"
}
},
"required": [
"employeeNumber",
"pin"
],
"description": "Employee number and sensitive PIN consumed to approve an open price on an order item.",
"example": {
"employeeNumber": "1.00",
"pin": "example"
}
}OrderItemComponentSelectionDto
Order item component selection selected component identities applied to the parent item configuration.
groupIdRequiredStable component group id from the published structure.
stringFull definition
{ "type": "string", "description": "Stable component group id from the published structure.", "maxLength": 96, "example": "example-id" }choiceIdRequiredStable component choice id from the published structure.
stringFull definition
{ "type": "string", "description": "Stable component choice id from the published structure.", "maxLength": 160, "example": "example-id" }menuVariantIdOptionalSelected sellable version when the component item has versions.
string · uuidFull definition
{ "type": "string", "description": "Selected sellable version when the component item has versions.", "format": "uuid", "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11" }modifierOptionIdsOptionalModifier option ids selected for this component.
arrayFull definition
{ "description": "Modifier option ids selected for this component.", "type": "array", "items": { "type": "string", "format": "uuid", "example": "d251fdb0-274c-4e59-8e7e-b1d90e1433bc" }, "example": [ "d251fdb0-274c-4e59-8e7e-b1d90e1433bc" ] }
Full definition
{
"type": "object",
"properties": {
"groupId": {
"type": "string",
"description": "Stable component group id from the published structure.",
"maxLength": 96,
"example": "example-id"
},
"choiceId": {
"type": "string",
"description": "Stable component choice id from the published structure.",
"maxLength": 160,
"example": "example-id"
},
"menuVariantId": {
"type": "string",
"description": "Selected sellable version when the component item has versions.",
"format": "uuid",
"example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
},
"modifierOptionIds": {
"description": "Modifier option ids selected for this component.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"example": "d251fdb0-274c-4e59-8e7e-b1d90e1433bc"
},
"example": [
"d251fdb0-274c-4e59-8e7e-b1d90e1433bc"
]
}
},
"required": [
"groupId",
"choiceId"
],
"description": "Order item component selection selected component identities applied to the parent item configuration.",
"example": {
"groupId": "example-id",
"choiceId": "example-id"
}
}ExternalOrderIngressIngestResultDto
Returns the accepted external revision, mapped native order, and replay result recorded for the source.
Full definition
{
"oneOf": [
{
"type": "object",
"required": [
"id",
"orderId",
"status",
"externalOrderId",
"externalRevision",
"duplicate"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Hallify UUID identifying external order ingress ingest.",
"example": "a42073ae-5313-4ace-86d8-86fb33fde1a9"
},
"orderId": {
"type": "string",
"format": "uuid",
"description": "Hallify UUID identifying order associated with external order ingress ingest.",
"example": "f3127edf-ce4f-4da7-8be5-81b962024e6c"
},
"status": {
"type": "string",
"description": "Current lifecycle status of external order ingress ingest.",
"example": "example"
},
"externalOrderId": {
"type": "string",
"description": "Opaque identifier for external order associated with external order ingress ingest; clients must not assume UUID syntax.",
"example": "example-id"
},
"externalRevision": {
"type": "integer",
"minimum": 0,
"description": "Monotonic optimistic-concurrency revision for external order ingress ingest. Accepted values enforce minimum 0.",
"example": 1
},
"duplicate": {
"type": "boolean",
"enum": [
false
],
"description": "Allowed duplicate for external order ingress ingest: false.",
"example": false
}
},
"example": {
"id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
"orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
"status": "example",
"externalOrderId": "example-id",
"externalRevision": 1,
"duplicate": false
}
},
{
"type": "object",
"required": [
"id",
"orderId",
"payloadHash",
"status",
"duplicate"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Hallify UUID identifying external order ingress ingest.",
"example": "a7476fce-e842-42a4-896a-c23b0e88b420"
},
"orderId": {
"type": "string",
"format": "uuid",
"description": "Hallify UUID identifying order associated with external order ingress ingest.",
"example": "f3127edf-ce4f-4da7-8be5-81b962024e6c"
},
"payloadHash": {
"type": "string",
"description": "Opaque digest of the canonical payload used by external order ingress ingest for replay detection and evidence comparison.",
"example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
},
"status": {
"type": "string",
"description": "Current lifecycle status of external order ingress ingest.",
"example": "example"
},
"duplicate": {
"type": "boolean",
"enum": [
true
],
"description": "Allowed duplicate for external order ingress ingest: true.",
"example": true
}
},
"example": {
"id": "a7476fce-e842-42a4-896a-c23b0e88b420",
"orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
"payloadHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"status": "example",
"duplicate": true
}
}
],
"description": "Returns the accepted external revision, mapped native order, and replay result recorded for the source.",
"example": {
"id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
"orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
"status": "example",
"externalOrderId": "example-id",
"externalRevision": 1,
"duplicate": false
}
}TranslatedErrorDto
Stable error envelope emitted by the global HTTP exception boundary. Domain-specific machine data, when present, is nested under details.
statusCodeRequiredHTTP status code repeated from the response.
integerFull definition
{ "type": "integer", "description": "HTTP status code repeated from the response.", "example": 400 }errorRequiredTranslation key for the HTTP category, such as errors:http.conflict. The specific cause is identified by code and translationKey.
stringFull definition
{ "type": "string", "description": "Translation key for the HTTP category, such as errors:http.conflict. The specific cause is identified by code and translationKey.", "example": "errors.request.invalid" }codeRequiredStable machine-readable domain code, or an HTTP_* fallback when no domain code is provided. Branch on this field and the HTTP status; localized wording never controls retries or business decisions.
stringFull definition
{ "type": "string", "example": "HTTP_BAD_REQUEST", "description": "Stable machine-readable domain code, or an HTTP_* fallback when no domain code is provided. Branch on this field and the HTTP status; localized wording never controls retries or business decisions." }messageRequiredTranslation key, identical to translationKey. The API does not return localized display text. Resolve the key and translationValues in the consuming application.
stringFull definition
{ "type": "string", "example": "errors:http.badRequest", "description": "Translation key, identical to translationKey. The API does not return localized display text. Resolve the key and translationValues in the consuming application." }translationKeyRequiredCanonical translation key, identical to message. Status-specific errors:http.* keys cover unspecified failures. Public keys and EN/RU explanations are listed in Developers; unknown keys require a localized client fallback.
stringFull definition
{ "type": "string", "example": "errors:http.badRequest", "description": "Canonical translation key, identical to message. Status-specific errors:http.* keys cover unspecified failures. Public keys and EN/RU explanations are listed in Developers; unknown keys require a localized client fallback." }translationValuesOptionalOptional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.
objectFull definition
{ "type": "object", "additionalProperties": { "oneOf": [ { "type": "string", "example": "example" }, { "type": "number", "example": 0 }, { "type": "boolean", "example": true } ], "example": "example" }, "description": "Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.", "example": { "exampleKey": "example" } }validationErrorsOptionalField validation failures with translation keys and stable validator codes. Submitted values and raw validator text are not included.
arrayFull definition
{ "description": "Field validation failures with translation keys and stable validator codes. Submitted values and raw validator text are not included.", "type": "array", "items": { "$ref": "#/components/schemas/ValidationErrorDto" }, "example": [ { "field": "email", "translationKey": "validation:isEmail", "code": "isEmail", "message": "validation:isEmail" } ] }detailsOptionalOptional domain-specific blocker or validation details
oneOfFull definition
{ "description": "Optional domain-specific blocker or validation details", "oneOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/JsonValue" }, "example": [ "example" ] }, { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/JsonValue" }, "example": { "exampleKey": "example" } } ], "example": [ "example" ] }
Full definition
{
"type": "object",
"properties": {
"statusCode": {
"type": "integer",
"description": "HTTP status code repeated from the response.",
"example": 400
},
"error": {
"type": "string",
"description": "Translation key for the HTTP category, such as errors:http.conflict. The specific cause is identified by code and translationKey.",
"example": "errors.request.invalid"
},
"code": {
"type": "string",
"example": "HTTP_BAD_REQUEST",
"description": "Stable machine-readable domain code, or an HTTP_* fallback when no domain code is provided. Branch on this field and the HTTP status; localized wording never controls retries or business decisions."
},
"message": {
"type": "string",
"example": "errors:http.badRequest",
"description": "Translation key, identical to translationKey. The API does not return localized display text. Resolve the key and translationValues in the consuming application."
},
"translationKey": {
"type": "string",
"example": "errors:http.badRequest",
"description": "Canonical translation key, identical to message. Status-specific errors:http.* keys cover unspecified failures. Public keys and EN/RU explanations are listed in Developers; unknown keys require a localized client fallback."
},
"translationValues": {
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "string",
"example": "example"
},
{
"type": "number",
"example": 0
},
{
"type": "boolean",
"example": true
}
],
"example": "example"
},
"description": "Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.",
"example": {
"exampleKey": "example"
}
},
"validationErrors": {
"description": "Field validation failures with translation keys and stable validator codes. Submitted values and raw validator text are not included.",
"type": "array",
"items": {
"$ref": "#/components/schemas/ValidationErrorDto"
},
"example": [
{
"field": "email",
"translationKey": "validation:isEmail",
"code": "isEmail",
"message": "validation:isEmail"
}
]
},
"details": {
"description": "Optional domain-specific blocker or validation details",
"oneOf": [
{
"type": "array",
"items": {
"$ref": "#/components/schemas/JsonValue"
},
"example": [
"example"
]
},
{
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/JsonValue"
},
"example": {
"exampleKey": "example"
}
}
],
"example": [
"example"
]
}
},
"required": [
"statusCode",
"error",
"code",
"message",
"translationKey"
],
"description": "Stable error envelope emitted by the global HTTP exception boundary. Domain-specific machine data, when present, is nested under details.",
"example": {
"statusCode": 400,
"error": "errors:http.badRequest",
"code": "HTTP_BAD_REQUEST",
"message": "errors:http.badRequest",
"translationKey": "errors:http.badRequest"
}
}ValidationErrorDto
Field validation failure with a field path, stable validator code and a translation key. Human-readable text belongs to the consuming application.
fieldRequiredPublic field path. Nested properties and array indices are separated by dots.
stringFull definition
{ "type": "string", "example": "email", "description": "Public field path. Nested properties and array indices are separated by dots." }translationKeyRequiredTranslation key for this validator, identical to message. Resolve it using a client dictionary; see the public Developers error catalog.
stringFull definition
{ "type": "string", "example": "validation:isEmail", "description": "Translation key for this validator, identical to message. Resolve it using a client dictionary; see the public Developers error catalog." }codeRequiredStable validator identifier for this field failure. Custom validators may define additional identifiers.
stringFull definition
{ "type": "string", "example": "isEmail", "description": "Stable validator identifier for this field failure. Custom validators may define additional identifiers." }messageRequiredTranslation key describing this field validation failure, identical to translationKey. Submitted values and validator prose are not included.
stringFull definition
{ "type": "string", "example": "validation:isEmail", "description": "Translation key describing this field validation failure, identical to translationKey. Submitted values and validator prose are not included." }translationValuesOptionalOptional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.
objectFull definition
{ "type": "object", "additionalProperties": { "oneOf": [ { "type": "string", "example": "example" }, { "type": "number", "example": 0 }, { "type": "boolean", "example": true } ], "example": "example" }, "description": "Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.", "example": { "exampleKey": "example" } }
Full definition
{
"type": "object",
"properties": {
"field": {
"type": "string",
"example": "email",
"description": "Public field path. Nested properties and array indices are separated by dots."
},
"translationKey": {
"type": "string",
"example": "validation:isEmail",
"description": "Translation key for this validator, identical to message. Resolve it using a client dictionary; see the public Developers error catalog."
},
"code": {
"type": "string",
"example": "isEmail",
"description": "Stable validator identifier for this field failure. Custom validators may define additional identifiers."
},
"message": {
"type": "string",
"example": "validation:isEmail",
"description": "Translation key describing this field validation failure, identical to translationKey. Submitted values and validator prose are not included."
},
"translationValues": {
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "string",
"example": "example"
},
{
"type": "number",
"example": 0
},
{
"type": "boolean",
"example": true
}
],
"example": "example"
},
"description": "Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.",
"example": {
"exampleKey": "example"
}
}
},
"required": [
"field",
"translationKey",
"code",
"message"
],
"description": "Field validation failure with a field path, stable validator code and a translation key. Human-readable text belongs to the consuming application.",
"example": {
"field": "email",
"translationKey": "validation:isEmail",
"code": "isEmail",
"message": "validation:isEmail"
}
}JsonValue
Recursively JSON-safe value used only where the owning contract intentionally allows free-form structured data.
Full definition
{
"oneOf": [
{
"type": "string",
"nullable": true,
"example": "example"
},
{
"type": "number",
"example": 0
},
{
"type": "boolean",
"example": true
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/JsonValue"
},
"example": [
"example"
]
},
{
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/JsonValue"
},
"example": {
"exampleKey": "example"
}
}
],
"description": "Recursively JSON-safe value used only where the owning contract intentionally allows free-form structured data.",
"example": "example"
}