Authentication
Authorization: Bearer <HALLIFY_GUEST_PAYMENT_ACCESS_TOKEN>Private guest payment capability bound to its native actor, tenant, source, transport origin and current authority. Explicit consent is required for collection; exact original receipt disclosure does not grant a new monetary command or a Hallify account session.
Parameters
originHeader · RequiredActual HTTP Origin of the caller, which must exactly match the payment access's current transport audience.
stringFull definition
{ "type": "string", "maxLength": 2048, "example": "example" }accessIdPath · RequiredNoncredential UUID returned when native payment access is opened or handed off. Pair it with that access's bearer capability; the UUID alone grants no authority.
string · uuidFull definition
{ "format": "uuid", "type": "string", "example": "9b6163a8-afea-4877-818b-8e2ae28a2845" }idempotency-keyHeader · RequiredRequired idempotency key, up to 128 characters
stringFull definition
{ "type": "string", "minLength": 1, "maxLength": 128, "example": "example" }
Request body
Required
Offered consent UUID and revision, complete manifestHash, boolean accepted set to true, and the exact offered terms version, digest and locale.
application/json
Full definition
{
"$ref": "#/components/schemas/GuestPaymentAcceptRequestDto"
}Responses
200Immutable first PREPARED acknowledgement of the original accepted checkout command, also returned by identical replay; current financial progress is available from the checkout progress operation.
Full definition
{
"$ref": "#/components/schemas/GuestPaymentCommandReceiptDto"
}{
"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"
}400The bounded request or command key is malformed.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 400,
"error": "errors:http.badRequest",
"code": "HTTP_BAD_REQUEST",
"message": "errors:http.badRequest",
"translationKey": "errors:http.badRequest"
}401Rejects a missing, malformed, expired, revoked, or invalid guestPaymentAccessToken credential at the owning domain boundary.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 401,
"error": "errors:http.unauthorized",
"code": "HTTP_UNAUTHORIZED",
"message": "errors:http.unauthorized",
"translationKey": "errors:http.unauthorized"
}404Current native authority, private payment capability or the exact original checkout is unavailable.
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 native source, reviewed bill, consent revision or concurrent command state changed.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 409,
"error": "errors:http.conflict",
"code": "HTTP_CONFLICT",
"message": "errors:http.conflict",
"translationKey": "errors:http.conflict"
}Schemas
GuestPaymentAcceptRequestDto
Explicit acceptance of one retained financial offer at its offered revision, complete manifest digest and exact terms identity.
consentIdRequiredUUID of the consent offer retained for this payment access and native actor.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "UUID of the consent offer retained for this payment access and native actor.", "example": "a78d3537-1595-4dbd-8fad-560c53ecc15c" }revisionRequiredPositive OFFERED consent revision returned in the offer receipt. Consumption advances the stored revision while identical command replay preserves the original acknowledgement.
integerFull definition
{ "type": "integer", "minimum": 1, "description": "Positive OFFERED consent revision returned in the offer receipt. Consumption advances the stored revision while identical command replay preserves the original acknowledgement.", "example": 1 }manifestHashRequiredLower-case SHA-256 digest of the complete immutable offered manifest, copied from the consent receipt; this binds the frozen authority, collection and terms being accepted.
stringFull definition
{ "type": "string", "pattern": "^[a-f0-9]{64}$", "description": "Lower-case SHA-256 digest of the complete immutable offered manifest, copied from the consent receipt; this binds the frozen authority, collection and terms being accepted.", "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" }acceptedRequiredExplicit affirmative financial consent. The runtime accepts only the boolean true after the displayed offer and terms have been reviewed.
booleanFull definition
{ "type": "boolean", "enum": [ true ], "description": "Explicit affirmative financial consent. The runtime accepts only the boolean true after the displayed offer and terms have been reviewed.", "example": true }termsRequiredExact version, digest and locale from the offered consent receipt, identifying the wording accepted with this manifest.
allOfFull definition
{ "description": "Exact version, digest and locale from the offered consent receipt, identifying the wording accepted with this manifest.", "allOf": [ { "$ref": "#/components/schemas/GuestPaymentTermsDto" } ], "example": { "version": "example", "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef", "locale": "en" } }
Full definition
{
"type": "object",
"properties": {
"consentId": {
"type": "string",
"format": "uuid",
"description": "UUID of the consent offer retained for this payment access and native actor.",
"example": "a78d3537-1595-4dbd-8fad-560c53ecc15c"
},
"revision": {
"type": "integer",
"minimum": 1,
"description": "Positive OFFERED consent revision returned in the offer receipt. Consumption advances the stored revision while identical command replay preserves the original acknowledgement.",
"example": 1
},
"manifestHash": {
"type": "string",
"pattern": "^[a-f0-9]{64}$",
"description": "Lower-case SHA-256 digest of the complete immutable offered manifest, copied from the consent receipt; this binds the frozen authority, collection and terms being accepted.",
"example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
},
"accepted": {
"type": "boolean",
"enum": [
true
],
"description": "Explicit affirmative financial consent. The runtime accepts only the boolean true after the displayed offer and terms have been reviewed.",
"example": true
},
"terms": {
"description": "Exact version, digest and locale from the offered consent receipt, identifying the wording accepted with this manifest.",
"allOf": [
{
"$ref": "#/components/schemas/GuestPaymentTermsDto"
}
],
"example": {
"version": "example",
"digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"locale": "en"
}
}
},
"description": "Explicit acceptance of one retained financial offer at its offered revision, complete manifest digest and exact terms identity.",
"required": [
"consentId",
"revision",
"manifestHash",
"accepted",
"terms"
],
"example": {
"consentId": "a78d3537-1595-4dbd-8fad-560c53ecc15c",
"revision": 1,
"manifestHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"accepted": true,
"terms": {
"version": "example",
"digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"locale": "en"
}
}
}GuestPaymentTermsDto
Version, SHA-256 digest and locale identifying the exact displayed payment-consent wording.
versionRequiredNonempty version identifying the displayed consent wording; acceptance must match the exact version retained in its offer.
stringFull definition
{ "type": "string", "maxLength": 64, "description": "Nonempty version identifying the displayed consent wording; acceptance must match the exact version retained in its offer.", "example": "example" }digestRequiredLower-case SHA-256 digest binding the terms version, locale and exact displayed text; acceptance must echo the offered digest.
stringFull definition
{ "type": "string", "pattern": "^[a-f0-9]{64}$", "description": "Lower-case SHA-256 digest binding the terms version, locale and exact displayed text; acceptance must echo the offered digest.", "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" }localeRequiredLocale covered by the displayed consent text and digest; acceptance must match the locale retained in the offer.
stringFull definition
{ "type": "string", "enum": [ "en", "ru", "ka" ], "description": "Locale covered by the displayed consent text and digest; acceptance must match the locale retained in the offer.", "example": "en" }
Full definition
{
"type": "object",
"properties": {
"version": {
"type": "string",
"maxLength": 64,
"description": "Nonempty version identifying the displayed consent wording; acceptance must match the exact version retained in its offer.",
"example": "example"
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$",
"description": "Lower-case SHA-256 digest binding the terms version, locale and exact displayed text; acceptance must echo the offered digest.",
"example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
},
"locale": {
"type": "string",
"enum": [
"en",
"ru",
"ka"
],
"description": "Locale covered by the displayed consent text and digest; acceptance must match the locale retained in the offer.",
"example": "en"
}
},
"description": "Version, SHA-256 digest and locale identifying the exact displayed payment-consent wording.",
"required": [
"version",
"digest",
"locale"
],
"example": {
"version": "example",
"digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"locale": "en"
}
}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"
}