Skip to content
Sections

Published storefronts

Bootstrap one verified widget frame

GET/public/storefront-widgets/{connectionId}/bootstrap

At the configured isolated frame origin, revalidates the exact widget connection and current verified parent binding. ACTIVE returns NEW_DEMAND with its typed published presentation and short-lived proof; selected venue admission requires the current explicit outlet attachment. DISABLED returns CONTINUATION_ONLY with frame identity and null proof fields, without publication, outlet or native discovery. Existing private native capabilities independently authorize retained continuation. The frame must enforce the exact parent through CSP and message origin/source checks; this read never authenticates a caller-supplied parent or issues account cookies/native capabilities.

Authentication

A Hallify account session is not required. Follow this operation’s prerequisites and restrictions.

Connection guide

Parameters

connectionIdPath · Required

Widget presentation connection UUID.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "example": "9b6163a8-afea-4877-818b-8e2ae28a2845"
}
parentBindingIdQuery · Required

Exact verified WIDGET_PARENT binding UUID belonging to this widget connection.

string · uuid
Full definition
{
  "format": "uuid",
  "type": "string",
  "example": "9b6163a8-afea-4877-818b-8e2ae28a2845"
}
venueIdQuery · Optional

Actual 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 · uuid
Full definition
{
  "format": "uuid",
  "type": "string",
  "example": "9b6163a8-afea-4877-818b-8e2ae28a2845"
}
OriginHeader · Required

Actual configured isolated frame origin, derived from trusted frame request context for server-side rendering.

string
Full 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-Control

Widget bootstrap and proof must not be cached.

string
Full definition
{
  "type": "string",
  "enum": [
    "no-store"
  ],
  "example": "no-store"
}
StorefrontWidgetBootstrapDto
Full definition
{
  "$ref": "#/components/schemas/StorefrontWidgetBootstrapDto"
}
Example response · 200 · application/json
{
  "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.
TranslatedErrorDto
Full definition
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Example response · 400 · application/json
{
  "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.
TranslatedErrorDto
Full definition
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Example response · 404 · application/json
{
  "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.
TranslatedErrorDto
Full definition
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Example response · 503 · application/json
{
  "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.

connectionIdRequired

Published presentation connection UUID; a nonsecret locator.

string · uuid
Full definition
{
  "type": "string",
  "description": "Published presentation connection UUID; a nonsecret locator.",
  "format": "uuid",
  "example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
}
kindRequired

Presentation target discriminator. Brand presentations select an actual venue through the separate outlet directory.

string
Full definition
{
  "type": "string",
  "description": "Presentation target discriminator. Brand presentations select an actual venue through the separate outlet directory.",
  "enum": [
    "BRAND",
    "VENUE"
  ],
  "example": "BRAND"
}
publicationRequired

Current immutable presentation publication evidence.

allOf
Full 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"
  }
}
documentRequired

Exact typed presentation document from the immutable publication.

allOf
Full 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
      }
    ]
  }
}
venueRequired

Safe native venue projection for a venue presentation, or null for brand outlet selection.

object · null
Full 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
  }
}
orderingRequired

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.

object · null
Full 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"
  }
}
reservationsRequired

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.

object · null
Full 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"
  }
}
admissionRequired

Current active connection admission for new native demand.

string
Full definition
{
  "type": "string",
  "description": "Current active connection admission for new native demand.",
  "enum": [
    "NEW_DEMAND"
  ],
  "example": "NEW_DEMAND"
}
parentBindingIdRequired

Exact immutable parent binding UUID used for this widget frame.

string · uuid
Full definition
{
  "type": "string",
  "description": "Exact immutable parent binding UUID used for this widget frame.",
  "format": "uuid",
  "example": "33d8ae74-8247-45a8-83f4-1b93aa9ac510"
}
parentOriginRequired

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.

string · uri
Full 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
}
frameOriginRequired

Server-configured isolated iframe origin retained on the widget connection and required as the actual native HTTP request origin.

string · uri
Full 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
}
apiOriginRequired

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.

string · uri
Full 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
}
contextRequired

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.

string
Full 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"
}
contextExpiresAtRequired

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.

