Перейти к содержимому
Разделы

Опубликованные витрины

Получить витрину выбранного фактического заведения

GET/public/storefronts/{publicHandle}/venues/{venueId}

Выбирает настоящее заведение через активное подключение бренда и его явное текущее прикрепление ресурса либо проверяет заведение подключения одного заведения. Nullable ordering-вход указывает только на прикреплённый активный нативный канал предзаказа. Сохраняет выбранное нативное заведение без объединения tenant, валюты или транзакционных прав. Nullable discovery бронирования указывает только на прикреплённый активный нативный канал того же заведения и подключения.

Авторизация

Учётная запись Hallify не требуется. Соблюдайте предварительные условия и ограничения этого метода.

Руководство по подключению

Параметры

publicHandleПуть · Обязательно

Глобально зарезервированный идентификатор опубликованной витрины.

string
Полное определение
{
  "type": "string",
  "minLength": 1,
  "maxLength": 48,
  "example": "example"
}
venueIdПуть · Обязательно

UUID фактически выбранного заведения Hallify.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "example": "9b6163a8-afea-4877-818b-8e2ae28a2845"
}

Ответы

200Опубликованное представление с публичным профилем выбранного заведения.
StorefrontPublicPresentationDto
Полное определение
{
  "$ref": "#/components/schemas/StorefrontPublicPresentationDto"
}
Пример ответа · 200 · application/json
{
  "connectionId": "2fde64d5-54a3-47d0-800f-a015f92a8878",
  "publicHandle": "example",
  "kind": "BRAND",
  "canonicalUrl": "https://example.test/resource",
  "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
}
400Некорректный публичный идентификатор или идентификатор выбранного заведения.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 400 · application/json
{
  "statusCode": 400,
  "error": "errors:http.badRequest",
  "code": "HTTP_BAD_REQUEST",
  "message": "errors:http.badRequest",
  "translationKey": "errors:http.badRequest"
}
404Заведение сейчас не привязано к этому соединению или публично через него недоступно.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 404 · application/json
{
  "statusCode": 404,
  "error": "errors:http.notFound",
  "code": "HTTP_NOT_FOUND",
  "message": "errors:http.notFound",
  "translationKey": "errors:http.notFound"
}
503Невозможно безопасно спроецировать сохранённую публикацию или нативное ordering discovery в текущем scope. Сбои проекции ordering используют STOREFRONT_ORDERING_UNAVAILABLE. Некорректное scoped discovery бронирования использует STOREFRONT_RESERVATIONS_UNAVAILABLE.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 503 · application/json
{
  "statusCode": 503,
  "error": "errors:http.serviceUnavailable",
  "code": "HTTP_SERVICE_UNAVAILABLE",
  "message": "errors:http.serviceUnavailable",
  "translationKey": "errors:http.serviceUnavailable"
}

Схемы

StorefrontPublicPresentationDto

Текущее публичное hosted-представление с несекретным локатором подключения, каноническим адресом, неизменяемой публикацией, типизированным документом, nullable профилем заведения и nullable нативным discovery ordering и бронирования. Discovery не даёт гостевых или финансовых прав.

connectionIdОбязательно

UUID соединения опубликованного представления; не является секретом.

string · uuid
Полное определение
{
  "type": "string",
  "description": "UUID соединения опубликованного представления; не является секретом.",
  "format": "uuid",
  "example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
}
publicHandleОбязательно

Глобально зарезервированный публичный идентификатор опубликованного представления.

string
Полное определение
{
  "type": "string",
  "description": "Глобально зарезервированный публичный идентификатор опубликованного представления.",
  "minLength": 1,
  "maxLength": 48,
  "pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$",
  "example": "example"
}
kindОбязательно

Признак целевого типа представления. Для представления бренда конкретное заведение выбирают через отдельный каталог заведений.

string
Полное определение
{
  "type": "string",
  "description": "Признак целевого типа представления. Для представления бренда конкретное заведение выбирают через отдельный каталог заведений.",
  "enum": [
    "BRAND",
    "VENUE"
  ],
  "example": "BRAND"
}
canonicalUrlОбязательно

Канонический адрес витрины, определённый действующей проверенной привязкой.

string · uri
Полное определение
{
  "type": "string",
  "description": "Канонический адрес витрины, определённый действующей проверенной привязкой.",
  "format": "uri",
  "maxLength": 2048,
  "example": "https://example.test/resource"
}
publicationОбязательно

Данные текущей неизменяемой публикации представления.

