Authentication
A personal credential is supplied in body: guest-payment-widget-transition-permit.
Connection guideParameters
transitionIdPath · RequiredExact noncredential transition UUID from the private POST body.
string · uuidFull definition
{ "format": "uuid", "type": "string", "example": "9b6163a8-afea-4877-818b-8e2ae28a2845" }originHeader · RequiredActual canonical top-level checkout origin, or that exact destination derived by its trusted POST-body bridge.
stringFull definition
{ "type": "string", "maxLength": 2048, "example": "example" }
Request body
Required
Private saved permit and the receiver capability digest, handoff digest and opaque context key saved before this call.
application/json
Full definition
{
"$ref": "#/components/schemas/ClaimGuestPaymentTransitionDto"
}Responses
200Private no-store acknowledgement of the first receiver binding, with the same context key, access UUID, destination and fixed deadline on every authorized replay.
Full definition
{
"$ref": "#/components/schemas/GuestPaymentTransitionClaimReceiptDto"
}{
"transitionId": "863d2796-5dc7-4cf6-8e5b-c010833c0e1d",
"accessId": "b93bc84d-84db-4161-840b-c3c7a7875b1d",
"expiresAt": "2026-12-31T18:00:00.000Z",
"destinationOrigin": "https://hallify.example.test",
"receiverContextKey": "synthetic-example-credentialxxxxxxxxxxxxxxx"
}400The transition UUID, permit, receiver digest, context key or origin has an invalid representation.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 400,
"error": "errors:http.badRequest",
"code": "HTTP_BAD_REQUEST",
"message": "errors:http.badRequest",
"translationKey": "errors:http.badRequest"
}404The permit, trusted destination, unclaimed deadline, current native authority, WIDGET source or exact original receipt 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 permit is already bound to another receiver tuple, the native source changed, or concurrent state could not be stabilized. Do not replace the receiver to recover an unknown outcome.
Full definition
{
"$ref": "#/components/schemas/TranslatedErrorDto"
}{
"statusCode": 409,
"error": "errors:http.conflict",
"code": "HTTP_CONFLICT",
"message": "errors:http.conflict",
"translationKey": "errors:http.conflict"
}503The isolated widget frame origin configuration is unavailable or invalid.
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
ClaimGuestPaymentTransitionDto
One-use widget transport permit and the tuple generated and privately saved by the trusted top-level receiver. Raw receiver capability and handoff remain local until ordinary redemption.
permitRequiredExact private transport permit received in the fixed-destination POST body. This secret never appears in a URL or parent message.
stringFull definition
{ "type": "string", "minLength": 48, "maxLength": 48, "pattern": "^gpw1_[A-Za-z0-9_-]{43}$", "example": "gpw1_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "writeOnly": true, "description": "Exact private transport permit received in the fixed-destination POST body. This secret never appears in a URL or parent message." }recipientCapabilityHashRequiredSHA-256 hex digest of the complete fresh gpa1_ capability already saved by this receiver.
stringFull definition
{ "type": "string", "minLength": 64, "maxLength": 64, "pattern": "^[a-f0-9]{64}$", "writeOnly": true, "description": "SHA-256 hex digest of the complete fresh gpa1_ capability already saved by this receiver.", "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" }handoffHashRequiredSHA-256 hex digest of the complete fresh gph1_ handoff already saved by this receiver.
stringFull definition
{ "type": "string", "minLength": 64, "maxLength": 64, "pattern": "^[a-f0-9]{64}$", "writeOnly": true, "description": "SHA-256 hex digest of the complete fresh gph1_ handoff already saved by this receiver.", "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" }receiverContextKeyRequiredOpaque context key generated with at least 32 random bytes and privately saved with the receiver tuple. It contains no capability, source identifier or personal data and cannot be replaced after claim.
stringFull definition
{ "type": "string", "minLength": 43, "maxLength": 128, "pattern": "^[A-Za-z0-9_-]{43,128}$", "writeOnly": true, "description": "Opaque context key generated with at least 32 random bytes and privately saved with the receiver tuple. It contains no capability, source identifier or personal data and cannot be replaced after claim.", "example": "synthetic-example-credentialxxxxxxxxxxxxxxx" }
Full definition
{
"type": "object",
"properties": {
"permit": {
"type": "string",
"minLength": 48,
"maxLength": 48,
"pattern": "^gpw1_[A-Za-z0-9_-]{43}$",
"example": "gpw1_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"writeOnly": true,
"description": "Exact private transport permit received in the fixed-destination POST body. This secret never appears in a URL or parent message."
},
"recipientCapabilityHash": {
"type": "string",
"minLength": 64,
"maxLength": 64,
"pattern": "^[a-f0-9]{64}$",
"writeOnly": true,
"description": "SHA-256 hex digest of the complete fresh gpa1_ capability already saved by this receiver.",
"example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
},
"handoffHash": {
"type": "string",
"minLength": 64,
"maxLength": 64,
"pattern": "^[a-f0-9]{64}$",
"writeOnly": true,
"description": "SHA-256 hex digest of the complete fresh gph1_ handoff already saved by this receiver.",
"example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
},
"receiverContextKey": {
"type": "string",
"minLength": 43,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]{43,128}$",
"writeOnly": true,
"description": "Opaque context key generated with at least 32 random bytes and privately saved with the receiver tuple. It contains no capability, source identifier or personal data and cannot be replaced after claim.",
"example": "synthetic-example-credentialxxxxxxxxxxxxxxx"
}
},
"description": "One-use widget transport permit and the tuple generated and privately saved by the trusted top-level receiver. Raw receiver capability and handoff remain local until ordinary redemption.",
"required": [
"permit",
"recipientCapabilityHash",
"handoffHash",
"receiverContextKey"
],
"example": {
"permit": "gpw1_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"recipientCapabilityHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"handoffHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"receiverContextKey": "synthetic-example-credentialxxxxxxxxxxxxxxx"
}
}GuestPaymentTransitionClaimReceiptDto
Private acknowledgement that the existing handoff fields are bound to the exact saved receiver tuple. Continue with ordinary handoff redemption and checkout or original-receipt recovery.
transitionIdRequiredExact caller-saved noncredential transition UUID.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "Exact caller-saved noncredential transition UUID.", "example": "863d2796-5dc7-4cf6-8e5b-c010833c0e1d" }accessIdRequiredExact existing payment access context. The identifier grants no payment or receipt access.
string · uuidFull definition
{ "type": "string", "format": "uuid", "description": "Exact existing payment access context. The identifier grants no payment or receipt access.", "example": "b93bc84d-84db-4161-840b-c3c7a7875b1d" }expiresAtRequiredFrozen initial claim and handoff deadline, at most sixty seconds from preparation and within original native and financial or receipt authority. Replays return this same value, including after it has passed; they never renew authority.
string · date-timeFull definition
{ "type": "string", "format": "date-time", "description": "Frozen initial claim and handoff deadline, at most sixty seconds from preparation and within original native and financial or receipt authority. Replays return this same value, including after it has passed; they never renew authority.", "example": "2026-12-31T18:00:00.000Z" }destinationOriginRequiredServer-selected canonical checkout origin for the private top-level POST receiver. No caller-controlled return or redirect destination is accepted.
string · uriFull definition
{ "type": "string", "format": "uri", "maxLength": 2048, "description": "Server-selected canonical checkout origin for the private top-level POST receiver. No caller-controlled return or redirect destination is accepted.", "example": "https://hallify.example.test" }receiverContextKeyRequiredThe same opaque receiver context key supplied on the first claim. Losing its saved private tuple cannot be recovered by choosing a new receiver.
stringFull definition
{ "type": "string", "minLength": 43, "maxLength": 128, "pattern": "^[A-Za-z0-9_-]{43,128}$", "description": "The same opaque receiver context key supplied on the first claim. Losing its saved private tuple cannot be recovered by choosing a new receiver.", "example": "synthetic-example-credentialxxxxxxxxxxxxxxx" }
Full definition
{
"type": "object",
"properties": {
"transitionId": {
"type": "string",
"format": "uuid",
"description": "Exact caller-saved noncredential transition UUID.",
"example": "863d2796-5dc7-4cf6-8e5b-c010833c0e1d"
},
"accessId": {
"type": "string",
"format": "uuid",
"description": "Exact existing payment access context. The identifier grants no payment or receipt access.",
"example": "b93bc84d-84db-4161-840b-c3c7a7875b1d"
},
"expiresAt": {
"type": "string",
"format": "date-time",
"description": "Frozen initial claim and handoff deadline, at most sixty seconds from preparation and within original native and financial or receipt authority. Replays return this same value, including after it has passed; they never renew authority.",
"example": "2026-12-31T18:00:00.000Z"
},
"destinationOrigin": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Server-selected canonical checkout origin for the private top-level POST receiver. No caller-controlled return or redirect destination is accepted.",
"example": "https://hallify.example.test"
},
"receiverContextKey": {
"type": "string",
"minLength": 43,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]{43,128}$",
"description": "The same opaque receiver context key supplied on the first claim. Losing its saved private tuple cannot be recovered by choosing a new receiver.",
"example": "synthetic-example-credentialxxxxxxxxxxxxxxx"
}
},
"description": "Private acknowledgement that the existing handoff fields are bound to the exact saved receiver tuple. Continue with ordinary handoff redemption and checkout or original-receipt recovery.",
"required": [
"transitionId",
"accessId",
"expiresAt",
"destinationOrigin",
"receiverContextKey"
],
"example": {
"transitionId": "863d2796-5dc7-4cf6-8e5b-c010833c0e1d",
"accessId": "b93bc84d-84db-4161-840b-c3c7a7875b1d",
"expiresAt": "2026-12-31T18:00:00.000Z",
"destinationOrigin": "https://hallify.example.test",
"receiverContextKey": "synthetic-example-credentialxxxxxxxxxxxxxxx"
}
}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"
}