string · date-time
Full 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"
}
connectionAuthorityRevisionRequired

Current widget connection authority generation included in the signed presentation identity.

integer
Full definition
{
  "type": "integer",
  "description": "Current widget connection authority generation included in the signed presentation identity.",
  "minimum": 1,
  "maximum": 2147483647,
  "example": 1
}
bindingRevisionRequired

Current parent binding revision included in the presentation proof. Native continuation retains its original tuple and rechecks current binding authority.

integer
Full 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.

publicationIdRequired

Immutable presentation publication UUID.

string · uuid
Full definition
{
  "type": "string",
  "description": "Immutable presentation publication UUID.",
  "format": "uuid",
  "example": "6df588a1-7850-4942-8bce-1d836572d66f"
}
sourceRevisionRequired

Target draft revision frozen in this publication.

integer
Full definition
{
  "type": "integer",
  "description": "Target draft revision frozen in this publication.",
  "minimum": 1,
  "example": 1
}
schemaVersionRequired

Frozen typed document schema version.

integer
Full definition
{
  "type": "integer",
  "description": "Frozen typed document schema version.",
  "enum": [
    1
  ],
  "minimum": 1,
  "maximum": 1,
  "example": 1
}
contentHashRequired

SHA-256 hash of the immutable normalized presentation evidence.

string
Full definition
{
  "type": "string",
  "description": "SHA-256 hash of the immutable normalized presentation evidence.",
  "minLength": 64,
  "maxLength": 64,
  "pattern": "^[a-f0-9]{64}$",
  "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
}
publishedAtRequired

Original publication time.

string · date-time
Full 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.

schemaVersionRequired

Exact typed presentation schema version.

integer
Full definition
{
  "type": "integer",
  "description": "Exact typed presentation schema version.",
  "enum": [
    1
  ],
  "minimum": 1,
  "maximum": 1,
  "example": 1
}
defaultLocaleRequired

Default presentation locale; every text value also includes EN, KA and RU.

string
Full definition
{
  "type": "string",
  "description": "Default presentation locale; every text value also includes EN, KA and RU.",
  "enum": [
    "en",
    "ka",
    "ru"
  ],
  "example": "en"
}
themeRequired

Safe hosted theme tokens.

allOf
Full definition
{
  "description": "Safe hosted theme tokens.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontThemeDto"
    }
  ],
  "example": {
    "colorScheme": "LIGHT",
    "accent": "AMBER",
    "density": "COMFORTABLE"
  }
}
seoRequired

Localized public metadata.

allOf
Full 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"
    }
  }
}
blocksRequired

Ordered typed content blocks with unique identities. The complete normalized document is capped at 65536 UTF-8 bytes.

array
Full 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.

colorSchemeRequired

Hosted color scheme from the supported token set.

string
Full definition
{
  "type": "string",
  "description": "Hosted color scheme from the supported token set.",
  "enum": [
    "LIGHT",
    "DARK",
    "PURPLE"
  ],
  "example": "LIGHT"
}
accentRequired

Hosted accent token; arbitrary CSS values are not accepted.

string
Full definition
{
  "type": "string",
  "description": "Hosted accent token; arbitrary CSS values are not accepted.",
  "enum": [
    "AMBER",
    "CORAL",
    "EMERALD",
    "INDIGO"
  ],
  "example": "AMBER"
}
densityRequired

Supported content density.

string
Full 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.

titleRequired

Localized public document title.

allOf
Full definition
{
  "description": "Localized public document title.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontHeadingTextDto"
    }
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
descriptionRequired

Localized public search description.

allOf
Full 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.

enRequired

English plain-text heading.

string
Full definition
{
  "type": "string",
  "description": "English plain-text heading.",
  "minLength": 1,
  "maxLength": 160,
  "example": "example"
}
kaRequired

Georgian plain-text heading.

string
Full definition
{
  "type": "string",
  "description": "Georgian plain-text heading.",
  "minLength": 1,
  "maxLength": 160,
  "example": "example"
}
ruRequired

Russian plain-text heading.

string
Full 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.

enRequired

English search description.