allOf
Полное определение
{
  "description": "Данные текущей неизменяемой публикации представления.",
  "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Обязательно

Точный типизированный документ представления из неизменяемой публикации.

allOf
Полное определение
{
  "description": "Точный типизированный документ представления из неизменяемой публикации.",
  "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Обязательно

Безопасное представление данных заведения для его витрины либо null при выборе заведения бренда.

object · null
Полное определение
{
  "description": "Безопасное представление данных заведения для его витрины либо null при выборе заведения бренда.",
  "nullable": true,
  "type": "object",
  "properties": {
    "venueId": {
      "type": "string",
      "description": "UUID фактического заведения Hallify.",
      "format": "uuid",
      "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
    },
    "name": {
      "type": "string",
      "description": "Публичное название заведения.",
      "minLength": 1,
      "maxLength": 255,
      "example": "Example name"
    },
    "currency": {
      "type": "string",
      "description": "Код валюты заведения Hallify. Представление не выполняет конвертацию.",
      "minLength": 3,
      "maxLength": 3,
      "example": "GEL"
    },
    "timeZone": {
      "type": "string",
      "description": "Идентификатор часового пояса заведения Hallify.",
      "minLength": 1,
      "maxLength": 64,
      "example": "Asia/Tbilisi"
    },
    "countryCode": {
      "type": "string",
      "description": "Настроенный код страны заведения либо null, если он недоступен.",
      "nullable": true,
      "minLength": 2,
      "maxLength": 2,
      "example": "GE"
    },
    "city": {
      "type": "string",
      "description": "Публичный город заведения либо null, если он недоступен.",
      "nullable": true,
      "maxLength": 120,
      "example": "example"
    },
    "region": {
      "type": "string",
      "description": "Публичный регион заведения либо null, если он недоступен.",
      "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Обязательно

Текущий привязанный активный нативный канал предзаказа выбранного заведения либо null при отсутствии допустимой привязки или выбранного заведения у бренда. Нативные каталог, quote и авторизация Origin запроса остаются определяющими.

object · null
Полное определение
{
  "description": "Текущий привязанный активный нативный канал предзаказа выбранного заведения либо null при отсутствии допустимой привязки или выбранного заведения у бренда. Нативные каталог, quote и авторизация Origin запроса остаются определяющими.",
  "nullable": true,
  "type": "object",
  "properties": {
    "connectionId": {
      "type": "string",
      "description": "UUID подключения представления, сохраняемый как несекретный connection locator в нативных публичных запросах черновика. Не заменяет текущую авторизацию Origin запроса.",
      "format": "uuid",
      "example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
    },
    "resourceId": {
      "type": "string",
      "description": "UUID текущего привязанного ресурса PREORDER внутри подключения представления и выбранного заведения. Это discovery locator, а не токен доступа.",
      "format": "uuid",
      "example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568"
    },
    "venueId": {
      "type": "string",
      "description": "UUID фактического нативного заведения — владельца этой привязки и канала предзаказа. Заказы остаются в scope этого заведения.",
      "format": "uuid",
      "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
    },
    "publicChannelId": {
      "type": "string",
      "description": "UUID активного нативного публичного канала предзаказа выбранного заведения.",
      "format": "uuid",
      "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
    },
    "publicChannelHandle": {
      "type": "string",
      "description": "Discovery handle нативного канала предзаказа для публичного каталога. Отличается от 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Обязательно

Текущий прикреплённый активный нативный канал бронирования выбранного заведения либо null при отсутствии допустимого прикрепления или выбранного заведения бренда. Нативная доступность, бронирование, ожидание и разрешение Origin запроса сохраняют силу.

object · null
Полное определение
{
  "description": "Текущий прикреплённый активный нативный канал бронирования выбранного заведения либо null при отсутствии допустимого прикрепления или выбранного заведения бренда. Нативная доступность, бронирование, ожидание и разрешение Origin запроса сохраняют силу.",
  "nullable": true,
  "type": "object",
  "properties": {
    "connectionId": {
      "type": "string",
      "description": "UUID подключения представления, используемый только как несекретный локатор нативных публичных запросов бронирования. Не заменяет текущее разрешение Origin запроса.",
      "format": "uuid",
      "example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
    },
    "resourceId": {
      "type": "string",
      "description": "UUID текущего прикреплённого ресурса RESERVATION в этом подключении и заведении. Это discovery-локатор, а не capability.",
      "format": "uuid",
      "example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568"
    },
    "venueId": {
      "type": "string",
      "description": "UUID фактического нативного заведения, которому принадлежат прикрепление и канал бронирования. Бронирование и спрос листа ожидания ограничены этим заведением.",
      "format": "uuid",
      "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
    },
    "publicChannelId": {
      "type": "string",
      "description": "UUID активного нативного публичного канала бронирования выбранного заведения.",
      "format": "uuid",
      "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
    },
    "publicChannelHandle": {
      "type": "string",
      "description": "Discovery-handle нативного канала бронирования для публичной конфигурации и доступности. Отличается от handle окружающего представления Storefront.",
      "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"
  }
}
Полное определение
{
  "type": "object",
  "properties": {
    "connectionId": {
      "type": "string",
      "description": "UUID соединения опубликованного представления; не является секретом.",
      "format": "uuid",
      "example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
    },
    "publicHandle": {
      "type": "string",
      "description": "Глобально зарезервированный публичный идентификатор опубликованного представления.",
      "minLength": 1,
      "maxLength": 48,
      "pattern": "^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$",
      "example": "example"
    },
    "kind": {
      "type": "string",
      "description": "Признак целевого типа представления. Для представления бренда конкретное заведение выбирают через отдельный каталог заведений.",
      "enum": [
        "BRAND",
        "VENUE"
      ],
      "example": "BRAND"
    },
    "canonicalUrl": {
      "type": "string",
      "description": "Канонический адрес витрины, определённый действующей проверенной привязкой.",
      "format": "uri",
      "maxLength": 2048,
      "example": "https://example.test/resource"
    },
    "publication": {
      "description": "Данные текущей неизменяемой публикации представления.",
      "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": "Точный типизированный документ представления из неизменяемой публикации.",
      "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": "Безопасное представление данных заведения для его витрины либо null при выборе заведения бренда.",
      "nullable": true,
      "type": "object",
      "properties": {
        "venueId": {
          "type": "string",
          "description": "UUID фактического заведения Hallify.",
          "format": "uuid",
          "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
        },
        "name": {
          "type": "string",
          "description": "Публичное название заведения.",
          "minLength": 1,
          "maxLength": 255,
          "example": "Example name"
        },
        "currency": {
          "type": "string",
          "description": "Код валюты заведения Hallify. Представление не выполняет конвертацию.",
          "minLength": 3,
          "maxLength": 3,
          "example": "GEL"
        },
        "timeZone": {
          "type": "string",
          "description": "Идентификатор часового пояса заведения Hallify.",
          "minLength": 1,
          "maxLength": 64,
          "example": "Asia/Tbilisi"
        },
        "countryCode": {
          "type": "string",
          "description": "Настроенный код страны заведения либо null, если он недоступен.",
          "nullable": true,
          "minLength": 2,
          "maxLength": 2,
          "example": "GE"
        },
        "city": {
          "type": "string",
          "description": "Публичный город заведения либо null, если он недоступен.",
          "nullable": true,
          "maxLength": 120,
          "example": "example"
        },
        "region": {
          "type": "string",
          "description": "Публичный регион заведения либо null, если он недоступен.",
          "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": "Текущий привязанный активный нативный канал предзаказа выбранного заведения либо null при отсутствии допустимой привязки или выбранного заведения у бренда. Нативные каталог, quote и авторизация Origin запроса остаются определяющими.",
      "nullable": true,
      "type": "object",
      "properties": {
        "connectionId": {
          "type": "string",
          "description": "UUID подключения представления, сохраняемый как несекретный connection locator в нативных публичных запросах черновика. Не заменяет текущую авторизацию Origin запроса.",
          "format": "uuid",
          "example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
        },
        "resourceId": {
          "type": "string",
          "description": "UUID текущего привязанного ресурса PREORDER внутри подключения представления и выбранного заведения. Это discovery locator, а не токен доступа.",
          "format": "uuid",
          "example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568"
        },
        "venueId": {
          "type": "string",
          "description": "UUID фактического нативного заведения — владельца этой привязки и канала предзаказа. Заказы остаются в scope этого заведения.",
          "format": "uuid",
          "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
        },
        "publicChannelId": {
          "type": "string",
          "description": "UUID активного нативного публичного канала предзаказа выбранного заведения.",
          "format": "uuid",
          "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
        },
        "publicChannelHandle": {
          "type": "string",
          "description": "Discovery handle нативного канала предзаказа для публичного каталога. Отличается от 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": "Текущий прикреплённый активный нативный канал бронирования выбранного заведения либо null при отсутствии допустимого прикрепления или выбранного заведения бренда. Нативная доступность, бронирование, ожидание и разрешение Origin запроса сохраняют силу.",
      "nullable": true,
      "type": "object",
      "properties": {
        "connectionId": {
          "type": "string",
          "description": "UUID подключения представления, используемый только как несекретный локатор нативных публичных запросов бронирования. Не заменяет текущее разрешение Origin запроса.",
          "format": "uuid",
          "example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
        },
        "resourceId": {
          "type": "string",
          "description": "UUID текущего прикреплённого ресурса RESERVATION в этом подключении и заведении. Это discovery-локатор, а не capability.",
          "format": "uuid",
          "example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568"
        },
        "venueId": {
          "type": "string",
          "description": "UUID фактического нативного заведения, которому принадлежат прикрепление и канал бронирования. Бронирование и спрос листа ожидания ограничены этим заведением.",
          "format": "uuid",
          "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
        },
        "publicChannelId": {
          "type": "string",
          "description": "UUID активного нативного публичного канала бронирования выбранного заведения.",
          "format": "uuid",
          "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
        },
        "publicChannelHandle": {
          "type": "string",
          "description": "Discovery-handle нативного канала бронирования для публичной конфигурации и доступности. Отличается от handle окружающего представления Storefront.",
          "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"
      }
    }
  },
  "description": "Текущее публичное hosted-представление с несекретным локатором подключения, каноническим адресом, неизменяемой публикацией, типизированным документом, nullable профилем заведения и nullable нативным discovery ordering и бронирования. Discovery не даёт гостевых или финансовых прав.",
  "required": [
    "connectionId",
    "publicHandle",
    "kind",
    "canonicalUrl",
    "publication",
    "document",
    "venue",
    "ordering",
    "reservations"
  ],
  "example": {
    "connectionId": "2fde64d5-54a3-47d0-800f-a015f92a8878",
    "publicHandle": "example",
    "kind": "BRAND",
    "canonicalUrl": "https://example.test/resource",
    "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
  }
}
StorefrontPublicationDto

Идентификатор неизменяемой публикации, исходная ревизия, версия схемы, хеш нормализованного содержимого и исходное время публикации.

publicationIdОбязательно

UUID неизменяемой публикации представления.

string · uuid
Полное определение
{
  "type": "string",
  "description": "UUID неизменяемой публикации представления.",
  "format": "uuid",
  "example": "6df588a1-7850-4942-8bce-1d836572d66f"
}
sourceRevisionОбязательно

Ревизия исходного черновика, зафиксированная в публикации.

integer
Полное определение
{
  "type": "integer",
  "description": "Ревизия исходного черновика, зафиксированная в публикации.",
  "minimum": 1,
  "example": 1
}
schemaVersionОбязательно

Зафиксированная версия схемы типизированного документа.

integer
Полное определение
{
  "type": "integer",
  "description": "Зафиксированная версия схемы типизированного документа.",
  "enum": [
    1
  ],
  "minimum": 1,
  "maximum": 1,
  "example": 1
}
contentHashОбязательно

Хеш SHA-256 неизменяемого нормализованного содержимого представления.

string
Полное определение
{
  "type": "string",
  "description": "Хеш SHA-256 неизменяемого нормализованного содержимого представления.",
  "minLength": 64,
  "maxLength": 64,
  "pattern": "^[a-f0-9]{64}$",
  "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
}
publishedAtОбязательно

Исходное время публикации.

string · date-time
Полное определение
{
  "type": "string",
  "description": "Исходное время публикации.",
  "format": "date-time",
  "example": "2026-01-15T12:00:00.000Z"
}
Полное определение
{
  "type": "object",
  "properties": {
    "publicationId": {
      "type": "string",
      "description": "UUID неизменяемой публикации представления.",
      "format": "uuid",
      "example": "6df588a1-7850-4942-8bce-1d836572d66f"
    },
    "sourceRevision": {
      "type": "integer",
      "description": "Ревизия исходного черновика, зафиксированная в публикации.",
      "minimum": 1,
      "example": 1
    },
    "schemaVersion": {
      "type": "integer",
      "description": "Зафиксированная версия схемы типизированного документа.",
      "enum": [
        1
      ],
      "minimum": 1,
      "maximum": 1,
      "example": 1
    },
    "contentHash": {
      "type": "string",
      "description": "Хеш SHA-256 неизменяемого нормализованного содержимого представления.",
      "minLength": 64,
      "maxLength": 64,
      "pattern": "^[a-f0-9]{64}$",
      "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
    },
    "publishedAt": {
      "type": "string",
      "description": "Исходное время публикации.",
      "format": "date-time",
      "example": "2026-01-15T12:00:00.000Z"
    }
  },
  "description": "Идентификатор неизменяемой публикации, исходная ревизия, версия схемы, хеш нормализованного содержимого и исходное время публикации.",
  "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

Многоязычный документ представления версии схемы 1: безопасные токены темы, поисковые метаданные и упорядоченные типизированные блоки в пределах ограничения нормализованного размера UTF-8.

schemaVersionОбязательно

Точная версия схемы типизированного представления.

integer
Полное определение
{
  "type": "integer",
  "description": "Точная версия схемы типизированного представления.",
  "enum": [
    1
  ],
  "minimum": 1,
  "maximum": 1,
  "example": 1
}
defaultLocaleОбязательно

Основной язык представления. Каждое текстовое значение также содержит EN, KA и RU.

string
Полное определение
{
  "type": "string",
  "description": "Основной язык представления. Каждое текстовое значение также содержит EN, KA и RU.",
  "enum": [
    "en",
    "ka",
    "ru"
  ],
  "example": "en"
}
themeОбязательно

Безопасные токены темы витрины.

allOf
Полное определение
{
  "description": "Безопасные токены темы витрины.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontThemeDto"
    }
  ],
  "example": {
    "colorScheme": "LIGHT",
    "accent": "AMBER",
    "density": "COMFORTABLE"
  }
}
seoОбязательно

Локализованные публичные метаданные.

allOf
Полное определение
{
  "description": "Локализованные публичные метаданные.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontSeoDto"
    }
  ],
  "example": {
    "title": {
      "en": "example",
      "ka": "example",
      "ru": "example"
    },
    "description": {
      "en": "Synthetic example",
      "ka": "Synthetic example",
      "ru": "Synthetic example"
    }
  }
}
blocksОбязательно

Упорядоченные типизированные блоки содержимого с уникальными идентификаторами. Полный нормализованный документ ограничен 65536 байтами UTF-8.

array
Полное определение
{
  "type": "array",
  "description": "Упорядоченные типизированные блоки содержимого с уникальными идентификаторами. Полный нормализованный документ ограничен 65536 байтами UTF-8.",
  "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
    }
  ]
}
Полное определение
{
  "type": "object",
  "properties": {
    "schemaVersion": {
      "type": "integer",
      "description": "Точная версия схемы типизированного представления.",
      "enum": [
        1
      ],
      "minimum": 1,
      "maximum": 1,
      "example": 1
    },
    "defaultLocale": {
      "type": "string",
      "description": "Основной язык представления. Каждое текстовое значение также содержит EN, KA и RU.",
      "enum": [
        "en",
        "ka",
        "ru"
      ],
      "example": "en"
    },
    "theme": {
      "description": "Безопасные токены темы витрины.",
      "allOf": [
        {
          "$ref": "#/components/schemas/StorefrontThemeDto"
        }
      ],
      "example": {
        "colorScheme": "LIGHT",
        "accent": "AMBER",
        "density": "COMFORTABLE"
      }
    },
    "seo": {
      "description": "Локализованные публичные метаданные.",
      "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": "Упорядоченные типизированные блоки содержимого с уникальными идентификаторами. Полный нормализованный документ ограничен 65536 байтами UTF-8.",
      "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": "Многоязычный документ представления версии схемы 1: безопасные токены темы, поисковые метаданные и упорядоченные типизированные блоки в пределах ограничения нормализованного размера UTF-8.",
  "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

Ограниченный набор токенов оформления витрины: поддерживаемая цветовая схема, акцент и плотность содержимого.

colorSchemeОбязательно

Цветовая схема витрины из поддерживаемого набора токенов.

string
Полное определение
{
  "type": "string",
  "description": "Цветовая схема витрины из поддерживаемого набора токенов.",
  "enum": [
    "LIGHT",
    "DARK",
    "PURPLE"
  ],
  "example": "LIGHT"
}
accentОбязательно

Токен акцентного цвета витрины. Произвольные значения CSS не принимаются.

string
Полное определение
{
  "type": "string",
  "description": "Токен акцентного цвета витрины. Произвольные значения CSS не принимаются.",
  "enum": [
    "AMBER",
    "CORAL",
    "EMERALD",
    "INDIGO"
  ],
  "example": "AMBER"
}
densityОбязательно

Поддерживаемая плотность содержимого.

string
Полное определение
{
  "type": "string",
  "description": "Поддерживаемая плотность содержимого.",
  "enum": [
    "COMFORTABLE",
    "COMPACT"
  ],
  "example": "COMFORTABLE"
}
Полное определение
{
  "type": "object",
  "properties": {
    "colorScheme": {
      "type": "string",
      "description": "Цветовая схема витрины из поддерживаемого набора токенов.",
      "enum": [
        "LIGHT",
        "DARK",
        "PURPLE"
      ],
      "example": "LIGHT"
    },
    "accent": {
      "type": "string",
      "description": "Токен акцентного цвета витрины. Произвольные значения CSS не принимаются.",
      "enum": [
        "AMBER",
        "CORAL",
        "EMERALD",
        "INDIGO"
      ],
      "example": "AMBER"
    },
    "density": {
      "type": "string",
      "description": "Поддерживаемая плотность содержимого.",
      "enum": [
        "COMFORTABLE",
        "COMPACT"
      ],
      "example": "COMFORTABLE"
    }
  },
  "description": "Ограниченный набор токенов оформления витрины: поддерживаемая цветовая схема, акцент и плотность содержимого.",
  "required": [
    "colorScheme",
    "accent",
    "density"
  ],
  "example": {
    "colorScheme": "LIGHT",
    "accent": "AMBER",
    "density": "COMFORTABLE"
  }
}
StorefrontSeoDto

Публичные поисковые метаданные с обязательными заголовком и описанием на английском, грузинском и русском языках.

titleОбязательно

Локализованный публичный заголовок документа.

allOf
Полное определение
{
  "description": "Локализованный публичный заголовок документа.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontHeadingTextDto"
    }
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
descriptionОбязательно

Локализованное публичное описание для поиска.

allOf
Полное определение
{
  "description": "Локализованное публичное описание для поиска.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontDescriptionTextDto"
    }
  ],
  "example": {
    "en": "Synthetic example",
    "ka": "Synthetic example",
    "ru": "Synthetic example"
  }
}
Полное определение
{
  "type": "object",
  "properties": {
    "title": {
      "description": "Локализованный публичный заголовок документа.",
      "allOf": [
        {
          "$ref": "#/components/schemas/StorefrontHeadingTextDto"
        }
      ],
      "example": {
        "en": "example",
        "ka": "example",
        "ru": "example"
      }
    },
    "description": {
      "description": "Локализованное публичное описание для поиска.",
      "allOf": [
        {
          "$ref": "#/components/schemas/StorefrontDescriptionTextDto"
        }
      ],
      "example": {
        "en": "Synthetic example",
        "ka": "Synthetic example",
        "ru": "Synthetic example"
      }
    }
  },
  "description": "Публичные поисковые метаданные с обязательными заголовком и описанием на английском, грузинском и русском языках.",
  "required": [
    "title",
    "description"
  ],
  "example": {
    "title": {
      "en": "example",
      "ka": "example",
      "ru": "example"
    },
    "description": {
      "en": "Synthetic example",
      "ka": "Synthetic example",
      "ru": "Synthetic example"
    }
  }
}
StorefrontHeadingTextDto

Обязательный заголовок обычным текстом на английском, грузинском и русском языках: от 1 до 160 символов для каждого языка.

enОбязательно

Заголовок обычным текстом на английском языке.

string
Полное определение
{
  "type": "string",
  "description": "Заголовок обычным текстом на английском языке.",
  "minLength": 1,
  "maxLength": 160,
  "example": "example"
}
kaОбязательно

Заголовок обычным текстом на грузинском языке.

string
Полное определение
{
  "type": "string",
  "description": "Заголовок обычным текстом на грузинском языке.",
  "minLength": 1,
  "maxLength": 160,
  "example": "example"
}
ruОбязательно

Заголовок обычным текстом на русском языке.

string
Полное определение
{
  "type": "string",
  "description": "Заголовок обычным текстом на русском языке.",
  "minLength": 1,
  "maxLength": 160,
  "example": "example"
}
Полное определение
{
  "type": "object",
  "properties": {
    "en": {
      "type": "string",
      "description": "Заголовок обычным текстом на английском языке.",
      "minLength": 1,
      "maxLength": 160,
      "example": "example"
    },
    "ka": {
      "type": "string",
      "description": "Заголовок обычным текстом на грузинском языке.",
      "minLength": 1,
      "maxLength": 160,
      "example": "example"
    },
    "ru": {
      "type": "string",
      "description": "Заголовок обычным текстом на русском языке.",
      "minLength": 1,
      "maxLength": 160,
      "example": "example"
    }
  },
  "description": "Обязательный заголовок обычным текстом на английском, грузинском и русском языках: от 1 до 160 символов для каждого языка.",
  "required": [
    "en",
    "ka",
    "ru"
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
StorefrontDescriptionTextDto

Обязательное публичное поисковое описание на английском, грузинском и русском языках: от 1 до 320 символов для каждого языка.

enОбязательно

Поисковое описание на английском языке.

string
Полное определение
{
  "type": "string",
  "description": "Поисковое описание на английском языке.",
  "minLength": 1,
  "maxLength": 320,
  "example": "Synthetic example"
}
kaОбязательно

Поисковое описание на грузинском языке.

string
Полное определение
{
  "type": "string",
  "description": "Поисковое описание на грузинском языке.",
  "minLength": 1,
  "maxLength": 320,
  "example": "Synthetic example"
}
ruОбязательно

Поисковое описание на русском языке.

string
Полное определение
{
  "type": "string",
  "description": "Поисковое описание на русском языке.",
  "minLength": 1,
  "maxLength": 320,
  "example": "Synthetic example"
}
Полное определение
{
  "type": "object",
  "properties": {
    "en": {
      "type": "string",
      "description": "Поисковое описание на английском языке.",
      "minLength": 1,
      "maxLength": 320,
      "example": "Synthetic example"
    },
    "ka": {
      "type": "string",
      "description": "Поисковое описание на грузинском языке.",
      "minLength": 1,
      "maxLength": 320,
      "example": "Synthetic example"
    },
    "ru": {
      "type": "string",
      "description": "Поисковое описание на русском языке.",
      "minLength": 1,
      "maxLength": 320,
      "example": "Synthetic example"
    }
  },
  "description": "Обязательное публичное поисковое описание на английском, грузинском и русском языках: от 1 до 320 символов для каждого языка.",
  "required": [
    "en",
    "ka",
    "ru"
  ],
  "example": {
    "en": "Synthetic example",
    "ka": "Synthetic example",
    "ru": "Synthetic example"
  }
}
StorefrontHeroBlockDto

Главный блок представления с обязательным многоязычным заголовком, необязательным многоязычным пояснением и необязательным изображением с доступным описанием.

idОбязательно

Стабильный идентификатор блока, уникальный в пределах документа.

string
Полное определение
{
  "type": "string",
  "description": "Стабильный идентификатор блока, уникальный в пределах документа.",
  "minLength": 1,
  "maxLength": 48,
  "example": "example-id"
}
kindОбязательно

Признак главного блока HERO.

string
Полное определение
{
  "type": "string",
  "description": "Признак главного блока HERO.",
  "enum": [
    "HERO"
  ],
  "example": "HERO"
}
titleОбязательно

Локализованный заголовок главного блока.

allOf
Полное определение
{
  "description": "Локализованный заголовок главного блока.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontHeadingTextDto"
    }
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
bodyОбязательно

Локализованный поясняющий текст либо null, если он не задан в представлении.

object · null
Полное определение
{
  "description": "Локализованный поясняющий текст либо null, если он не задан в представлении.",
  "nullable": true,
  "type": "object",
  "properties": {
    "en": {
      "type": "string",
      "description": "Поясняющий текст главного блока на английском языке.",
      "minLength": 1,
      "maxLength": 1000,
      "example": "example"
    },
    "ka": {
      "type": "string",
      "description": "Поясняющий текст главного блока на грузинском языке.",
      "minLength": 1,
      "maxLength": 1000,
      "example": "example"
    },
    "ru": {
      "type": "string",
      "description": "Поясняющий текст главного блока на русском языке.",
      "minLength": 1,
      "maxLength": 1000,
      "example": "example"
    }
  },
  "required": [
    "en",
    "ka",
    "ru"
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
imageОбязательно

Изображение главного блока либо null для текстового блока без изображения.

object · null
Полное определение
{
  "description": "Изображение главного блока либо null для текстового блока без изображения.",
  "nullable": true,
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Публичный HTTPS-адрес изображения. Это значение не разрешает серверную загрузку изображения.",
      "format": "uri",
      "minLength": 1,
      "maxLength": 2048,
      "example": "https://example.test/resource"
    },
    "alt": {
      "description": "Альтернативный текст на каждом поддерживаемом языке витрины.",
      "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"
    }
  }
}
Полное определение
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Стабильный идентификатор блока, уникальный в пределах документа.",
      "minLength": 1,
      "maxLength": 48,
      "example": "example-id"
    },
    "kind": {
      "type": "string",
      "description": "Признак главного блока HERO.",
      "enum": [
        "HERO"
      ],
      "example": "HERO"
    },
    "title": {
      "description": "Локализованный заголовок главного блока.",
      "allOf": [
        {
          "$ref": "#/components/schemas/StorefrontHeadingTextDto"
        }
      ],
      "example": {
        "en": "example",
        "ka": "example",
        "ru": "example"
      }
    },
    "body": {
      "description": "Локализованный поясняющий текст либо null, если он не задан в представлении.",
      "nullable": true,
      "type": "object",
      "properties": {
        "en": {
          "type": "string",
          "description": "Поясняющий текст главного блока на английском языке.",
          "minLength": 1,
          "maxLength": 1000,
          "example": "example"
        },
        "ka": {
          "type": "string",
          "description": "Поясняющий текст главного блока на грузинском языке.",
          "minLength": 1,
          "maxLength": 1000,
          "example": "example"
        },
        "ru": {
          "type": "string",
          "description": "Поясняющий текст главного блока на русском языке.",
          "minLength": 1,
          "maxLength": 1000,
          "example": "example"
        }
      },
      "required": [
        "en",
        "ka",
        "ru"
      ],
      "example": {
        "en": "example",
        "ka": "example",
        "ru": "example"
      }
    },
    "image": {
      "description": "Изображение главного блока либо null для текстового блока без изображения.",
      "nullable": true,
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Публичный HTTPS-адрес изображения. Это значение не разрешает серверную загрузку изображения.",
          "format": "uri",
          "minLength": 1,
          "maxLength": 2048,
          "example": "https://example.test/resource"
        },
        "alt": {
          "description": "Альтернативный текст на каждом поддерживаемом языке витрины.",
          "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": "Главный блок представления с обязательным многоязычным заголовком, необязательным многоязычным пояснением и необязательным изображением с доступным описанием.",
  "required": [
    "id",
    "kind",
    "title",
    "body",
    "image"
  ],
  "example": {
    "id": "example-id",
    "kind": "HERO",
    "title": {
      "en": "example",
      "ka": "example",
      "ru": "example"
    },
    "body": null,
    "image": null
  }
}
StorefrontImageAltTextDto

Обязательное доступное описание изображения на английском, грузинском и русском языках: от 1 до 240 символов для каждого языка.

enОбязательно

Альтернативный текст изображения на английском языке.

string
Полное определение
{
  "type": "string",
  "description": "Альтернативный текст изображения на английском языке.",
  "minLength": 1,
  "maxLength": 240,
  "example": "example"
}
kaОбязательно

Альтернативный текст изображения на грузинском языке.

string
Полное определение
{
  "type": "string",
  "description": "Альтернативный текст изображения на грузинском языке.",
  "minLength": 1,
  "maxLength": 240,
  "example": "example"
}
ruОбязательно

Альтернативный текст изображения на русском языке.

string
Полное определение
{
  "type": "string",
  "description": "Альтернативный текст изображения на русском языке.",
  "minLength": 1,
  "maxLength": 240,
  "example": "example"
}
Полное определение
{
  "type": "object",
  "properties": {
    "en": {
      "type": "string",
      "description": "Альтернативный текст изображения на английском языке.",
      "minLength": 1,
      "maxLength": 240,
      "example": "example"
    },
    "ka": {
      "type": "string",
      "description": "Альтернативный текст изображения на грузинском языке.",
      "minLength": 1,
      "maxLength": 240,
      "example": "example"
    },
    "ru": {
      "type": "string",
      "description": "Альтернативный текст изображения на русском языке.",
      "minLength": 1,
      "maxLength": 240,
      "example": "example"
    }
  },
  "description": "Обязательное доступное описание изображения на английском, грузинском и русском языках: от 1 до 240 символов для каждого языка.",
  "required": [
    "en",
    "ka",
    "ru"
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
StorefrontTextBlockDto

Текстовый блок представления с обязательным многоязычным абзацем и многоязычным заголовком, явно допускающим null.

idОбязательно

Стабильный идентификатор блока, уникальный в пределах документа.

string
Полное определение
{
  "type": "string",
  "description": "Стабильный идентификатор блока, уникальный в пределах документа.",
  "minLength": 1,
  "maxLength": 48,
  "example": "example-id"
}
kindОбязательно

Признак блока обычного текста.

string
Полное определение
{
  "type": "string",
  "description": "Признак блока обычного текста.",
  "enum": [
    "TEXT"
  ],
  "example": "TEXT"
}
headingОбязательно

Локализованный заголовок либо null для абзаца без заголовка.

object · null
Полное определение
{
  "description": "Локализованный заголовок либо null для абзаца без заголовка.",
  "nullable": true,
  "type": "object",
  "properties": {
    "en": {
      "type": "string",
      "description": "Заголовок обычным текстом на английском языке.",
      "minLength": 1,
      "maxLength": 160,
      "example": "example"
    },
    "ka": {
      "type": "string",
      "description": "Заголовок обычным текстом на грузинском языке.",
      "minLength": 1,
      "maxLength": 160,
      "example": "example"
    },
    "ru": {
      "type": "string",
      "description": "Заголовок обычным текстом на русском языке.",
      "minLength": 1,
      "maxLength": 160,
      "example": "example"
    }
  },
  "required": [
    "en",
    "ka",
    "ru"
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
bodyОбязательно

Локализованный обычный текст, который не исполняется как HTML.

allOf
Полное определение
{
  "description": "Локализованный обычный текст, который не исполняется как HTML.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontParagraphTextDto"
    }
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
Полное определение
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Стабильный идентификатор блока, уникальный в пределах документа.",
      "minLength": 1,
      "maxLength": 48,
      "example": "example-id"
    },
    "kind": {
      "type": "string",
      "description": "Признак блока обычного текста.",
      "enum": [
        "TEXT"
      ],
      "example": "TEXT"
    },
    "heading": {
      "description": "Локализованный заголовок либо null для абзаца без заголовка.",
      "nullable": true,
      "type": "object",
      "properties": {
        "en": {
          "type": "string",
          "description": "Заголовок обычным текстом на английском языке.",
          "minLength": 1,
          "maxLength": 160,
          "example": "example"
        },
        "ka": {
          "type": "string",
          "description": "Заголовок обычным текстом на грузинском языке.",
          "minLength": 1,
          "maxLength": 160,
          "example": "example"
        },
        "ru": {
          "type": "string",
          "description": "Заголовок обычным текстом на русском языке.",
          "minLength": 1,
          "maxLength": 160,
          "example": "example"
        }
      },
      "required": [
        "en",
        "ka",
        "ru"
      ],
      "example": {
        "en": "example",
        "ka": "example",
        "ru": "example"
      }
    },
    "body": {
      "description": "Локализованный обычный текст, который не исполняется как HTML.",
      "allOf": [
        {
          "$ref": "#/components/schemas/StorefrontParagraphTextDto"
        }
      ],
      "example": {
        "en": "example",
        "ka": "example",
        "ru": "example"
      }
    }
  },
  "description": "Текстовый блок представления с обязательным многоязычным абзацем и многоязычным заголовком, явно допускающим null.",
  "required": [
    "id",
    "kind",
    "heading",
    "body"
  ],
  "example": {
    "id": "example-id",
    "kind": "TEXT",
    "heading": null,
    "body": {
      "en": "example",
      "ka": "example",
      "ru": "example"
    }
  }
}
StorefrontParagraphTextDto

Обязательный абзац обычным текстом на английском, грузинском и русском языках: от 1 до 4000 символов для каждого языка.

enОбязательно

Абзац обычным текстом на английском языке.

string
Полное определение
{
  "type": "string",
  "description": "Абзац обычным текстом на английском языке.",
  "minLength": 1,
  "maxLength": 4000,
  "example": "example"
}
kaОбязательно

Абзац обычным текстом на грузинском языке.

string
Полное определение
{
  "type": "string",
  "description": "Абзац обычным текстом на грузинском языке.",
  "minLength": 1,
  "maxLength": 4000,
  "example": "example"
}
ruОбязательно

Абзац обычным текстом на русском языке.

string
Полное определение
{
  "type": "string",
  "description": "Абзац обычным текстом на русском языке.",
  "minLength": 1,
  "maxLength": 4000,
  "example": "example"
}
Полное определение
{
  "type": "object",
  "properties": {
    "en": {
      "type": "string",
      "description": "Абзац обычным текстом на английском языке.",
      "minLength": 1,
      "maxLength": 4000,
      "example": "example"
    },
    "ka": {
      "type": "string",
      "description": "Абзац обычным текстом на грузинском языке.",
      "minLength": 1,
      "maxLength": 4000,
      "example": "example"
    },
    "ru": {
      "type": "string",
      "description": "Абзац обычным текстом на русском языке.",
      "minLength": 1,
      "maxLength": 4000,
      "example": "example"
    }
  },
  "description": "Обязательный абзац обычным текстом на английском, грузинском и русском языках: от 1 до 4000 символов для каждого языка.",
  "required": [
    "en",
    "ka",
    "ru"
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
StorefrontGalleryBlockDto

Упорядоченная галерея представления: от 1 до 12 изображений по публичным HTTPS-адресам с многоязычным альтернативным текстом.

idОбязательно

Стабильный идентификатор блока, уникальный в пределах документа.

string
Полное определение
{
  "type": "string",
  "description": "Стабильный идентификатор блока, уникальный в пределах документа.",
  "minLength": 1,
  "maxLength": 48,
  "example": "example-id"
}
kindОбязательно

Признак блока галереи.

string
Полное определение
{
  "type": "string",
  "description": "Признак блока галереи.",
  "enum": [
    "GALLERY"
  ],
  "example": "GALLERY"
}
imagesОбязательно

Упорядоченные изображения галереи с локализованным альтернативным текстом.

array
Полное определение
{
  "description": "Упорядоченные изображения галереи с локализованным альтернативным текстом.",
  "minItems": 1,
  "maxItems": 12,
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/StorefrontImageDto"
  },
  "example": [
    {
      "url": "https://example.test/resource",
      "alt": {
        "en": "example",
        "ka": "example",
        "ru": "example"
      }
    }
  ]
}
Полное определение
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Стабильный идентификатор блока, уникальный в пределах документа.",
      "minLength": 1,
      "maxLength": 48,
      "example": "example-id"
    },
    "kind": {
      "type": "string",
      "description": "Признак блока галереи.",
      "enum": [
        "GALLERY"
      ],
      "example": "GALLERY"
    },
    "images": {
      "description": "Упорядоченные изображения галереи с локализованным альтернативным текстом.",
      "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": "Упорядоченная галерея представления: от 1 до 12 изображений по публичным HTTPS-адресам с многоязычным альтернативным текстом.",
  "required": [
    "id",
    "kind",
    "images"
  ],
  "example": {
    "id": "example-id",
    "kind": "GALLERY",
    "images": [
      {
        "url": "https://example.test/resource",
        "alt": {
          "en": "example",
          "ka": "example",
          "ru": "example"
        }
      }
    ]
  }
}
StorefrontImageDto

Изображение представления по публичному HTTPS-адресу с обязательным альтернативным текстом на английском, грузинском и русском языках для доступного отображения.

urlОбязательно

Публичный HTTPS-адрес изображения. Это значение не разрешает серверную загрузку изображения.

string · uri
Полное определение
{
  "type": "string",
  "description": "Публичный HTTPS-адрес изображения. Это значение не разрешает серверную загрузку изображения.",
  "format": "uri",
  "minLength": 1,
  "maxLength": 2048,
  "example": "https://example.test/resource"
}
altОбязательно

Альтернативный текст на каждом поддерживаемом языке витрины.

allOf
Полное определение
{
  "description": "Альтернативный текст на каждом поддерживаемом языке витрины.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontImageAltTextDto"
    }
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
Полное определение
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Публичный HTTPS-адрес изображения. Это значение не разрешает серверную загрузку изображения.",
      "format": "uri",
      "minLength": 1,
      "maxLength": 2048,
      "example": "https://example.test/resource"
    },
    "alt": {
      "description": "Альтернативный текст на каждом поддерживаемом языке витрины.",
      "allOf": [
        {
          "$ref": "#/components/schemas/StorefrontImageAltTextDto"
        }
      ],
      "example": {
        "en": "example",
        "ka": "example",
        "ru": "example"
      }
    }
  },
  "description": "Изображение представления по публичному HTTPS-адресу с обязательным альтернативным текстом на английском, грузинском и русском языках для доступного отображения.",
  "required": [
    "url",
    "alt"
  ],
  "example": {
    "url": "https://example.test/resource",
    "alt": {
      "en": "example",
      "ka": "example",
      "ru": "example"
    }
  }
}
StorefrontLinksBlockDto

Упорядоченный блок ссылок представления: от 1 до 12 публичных HTTPS-адресов с явными подписями.

idОбязательно

Стабильный идентификатор блока, уникальный в пределах документа.

string
Полное определение
{
  "type": "string",
  "description": "Стабильный идентификатор блока, уникальный в пределах документа.",
  "minLength": 1,
  "maxLength": 48,
  "example": "example-id"
}
kindОбязательно

Признак блока группы ссылок.

string
Полное определение
{
  "type": "string",
  "description": "Признак блока группы ссылок.",
  "enum": [
    "LINKS"
  ],
  "example": "LINKS"
}
linksОбязательно

Упорядоченные внешние ссылки.

array
Полное определение
{
  "description": "Упорядоченные внешние ссылки.",
  "minItems": 1,
  "maxItems": 12,
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/StorefrontLinkDto"
  },
  "example": [
    {
      "label": {
        "en": "example",
        "ka": "example",
        "ru": "example"
      },
      "url": "https://example.test/resource"
    }
  ]
}
Полное определение
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Стабильный идентификатор блока, уникальный в пределах документа.",
      "minLength": 1,
      "maxLength": 48,
      "example": "example-id"
    },
    "kind": {
      "type": "string",
      "description": "Признак блока группы ссылок.",
      "enum": [
        "LINKS"
      ],
      "example": "LINKS"
    },
    "links": {
      "description": "Упорядоченные внешние ссылки.",
      "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": "Упорядоченный блок ссылок представления: от 1 до 12 публичных HTTPS-адресов с явными подписями.",
  "required": [
    "id",
    "kind",
    "links"
  ],
  "example": {
    "id": "example-id",
    "kind": "LINKS",
    "links": [
      {
        "label": {
          "en": "example",
          "ka": "example",
          "ru": "example"
        },
        "url": "https://example.test/resource"
      }
    ]
  }
}
StorefrontLinkDto

Публичный HTTPS-адрес назначения представления с обязательными подписями ссылки на английском, грузинском и русском языках.

labelОбязательно

Локализованная подпись внешней ссылки.

allOf
Полное определение
{
  "description": "Локализованная подпись внешней ссылки.",
  "allOf": [
    {
      "$ref": "#/components/schemas/StorefrontLinkLabelTextDto"
    }
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
urlОбязательно

Публичный HTTPS-адрес назначения. Учётные данные в адресе и нестандартные порты отклоняются.

string · uri
Полное определение
{
  "type": "string",
  "description": "Публичный HTTPS-адрес назначения. Учётные данные в адресе и нестандартные порты отклоняются.",
  "format": "uri",
  "minLength": 1,
  "maxLength": 2048,
  "example": "https://example.test/resource"
}
Полное определение
{
  "type": "object",
  "properties": {
    "label": {
      "description": "Локализованная подпись внешней ссылки.",
      "allOf": [
        {
          "$ref": "#/components/schemas/StorefrontLinkLabelTextDto"
        }
      ],
      "example": {
        "en": "example",
        "ka": "example",
        "ru": "example"
      }
    },
    "url": {
      "type": "string",
      "description": "Публичный HTTPS-адрес назначения. Учётные данные в адресе и нестандартные порты отклоняются.",
      "format": "uri",
      "minLength": 1,
      "maxLength": 2048,
      "example": "https://example.test/resource"
    }
  },
  "description": "Публичный HTTPS-адрес назначения представления с обязательными подписями ссылки на английском, грузинском и русском языках.",
  "required": [
    "label",
    "url"
  ],
  "example": {
    "label": {
      "en": "example",
      "ka": "example",
      "ru": "example"
    },
    "url": "https://example.test/resource"
  }
}
StorefrontLinkLabelTextDto

Обязательная подпись ссылки представления на английском, грузинском и русском языках: от 1 до 120 символов для каждого языка.

enОбязательно

Подпись ссылки на английском языке.

string
Полное определение
{
  "type": "string",
  "description": "Подпись ссылки на английском языке.",
  "minLength": 1,
  "maxLength": 120,
  "example": "example"
}
kaОбязательно

Подпись ссылки на грузинском языке.

string
Полное определение
{
  "type": "string",
  "description": "Подпись ссылки на грузинском языке.",
  "minLength": 1,
  "maxLength": 120,
  "example": "example"
}
ruОбязательно

Подпись ссылки на русском языке.

string
Полное определение
{
  "type": "string",
  "description": "Подпись ссылки на русском языке.",
  "minLength": 1,
  "maxLength": 120,
  "example": "example"
}
Полное определение
{
  "type": "object",
  "properties": {
    "en": {
      "type": "string",
      "description": "Подпись ссылки на английском языке.",
      "minLength": 1,
      "maxLength": 120,
      "example": "example"
    },
    "ka": {
      "type": "string",
      "description": "Подпись ссылки на грузинском языке.",
      "minLength": 1,
      "maxLength": 120,
      "example": "example"
    },
    "ru": {
      "type": "string",
      "description": "Подпись ссылки на русском языке.",
      "minLength": 1,
      "maxLength": 120,
      "example": "example"
    }
  },
  "description": "Обязательная подпись ссылки представления на английском, грузинском и русском языках: от 1 до 120 символов для каждого языка.",
  "required": [
    "en",
    "ka",
    "ru"
  ],
  "example": {
    "en": "example",
    "ka": "example",
    "ru": "example"
  }
}
TranslatedErrorDto

Стабильная оболочка ошибки общего обработчика HTTP-исключений. Дополнительные машинные данные домена вложены в details.

statusCodeОбязательно

HTTP-статус, повторённый из ответа.

integer
Полное определение
{
  "type": "integer",
  "description": "HTTP-статус, повторённый из ответа.",
  "example": 400
}
errorОбязательно

Ключ перевода HTTP-категории, например errors:http.conflict. Конкретную причину определяют code и translationKey.

string
Полное определение
{
  "type": "string",
  "description": "Ключ перевода HTTP-категории, например errors:http.conflict. Конкретную причину определяют code и translationKey.",
  "example": "errors.request.invalid"
}
codeОбязательно

Стабильный машинный код домена либо стандартный HTTP_*, если доменный код не задан. Используйте это поле и HTTP-статус для программной логики; локализованная формулировка не управляет повторами или бизнес-решениями.

string
Полное определение
{
  "type": "string",
  "example": "HTTP_BAD_REQUEST",
  "description": "Стабильный машинный код домена либо стандартный HTTP_*, если доменный код не задан. Используйте это поле и HTTP-статус для программной логики; локализованная формулировка не управляет повторами или бизнес-решениями."
}
messageОбязательно

Ключ перевода, идентичный translationKey. API не возвращает локализованный текст интерфейса. Найдите перевод ключа и подставьте translationValues в приложении-потребителе.

string
Полное определение
{
  "type": "string",
  "example": "errors:http.badRequest",
  "description": "Ключ перевода, идентичный translationKey. API не возвращает локализованный текст интерфейса. Найдите перевод ключа и подставьте translationValues в приложении-потребителе."
}
translationKeyОбязательно

Канонический ключ перевода, идентичный message. Ключи errors:http.* соответствующего статуса описывают неуточнённые ошибки. Публичные ключи и пояснения EN/RU перечислены в Developers; неизвестный ключ требует локализованного запасного сообщения в клиенте.

string
Полное определение
{
  "type": "string",
  "example": "errors:http.badRequest",
  "description": "Канонический ключ перевода, идентичный message. Ключи errors:http.* соответствующего статуса описывают неуточнённые ошибки. Публичные ключи и пояснения EN/RU перечислены в Developers; неизвестный ключ требует локализованного запасного сообщения в клиенте."
}
translationValuesНеобязательно

Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.

object
Полное определение
{
  "type": "object",
  "additionalProperties": {
    "oneOf": [
      {
        "type": "string",
        "example": "example"
      },
      {
        "type": "number",
        "example": 0
      },
      {
        "type": "boolean",
        "example": true
      }
    ],
    "example": "example"
  },
  "description": "Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.",
  "example": {
    "exampleKey": "example"
  }
}
validationErrorsНеобязательно

Ошибки проверки полей с ключами переводов и стабильными кодами валидаторов. Введённые значения и исходные тексты валидаторов не включаются.

array
Полное определение
{
  "description": "Ошибки проверки полей с ключами переводов и стабильными кодами валидаторов. Введённые значения и исходные тексты валидаторов не включаются.",
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/ValidationErrorDto"
  },
  "example": [
    {
      "field": "email",
      "translationKey": "validation:isEmail",
      "code": "isEmail",
      "message": "validation:isEmail"
    }
  ]
}
detailsНеобязательно

Необязательные сведения о доменных препятствиях или ошибках валидации.

oneOf
Полное определение
{
  "description": "Необязательные сведения о доменных препятствиях или ошибках валидации.",
  "oneOf": [
    {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": [
        "example"
      ]
    },
    {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": {
        "exampleKey": "example"
      }
    }
  ],
  "example": [
    "example"
  ]
}
Полное определение
{
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "integer",
      "description": "HTTP-статус, повторённый из ответа.",
      "example": 400
    },
    "error": {
      "type": "string",
      "description": "Ключ перевода HTTP-категории, например errors:http.conflict. Конкретную причину определяют code и translationKey.",
      "example": "errors.request.invalid"
    },
    "code": {
      "type": "string",
      "example": "HTTP_BAD_REQUEST",
      "description": "Стабильный машинный код домена либо стандартный HTTP_*, если доменный код не задан. Используйте это поле и HTTP-статус для программной логики; локализованная формулировка не управляет повторами или бизнес-решениями."
    },
    "message": {
      "type": "string",
      "example": "errors:http.badRequest",
      "description": "Ключ перевода, идентичный translationKey. API не возвращает локализованный текст интерфейса. Найдите перевод ключа и подставьте translationValues в приложении-потребителе."
    },
    "translationKey": {
      "type": "string",
      "example": "errors:http.badRequest",
      "description": "Канонический ключ перевода, идентичный message. Ключи errors:http.* соответствующего статуса описывают неуточнённые ошибки. Публичные ключи и пояснения EN/RU перечислены в Developers; неизвестный ключ требует локализованного запасного сообщения в клиенте."
    },
    "translationValues": {
      "type": "object",
      "additionalProperties": {
        "oneOf": [
          {
            "type": "string",
            "example": "example"
          },
          {
            "type": "number",
            "example": 0
          },
          {
            "type": "boolean",
            "example": true
          }
        ],
        "example": "example"
      },
      "description": "Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.",
      "example": {
        "exampleKey": "example"
      }
    },
    "validationErrors": {
      "description": "Ошибки проверки полей с ключами переводов и стабильными кодами валидаторов. Введённые значения и исходные тексты валидаторов не включаются.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ValidationErrorDto"
      },
      "example": [
        {
          "field": "email",
          "translationKey": "validation:isEmail",
          "code": "isEmail",
          "message": "validation:isEmail"
        }
      ]
    },
    "details": {
      "description": "Необязательные сведения о доменных препятствиях или ошибках валидации.",
      "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": "Стабильная оболочка ошибки общего обработчика HTTP-исключений. Дополнительные машинные данные домена вложены в details.",
  "example": {
    "statusCode": 400,
    "error": "errors:http.badRequest",
    "code": "HTTP_BAD_REQUEST",
    "message": "errors:http.badRequest",
    "translationKey": "errors:http.badRequest"
  }
}
ValidationErrorDto

Ошибка проверки поля с путём поля, стабильным кодом валидатора и ключом перевода. Человекочитаемый текст принадлежит приложению-потребителю.

fieldОбязательно

Публичный путь поля. Вложенные свойства и индексы массива разделены точками.

string
Полное определение
{
  "type": "string",
  "example": "email",
  "description": "Публичный путь поля. Вложенные свойства и индексы массива разделены точками."
}
translationKeyОбязательно

Ключ перевода этого валидатора, идентичный message. Найдите его в клиентском словаре; см. публичный каталог ошибок Developers.

string
Полное определение
{
  "type": "string",
  "example": "validation:isEmail",
  "description": "Ключ перевода этого валидатора, идентичный message. Найдите его в клиентском словаре; см. публичный каталог ошибок Developers."
}
codeОбязательно

Стабильный идентификатор валидатора для ошибки поля. Пользовательские валидаторы могут определять дополнительные идентификаторы.

string
Полное определение
{
  "type": "string",
  "example": "isEmail",
  "description": "Стабильный идентификатор валидатора для ошибки поля. Пользовательские валидаторы могут определять дополнительные идентификаторы."
}
messageОбязательно

Ключ перевода, описывающий ошибку проверки поля, идентичный translationKey. Введённые значения и тексты валидаторов не включаются.

string
Полное определение
{
  "type": "string",
  "example": "validation:isEmail",
  "description": "Ключ перевода, описывающий ошибку проверки поля, идентичный translationKey. Введённые значения и тексты валидаторов не включаются."
}
translationValuesНеобязательно

Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.

object
Полное определение
{
  "type": "object",
  "additionalProperties": {
    "oneOf": [
      {
        "type": "string",
        "example": "example"
      },
      {
        "type": "number",
        "example": 0
      },
      {
        "type": "boolean",
        "example": true
      }
    ],
    "example": "example"
  },
  "description": "Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.",
  "example": {
    "exampleKey": "example"
  }
}
Полное определение
{
  "type": "object",
  "properties": {
    "field": {
      "type": "string",
      "example": "email",
      "description": "Публичный путь поля. Вложенные свойства и индексы массива разделены точками."
    },
    "translationKey": {
      "type": "string",
      "example": "validation:isEmail",
      "description": "Ключ перевода этого валидатора, идентичный message. Найдите его в клиентском словаре; см. публичный каталог ошибок Developers."
    },
    "code": {
      "type": "string",
      "example": "isEmail",
      "description": "Стабильный идентификатор валидатора для ошибки поля. Пользовательские валидаторы могут определять дополнительные идентификаторы."
    },
    "message": {
      "type": "string",
      "example": "validation:isEmail",
      "description": "Ключ перевода, описывающий ошибку проверки поля, идентичный translationKey. Введённые значения и тексты валидаторов не включаются."
    },
    "translationValues": {
      "type": "object",
      "additionalProperties": {
        "oneOf": [
          {
            "type": "string",
            "example": "example"
          },
          {
            "type": "number",
            "example": 0
          },
          {
            "type": "boolean",
            "example": true
          }
        ],
        "example": "example"
      },
      "description": "Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.",
      "example": {
        "exampleKey": "example"
      }
    }
  },
  "required": [
    "field",
    "translationKey",
    "code",
    "message"
  ],
  "description": "Ошибка проверки поля с путём поля, стабильным кодом валидатора и ключом перевода. Человекочитаемый текст принадлежит приложению-потребителю.",
  "example": {
    "field": "email",
    "translationKey": "validation:isEmail",
    "code": "isEmail",
    "message": "validation:isEmail"
  }
}
JsonValue

Рекурсивно допустимое JSON-значение. Используется только там, где контракт явно разрешает произвольные структурированные данные.

Полное определение
{
  "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": "Рекурсивно допустимое JSON-значение. Используется только там, где контракт явно разрешает произвольные структурированные данные.",
  "example": "example"
}

Hallify использует обязательные cookies и опциональную аналитику.

Обязательные cookies поддерживают вход, язык и тему. Аналитика выключена, пока вы явно ее не разрешите.