Authentication
A Hallify account session is not required. Follow this operation’s prerequisites and restrictions.
Connection guideParameters
connectionIdPath · RequiredWidget presentation connection UUID.
string · uuidFull definition
{ "type": "string", "format": "uuid", "example": "9b6163a8-afea-4877-818b-8e2ae28a2845" }parentBindingIdQuery · RequiredExact verified WIDGET_PARENT binding UUID belonging to this widget connection.
string · uuidFull definition
{ "format": "uuid", "type": "string", "example": "9b6163a8-afea-4877-818b-8e2ae28a2845" }venueIdQuery · OptionalActual attached native venue UUID selected for NEW_DEMAND bootstrap, or the matching venue of a venue-only widget. CONTINUATION_ONLY does not admit or discover this outlet; a retained native capability controls its original venue.
string · uuidFull definition
{ "format": "uuid", "type": "string", "example": "9b6163a8-afea-4877-818b-8e2ae28a2845" }OriginHeader · RequiredActual configured isolated frame origin, derived from trusted frame request context for server-side rendering.
stringFull definition
{ "type": "string", "maxLength": 2048, "example": "example" }
Responses
200Private no-store frame bootstrap for the exact current connection and verified parent. NEW_DEMAND carries the published presentation and proof; CONTINUATION_ONLY carries neither discovery nor new proof and never extends native authority.
Response headers
Cache-ControlWidget bootstrap and proof must not be cached.
stringFull definition
{
"type": "string",
"enum": [
"no-store"
],
"example": "no-store"
}Full definition
{
"$ref": "#/components/schemas/StorefrontWidgetBootstrapDto"
}{
"connectionId": "2fde64d5-54a3-47d0-800f-a015f92a8878",
"kind": "BRAND",
"publication": {
"publicationId": "6df588a1-7850-4942-8bce-1d836572d66f",
"sourceRevision": 1,
"schemaVersion": 1,
"contentHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"publishedAt": "2026-01-15T12:00:00.000Z"
},
"document": {
"schemaVersion": 1,
"defaultLocale": "en",
"theme": {
"colorScheme": "LIGHT",
"accent": "AMBER",
"density": "COMFORTABLE"
},
"seo": {
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"description": {
"en": "Synthetic example",
"ka": "Synthetic example",
"ru": "Synthetic example"
}
},
"blocks": [
{
"id": "example-id",
"kind": "HERO",
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"body": null,
"image": null
}
]
},
"venue": null,
"ordering": null,
"reservations": null,
"admission": "NEW_DEMAND",
"parentBindingId": "33d8ae74-8247-45a8-83f4-1b93aa9ac510",
"parentOrigin": "https://restaurant.example.test",
"frameOrigin": "https://widgets.example.test",
"apiOrigin": "https://api.example.test",
"context": "swc1_c3ludGhldGlj.0000000000000000000000000000000000000000000000000000000000000000",
"contextExpiresAt": "2026-12-31T18:00:00.000Z",
"connectionAuthorityRevision": 1,
"bindingRevision": 1
}400A connection, parent binding or selected venue identifier 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"
}404The widget is draft/revoked, the current parent or frame audience is unavailable, or an ACTIVE bootstrap lacks its required publication or selected outlet. A paused frame does not require publication or new outlet admission. Error code: STOREFRONT_PRESENTATION_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"
}503Widget configuration, signing keys or persisted publication/native discovery cannot be safely used. Widget configuration failures use STOREFRONT_WIDGET_UNAVAILABLE; publication and native discovery retain their owning stable error codes.
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
StorefrontWidgetBootstrapDto
Exactly one active new-demand bootstrap or paused continuation-only frame identity, discriminated by admission. A paused frame never receives a presentation proof or native resource discovery.
Full definition
{
"description": "Exactly one active new-demand bootstrap or paused continuation-only frame identity, discriminated by admission. A paused frame never receives a presentation proof or native resource discovery.",
"oneOf": [
{
"$ref": "#/components/schemas/StorefrontWidgetNewDemandBootstrapDto"
},
{
"$ref": "#/components/schemas/StorefrontWidgetContinuationBootstrapDto"
}
],
"discriminator": {
"propertyName": "admission",
"mapping": {
"NEW_DEMAND": "#/components/schemas/StorefrontWidgetNewDemandBootstrapDto",
"CONTINUATION_ONLY": "#/components/schemas/StorefrontWidgetContinuationBootstrapDto"
}
},
"example": {
"connectionId": "2fde64d5-54a3-47d0-800f-a015f92a8878",
"kind": "BRAND",
"publication": {
"publicationId": "6df588a1-7850-4942-8bce-1d836572d66f",
"sourceRevision": 1,
"schemaVersion": 1,
"contentHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"publishedAt": "2026-01-15T12:00:00.000Z"
},
"document": {
"schemaVersion": 1,
"defaultLocale": "en",
"theme": {
"colorScheme": "LIGHT",
"accent": "AMBER",
"density": "COMFORTABLE"
},
"seo": {
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"description": {
"en": "Synthetic example",
"ka": "Synthetic example",
"ru": "Synthetic example"
}
},
"blocks": [
{
"id": "example-id",
"kind": "HERO",
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"body": null,
"image": null
}
]
},
"venue": null,
"ordering": null,
"reservations": null,
"admission": "NEW_DEMAND",
"parentBindingId": "33d8ae74-8247-45a8-83f4-1b93aa9ac510",
"parentOrigin": "https://restaurant.example.test",
"frameOrigin": "https://widgets.example.test",
"apiOrigin": "https://api.example.test",
"context": "swc1_c3ludGhldGlj.0000000000000000000000000000000000000000000000000000000000000000",
"contextExpiresAt": "2026-12-31T18:00:00.000Z",
"connectionAuthorityRevision": 1,
"bindingRevision": 1
}
}StorefrontWidgetNewDemandBootstrapDto
Active widget bootstrap admitting new demand through its current published typed presentation and short-lived signed presentation context. Native guest, booking, ordering and payment capabilities remain separately owned.
connectionIdRequiredPublished presentation connection UUID; a nonsecret locator.
string · uuidFull definition
{ "type": "string", "description": "Published presentation connection UUID; a nonsecret locator.", "format": "uuid", "example": "2fde64d5-54a3-47d0-800f-a015f92a8878" }kindRequiredPresentation target discriminator. Brand presentations select an actual venue through the separate outlet directory.
stringFull definition
{ "type": "string", "description": "Presentation target discriminator. Brand presentations select an actual venue through the separate outlet directory.", "enum": [ "BRAND", "VENUE" ], "example": "BRAND" }publicationRequiredCurrent immutable presentation publication evidence.
allOfFull definition
{ "description": "Current immutable presentation publication evidence.", "allOf": [ { "$ref": "#/components/schemas/StorefrontPublicationDto" } ], "example": { "publicationId": "6df588a1-7850-4942-8bce-1d836572d66f", "sourceRevision": 1, "schemaVersion": 1, "contentHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef", "publishedAt": "2026-01-15T12:00:00.000Z" } }documentRequiredExact typed presentation document from the immutable publication.
allOfFull definition
{ "description": "Exact typed presentation document from the immutable publication.", "allOf": [ { "$ref": "#/components/schemas/StorefrontDocumentDto" } ], "example": { "schemaVersion": 1, "defaultLocale": "en", "theme": { "colorScheme": "LIGHT", "accent": "AMBER", "density": "COMFORTABLE" }, "seo": { "title": { "en": "example", "ka": "example", "ru": "example" }, "description": { "en": "Synthetic example", "ka": "Synthetic example", "ru": "Synthetic example" } }, "blocks": [ { "id": "example-id", "kind": "HERO", "title": { "en": "example", "ka": "example", "ru": "example" }, "body": null, "image": null } ] } }venueRequiredSafe native venue projection for a venue presentation, or null for brand outlet selection.
object · nullFull definition
{ "description": "Safe native venue projection for a venue presentation, or null for brand outlet selection.", "nullable": true, "type": "object", "properties": { "venueId": { "type": "string", "description": "Actual native venue UUID.", "format": "uuid", "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391" }, "name": { "type": "string", "description": "Public venue display name.", "minLength": 1, "maxLength": 255, "example": "Example name" }, "currency": { "type": "string", "description": "Native venue currency code; presentation does not convert it.", "minLength": 3, "maxLength": 3, "example": "GEL" }, "timeZone": { "type": "string", "description": "Native venue time-zone identifier.", "minLength": 1, "maxLength": 64, "example": "Asia/Tbilisi" }, "countryCode": { "type": "string", "description": "Configured venue country code, or null when unavailable.", "nullable": true, "minLength": 2, "maxLength": 2, "example": "GE" }, "city": { "type": "string", "description": "Public venue city, or null when unavailable.", "nullable": true, "maxLength": 120, "example": "example" }, "region": { "type": "string", "description": "Public venue region, or null when unavailable.", "nullable": true, "maxLength": 120, "example": "example" } }, "required": [ "venueId", "name", "currency", "timeZone", "countryCode", "city", "region" ], "example": { "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391", "name": "Example name", "currency": "GEL", "timeZone": "Asia/Tbilisi", "countryCode": null, "city": null, "region": null } }orderingRequiredCurrent attached active native preorder channel for the selected venue, or null when no eligible attachment exists or the brand has no selected venue. Native catalog, quote and request-origin authorization remain authoritative.
object · nullFull definition
{ "description": "Current attached active native preorder channel for the selected venue, or null when no eligible attachment exists or the brand has no selected venue. Native catalog, quote and request-origin authorization remain authoritative.", "nullable": true, "type": "object", "properties": { "connectionId": { "type": "string", "description": "Presentation connection UUID to retain as the nonsecret connection locator on native public draft requests. This does not replace current request-origin authorization.", "format": "uuid", "example": "2fde64d5-54a3-47d0-800f-a015f92a8878" }, "resourceId": { "type": "string", "description": "Current attached PREORDER resource UUID within the presentation connection and selected venue. This is a discovery locator, not a capability.", "format": "uuid", "example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568" }, "venueId": { "type": "string", "description": "Actual native venue UUID owning this attachment and preorder channel. Orders remain scoped to this venue.", "format": "uuid", "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391" }, "publicChannelId": { "type": "string", "description": "Active native preorder public channel UUID belonging to the selected venue.", "format": "uuid", "example": "9bee613d-3322-4a03-8b9f-8a6259984eee" }, "publicChannelHandle": { "type": "string", "description": "Native preorder channel discovery handle used by the public catalog. This is distinct from the enclosing storefront presentation handle.", "minLength": 1, "maxLength": 48, "example": "example" } }, "required": [ "connectionId", "resourceId", "venueId", "publicChannelId", "publicChannelHandle" ], "example": { "connectionId": "2fde64d5-54a3-47d0-800f-a015f92a8878", "resourceId": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568", "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391", "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee", "publicChannelHandle": "example" } }reservationsRequiredCurrent attached active native reservation channel for the selected venue, or null when no eligible attachment exists or the brand has no selected venue. Native availability, booking, waitlist and request-origin authorization remain authoritative.
object · nullFull definition
{ "description": "Current attached active native reservation channel for the selected venue, or null when no eligible attachment exists or the brand has no selected venue. Native availability, booking, waitlist and request-origin authorization remain authoritative.", "nullable": true, "type": "object", "properties": { "connectionId": { "type": "string", "description": "Presentation connection UUID used only as the nonsecret connection locator for native public reservation requests. This does not replace current request-origin authorization.", "format": "uuid", "example": "2fde64d5-54a3-47d0-800f-a015f92a8878" }, "resourceId": { "type": "string", "description": "Current attached RESERVATION resource UUID within this presentation connection and venue. This is a discovery locator, not a capability.", "format": "uuid", "example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568" }, "venueId": { "type": "string", "description": "Actual native venue UUID owning this attachment and reservation channel. Booking and waitlist demand remain scoped to this venue.", "format": "uuid", "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391" }, "publicChannelId": { "type": "string", "description": "Active native reservation public channel UUID belonging to the selected venue.", "format": "uuid", "example": "9bee613d-3322-4a03-8b9f-8a6259984eee" }, "publicChannelHandle": { "type": "string", "description": "Native reservation channel discovery handle used by public booking configuration and availability. This is distinct from the enclosing storefront presentation handle.", "minLength": 1, "maxLength": 48, "example": "1.000" } }, "required": [ "connectionId", "resourceId", "venueId", "publicChannelId", "publicChannelHandle" ], "example": { "connectionId": "2fde64d5-54a3-47d0-800f-a015f92a8878", "resourceId": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568", "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391", "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee", "publicChannelHandle": "1.000" } }admissionRequiredCurrent active connection admission for new native demand.
stringFull definition
{ "type": "string", "description": "Current active connection admission for new native demand.", "enum": [ "NEW_DEMAND" ], "example": "NEW_DEMAND" }parentBindingIdRequiredExact immutable parent binding UUID used for this widget frame.
string · uuidFull definition
{ "type": "string", "description": "Exact immutable parent binding UUID used for this widget frame.", "format": "uuid", "example": "33d8ae74-8247-45a8-83f4-1b93aa9ac510" }parentOriginRequiredCurrent verified parent origin derived from the immutable parent binding. The frame must enforce this exact ancestor and message source; a caller-provided origin is never accepted as proof of the parent.
string · uriFull definition
{ "type": "string", "description": "Current verified parent origin derived from the immutable parent binding. The frame must enforce this exact ancestor and message source; a caller-provided origin is never accepted as proof of the parent.", "example": "https://restaurant.example.test", "format": "uri", "maxLength": 2048 }frameOriginRequiredServer-configured isolated iframe origin retained on the widget connection and required as the actual native HTTP request origin.
string · uriFull definition
{ "type": "string", "description": "Server-configured isolated iframe origin retained on the widget connection and required as the actual native HTTP request origin.", "example": "https://widgets.example.test", "format": "uri", "maxLength": 2048 }apiOriginRequiredServer-configured public API origin for widget requests. The frame hostname is distinct from this API cookie host and the canonical account app host. Widget clients must match this destination to their configured guest transport origin and omit account cookies; caller-selected API destinations are not accepted.
string · uriFull definition
{ "type": "string", "description": "Server-configured public API origin for widget requests. The frame hostname is distinct from this API cookie host and the canonical account app host. Widget clients must match this destination to their configured guest transport origin and omit account cookies; caller-selected API destinations are not accepted.", "example": "https://api.example.test", "format": "uri", "maxLength": 2048 }contextRequiredShort-lived signed presentation context for x-hallify-widget-context on native new-demand requests. Keep it within the frame request boundary; never place it in a URL, account state or parent messages. Existing native capabilities remain separate.
stringFull definition
{ "type": "string", "description": "Short-lived signed presentation context for x-hallify-widget-context on native new-demand requests. Keep it within the frame request boundary; never place it in a URL, account state or parent messages. Existing native capabilities remain separate.", "minLength": 1, "maxLength": 2048, "pattern": "^swc1_[A-Za-z0-9_-]+\\.[a-f0-9]{64}$", "example": "swc1_c3ludGhldGlj.0000000000000000000000000000000000000000000000000000000000000000" }contextExpiresAtRequiredPresentation proof deadline, no later than five minutes after issuance or the current parent DNS authority deadline. Refresh does not extend a native grant or financial window.
string · date-timeFull definition
{ "type": "string", "description": "Presentation proof deadline, no later than five minutes after issuance or the current parent DNS authority deadline. Refresh does not extend a native grant or financial window.", "format": "date-time", "example": "2026-12-31T18:00:00.000Z" }connectionAuthorityRevisionRequiredCurrent widget connection authority generation included in the signed presentation identity.
integerFull definition
{ "type": "integer", "description": "Current widget connection authority generation included in the signed presentation identity.", "minimum": 1, "maximum": 2147483647, "example": 1 }bindingRevisionRequiredCurrent parent binding revision included in the presentation proof. Native continuation retains its original tuple and rechecks current binding authority.
integerFull definition
{ "type": "integer", "description": "Current parent binding revision included in the presentation proof. Native continuation retains its original tuple and rechecks current binding authority.", "minimum": 1, "maximum": 2147483647, "example": 1 }
Full definition
{
"type": "object",
"properties": {
"connectionId": {
"type": "string",
"description": "Published presentation connection UUID; a nonsecret locator.",
"format": "uuid",
"example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
},
"kind": {
"type": "string",
"description": "Presentation target discriminator. Brand presentations select an actual venue through the separate outlet directory.",
"enum": [
"BRAND",
"VENUE"
],
"example": "BRAND"
},
"publication": {
"description": "Current immutable presentation publication evidence.",
"allOf": [
{
"$ref": "#/components/schemas/StorefrontPublicationDto"
}
],
"example": {
"publicationId": "6df588a1-7850-4942-8bce-1d836572d66f",
"sourceRevision": 1,
"schemaVersion": 1,
"contentHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"publishedAt": "2026-01-15T12:00:00.000Z"
}
},
"document": {
"description": "Exact typed presentation document from the immutable publication.",
"allOf": [
{
"$ref": "#/components/schemas/StorefrontDocumentDto"
}
],
"example": {
"schemaVersion": 1,
"defaultLocale": "en",
"theme": {
"colorScheme": "LIGHT",
"accent": "AMBER",
"density": "COMFORTABLE"
},
"seo": {
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"description": {
"en": "Synthetic example",
"ka": "Synthetic example",
"ru": "Synthetic example"
}
},
"blocks": [
{
"id": "example-id",
"kind": "HERO",
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"body": null,
"image": null
}
]
}
},
"venue": {
"description": "Safe native venue projection for a venue presentation, or null for brand outlet selection.",
"nullable": true,
"type": "object",
"properties": {
"venueId": {
"type": "string",
"description": "Actual native venue UUID.",
"format": "uuid",
"example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
},
"name": {
"type": "string",
"description": "Public venue display name.",
"minLength": 1,
"maxLength": 255,
"example": "Example name"
},
"currency": {
"type": "string",
"description": "Native venue currency code; presentation does not convert it.",
"minLength": 3,
"maxLength": 3,
"example": "GEL"
},
"timeZone": {
"type": "string",
"description": "Native venue time-zone identifier.",
"minLength": 1,
"maxLength": 64,
"example": "Asia/Tbilisi"
},
"countryCode": {
"type": "string",
"description": "Configured venue country code, or null when unavailable.",
"nullable": true,
"minLength": 2,
"maxLength": 2,
"example": "GE"
},
"city": {
"type": "string",
"description": "Public venue city, or null when unavailable.",
"nullable": true,
"maxLength": 120,
"example": "example"
},
"region": {
"type": "string",
"description": "Public venue region, or null when unavailable.",
"nullable": true,
"maxLength": 120,
"example": "example"
}
},
"required": [
"venueId",
"name",
"currency",
"timeZone",
"countryCode",
"city",
"region"
],
"example": {
"venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
"name": "Example name",
"currency": "GEL",
"timeZone": "Asia/Tbilisi",
"countryCode": null,
"city": null,
"region": null
}
},
"ordering": {
"description": "Current attached active native preorder channel for the selected venue, or null when no eligible attachment exists or the brand has no selected venue. Native catalog, quote and request-origin authorization remain authoritative.",
"nullable": true,
"type": "object",
"properties": {
"connectionId": {
"type": "string",
"description": "Presentation connection UUID to retain as the nonsecret connection locator on native public draft requests. This does not replace current request-origin authorization.",
"format": "uuid",
"example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
},
"resourceId": {
"type": "string",
"description": "Current attached PREORDER resource UUID within the presentation connection and selected venue. This is a discovery locator, not a capability.",
"format": "uuid",
"example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568"
},
"venueId": {
"type": "string",
"description": "Actual native venue UUID owning this attachment and preorder channel. Orders remain scoped to this venue.",
"format": "uuid",
"example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
},
"publicChannelId": {
"type": "string",
"description": "Active native preorder public channel UUID belonging to the selected venue.",
"format": "uuid",
"example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
},
"publicChannelHandle": {
"type": "string",
"description": "Native preorder channel discovery handle used by the public catalog. This is distinct from the enclosing storefront presentation handle.",
"minLength": 1,
"maxLength": 48,
"example": "example"
}
},
"required": [
"connectionId",
"resourceId",
"venueId",
"publicChannelId",
"publicChannelHandle"
],
"example": {
"connectionId": "2fde64d5-54a3-47d0-800f-a015f92a8878",
"resourceId": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568",
"venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
"publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
"publicChannelHandle": "example"
}
},
"reservations": {
"description": "Current attached active native reservation channel for the selected venue, or null when no eligible attachment exists or the brand has no selected venue. Native availability, booking, waitlist and request-origin authorization remain authoritative.",
"nullable": true,
"type": "object",
"properties": {
"connectionId": {
"type": "string",
"description": "Presentation connection UUID used only as the nonsecret connection locator for native public reservation requests. This does not replace current request-origin authorization.",
"format": "uuid",
"example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
},
"resourceId": {
"type": "string",
"description": "Current attached RESERVATION resource UUID within this presentation connection and venue. This is a discovery locator, not a capability.",
"format": "uuid",
"example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568"
},
"venueId": {
"type": "string",
"description": "Actual native venue UUID owning this attachment and reservation channel. Booking and waitlist demand remain scoped to this venue.",
"format": "uuid",
"example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
},
"publicChannelId": {
"type": "string",
"description": "Active native reservation public channel UUID belonging to the selected venue.",
"format": "uuid",
"example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
},
"publicChannelHandle": {
"type": "string",
"description": "Native reservation channel discovery handle used by public booking configuration and availability. This is distinct from the enclosing storefront presentation handle.",
"minLength": 1,
"maxLength": 48,
"example": "1.000"
}
},
"required": [
"connectionId",
"resourceId",
"venueId",
"publicChannelId",
"publicChannelHandle"
],
"example": {
"connectionId": "2fde64d5-54a3-47d0-800f-a015f92a8878",
"resourceId": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568",
"venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
"publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
"publicChannelHandle": "1.000"
}
},
"admission": {
"type": "string",
"description": "Current active connection admission for new native demand.",
"enum": [
"NEW_DEMAND"
],
"example": "NEW_DEMAND"
},
"parentBindingId": {
"type": "string",
"description": "Exact immutable parent binding UUID used for this widget frame.",
"format": "uuid",
"example": "33d8ae74-8247-45a8-83f4-1b93aa9ac510"
},
"parentOrigin": {
"type": "string",
"description": "Current verified parent origin derived from the immutable parent binding. The frame must enforce this exact ancestor and message source; a caller-provided origin is never accepted as proof of the parent.",
"example": "https://restaurant.example.test",
"format": "uri",
"maxLength": 2048
},
"frameOrigin": {
"type": "string",
"description": "Server-configured isolated iframe origin retained on the widget connection and required as the actual native HTTP request origin.",
"example": "https://widgets.example.test",
"format": "uri",
"maxLength": 2048
},
"apiOrigin": {
"type": "string",
"description": "Server-configured public API origin for widget requests. The frame hostname is distinct from this API cookie host and the canonical account app host. Widget clients must match this destination to their configured guest transport origin and omit account cookies; caller-selected API destinations are not accepted.",
"example": "https://api.example.test",
"format": "uri",
"maxLength": 2048
},
"context": {
"type": "string",
"description": "Short-lived signed presentation context for x-hallify-widget-context on native new-demand requests. Keep it within the frame request boundary; never place it in a URL, account state or parent messages. Existing native capabilities remain separate.",
"minLength": 1,
"maxLength": 2048,
"pattern": "^swc1_[A-Za-z0-9_-]+\\.[a-f0-9]{64}$",
"example": "swc1_c3ludGhldGlj.0000000000000000000000000000000000000000000000000000000000000000"
},
"contextExpiresAt": {
"type": "string",
"description": "Presentation proof deadline, no later than five minutes after issuance or the current parent DNS authority deadline. Refresh does not extend a native grant or financial window.",
"format": "date-time",
"example": "2026-12-31T18:00:00.000Z"
},
"connectionAuthorityRevision": {
"type": "integer",
"description": "Current widget connection authority generation included in the signed presentation identity.",
"minimum": 1,
"maximum": 2147483647,
"example": 1
},
"bindingRevision": {
"type": "integer",
"description": "Current parent binding revision included in the presentation proof. Native continuation retains its original tuple and rechecks current binding authority.",
"minimum": 1,
"maximum": 2147483647,
"example": 1
}
},
"description": "Active widget bootstrap admitting new demand through its current published typed presentation and short-lived signed presentation context. Native guest, booking, ordering and payment capabilities remain separately owned.",
"required": [
"connectionId",
"kind",
"publication",
"document",
"venue",
"ordering",
"reservations",
"admission",
"parentBindingId",
"parentOrigin",
"frameOrigin",
"apiOrigin",
"context",
"contextExpiresAt",
"connectionAuthorityRevision",
"bindingRevision"
],
"example": {
"connectionId": "2fde64d5-54a3-47d0-800f-a015f92a8878",
"kind": "BRAND",
"publication": {
"publicationId": "6df588a1-7850-4942-8bce-1d836572d66f",
"sourceRevision": 1,
"schemaVersion": 1,
"contentHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"publishedAt": "2026-01-15T12:00:00.000Z"
},
"document": {
"schemaVersion": 1,
"defaultLocale": "en",
"theme": {
"colorScheme": "LIGHT",
"accent": "AMBER",
"density": "COMFORTABLE"
},
"seo": {
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"description": {
"en": "Synthetic example",
"ka": "Synthetic example",
"ru": "Synthetic example"
}
},
"blocks": [
{
"id": "example-id",
"kind": "HERO",
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"body": null,
"image": null
}
]
},
"venue": null,
"ordering": null,
"reservations": null,
"admission": "NEW_DEMAND",
"parentBindingId": "33d8ae74-8247-45a8-83f4-1b93aa9ac510",
"parentOrigin": "https://restaurant.example.test",
"frameOrigin": "https://widgets.example.test",
"apiOrigin": "https://api.example.test",
"context": "swc1_c3ludGhldGlj.0000000000000000000000000000000000000000000000000000000000000000",
"contextExpiresAt": "2026-12-31T18:00:00.000Z",
"connectionAuthorityRevision": 1,
"bindingRevision": 1
}
}StorefrontPublicationDto
Immutable presentation publication identity, source revision, schema version, normalized content hash and original publication time.
publicationIdRequiredImmutable presentation publication UUID.
string · uuidFull definition
{ "type": "string", "description": "Immutable presentation publication UUID.", "format": "uuid", "example": "6df588a1-7850-4942-8bce-1d836572d66f" }sourceRevisionRequiredTarget draft revision frozen in this publication.
integerFull definition
{ "type": "integer", "description": "Target draft revision frozen in this publication.", "minimum": 1, "example": 1 }schemaVersionRequiredFrozen typed document schema version.
integerFull definition
{ "type": "integer", "description": "Frozen typed document schema version.", "enum": [ 1 ], "minimum": 1, "maximum": 1, "example": 1 }contentHashRequiredSHA-256 hash of the immutable normalized presentation evidence.
stringFull definition
{ "type": "string", "description": "SHA-256 hash of the immutable normalized presentation evidence.", "minLength": 64, "maxLength": 64, "pattern": "^[a-f0-9]{64}$", "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" }publishedAtRequiredOriginal publication time.
string · date-timeFull definition
{ "type": "string", "description": "Original publication time.", "format": "date-time", "example": "2026-01-15T12:00:00.000Z" }
Full definition
{
"type": "object",
"properties": {
"publicationId": {
"type": "string",
"description": "Immutable presentation publication UUID.",
"format": "uuid",
"example": "6df588a1-7850-4942-8bce-1d836572d66f"
},
"sourceRevision": {
"type": "integer",
"description": "Target draft revision frozen in this publication.",
"minimum": 1,
"example": 1
},
"schemaVersion": {
"type": "integer",
"description": "Frozen typed document schema version.",
"enum": [
1
],
"minimum": 1,
"maximum": 1,
"example": 1
},
"contentHash": {
"type": "string",
"description": "SHA-256 hash of the immutable normalized presentation evidence.",
"minLength": 64,
"maxLength": 64,
"pattern": "^[a-f0-9]{64}$",
"example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
},
"publishedAt": {
"type": "string",
"description": "Original publication time.",
"format": "date-time",
"example": "2026-01-15T12:00:00.000Z"
}
},
"description": "Immutable presentation publication identity, source revision, schema version, normalized content hash and original publication time.",
"required": [
"publicationId",
"sourceRevision",
"schemaVersion",
"contentHash",
"publishedAt"
],
"example": {
"publicationId": "6df588a1-7850-4942-8bce-1d836572d66f",
"sourceRevision": 1,
"schemaVersion": 1,
"contentHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"publishedAt": "2026-01-15T12:00:00.000Z"
}
}StorefrontDocumentDto
Exact schema-version-one multilingual presentation document containing safe theme tokens, search metadata and ordered typed content blocks within the normalized UTF-8 size budget.
schemaVersionRequiredExact typed presentation schema version.
integerFull definition
{ "type": "integer", "description": "Exact typed presentation schema version.", "enum": [ 1 ], "minimum": 1, "maximum": 1, "example": 1 }defaultLocaleRequiredDefault presentation locale; every text value also includes EN, KA and RU.
stringFull definition
{ "type": "string", "description": "Default presentation locale; every text value also includes EN, KA and RU.", "enum": [ "en", "ka", "ru" ], "example": "en" }themeRequiredSafe hosted theme tokens.
allOfFull definition
{ "description": "Safe hosted theme tokens.", "allOf": [ { "$ref": "#/components/schemas/StorefrontThemeDto" } ], "example": { "colorScheme": "LIGHT", "accent": "AMBER", "density": "COMFORTABLE" } }seoRequiredLocalized public metadata.
allOfFull definition
{ "description": "Localized public metadata.", "allOf": [ { "$ref": "#/components/schemas/StorefrontSeoDto" } ], "example": { "title": { "en": "example", "ka": "example", "ru": "example" }, "description": { "en": "Synthetic example", "ka": "Synthetic example", "ru": "Synthetic example" } } }blocksRequiredOrdered typed content blocks with unique identities. The complete normalized document is capped at 65536 UTF-8 bytes.
arrayFull definition
{ "type": "array", "description": "Ordered typed content blocks with unique identities. The complete normalized document is capped at 65536 UTF-8 bytes.", "minItems": 1, "maxItems": 24, "items": { "oneOf": [ { "$ref": "#/components/schemas/StorefrontHeroBlockDto" }, { "$ref": "#/components/schemas/StorefrontTextBlockDto" }, { "$ref": "#/components/schemas/StorefrontGalleryBlockDto" }, { "$ref": "#/components/schemas/StorefrontLinksBlockDto" } ], "discriminator": { "propertyName": "kind" }, "example": { "id": "example-id", "kind": "HERO", "title": { "en": "example", "ka": "example", "ru": "example" }, "body": null, "image": null } }, "example": [ { "id": "example-id", "kind": "HERO", "title": { "en": "example", "ka": "example", "ru": "example" }, "body": null, "image": null } ] }
Full definition
{
"type": "object",
"properties": {
"schemaVersion": {
"type": "integer",
"description": "Exact typed presentation schema version.",
"enum": [
1
],
"minimum": 1,
"maximum": 1,
"example": 1
},
"defaultLocale": {
"type": "string",
"description": "Default presentation locale; every text value also includes EN, KA and RU.",
"enum": [
"en",
"ka",
"ru"
],
"example": "en"
},
"theme": {
"description": "Safe hosted theme tokens.",
"allOf": [
{
"$ref": "#/components/schemas/StorefrontThemeDto"
}
],
"example": {
"colorScheme": "LIGHT",
"accent": "AMBER",
"density": "COMFORTABLE"
}
},
"seo": {
"description": "Localized public metadata.",
"allOf": [
{
"$ref": "#/components/schemas/StorefrontSeoDto"
}
],
"example": {
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"description": {
"en": "Synthetic example",
"ka": "Synthetic example",
"ru": "Synthetic example"
}
}
},
"blocks": {
"type": "array",
"description": "Ordered typed content blocks with unique identities. The complete normalized document is capped at 65536 UTF-8 bytes.",
"minItems": 1,
"maxItems": 24,
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/StorefrontHeroBlockDto"
},
{
"$ref": "#/components/schemas/StorefrontTextBlockDto"
},
{
"$ref": "#/components/schemas/StorefrontGalleryBlockDto"
},
{
"$ref": "#/components/schemas/StorefrontLinksBlockDto"
}
],
"discriminator": {
"propertyName": "kind"
},
"example": {
"id": "example-id",
"kind": "HERO",
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"body": null,
"image": null
}
},
"example": [
{
"id": "example-id",
"kind": "HERO",
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"body": null,
"image": null
}
]
}
},
"description": "Exact schema-version-one multilingual presentation document containing safe theme tokens, search metadata and ordered typed content blocks within the normalized UTF-8 size budget.",
"required": [
"schemaVersion",
"defaultLocale",
"theme",
"seo",
"blocks"
],
"example": {
"schemaVersion": 1,
"defaultLocale": "en",
"theme": {
"colorScheme": "LIGHT",
"accent": "AMBER",
"density": "COMFORTABLE"
},
"seo": {
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"description": {
"en": "Synthetic example",
"ka": "Synthetic example",
"ru": "Synthetic example"
}
},
"blocks": [
{
"id": "example-id",
"kind": "HERO",
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"body": null,
"image": null
}
]
}
}StorefrontThemeDto
Bounded hosted appearance tokens selecting a supported color scheme, accent and content density.
colorSchemeRequiredHosted color scheme from the supported token set.
stringFull definition
{ "type": "string", "description": "Hosted color scheme from the supported token set.", "enum": [ "LIGHT", "DARK", "PURPLE" ], "example": "LIGHT" }accentRequiredHosted accent token; arbitrary CSS values are not accepted.
stringFull definition
{ "type": "string", "description": "Hosted accent token; arbitrary CSS values are not accepted.", "enum": [ "AMBER", "CORAL", "EMERALD", "INDIGO" ], "example": "AMBER" }densityRequiredSupported content density.
stringFull definition
{ "type": "string", "description": "Supported content density.", "enum": [ "COMFORTABLE", "COMPACT" ], "example": "COMFORTABLE" }
Full definition
{
"type": "object",
"properties": {
"colorScheme": {
"type": "string",
"description": "Hosted color scheme from the supported token set.",
"enum": [
"LIGHT",
"DARK",
"PURPLE"
],
"example": "LIGHT"
},
"accent": {
"type": "string",
"description": "Hosted accent token; arbitrary CSS values are not accepted.",
"enum": [
"AMBER",
"CORAL",
"EMERALD",
"INDIGO"
],
"example": "AMBER"
},
"density": {
"type": "string",
"description": "Supported content density.",
"enum": [
"COMFORTABLE",
"COMPACT"
],
"example": "COMFORTABLE"
}
},
"description": "Bounded hosted appearance tokens selecting a supported color scheme, accent and content density.",
"required": [
"colorScheme",
"accent",
"density"
],
"example": {
"colorScheme": "LIGHT",
"accent": "AMBER",
"density": "COMFORTABLE"
}
}StorefrontSeoDto
Public search metadata containing required English, Georgian and Russian title and description text.
titleRequiredLocalized public document title.
allOfFull definition
{ "description": "Localized public document title.", "allOf": [ { "$ref": "#/components/schemas/StorefrontHeadingTextDto" } ], "example": { "en": "example", "ka": "example", "ru": "example" } }descriptionRequiredLocalized public search description.
allOfFull definition
{ "description": "Localized public search description.", "allOf": [ { "$ref": "#/components/schemas/StorefrontDescriptionTextDto" } ], "example": { "en": "Synthetic example", "ka": "Synthetic example", "ru": "Synthetic example" } }
Full definition
{
"type": "object",
"properties": {
"title": {
"description": "Localized public document title.",
"allOf": [
{
"$ref": "#/components/schemas/StorefrontHeadingTextDto"
}
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
},
"description": {
"description": "Localized public search description.",
"allOf": [
{
"$ref": "#/components/schemas/StorefrontDescriptionTextDto"
}
],
"example": {
"en": "Synthetic example",
"ka": "Synthetic example",
"ru": "Synthetic example"
}
}
},
"description": "Public search metadata containing required English, Georgian and Russian title and description text.",
"required": [
"title",
"description"
],
"example": {
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"description": {
"en": "Synthetic example",
"ka": "Synthetic example",
"ru": "Synthetic example"
}
}
}StorefrontHeadingTextDto
Required plain-text heading in English, Georgian and Russian, with one to 160 characters per language.
enRequiredEnglish plain-text heading.
stringFull definition
{ "type": "string", "description": "English plain-text heading.", "minLength": 1, "maxLength": 160, "example": "example" }kaRequiredGeorgian plain-text heading.
stringFull definition
{ "type": "string", "description": "Georgian plain-text heading.", "minLength": 1, "maxLength": 160, "example": "example" }ruRequiredRussian plain-text heading.
stringFull definition
{ "type": "string", "description": "Russian plain-text heading.", "minLength": 1, "maxLength": 160, "example": "example" }
Full definition
{
"type": "object",
"properties": {
"en": {
"type": "string",
"description": "English plain-text heading.",
"minLength": 1,
"maxLength": 160,
"example": "example"
},
"ka": {
"type": "string",
"description": "Georgian plain-text heading.",
"minLength": 1,
"maxLength": 160,
"example": "example"
},
"ru": {
"type": "string",
"description": "Russian plain-text heading.",
"minLength": 1,
"maxLength": 160,
"example": "example"
}
},
"description": "Required plain-text heading in English, Georgian and Russian, with one to 160 characters per language.",
"required": [
"en",
"ka",
"ru"
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
}StorefrontDescriptionTextDto
Required public search description in English, Georgian and Russian, with one to 320 characters per language.
enRequiredEnglish search description.
stringFull definition
{ "type": "string", "description": "English search description.", "minLength": 1, "maxLength": 320, "example": "Synthetic example" }kaRequiredGeorgian search description.
stringFull definition
{ "type": "string", "description": "Georgian search description.", "minLength": 1, "maxLength": 320, "example": "Synthetic example" }ruRequiredRussian search description.
stringFull definition
{ "type": "string", "description": "Russian search description.", "minLength": 1, "maxLength": 320, "example": "Synthetic example" }
Full definition
{
"type": "object",
"properties": {
"en": {
"type": "string",
"description": "English search description.",
"minLength": 1,
"maxLength": 320,
"example": "Synthetic example"
},
"ka": {
"type": "string",
"description": "Georgian search description.",
"minLength": 1,
"maxLength": 320,
"example": "Synthetic example"
},
"ru": {
"type": "string",
"description": "Russian search description.",
"minLength": 1,
"maxLength": 320,
"example": "Synthetic example"
}
},
"description": "Required public search description in English, Georgian and Russian, with one to 320 characters per language.",
"required": [
"en",
"ka",
"ru"
],
"example": {
"en": "Synthetic example",
"ka": "Synthetic example",
"ru": "Synthetic example"
}
}StorefrontHeroBlockDto
Hero presentation block with a required multilingual headline, optional multilingual supporting text and an optional accessible image.
idRequiredStable document-local block identity; unique within the document.
stringFull definition
{ "type": "string", "description": "Stable document-local block identity; unique within the document.", "minLength": 1, "maxLength": 48, "example": "example-id" }kindRequiredHero block discriminator.
stringFull definition
{ "type": "string", "description": "Hero block discriminator.", "enum": [ "HERO" ], "example": "HERO" }titleRequiredLocalized hero headline.
allOfFull definition
{ "description": "Localized hero headline.", "allOf": [ { "$ref": "#/components/schemas/StorefrontHeadingTextDto" } ], "example": { "en": "example", "ka": "example", "ru": "example" } }bodyRequiredLocalized supporting text, or null when omitted from the presentation.
object · nullFull definition
{ "description": "Localized supporting text, or null when omitted from the presentation.", "nullable": true, "type": "object", "properties": { "en": { "type": "string", "description": "English hero supporting text.", "minLength": 1, "maxLength": 1000, "example": "example" }, "ka": { "type": "string", "description": "Georgian hero supporting text.", "minLength": 1, "maxLength": 1000, "example": "example" }, "ru": { "type": "string", "description": "Russian hero supporting text.", "minLength": 1, "maxLength": 1000, "example": "example" } }, "required": [ "en", "ka", "ru" ], "example": { "en": "example", "ka": "example", "ru": "example" } }imageRequiredHero image, or null for a text-only hero.
object · nullFull definition
{ "description": "Hero image, or null for a text-only hero.", "nullable": true, "type": "object", "properties": { "url": { "type": "string", "description": "Public HTTPS image address. No server-side image fetch is authorized by this value.", "format": "uri", "minLength": 1, "maxLength": 2048, "example": "https://example.test/resource" }, "alt": { "description": "Alternative text in every supported storefront locale.", "allOf": [ { "$ref": "#/components/schemas/StorefrontImageAltTextDto" } ], "example": { "en": "example", "ka": "example", "ru": "example" } } }, "required": [ "url", "alt" ], "example": { "url": "https://example.test/resource", "alt": { "en": "example", "ka": "example", "ru": "example" } } }
Full definition
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Stable document-local block identity; unique within the document.",
"minLength": 1,
"maxLength": 48,
"example": "example-id"
},
"kind": {
"type": "string",
"description": "Hero block discriminator.",
"enum": [
"HERO"
],
"example": "HERO"
},
"title": {
"description": "Localized hero headline.",
"allOf": [
{
"$ref": "#/components/schemas/StorefrontHeadingTextDto"
}
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
},
"body": {
"description": "Localized supporting text, or null when omitted from the presentation.",
"nullable": true,
"type": "object",
"properties": {
"en": {
"type": "string",
"description": "English hero supporting text.",
"minLength": 1,
"maxLength": 1000,
"example": "example"
},
"ka": {
"type": "string",
"description": "Georgian hero supporting text.",
"minLength": 1,
"maxLength": 1000,
"example": "example"
},
"ru": {
"type": "string",
"description": "Russian hero supporting text.",
"minLength": 1,
"maxLength": 1000,
"example": "example"
}
},
"required": [
"en",
"ka",
"ru"
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
},
"image": {
"description": "Hero image, or null for a text-only hero.",
"nullable": true,
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Public HTTPS image address. No server-side image fetch is authorized by this value.",
"format": "uri",
"minLength": 1,
"maxLength": 2048,
"example": "https://example.test/resource"
},
"alt": {
"description": "Alternative text in every supported storefront locale.",
"allOf": [
{
"$ref": "#/components/schemas/StorefrontImageAltTextDto"
}
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
}
},
"required": [
"url",
"alt"
],
"example": {
"url": "https://example.test/resource",
"alt": {
"en": "example",
"ka": "example",
"ru": "example"
}
}
}
},
"description": "Hero presentation block with a required multilingual headline, optional multilingual supporting text and an optional accessible image.",
"required": [
"id",
"kind",
"title",
"body",
"image"
],
"example": {
"id": "example-id",
"kind": "HERO",
"title": {
"en": "example",
"ka": "example",
"ru": "example"
},
"body": null,
"image": null
}
}StorefrontImageAltTextDto
Required accessible image description in English, Georgian and Russian, with one to 240 characters per language.
enRequiredEnglish image alternative text.
stringFull definition
{ "type": "string", "description": "English image alternative text.", "minLength": 1, "maxLength": 240, "example": "example" }kaRequiredGeorgian image alternative text.
stringFull definition
{ "type": "string", "description": "Georgian image alternative text.", "minLength": 1, "maxLength": 240, "example": "example" }ruRequiredRussian image alternative text.
stringFull definition
{ "type": "string", "description": "Russian image alternative text.", "minLength": 1, "maxLength": 240, "example": "example" }
Full definition
{
"type": "object",
"properties": {
"en": {
"type": "string",
"description": "English image alternative text.",
"minLength": 1,
"maxLength": 240,
"example": "example"
},
"ka": {
"type": "string",
"description": "Georgian image alternative text.",
"minLength": 1,
"maxLength": 240,
"example": "example"
},
"ru": {
"type": "string",
"description": "Russian image alternative text.",
"minLength": 1,
"maxLength": 240,
"example": "example"
}
},
"description": "Required accessible image description in English, Georgian and Russian, with one to 240 characters per language.",
"required": [
"en",
"ka",
"ru"
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
}StorefrontTextBlockDto
Plain-text presentation block with required multilingual paragraph content and an explicit nullable multilingual heading.
idRequiredStable document-local block identity; unique within the document.
stringFull definition
{ "type": "string", "description": "Stable document-local block identity; unique within the document.", "minLength": 1, "maxLength": 48, "example": "example-id" }kindRequiredPlain-text block discriminator.
stringFull definition
{ "type": "string", "description": "Plain-text block discriminator.", "enum": [ "TEXT" ], "example": "TEXT" }headingRequiredLocalized heading, or null for an unheaded paragraph.
object · nullFull definition
{ "description": "Localized heading, or null for an unheaded paragraph.", "nullable": true, "type": "object", "properties": { "en": { "type": "string", "description": "English plain-text heading.", "minLength": 1, "maxLength": 160, "example": "example" }, "ka": { "type": "string", "description": "Georgian plain-text heading.", "minLength": 1, "maxLength": 160, "example": "example" }, "ru": { "type": "string", "description": "Russian plain-text heading.", "minLength": 1, "maxLength": 160, "example": "example" } }, "required": [ "en", "ka", "ru" ], "example": { "en": "example", "ka": "example", "ru": "example" } }bodyRequiredLocalized plain text; it is not executable HTML.
allOfFull definition
{ "description": "Localized plain text; it is not executable HTML.", "allOf": [ { "$ref": "#/components/schemas/StorefrontParagraphTextDto" } ], "example": { "en": "example", "ka": "example", "ru": "example" } }
Full definition
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Stable document-local block identity; unique within the document.",
"minLength": 1,
"maxLength": 48,
"example": "example-id"
},
"kind": {
"type": "string",
"description": "Plain-text block discriminator.",
"enum": [
"TEXT"
],
"example": "TEXT"
},
"heading": {
"description": "Localized heading, or null for an unheaded paragraph.",
"nullable": true,
"type": "object",
"properties": {
"en": {
"type": "string",
"description": "English plain-text heading.",
"minLength": 1,
"maxLength": 160,
"example": "example"
},
"ka": {
"type": "string",
"description": "Georgian plain-text heading.",
"minLength": 1,
"maxLength": 160,
"example": "example"
},
"ru": {
"type": "string",
"description": "Russian plain-text heading.",
"minLength": 1,
"maxLength": 160,
"example": "example"
}
},
"required": [
"en",
"ka",
"ru"
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
},
"body": {
"description": "Localized plain text; it is not executable HTML.",
"allOf": [
{
"$ref": "#/components/schemas/StorefrontParagraphTextDto"
}
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
}
},
"description": "Plain-text presentation block with required multilingual paragraph content and an explicit nullable multilingual heading.",
"required": [
"id",
"kind",
"heading",
"body"
],
"example": {
"id": "example-id",
"kind": "TEXT",
"heading": null,
"body": {
"en": "example",
"ka": "example",
"ru": "example"
}
}
}StorefrontParagraphTextDto
Required plain-text paragraph in English, Georgian and Russian, with one to 4000 characters per language.
enRequiredEnglish plain-text paragraph.
stringFull definition
{ "type": "string", "description": "English plain-text paragraph.", "minLength": 1, "maxLength": 4000, "example": "example" }kaRequiredGeorgian plain-text paragraph.
stringFull definition
{ "type": "string", "description": "Georgian plain-text paragraph.", "minLength": 1, "maxLength": 4000, "example": "example" }ruRequiredRussian plain-text paragraph.
stringFull definition
{ "type": "string", "description": "Russian plain-text paragraph.", "minLength": 1, "maxLength": 4000, "example": "example" }
Full definition
{
"type": "object",
"properties": {
"en": {
"type": "string",
"description": "English plain-text paragraph.",
"minLength": 1,
"maxLength": 4000,
"example": "example"
},
"ka": {
"type": "string",
"description": "Georgian plain-text paragraph.",
"minLength": 1,
"maxLength": 4000,
"example": "example"
},
"ru": {
"type": "string",
"description": "Russian plain-text paragraph.",
"minLength": 1,
"maxLength": 4000,
"example": "example"
}
},
"description": "Required plain-text paragraph in English, Georgian and Russian, with one to 4000 characters per language.",
"required": [
"en",
"ka",
"ru"
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
}StorefrontGalleryBlockDto
Ordered presentation gallery containing one to twelve public HTTPS images with multilingual alternative text.
idRequiredStable document-local block identity; unique within the document.
stringFull definition
{ "type": "string", "description": "Stable document-local block identity; unique within the document.", "minLength": 1, "maxLength": 48, "example": "example-id" }kindRequiredGallery block discriminator.
stringFull definition
{ "type": "string", "description": "Gallery block discriminator.", "enum": [ "GALLERY" ], "example": "GALLERY" }imagesRequiredOrdered gallery images with localized alternative text.
arrayFull definition
{ "description": "Ordered gallery images with localized alternative text.", "minItems": 1, "maxItems": 12, "type": "array", "items": { "$ref": "#/components/schemas/StorefrontImageDto" }, "example": [ { "url": "https://example.test/resource", "alt": { "en": "example", "ka": "example", "ru": "example" } } ] }
Full definition
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Stable document-local block identity; unique within the document.",
"minLength": 1,
"maxLength": 48,
"example": "example-id"
},
"kind": {
"type": "string",
"description": "Gallery block discriminator.",
"enum": [
"GALLERY"
],
"example": "GALLERY"
},
"images": {
"description": "Ordered gallery images with localized alternative text.",
"minItems": 1,
"maxItems": 12,
"type": "array",
"items": {
"$ref": "#/components/schemas/StorefrontImageDto"
},
"example": [
{
"url": "https://example.test/resource",
"alt": {
"en": "example",
"ka": "example",
"ru": "example"
}
}
]
}
},
"description": "Ordered presentation gallery containing one to twelve public HTTPS images with multilingual alternative text.",
"required": [
"id",
"kind",
"images"
],
"example": {
"id": "example-id",
"kind": "GALLERY",
"images": [
{
"url": "https://example.test/resource",
"alt": {
"en": "example",
"ka": "example",
"ru": "example"
}
}
]
}
}StorefrontImageDto
Public HTTPS presentation image with required English, Georgian and Russian alternative text for accessible rendering.
urlRequiredPublic HTTPS image address. No server-side image fetch is authorized by this value.
string · uriFull definition
{ "type": "string", "description": "Public HTTPS image address. No server-side image fetch is authorized by this value.", "format": "uri", "minLength": 1, "maxLength": 2048, "example": "https://example.test/resource" }altRequiredAlternative text in every supported storefront locale.
allOfFull definition
{ "description": "Alternative text in every supported storefront locale.", "allOf": [ { "$ref": "#/components/schemas/StorefrontImageAltTextDto" } ], "example": { "en": "example", "ka": "example", "ru": "example" } }
Full definition
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Public HTTPS image address. No server-side image fetch is authorized by this value.",
"format": "uri",
"minLength": 1,
"maxLength": 2048,
"example": "https://example.test/resource"
},
"alt": {
"description": "Alternative text in every supported storefront locale.",
"allOf": [
{
"$ref": "#/components/schemas/StorefrontImageAltTextDto"
}
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
}
},
"description": "Public HTTPS presentation image with required English, Georgian and Russian alternative text for accessible rendering.",
"required": [
"url",
"alt"
],
"example": {
"url": "https://example.test/resource",
"alt": {
"en": "example",
"ka": "example",
"ru": "example"
}
}
}StorefrontLinksBlockDto
Ordered presentation links block containing one to twelve explicitly labeled public HTTPS destinations.
idRequiredStable document-local block identity; unique within the document.
stringFull definition
{ "type": "string", "description": "Stable document-local block identity; unique within the document.", "minLength": 1, "maxLength": 48, "example": "example-id" }kindRequiredLink-group block discriminator.
stringFull definition
{ "type": "string", "description": "Link-group block discriminator.", "enum": [ "LINKS" ], "example": "LINKS" }linksRequiredOrdered external links.
arrayFull definition
{ "description": "Ordered external links.", "minItems": 1, "maxItems": 12, "type": "array", "items": { "$ref": "#/components/schemas/StorefrontLinkDto" }, "example": [ { "label": { "en": "example", "ka": "example", "ru": "example" }, "url": "https://example.test/resource" } ] }
Full definition
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Stable document-local block identity; unique within the document.",
"minLength": 1,
"maxLength": 48,
"example": "example-id"
},
"kind": {
"type": "string",
"description": "Link-group block discriminator.",
"enum": [
"LINKS"
],
"example": "LINKS"
},
"links": {
"description": "Ordered external links.",
"minItems": 1,
"maxItems": 12,
"type": "array",
"items": {
"$ref": "#/components/schemas/StorefrontLinkDto"
},
"example": [
{
"label": {
"en": "example",
"ka": "example",
"ru": "example"
},
"url": "https://example.test/resource"
}
]
}
},
"description": "Ordered presentation links block containing one to twelve explicitly labeled public HTTPS destinations.",
"required": [
"id",
"kind",
"links"
],
"example": {
"id": "example-id",
"kind": "LINKS",
"links": [
{
"label": {
"en": "example",
"ka": "example",
"ru": "example"
},
"url": "https://example.test/resource"
}
]
}
}StorefrontLinkDto
Public HTTPS presentation destination with required English, Georgian and Russian link labels.
labelRequiredLocalized external-link label.
allOfFull definition
{ "description": "Localized external-link label.", "allOf": [ { "$ref": "#/components/schemas/StorefrontLinkLabelTextDto" } ], "example": { "en": "example", "ka": "example", "ru": "example" } }urlRequiredPublic HTTPS destination; credentials and nonstandard ports are rejected.
string · uriFull definition
{ "type": "string", "description": "Public HTTPS destination; credentials and nonstandard ports are rejected.", "format": "uri", "minLength": 1, "maxLength": 2048, "example": "https://example.test/resource" }
Full definition
{
"type": "object",
"properties": {
"label": {
"description": "Localized external-link label.",
"allOf": [
{
"$ref": "#/components/schemas/StorefrontLinkLabelTextDto"
}
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
},
"url": {
"type": "string",
"description": "Public HTTPS destination; credentials and nonstandard ports are rejected.",
"format": "uri",
"minLength": 1,
"maxLength": 2048,
"example": "https://example.test/resource"
}
},
"description": "Public HTTPS presentation destination with required English, Georgian and Russian link labels.",
"required": [
"label",
"url"
],
"example": {
"label": {
"en": "example",
"ka": "example",
"ru": "example"
},
"url": "https://example.test/resource"
}
}StorefrontLinkLabelTextDto
Required presentation link label in English, Georgian and Russian, with one to 120 characters per language.
enRequiredEnglish link label.
stringFull definition
{ "type": "string", "description": "English link label.", "minLength": 1, "maxLength": 120, "example": "example" }kaRequiredGeorgian link label.
stringFull definition
{ "type": "string", "description": "Georgian link label.", "minLength": 1, "maxLength": 120, "example": "example" }ruRequiredRussian link label.
stringFull definition
{ "type": "string", "description": "Russian link label.", "minLength": 1, "maxLength": 120, "example": "example" }
Full definition
{
"type": "object",
"properties": {
"en": {
"type": "string",
"description": "English link label.",
"minLength": 1,
"maxLength": 120,
"example": "example"
},
"ka": {
"type": "string",
"description": "Georgian link label.",
"minLength": 1,
"maxLength": 120,
"example": "example"
},
"ru": {
"type": "string",
"description": "Russian link label.",
"minLength": 1,
"maxLength": 120,
"example": "example"
}
},
"description": "Required presentation link label in English, Georgian and Russian, with one to 120 characters per language.",
"required": [
"en",
"ka",
"ru"
],
"example": {
"en": "example",
"ka": "example",
"ru": "example"
}
}StorefrontWidgetContinuationBootstrapDto
Paused widget frame identity for rendering an already retained native flow. It contains no publication, outlet, venue profile, native discovery or new-demand proof. Native continuation must independently revalidate its original capability and immutable resource/binding tuple.
connectionIdRequiredPaused widget connection UUID retaining its original isolated frame and verified parent scope.
string · uuidFull definition
{ "type": "string", "description": "Paused widget connection UUID retaining its original isolated frame and verified parent scope.", "format": "uuid", "example": "2fde64d5-54a3-47d0-800f-a015f92a8878" }parentBindingIdRequiredExact immutable parent binding UUID used for this widget frame.
string · uuidFull definition
{ "type": "string", "description": "Exact immutable parent binding UUID used for this widget frame.", "format": "uuid", "example": "33d8ae74-8247-45a8-83f4-1b93aa9ac510" }parentOriginRequiredCurrent verified parent origin derived from the immutable parent binding. The frame must enforce this exact ancestor and message source; a caller-provided origin is never accepted as proof of the parent.
string · uriFull definition
{ "type": "string", "description": "Current verified parent origin derived from the immutable parent binding. The frame must enforce this exact ancestor and message source; a caller-provided origin is never accepted as proof of the parent.", "example": "https://restaurant.example.test", "format": "uri", "maxLength": 2048 }frameOriginRequiredServer-configured isolated iframe origin retained on the widget connection and required as the actual native HTTP request origin.
string · uriFull definition
{ "type": "string", "description": "Server-configured isolated iframe origin retained on the widget connection and required as the actual native HTTP request origin.", "example": "https://widgets.example.test", "format": "uri", "maxLength": 2048 }apiOriginRequiredServer-configured public API origin for widget requests. The frame hostname is distinct from this API cookie host and the canonical account app host. Widget clients must match this destination to their configured guest transport origin and omit account cookies; caller-selected API destinations are not accepted.
string · uriFull definition
{ "type": "string", "description": "Server-configured public API origin for widget requests. The frame hostname is distinct from this API cookie host and the canonical account app host. Widget clients must match this destination to their configured guest transport origin and omit account cookies; caller-selected API destinations are not accepted.", "example": "https://api.example.test", "format": "uri", "maxLength": 2048 }connectionAuthorityRevisionRequiredCurrent widget connection authority generation included in the signed presentation identity.
integerFull definition
{ "type": "integer", "description": "Current widget connection authority generation included in the signed presentation identity.", "minimum": 1, "maximum": 2147483647, "example": 1 }bindingRevisionRequiredCurrent parent binding revision included in the presentation proof. Native continuation retains its original tuple and rechecks current binding authority.
integerFull definition
{ "type": "integer", "description": "Current parent binding revision included in the presentation proof. Native continuation retains its original tuple and rechecks current binding authority.", "minimum": 1, "maximum": 2147483647, "example": 1 }admissionRequiredFrame admission permits only restoration of an existing private native flow; it does not admit new demand or a newly selected resource.
stringFull definition
{ "type": "string", "description": "Frame admission permits only restoration of an existing private native flow; it does not admit new demand or a newly selected resource.", "enum": [ "CONTINUATION_ONLY" ], "example": "CONTINUATION_ONLY" }contextRequiredNo new-demand presentation credential is issued for a paused connection.
string · nullFull definition
{ "type": "string", "description": "No new-demand presentation credential is issued for a paused connection.", "nullable": true, "enum": [ null ], "example": null }contextExpiresAtRequiredNo new-demand presentation proof lifetime exists for a continuation-only frame.
string · date-time · nullFull definition
{ "type": "string", "description": "No new-demand presentation proof lifetime exists for a continuation-only frame.", "format": "date-time", "nullable": true, "enum": [ null ], "example": null }
Full definition
{
"type": "object",
"properties": {
"connectionId": {
"type": "string",
"description": "Paused widget connection UUID retaining its original isolated frame and verified parent scope.",
"format": "uuid",
"example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
},
"parentBindingId": {
"type": "string",
"description": "Exact immutable parent binding UUID used for this widget frame.",
"format": "uuid",
"example": "33d8ae74-8247-45a8-83f4-1b93aa9ac510"
},
"parentOrigin": {
"type": "string",
"description": "Current verified parent origin derived from the immutable parent binding. The frame must enforce this exact ancestor and message source; a caller-provided origin is never accepted as proof of the parent.",
"example": "https://restaurant.example.test",
"format": "uri",
"maxLength": 2048
},
"frameOrigin": {
"type": "string",
"description": "Server-configured isolated iframe origin retained on the widget connection and required as the actual native HTTP request origin.",
"example": "https://widgets.example.test",
"format": "uri",
"maxLength": 2048
},
"apiOrigin": {
"type": "string",
"description": "Server-configured public API origin for widget requests. The frame hostname is distinct from this API cookie host and the canonical account app host. Widget clients must match this destination to their configured guest transport origin and omit account cookies; caller-selected API destinations are not accepted.",
"example": "https://api.example.test",
"format": "uri",
"maxLength": 2048
},
"connectionAuthorityRevision": {
"type": "integer",
"description": "Current widget connection authority generation included in the signed presentation identity.",
"minimum": 1,
"maximum": 2147483647,
"example": 1
},
"bindingRevision": {
"type": "integer",
"description": "Current parent binding revision included in the presentation proof. Native continuation retains its original tuple and rechecks current binding authority.",
"minimum": 1,
"maximum": 2147483647,
"example": 1
},
"admission": {
"type": "string",
"description": "Frame admission permits only restoration of an existing private native flow; it does not admit new demand or a newly selected resource.",
"enum": [
"CONTINUATION_ONLY"
],
"example": "CONTINUATION_ONLY"
},
"context": {
"type": "string",
"description": "No new-demand presentation credential is issued for a paused connection.",
"nullable": true,
"enum": [
null
],
"example": null
},
"contextExpiresAt": {
"type": "string",
"description": "No new-demand presentation proof lifetime exists for a continuation-only frame.",
"format": "date-time",
"nullable": true,
"enum": [
null
],
"example": null
}
},
"description": "Paused widget frame identity for rendering an already retained native flow. It contains no publication, outlet, venue profile, native discovery or new-demand proof. Native continuation must independently revalidate its original capability and immutable resource/binding tuple.",
"required": [
"connectionId",
"parentBindingId",
"parentOrigin",
"frameOrigin",
"apiOrigin",
"connectionAuthorityRevision",
"bindingRevision",
"admission",
"context",
"contextExpiresAt"
],
"example": {
"connectionId": "2fde64d5-54a3-47d0-800f-a015f92a8878",
"parentBindingId": "33d8ae74-8247-45a8-83f4-1b93aa9ac510",
"parentOrigin": "https://restaurant.example.test",
"frameOrigin": "https://widgets.example.test",
"apiOrigin": "https://api.example.test",
"connectionAuthorityRevision": 1,
"bindingRevision": 1,
"admission": "CONTINUATION_ONLY",
"context": null,
"contextExpiresAt": null
}
}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"
}