string
Full definition
{
  "type": "string",
  "description": "English search description.",
  "minLength": 1,
  "maxLength": 320,
  "example": "Synthetic example"
}
kaRequired

Georgian search description.

string
Full definition
{
  "type": "string",
  "description": "Georgian search description.",
  "minLength": 1,
  "maxLength": 320,
  "example": "Synthetic example"
}
ruRequired

Russian search description.

string
Full 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.

idRequired

Stable document-local block identity; unique within the document.

string
Full definition
{
  "type": "string",
  "description": "Stable document-local block identity; unique within the document.",
  "minLength": 1,
  "maxLength": 48,
  "example": "example-id"
}
kindRequired

Hero block discriminator.

string
Full definition
{
  "type": "string",
  "description": "Hero block discriminator.",
  "enum": [
    "HERO"
  ],
  "example": "HERO"
}
titleRequired

Localized hero headline.

allOf
Full definition
{
  "description": "Localized hero headline.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontHeadingTextDto"
    }
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
bodyRequired

Localized supporting text, or null when omitted from the presentation.

object · null
Full 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"
  }
}
imageRequired

Hero image, or null for a text-only hero.

object · null
Full 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.

enRequired

English image alternative text.

string
Full definition
{
  "type": "string",
  "description": "English image alternative text.",
  "minLength": 1,
  "maxLength": 240,
  "example": "example"
}
kaRequired

Georgian image alternative text.

string
Full definition
{
  "type": "string",
  "description": "Georgian image alternative text.",
  "minLength": 1,
  "maxLength": 240,
  "example": "example"
}
ruRequired

Russian image alternative text.

string
Full 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.

idRequired

Stable document-local block identity; unique within the document.

string
Full definition
{
  "type": "string",
  "description": "Stable document-local block identity; unique within the document.",
  "minLength": 1,
  "maxLength": 48,
  "example": "example-id"
}
kindRequired

Plain-text block discriminator.

string
Full definition
{
  "type": "string",
  "description": "Plain-text block discriminator.",
  "enum": [
    "TEXT"
  ],
  "example": "TEXT"
}
headingRequired

Localized heading, or null for an unheaded paragraph.

object · null
Full 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"
  }
}
bodyRequired

Localized plain text; it is not executable HTML.

allOf
Full 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.

enRequired

English plain-text paragraph.

string
Full definition
{
  "type": "string",
  "description": "English plain-text paragraph.",
  "minLength": 1,
  "maxLength": 4000,
  "example": "example"
}
kaRequired

Georgian plain-text paragraph.

string
Full definition
{
  "type": "string",
  "description": "Georgian plain-text paragraph.",
  "minLength": 1,
  "maxLength": 4000,
  "example": "example"
}
ruRequired

Russian plain-text paragraph.

string
Full 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.

idRequired

Stable document-local block identity; unique within the document.

string
Full definition
{
  "type": "string",
  "description": "Stable document-local block identity; unique within the document.",
  "minLength": 1,
  "maxLength": 48,
  "example": "example-id"
}
kindRequired

Gallery block discriminator.

string
Full definition
{
  "type": "string",
  "description": "Gallery block discriminator.",
  "enum": [
    "GALLERY"
  ],
  "example": "GALLERY"
}
imagesRequired

Ordered gallery images with localized alternative text.

array
Full 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.

urlRequired

Public HTTPS image address. No server-side image fetch is authorized by this value.

string · uri
Full 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"
}
altRequired

Alternative text in every supported storefront locale.

allOf
Full 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.

idRequired

Stable document-local block identity; unique within the document.

string
Full definition
{
  "type": "string",
  "description": "Stable document-local block identity; unique within the document.",
  "minLength": 1,
  "maxLength": 48,
  "example": "example-id"
}
kindRequired

Link-group block discriminator.

string
Full definition
{
  "type": "string",
  "description": "Link-group block discriminator.",
  "enum": [
    "LINKS"
  ],
  "example": "LINKS"
}
linksRequired

Ordered external links.

array
Full 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.

labelRequired

Localized external-link label.

