Authentication
x-guest-portal-token: <HALLIFY_GUEST_PORTAL_TOKEN>Guest-owned portal session token.
Parameters
cursorQuery · OptionalOpaque PAYMENT_RECEIPTS continuation returned by the previous page. It binds the exact guest realm, history revision, readable-proof policy and consumed-consent boundary. Omit it to start a fixed-size page of at most 25 receipts.
stringFull definition
{ "minLength": 1, "maxLength": 2048, "type": "string", "example": "example" }
Responses
200A validated page of own retained financial summaries with signed continuation and separately labelled original and current values.
Response headers
Cache-ControlPrivate receipt responses must not be stored by caches.
stringFull definition
{
"type": "string",
"enum": [
"private, no-store, max-age=0"
],
"example": "private, no-store, max-age=0"
}Full definition
{
"$ref": "#/components/schemas/GuestPortalPaymentReceiptsPage"
}{
"items": [
{
"id": "example-id",
"acceptedAt": "2026-01-15T12:00:00.000Z",
"consumedAt": "2026-01-15T12:00:00.000Z",
"payee": {
"venueName": "example",
"legalName": "Example name"
},
"purpose": "ORDER_BILL",
"provider": "STRIPE_CONNECT",
"mode": "TEST",
"original": {
"schema": "hallify.restaurant-payment.command-result",
"version": 1,
"checkoutId": "f5ef2bdc-76ae-45b6-851a-399882860529",
"operationId": "44352441-86e0-4a70-8642-d5863bea459a",
"action": "CREATE_CHECKOUT",
"state": "PREPARED",
"currency": "USD",
"principalAmount": "12.50",
"tipAmount": "0.00",
"totalAmount": "12.50"
},
"current": {
"fundsState": "NOT_STARTED",
"applicationState": "PENDING",
"applicationBlockedReason": null,
"checkoutRevision": 1
}
}
],
"nextCursor": null,
"hasMore": true
}400The payment-receipt cursor is malformed, has an invalid signature or purpose, or exceeds the supported bound.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 400,
"error": "errors:http.badRequest",
"code": "HTTP_BAD_REQUEST",
"message": "errors:http.badRequest",
"translationKey": "errors:http.badRequest"
}401The current Guest Portal session or subject is unavailable.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 401,
"error": "errors:http.unauthorized",
"code": "HTTP_UNAUTHORIZED",
"message": "errors:http.unauthorized",
"translationKey": "errors:http.unauthorized"
}403The current session requires fresh contact verification before private financial history can be read.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 403,
"error": "errors:http.forbidden",
"code": "HTTP_FORBIDDEN",
"message": "errors:http.forbidden",
"translationKey": "errors:http.forbidden"
}404The signed cursor belongs to another organization, venue, guest identity or guest profile.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 404,
"error": "errors:http.notFound",
"code": "HTTP_NOT_FOUND",
"message": "errors:http.notFound",
"translationKey": "errors:http.notFound"
}409The guest history revision or readable-proof policy changed; restart payment-receipt pagination.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 409,
"error": "errors:http.conflict",
"code": "HTTP_CONFLICT",
"message": "errors:http.conflict",
"translationKey": "errors:http.conflict"
}503Required protected-data policy or selected retained financial evidence is unavailable or inconsistent.
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
GuestPortalPaymentReceiptsPage
Fixed-size page of at most 25 own retained receipts, ordered by consumedAt descending then receipt id descending. Signed continuation is bound to the current guest realm and history policy.
itemsRequiredComplete validated summaries for this page, preserving the retained financial order.
arrayFull definition
{ "type": "array", "maxItems": 25, "description": "Complete validated summaries for this page, preserving the retained financial order.", "items": { "type": "object", "description": "Guest-owned retained financial summary with original amounts, frozen payee and separately labelled stored current progress. It contains no management or payment capability and no hosted-checkout redirect.", "required": [ "id", "acceptedAt", "consumedAt", "payee", "purpose", "provider", "mode", "original", "current" ], "properties": { "id": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,191}$", "minLength": 1, "maxLength": 191, "description": "Immutable consumed-consent receipt identifier used by the payment-receipt cursor boundary.", "example": "example-id" }, "acceptedAt": { "type": "string", "format": "date-time", "description": "Original UTC instant when the displayed terms were accepted.", "example": "2026-01-15T12:00:00.000Z" }, "consumedAt": { "type": "string", "format": "date-time", "description": "Immutable UTC instant when consent was consumed by the original checkout command; this is the primary descending pagination key.", "example": "2026-01-15T12:00:00.000Z" }, "payee": { "type": "object", "description": "Original payee identity from accepted evidence; current venue or legal labels are not substituted.", "required": [ "venueName", "legalName" ], "properties": { "venueName": { "type": "string", "minLength": 1, "maxLength": 255, "description": "Payee label frozen in the original accepted consent manifest.", "example": "example" }, "legalName": { "type": "string", "minLength": 1, "maxLength": 255, "description": "Payee label frozen in the original accepted consent manifest.", "example": "Example name" } }, "example": { "venueName": "example", "legalName": "Example name" } }, "purpose": { "type": "string", "enum": [ "ORDER_BILL", "RESERVATION_GUARANTEE" ], "description": "Original frozen financial purpose of the checkout.", "example": "ORDER_BILL" }, "provider": { "type": "string", "enum": [ "STRIPE_CONNECT", "BOG_PAYMENT_MANAGER", "TBC_CHECKOUT" ], "description": "Original provider selected for this frozen checkout.", "example": "STRIPE_CONNECT" }, "mode": { "type": "string", "enum": [ "TEST", "LIVE" ], "description": "Original TEST or LIVE mode of the checkout.", "example": "TEST" }, "original": { "allOf": [ { "$ref": "#/components/schemas/GuestPaymentCommandReceiptDto" } ], "description": "Immutable original checkout command acknowledgement; current payment progress is returned separately.", "example": { "schema": "hallify.restaurant-payment.command-result", "version": 1, "checkoutId": "f5ef2bdc-76ae-45b6-851a-399882860529", "operationId": "44352441-86e0-4a70-8642-d5863bea459a", "action": "CREATE_CHECKOUT", "state": "PREPARED", "currency": "USD", "principalAmount": "12.50", "tipAmount": "0.00", "totalAmount": "12.50" } }, "current": { "type": "object", "description": "Stored current checkout progress, separate from the immutable original acknowledgement. Reading this projection performs no reconciliation or native application.", "required": [ "fundsState", "applicationState", "applicationBlockedReason", "checkoutRevision" ], "properties": { "fundsState": { "type": "string", "enum": [ "NOT_STARTED", "REQUIRES_ACTION", "PROCESSING", "AUTHORIZED", "CAPTURED", "PARTIALLY_REFUNDED", "REFUNDED", "CANCELED", "DECLINED", "EXPIRED", "UNKNOWN" ], "description": "Current stored funds state, including later capture, refund, cancellation or unresolved evidence.", "example": "NOT_STARTED" }, "applicationState": { "type": "string", "enum": [ "PENDING", "APPLIED", "APPLICATION_BLOCKED", "RECONCILIATION_REQUIRED" ], "description": "Current stored state of native financial application.", "example": "PENDING" }, "applicationBlockedReason": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 64, "description": "Stored native application reason code, or null without a blocking reason.", "example": "Synthetic example" }, "checkoutRevision": { "type": "integer", "minimum": 1, "maximum": 2147483647, "description": "Current stored checkout revision.", "example": 1 } }, "example": { "fundsState": "NOT_STARTED", "applicationState": "PENDING", "applicationBlockedReason": null, "checkoutRevision": 1 } } }, "example": { "id": "example-id", "acceptedAt": "2026-01-15T12:00:00.000Z", "consumedAt": "2026-01-15T12:00:00.000Z", "payee": { "venueName": "example", "legalName": "Example name" }, "purpose": "ORDER_BILL", "provider": "STRIPE_CONNECT", "mode": "TEST", "original": { "schema": "hallify.restaurant-payment.command-result", "version": 1, "checkoutId": "f5ef2bdc-76ae-45b6-851a-399882860529", "operationId": "44352441-86e0-4a70-8642-d5863bea459a", "action": "CREATE_CHECKOUT", "state": "PREPARED", "currency": "USD", "principalAmount": "12.50", "tipAmount": "0.00", "totalAmount": "12.50" }, "current": { "fundsState": "NOT_STARTED", "applicationState": "PENDING", "applicationBlockedReason": null, "checkoutRevision": 1 } } }, "example": [ { "id": "example-id", "acceptedAt": "2026-01-15T12:00:00.000Z", "consumedAt": "2026-01-15T12:00:00.000Z", "payee": { "venueName": "example", "legalName": "Example name" }, "purpose": "ORDER_BILL", "provider": "STRIPE_CONNECT", "mode": "TEST", "original": { "schema": "hallify.restaurant-payment.command-result", "version": 1, "checkoutId": "f5ef2bdc-76ae-45b6-851a-399882860529", "operationId": "44352441-86e0-4a70-8642-d5863bea459a", "action": "CREATE_CHECKOUT", "state": "PREPARED", "currency": "USD", "principalAmount": "12.50", "tipAmount": "0.00", "totalAmount": "12.50" }, "current": { "fundsState": "NOT_STARTED", "applicationState": "PENDING", "applicationBlockedReason": null, "checkoutRevision": 1 } } ] }nextCursorRequiredOpaque PAYMENT_RECEIPTS continuation for the exact last returned boundary when hasMore is true; null at the end of history.
string · nullFull definition
{ "type": "string", "nullable": true, "minLength": 1, "maxLength": 2048, "description": "Opaque PAYMENT_RECEIPTS continuation for the exact last returned boundary when hasMore is true; null at the end of history.", "example": "example" }hasMoreRequiredAnother fully validated eligible receipt exists after the returned page.
booleanFull definition
{ "type": "boolean", "description": "Another fully validated eligible receipt exists after the returned page.", "example": true }
Full definition
{
"type": "object",
"description": "Fixed-size page of at most 25 own retained receipts, ordered by consumedAt descending then receipt id descending. Signed continuation is bound to the current guest realm and history policy.",
"required": [
"items",
"nextCursor",
"hasMore"
],
"properties": {
"items": {
"type": "array",
"maxItems": 25,
"description": "Complete validated summaries for this page, preserving the retained financial order.",
"items": {
"type": "object",
"description": "Guest-owned retained financial summary with original amounts, frozen payee and separately labelled stored current progress. It contains no management or payment capability and no hosted-checkout redirect.",
"required": [
"id",
"acceptedAt",
"consumedAt",
"payee",
"purpose",
"provider",
"mode",
"original",
"current"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,191}$",
"minLength": 1,
"maxLength": 191,
"description": "Immutable consumed-consent receipt identifier used by the payment-receipt cursor boundary.",
"example": "example-id"
},
"acceptedAt": {
"type": "string",
"format": "date-time",
"description": "Original UTC instant when the displayed terms were accepted.",
"example": "2026-01-15T12:00:00.000Z"
},
"consumedAt": {
"type": "string",
"format": "date-time",
"description": "Immutable UTC instant when consent was consumed by the original checkout command; this is the primary descending pagination key.",
"example": "2026-01-15T12:00:00.000Z"
},
"payee": {
"type": "object",
"description": "Original payee identity from accepted evidence; current venue or legal labels are not substituted.",
"required": [
"venueName",
"legalName"
],
"properties": {
"venueName": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Payee label frozen in the original accepted consent manifest.",
"example": "example"
},
"legalName": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Payee label frozen in the original accepted consent manifest.",
"example": "Example name"
}
},
"example": {
"venueName": "example",
"legalName": "Example name"
}
},
"purpose": {
"type": "string",
"enum": [
"ORDER_BILL",
"RESERVATION_GUARANTEE"
],
"description": "Original frozen financial purpose of the checkout.",
"example": "ORDER_BILL"
},
"provider": {
"type": "string",
"enum": [
"STRIPE_CONNECT",
"BOG_PAYMENT_MANAGER",
"TBC_CHECKOUT"
],
"description": "Original provider selected for this frozen checkout.",
"example": "STRIPE_CONNECT"
},
"mode": {
"type": "string",
"enum": [
"TEST",
"LIVE"
],
"description": "Original TEST or LIVE mode of the checkout.",
"example": "TEST"
},
"original": {
"allOf": [
{
"$ref": "#/components/schemas/GuestPaymentCommandReceiptDto"
}
],
"description": "Immutable original checkout command acknowledgement; current payment progress is returned separately.",
"example": {
"schema": "hallify.restaurant-payment.command-result",
"version": 1,
"checkoutId": "f5ef2bdc-76ae-45b6-851a-399882860529",
"operationId": "44352441-86e0-4a70-8642-d5863bea459a",
"action": "CREATE_CHECKOUT",
"state": "PREPARED",
"currency": "USD",
"principalAmount": "12.50",
"tipAmount": "0.00",
"totalAmount": "12.50"
}
},
"current": {
"type": "object",
"description": "Stored current checkout progress, separate from the immutable original acknowledgement. Reading this projection performs no reconciliation or native application.",
"required": [
"fundsState",
"applicationState",
"applicationBlockedReason",
"checkoutRevision"
],
"properties": {
"fundsState": {
"type": "string",
"enum": [
"NOT_STARTED",
"REQUIRES_ACTION",
"PROCESSING",
"AUTHORIZED",
"CAPTURED",
"PARTIALLY_REFUNDED",
"REFUNDED",
"CANCELED",
"DECLINED",
"EXPIRED",
"UNKNOWN"
],
"description": "Current stored funds state, including later capture, refund, cancellation or unresolved evidence.",
"example": "NOT_STARTED"
},
"applicationState": {
"type": "string",
"enum": [
"PENDING",
"APPLIED",
"APPLICATION_BLOCKED",
"RECONCILIATION_REQUIRED"
],
"description": "Current stored state of native financial application.",
"example": "PENDING"
},
"applicationBlockedReason": {
"type": "string",
"nullable": true,
"minLength": 1,
"maxLength": 64,
"description": "Stored native application reason code, or null without a blocking reason.",
"example": "Synthetic example"
},
"checkoutRevision": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647,
"description": "Current stored checkout revision.",
"example": 1
}
},
"example": {
"fundsState": "NOT_STARTED",
"applicationState": "PENDING",
"applicationBlockedReason": null,
"checkoutRevision": 1
}
}
},
"example": {
"id": "example-id",
"acceptedAt": "2026-01-15T12:00:00.000Z",
"consumedAt": "2026-01-15T12:00:00.000Z",
"payee": {
"venueName": "example",
"legalName": "Example name"
},
"purpose": "ORDER_BILL",
"provider": "STRIPE_CONNECT",
"mode": "TEST",
"original": {
"schema": "hallify.restaurant-payment.command-result",
"version": 1,
"checkoutId": "f5ef2bdc-76ae-45b6-851a-399882860529",
"operationId": "44352441-86e0-4a70-8642-d5863bea459a",
"action": "CREATE_CHECKOUT",
"state": "PREPARED",
"currency": "USD",
"principalAmount": "12.50",
"tipAmount": "0.00",
"totalAmount": "12.50"
},
"current": {
"fundsState": "NOT_STARTED",
"applicationState": "PENDING",
"applicationBlockedReason": null,
"checkoutRevision": 1
}
}
},
"example": [
{
"id": "example-id",
"acceptedAt": "2026-01-15T12:00:00.000Z",
"consumedAt": "2026-01-15T12:00:00.000Z",
"payee": {
"venueName": "example",
"legalName": "Example name"
},
"purpose": "ORDER_BILL",
"provider": "STRIPE_CONNECT",
"mode": "TEST",
"original": {
"schema": "hallify.restaurant-payment.command-result",
"version": 1,
"checkoutId": "f5ef2bdc-76ae-45b6-851a-399882860529",
"operationId": "44352441-86e0-4a70-8642-d5863bea459a",
"action": "CREATE_CHECKOUT",
"state": "PREPARED",
"currency": "USD",
"principalAmount": "12.50",
"tipAmount": "0.00",
"totalAmount": "12.50"
},
"current": {
"fundsState": "NOT_STARTED",
"applicationState": "PENDING",
"applicationBlockedReason": null,
"checkoutRevision": 1
}
}
]
},
"nextCursor": {
"type": "string",
"nullable": true,
"minLength": 1,
"maxLength": 2048,
"description": "Opaque PAYMENT_RECEIPTS continuation for the exact last returned boundary when hasMore is true; null at the end of history.",
"example": "example"
},
"hasMore": {
"type": "boolean",
"description": "Another fully validated eligible receipt exists after the returned page.",
"example": true
}
},
"example": {
"items": [
{
"id": "example-id",
"acceptedAt": "2026-01-15T12:00:00.000Z",
"consumedAt": "2026-01-15T12:00:00.000Z",
"payee": {
"venueName": "example",
"legalName": "Example name"
},
"purpose": "ORDER_BILL",
"provider": "STRIPE_CONNECT",
"mode": "TEST",
"original": {
"schema": "hallify.restaurant-payment.command-result",
"version": 1,
"checkoutId": "f5ef2bdc-76ae-45b6-851a-399882860529",
"operationId": "44352441-86e0-4a70-8642-d5863bea459a",
"action": "CREATE_CHECKOUT",
"state": "PREPARED",
"currency": "USD",
"principalAmount": "12.50",
"tipAmount": "0.00",
"totalAmount": "12.50"
},
"current": {
"fundsState": "NOT_STARTED",
"applicationState": "PENDING",
"applicationBlockedReason": null,
"checkoutRevision": 1
}
}
],
"nextCursor": null,
"hasMore": true
}
}GuestPaymentCommandReceiptDto
Immutable first PREPARED acknowledgement of the permanent guest CREATE_CHECKOUT command, preserved across identical replay and original-command recovery.
schemaRequiredDiscriminator identifying the versioned original payment-command result document.
stringFull definition
{ "type": "string", "enum": [ "hallify.restaurant-payment.command-result" ], "description": "Discriminator identifying the versioned original payment-command result document.", "example": "hallify.restaurant-payment.command-result" }versionRequiredCommand-result schema version retained by this acknowledgement.
integerFull definition
{ "type": "integer", "enum": [ 1 ], "description": "Command-result schema version retained by this acknowledgement.", "example": 1 }checkoutIdRequiredUUID of the original checkout allocated once for this permanent command.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "UUID of the original checkout allocated once for this permanent command.", "example": "f5ef2bdc-76ae-45b6-851a-399882860529" }operationIdRequiredUUID of the original CREATE_CHECKOUT provider operation; replay and recovery preserve this operation identity.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "UUID of the original CREATE_CHECKOUT provider operation; replay and recovery preserve this operation identity.", "example": "44352441-86e0-4a70-8642-d5863bea459a" }actionRequiredOriginal accepted command action; this guest boundary acknowledges CREATE_CHECKOUT.
stringFull definition
{ "type": "string", "enum": [ "CREATE_CHECKOUT" ], "description": "Original accepted command action; this guest boundary acknowledges CREATE_CHECKOUT.", "example": "CREATE_CHECKOUT" }stateRequiredState at the first retained acknowledgement, always PREPARED. Current operation, funds and native application states are returned by the checkout progress operation.
stringFull definition
{ "type": "string", "enum": [ "PREPARED" ], "description": "State at the first retained acknowledgement, always PREPARED. Current operation, funds and native application states are returned by the checkout progress operation.", "example": "PREPARED" }currencyRequiredCurrency of the original frozen principal, tip and total amounts.
stringFull definition
{ "type": "string", "enum": [ "USD", "GEL" ], "description": "Currency of the original frozen principal, tip and total amounts.", "example": "USD" }principalAmountRequiredOriginal frozen principal before the separately accepted tip, as a two-decimal string in receipt currency.
stringFull definition
{ "type": "string", "example": "12.50", "description": "Original frozen principal before the separately accepted tip, as a two-decimal string in receipt currency." }tipAmountRequiredOriginal frozen tip accepted with the command, as a nonnegative two-decimal string in receipt currency.
stringFull definition
{ "type": "string", "example": "0.00", "description": "Original frozen tip accepted with the command, as a nonnegative two-decimal string in receipt currency." }totalAmountRequiredOriginal sum of frozen principal and accepted tip, as a two-decimal string in receipt currency.
stringFull definition
{ "type": "string", "example": "12.50", "description": "Original sum of frozen principal and accepted tip, as a two-decimal string in receipt currency." }
Full definition
{
"type": "object",
"properties": {
"schema": {
"type": "string",
"enum": [
"hallify.restaurant-payment.command-result"
],
"description": "Discriminator identifying the versioned original payment-command result document.",
"example": "hallify.restaurant-payment.command-result"
},
"version": {
"type": "integer",
"enum": [
1
],
"description": "Command-result schema version retained by this acknowledgement.",
"example": 1
},
"checkoutId": {
"type": "string",
"format": "uuid",
"description": "UUID of the original checkout allocated once for this permanent command.",
"example": "f5ef2bdc-76ae-45b6-851a-399882860529"
},
"operationId": {
"type": "string",
"format": "uuid",
"description": "UUID of the original CREATE_CHECKOUT provider operation; replay and recovery preserve this operation identity.",
"example": "44352441-86e0-4a70-8642-d5863bea459a"
},
"action": {
"type": "string",
"enum": [
"CREATE_CHECKOUT"
],
"description": "Original accepted command action; this guest boundary acknowledges CREATE_CHECKOUT.",
"example": "CREATE_CHECKOUT"
},
"state": {
"type": "string",
"enum": [
"PREPARED"
],
"description": "State at the first retained acknowledgement, always PREPARED. Current operation, funds and native application states are returned by the checkout progress operation.",
"example": "PREPARED"
},
"currency": {
"type": "string",
"enum": [
"USD",
"GEL"
],
"description": "Currency of the original frozen principal, tip and total amounts.",
"example": "USD"
},
"principalAmount": {
"type": "string",
"example": "12.50",
"description": "Original frozen principal before the separately accepted tip, as a two-decimal string in receipt currency."
},
"tipAmount": {
"type": "string",
"example": "0.00",
"description": "Original frozen tip accepted with the command, as a nonnegative two-decimal string in receipt currency."
},
"totalAmount": {
"type": "string",
"example": "12.50",
"description": "Original sum of frozen principal and accepted tip, as a two-decimal string in receipt currency."
}
},
"description": "Immutable first PREPARED acknowledgement of the permanent guest CREATE_CHECKOUT command, preserved across identical replay and original-command recovery.",
"required": [
"schema",
"version",
"checkoutId",
"operationId",
"action",
"state",
"currency",
"principalAmount",
"tipAmount",
"totalAmount"
],
"example": {
"schema": "hallify.restaurant-payment.command-result",
"version": 1,
"checkoutId": "f5ef2bdc-76ae-45b6-851a-399882860529",
"operationId": "44352441-86e0-4a70-8642-d5863bea459a",
"action": "CREATE_CHECKOUT",
"state": "PREPARED",
"currency": "USD",
"principalAmount": "12.50",
"tipAmount": "0.00",
"totalAmount": "12.50"
}
}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"
}