allOf
Full definition
{
  "description": "Localized external-link label.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontLinkLabelTextDto"
    }
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
urlRequired

Public HTTPS destination; credentials and nonstandard ports are rejected.

string · uri
Full 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.

enRequired

English link label.

string
Full definition
{
  "type": "string",
  "description": "English link label.",
  "minLength": 1,
  "maxLength": 120,
  "example": "example"
}
kaRequired

Georgian link label.

string
Full definition
{
  "type": "string",
  "description": "Georgian link label.",
  "minLength": 1,
  "maxLength": 120,
  "example": "example"
}
ruRequired

Russian link label.

string
Full 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.

connectionIdRequired

Paused widget connection UUID retaining its original isolated frame and verified parent scope.

string · uuid
Full 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"
}
parentBindingIdRequired

Exact immutable parent binding UUID used for this widget frame.

string · uuid
Full definition
{
  "type": "string",
  "description": "Exact immutable parent binding UUID used for this widget frame.",
  "format": "uuid",
  "example": "33d8ae74-8247-45a8-83f4-1b93aa9ac510"
}
parentOriginRequired

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.

string · uri
Full 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
}
frameOriginRequired

Server-configured isolated iframe origin retained on the widget connection and required as the actual native HTTP request origin.

string · uri
Full 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
}
apiOriginRequired

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.

string · uri
Full 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
}
connectionAuthorityRevisionRequired

Current widget connection authority generation included in the signed presentation identity.

integer
Full definition
{
  "type": "integer",
  "description": "Current widget connection authority generation included in the signed presentation identity.",
  "minimum": 1,
  "maximum": 2147483647,
  "example": 1
}
bindingRevisionRequired

Current parent binding revision included in the presentation proof. Native continuation retains its original tuple and rechecks current binding authority.

integer
Full 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
}
admissionRequired

Frame admission permits only restoration of an existing private native flow; it does not admit new demand or a newly selected resource.

string
Full 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"
}
contextRequired

No new-demand presentation credential is issued for a paused connection.

string · null
Full definition
{
  "type": "string",
  "description": "No new-demand presentation credential is issued for a paused connection.",
  "nullable": true,
  "enum": [
    null
  ],
  "example": null
}
contextExpiresAtRequired

No new-demand presentation proof lifetime exists for a continuation-only frame.

string · date-time · null
Full 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.

statusCodeRequired

HTTP status code repeated from the response.

integer
Full definition
{
  "type": "integer",
  "description": "HTTP status code repeated from the response.",
  "example": 400
}
errorRequired

Translation key for the HTTP category, such as errors:http.conflict. The specific cause is identified by code and translationKey.

string
Full 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"
}
codeRequired

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.

string
Full 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."
}
messageRequired

Translation key, identical to translationKey. The API does not return localized display text. Resolve the key and translationValues in the consuming application.

string
Full 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."
}
translationKeyRequired

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.

string
Full 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."
}
translationValuesOptional

Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.

object
Full 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"
  }
}
validationErrorsOptional

Field validation failures with translation keys and stable validator codes. Submitted values and raw validator text are not included.

array
Full 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"
    }
  ]
}
detailsOptional

Optional domain-specific blocker or validation details

oneOf
Full 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.

fieldRequired

Public field path. Nested properties and array indices are separated by dots.

string
Full definition
{
  "type": "string",
  "example": "email",
  "description": "Public field path. Nested properties and array indices are separated by dots."
}
translationKeyRequired

Translation key for this validator, identical to message. Resolve it using a client dictionary; see the public Developers error catalog.

string
Full 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."
}
codeRequired

Stable validator identifier for this field failure. Custom validators may define additional identifiers.

string
Full definition
{
  "type": "string",
  "example": "isEmail",
  "description": "Stable validator identifier for this field failure. Custom validators may define additional identifiers."
}
messageRequired

Translation key describing this field validation failure, identical to translationKey. Submitted values and validator prose are not included.

string
Full 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."
}
translationValuesOptional

Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.

object
Full 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"
}

Hallify uses essential cookies and optional analytics.

Essential cookies keep sign-in, locale, and theme preferences working. Analytics is off until you choose to allow it.