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

Бронирования и лист ожидания

Подтвердить и преобразовать публичное намерение

POST/public/reservations/{publicHandle}/intents/{intentId}/verify

Проверяет код контакта и атомарно преобразует действующее намерение в бронирование или запись листа ожидания, используя удержанную вместимость. Обязательный Idempotency-Key возвращает сохранённые статус и тело при повторе того же запроса; повторное использование ключа с другим телом возвращает 409.

Авторизация

x-hallify-widget-context: <HALLIFY_STOREFRONT_WIDGET_CONTEXT>

Краткосрочный server-authenticated widget presentation proof. Связывает настроенный frame origin с точными проверенными parent binding и connection authority. Новый widget-спрос требует этот proof; существующие native capabilities сохраняют отдельные права и исходные сроки.

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

Параметры

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

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

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

UUID Hallify. До чтения или изменения ресурса проверяется его принадлежность всем родительским арендаторам и агрегатам маршрута.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "example": "9b6163a8-afea-4877-818b-8e2ae28a2845"
}
idempotency-keyЗаголовок · Обязательно

Обязательный ключ идемпотентности длиной до 128 символов.

string
Полное определение
{
  "type": "string",
  "minLength": 1,
  "maxLength": 128,
  "example": "example"
}
originЗаголовок · Необязательно

Фактический Origin браузерного запроса для проверки текущих прав представления. Обязателен для новых заявок и продолжения через Storefront. Канонические браузерные запросы Hallify используют Origin, настроенный в HALLIFY_PUBLIC_APP_URL. Заголовок передаёт контекст запроса, не авторизует вызывающего и не заменяет соответствующий гостевой ключ.

string · uri
Полное определение
{
  "type": "string",
  "format": "uri",
  "maxLength": 2048,
  "example": "https://example.test/resource"
}
x-hallify-connection-idЗаголовок · Необязательно

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

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

Тело запроса

Обязательно

Проверяет код контакта и атомарно преобразует действующее намерение в бронирование или запись листа ожидания, используя удержанную вместимость.

application/json

VerifyPublicIntentDto
Полное определение
{
  "$ref": "#/components/schemas/VerifyPublicIntentDto"
}

Ответы

200Возвращает исходную сохранённую квитанцию брони или листа ожидания и manage-capability отдельно от текущего разрешённого контекста управления.
ReservationPublicVerifyIntentResultDto
Полное определение
{
  "$ref": "#/components/schemas/ReservationPublicVerifyIntentResultDto"
}
Пример ответа · 200 · application/json
{
  "kind": "RESERVATION",
  "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
  "referenceCode": "EXAMPLE",
  "revision": 1,
  "status": "REQUESTED",
  "eventIds": [
    "6825b43e-93d6-4f3b-8171-c1661099fae8"
  ],
  "manageToken": "synthetic-example-credential",
  "manageTokenExpiresAt": "2026-12-31T18:00:00.000Z",
  "currentState": "AVAILABLE",
  "current": {
    "venue": {
      "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
      "name": "Example name",
      "timeZone": "Asia/Tbilisi"
    },
    "publicChannel": {
      "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
      "publicHandle": "example",
      "status": "DRAFT"
    },
    "servicePeriod": {
      "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
      "name": "Example name",
      "bookingMode": "INSTANT"
    },
    "source": {
      "kind": "RESERVATION",
      "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
      "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
      "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
      "presentation": {
        "kind": "CANONICAL",
        "connectionId": null,
        "resourceId": null,
        "origin": null
      }
    },
    "grantExpiresAt": "2026-12-31T18:00:00.000Z",
    "serverTime": "2026-01-15T12:00:00.000Z",
    "pendingAgreement": null,
    "guarantee": null,
    "kind": "RESERVATION",
    "id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
    "referenceCode": "EXAMPLE",
    "revision": 1,
    "status": "REQUESTED",
    "partySize": 1,
    "scheduledAt": "2026-01-15T12:00:00.000Z",
    "endsAt": "2026-12-31T18:00:00.000Z",
    "allowedActions": [
      "CONFIRM"
    ]
  }
}
402Для новых операций требуется покрытие подписки. Отказ также возможен, если у операции нет исходного подтверждения коммерческого допуска. Разрешённое чтение и финансовое восстановление остаются доступны.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 402 · application/json
{
  "statusCode": 402,
  "error": "errors:http.failure",
  "code": "HTTP_402",
  "message": "errors:http.failure",
  "translationKey": "errors:http.failure"
}
409Ключ идемпотентности уже обрабатывается или повторно использован с другим телом.
IdempotencyConflictError
Полное определение
{
  "$ref": "#/components/schemas/IdempotencyConflictError"
}
Пример ответа · 409 · application/json
{
  "statusCode": 409,
  "error": "errors:http.conflict",
  "code": "IDEMPOTENCY_REQUEST_IN_PROGRESS",
  "message": "errors:idempotency.inProgress",
  "translationKey": "errors:idempotency.inProgress"
}
503Не удалось получить достоверное состояние подписки в пределах установленных ограничений. Повторите исходную операцию после восстановления.
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"
}

Схемы

VerifyPublicIntentDto

Проверяет код контакта и атомарно преобразует действующее намерение в бронирование или запись листа ожидания, используя удержанную вместимость.

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

Стабильный код code для классификации или идентификации.

string
Полное определение
{
  "type": "string",
  "pattern": "^\\d{6}$",
  "description": "Стабильный код `code` для классификации или идентификации.",
  "example": "000001"
}
Полное определение
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "pattern": "^\\d{6}$",
      "description": "Стабильный код `code` для классификации или идентификации.",
      "example": "000001"
    }
  },
  "required": [
    "code"
  ],
  "description": "Проверяет код контакта и атомарно преобразует действующее намерение в бронирование или запись листа ожидания, используя удержанную вместимость.",
  "example": {
    "code": "000001"
  }
}
ReservationPublicVerifyIntentResultDto

Результат подтверждённого бронирования или листа ожидания и гостевой токен управления.

Полное определение
{
  "description": "Результат подтверждённого бронирования или листа ожидания и гостевой токен управления.",
  "oneOf": [
    {
      "type": "object",
      "description": "Результат подтверждённого намерения бронирования.",
      "required": [
        "kind",
        "entityId",
        "referenceCode",
        "revision",
        "status",
        "eventIds",
        "manageToken",
        "manageTokenExpiresAt",
        "currentState",
        "current"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "description": "Тип созданной сущности, управляемой гостем.",
          "enum": [
            "RESERVATION"
          ],
          "example": "RESERVATION"
        },
        "entityId": {
          "type": "string",
          "description": "Идентификатор созданного бронирования или записи листа ожидания.",
          "format": "uuid",
          "example": "6b288694-8b6d-49cd-8007-264ca7224921"
        },
        "referenceCode": {
          "type": "string",
          "description": "Ссылочный код для гостя.",
          "example": "EXAMPLE"
        },
        "revision": {
          "type": "integer",
          "description": "Текущая ревизия сущности.",
          "example": 1
        },
        "status": {
          "type": "string",
          "description": "Итоговый статус бронирования или листа ожидания.",
          "enum": [
            "REQUESTED",
            "BOOKED",
            "CONFIRMED",
            "ARRIVED",
            "SEATED",
            "CANCELED",
            "NO_SHOW",
            "DECLINED",
            "EXPIRED"
          ],
          "example": "REQUESTED"
        },
        "eventIds": {
          "type": "array",
          "description": "События, созданные этой командой.",
          "items": {
            "type": "string",
            "description": "Идентификатор события активности бронирования.",
            "format": "uuid",
            "example": "6825b43e-93d6-4f3b-8171-c1661099fae8"
          },
          "example": [
            "6825b43e-93d6-4f3b-8171-c1661099fae8"
          ]
        },
        "manageToken": {
          "type": "string",
          "description": "Секретный гостевой токен для последующих запросов управления. Используйте указанный в документации заголовок гостевой авторизации; никогда не записывайте токен в журналы.",
          "example": "synthetic-example-credential"
        },
        "manageTokenExpiresAt": {
          "type": "string",
          "description": "Срок действия гостевого токена управления.",
          "format": "date-time",
          "example": "2026-12-31T18:00:00.000Z"
        },
        "currentState": {
          "type": "string",
          "enum": [
            "AVAILABLE",
            "UNAVAILABLE"
          ],
          "description": "Доступно ли отдельное обогащение текущим управлением. Это не меняет исходную сохранённую квитанцию и не выдаёт новый доступ.",
          "example": "AVAILABLE"
        },
        "current": {
          "description": "Отдельное текущее разрешённое управление либо null, если исходный доступ уже непригоден или текущее обогащение недоступно. Исторические поля квитанции и исходный токен сохраняются.",
          "oneOf": [
            {
              "description": "Текущее безопасное гостевое управление при точном нативном READ-доступе и текущих правах presentation. Отделено от неизменяемой исходной квитанции команды.",
              "oneOf": [
                {
                  "type": "object",
                  "description": "Текущий контекст брони и нативные действия в пределах capability.",
                  "additionalProperties": false,
                  "required": [
                    "kind",
                    "id",
                    "referenceCode",
                    "revision",
                    "status",
                    "partySize",
                    "scheduledAt",
                    "endsAt",
                    "venue",
                    "publicChannel",
                    "servicePeriod",
                    "source",
                    "grantExpiresAt",
                    "serverTime",
                    "allowedActions",
                    "guarantee",
                    "pendingAgreement"
                  ],
                  "properties": {
                    "venue": {
                      "type": "object",
                      "description": "Текущий нативный контекст отображения заведения и расписания.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "name",
                        "timeZone"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID заведения-владельца.",
                          "example": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0"
                        },
                        "name": {
                          "type": "string",
                          "description": "Текущее публичное название заведения.",
                          "example": "Example name"
                        },
                        "timeZone": {
                          "type": "string",
                          "description": "Нативный часовой пояс заведения в формате IANA.",
                          "example": "Asia/Tbilisi"
                        }
                      },
                      "example": {
                        "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
                        "name": "Example name",
                        "timeZone": "Asia/Tbilisi"
                      }
                    },
                    "publicChannel": {
                      "type": "object",
                      "description": "Нативный публичный канал записи-владельца, независимый от handle представления Storefront. Его текущий статус не заменяет разрешение продолжения.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "publicHandle",
                        "status"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного канала.",
                          "example": "3db2ed63-9466-4829-81aa-e4959a2279b0"
                        },
                        "publicHandle": {
                          "type": "string",
                          "description": "Handle нативного канала бронирования.",
                          "example": "example"
                        },
                        "status": {
                          "type": "string",
                          "description": "Текущий жизненный цикл нативного публичного канала.",
                          "enum": [
                            "DRAFT",
                            "ACTIVE",
                            "PAUSED"
                          ],
                          "example": "DRAFT"
                        }
                      },
                      "example": {
                        "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
                        "publicHandle": "example",
                        "status": "DRAFT"
                      }
                    },
                    "servicePeriod": {
                      "type": "object",
                      "description": "Текущие нативные ID периода обслуживания и режим бронирования.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "name",
                        "bookingMode"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного периода обслуживания.",
                          "example": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8"
                        },
                        "name": {
                          "type": "string",
                          "description": "Текущее название периода обслуживания.",
                          "example": "Example name"
                        },
                        "bookingMode": {
                          "type": "string",
                          "description": "Текущий режим периода обслуживания; не переписывает исходную квитанцию бронирования.",
                          "enum": [
                            "INSTANT",
                            "REQUEST"
                          ],
                          "example": "INSTANT"
                        }
                      },
                      "example": {
                        "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
                        "name": "Example name",
                        "bookingMode": "INSTANT"
                      }
                    },
                    "source": {
                      "type": "object",
                      "description": "Несекретный точный набор нативного владельца и исходное представление доступа. Эти ID не дают прав и не разрешают менять origin, подключения или capability.",
                      "additionalProperties": false,
                      "required": [
                        "kind",
                        "entityId",
                        "venueId",
                        "publicChannelId",
                        "presentation"
                      ],
                      "properties": {
                        "kind": {
                          "type": "string",
                          "enum": [
                            "RESERVATION",
                            "WAITLIST"
                          ],
                          "description": "Вид нативного владельца.",
                          "example": "RESERVATION"
                        },
                        "entityId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Точный UUID брони или записи ожидания владельца.",
                          "example": "6b288694-8b6d-49cd-8007-264ca7224921"
                        },
                        "venueId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного заведения владельца.",
                          "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
                        },
                        "publicChannelId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного канала владельца.",
                          "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
                        },
                        "presentation": {
                          "type": "object",
                          "description": "Неизменяемая классификация выдачи. CANONICAL содержит null в полях Storefront; STOREFRONT сохраняет точные исходные подключение, прикреплённый ресурс и Origin запроса.",
                          "additionalProperties": false,
                          "required": [
                            "kind",
                            "connectionId",
                            "resourceId",
                            "origin"
                          ],
                          "properties": {
                            "kind": {
                              "type": "string",
                              "enum": [
                                "CANONICAL",
                                "STOREFRONT"
                              ],
                              "description": "Исходный контекст выдачи доступа.",
                              "example": "CANONICAL"
                            },
                            "connectionId": {
                              "type": "string",
                              "format": "uuid",
                              "nullable": true,
                              "description": "UUID исходного подключения Storefront либо null для канонической выдачи.",
                              "example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
                            },
                            "resourceId": {
                              "type": "string",
                              "format": "uuid",
                              "nullable": true,
                              "description": "UUID исходного прикреплённого ресурса Storefront либо null для канонической выдачи.",
                              "example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568"
                            },
                            "origin": {
                              "type": "string",
                              "format": "uri",
                              "nullable": true,
                              "description": "Точный исходный Origin браузера Storefront либо null для канонической выдачи.",
                              "example": "https://example.test/resource"
                            }
                          },
                          "example": {
                            "kind": "CANONICAL",
                            "connectionId": null,
                            "resourceId": null,
                            "origin": null
                          }
                        }
                      },
                      "example": {
                        "kind": "RESERVATION",
                        "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
                        "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                        "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                        "presentation": {
                          "kind": "CANONICAL",
                          "connectionId": null,
                          "resourceId": null,
                          "origin": null
                        }
                      }
                    },
                    "grantExpiresAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Исходный срок нативной manage-capability; чтение не продлевает его.",
                      "example": "2026-12-31T18:00:00.000Z"
                    },
                    "serverTime": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Серверный момент для допустимости текущего действия и срока принятия приглашения.",
                      "example": "2026-01-15T12:00:00.000Z"
                    },
                    "pendingAgreement": {
                      "type": "object",
                      "description": "Текущее ожидающее предложение или принятое продолжение либо null; до активации оно не меняет фактический нативный слот.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "action",
                        "state",
                        "revision",
                        "planHash",
                        "expiresAt",
                        "scheduledAt",
                        "endsAt",
                        "partySize",
                        "servicePeriodId",
                        "offer",
                        "activatedAgreementVersion",
                        "activatedReservationRevision"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного изменения соглашения.",
                          "example": "5a694cf6-acf7-40fd-81e6-92ec0fa6c91f"
                        },
                        "action": {
                          "type": "string",
                          "enum": [
                            "CHANGE",
                            "RESTORE"
                          ],
                          "description": "Явное предложенное нативное действие.",
                          "example": "CHANGE"
                        },
                        "state": {
                          "type": "string",
                          "enum": [
                            "PENDING",
                            "ACCEPTED",
                            "ACTIVATED",
                            "EXPIRED",
                            "SUPERSEDED"
                          ],
                          "description": "Текущее нативное состояние продолжения.",
                          "example": "PENDING"
                        },
                        "revision": {
                          "type": "integer",
                          "minimum": 1,
                          "description": "Текущая нативная ревизия предложения.",
                          "example": 1
                        },
                        "planHash": {
                          "type": "string",
                          "pattern": "^[0-9a-f]{64}$",
                          "description": "Digest точных замороженных слота и условий.",
                          "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
                        },
                        "expiresAt": {
                          "type": "string",
                          "format": "date-time",
                          "description": "Фиксированный срок активации.",
                          "example": "2026-12-31T18:00:00.000Z"
                        },
                        "scheduledAt": {
                          "type": "string",
                          "format": "date-time",
                          "description": "Точный предложенный запланированный момент.",
                          "example": "2026-01-15T12:00:00.000Z"
                        },
                        "endsAt": {
                          "type": "string",
                          "format": "date-time",
                          "description": "Точный предложенный момент окончания визита.",
                          "example": "2026-12-31T18:00:00.000Z"
                        },
                        "partySize": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 99,
                          "description": "Точное предложенное число гостей.",
                          "example": 1
                        },
                        "servicePeriodId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Предложенный нативный период обслуживания.",
                          "example": "4846c409-f4df-40f6-81cc-1d7157a5c646"
                        },
                        "offer": {
                          "type": "object",
                          "description": "Предложение гарантии, рассчитанное сервером, с условиями и их дайджестом. При NONE или числе гостей ниже настроенного порога гарантия не требуется.",
                          "additionalProperties": false,
                          "required": [
                            "required",
                            "terms",
                            "termsHash"
                          ],
                          "properties": {
                            "required": {
                              "type": "boolean",
                              "description": "Требуют ли точные слот и число гостей гарантию.",
                              "example": true
                            },
                            "terms": {
                              "type": "object",
                              "description": "Точные принятые условия либо null, если гарантия не применяется.",
                              "additionalProperties": false,
                              "required": [
                                "schema",
                                "version",
                                "venueId",
                                "publicChannelId",
                                "servicePeriodId",
                                "servicePeriodRevision",
                                "kind",
                                "amountBasis",
                                "unitAmount",
                                "totalAmount",
                                "currency",
                                "currencyMinorUnit",
                                "partySize",
                                "scheduledAt",
                                "dueAt",
                                "freeCancellationAt",
                                "noShowAfter",
                                "forfeitOnLateCancellation",
                                "forfeitOnNoShow",
                                "termsVersion",
                                "privacyVersion"
                              ],
                              "properties": {
                                "schema": {
                                  "type": "string",
                                  "enum": [
                                    "hallify.reservation-guarantee.terms"
                                  ],
                                  "description": "Каноническая схема нативных условий.",
                                  "example": "hallify.reservation-guarantee.terms"
                                },
                                "version": {
                                  "type": "integer",
                                  "enum": [
                                    1
                                  ],
                                  "description": "Каноническая версия нативных условий.",
                                  "example": 1
                                },
                                "venueId": {
                                  "type": "string",
                                  "format": "uuid",
                                  "description": "UUID нативного заведения.",
                                  "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
                                },
                                "publicChannelId": {
                                  "type": "string",
                                  "format": "uuid",
                                  "description": "UUID нативного канала бронирования.",
                                  "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
                                },
                                "servicePeriodId": {
                                  "type": "string",
                                  "format": "uuid",
                                  "description": "UUID выбранного нативного периода обслуживания.",
                                  "example": "4846c409-f4df-40f6-81cc-1d7157a5c646"
                                },
                                "servicePeriodRevision": {
                                  "type": "integer",
                                  "minimum": 1,
                                  "description": "Принятая нативная ревизия периода обслуживания.",
                                  "example": 1
                                },
                                "kind": {
                                  "type": "string",
                                  "enum": [
                                    "DEPOSIT",
                                    "CARD_HOLD",
                                    "PREPAID"
                                  ],
                                  "description": "Исходный принятый вид гарантии.",
                                  "example": "DEPOSIT"
                                },
                                "amountBasis": {
                                  "type": "string",
                                  "enum": [
                                    "FIXED",
                                    "PER_GUEST"
                                  ],
                                  "description": "Исходный способ расчёта суммы.",
                                  "example": "FIXED"
                                },
                                "unitAmount": {
                                  "type": "string",
                                  "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
                                  "description": "Точная сумма за бронь или гостя с двумя десятичными знаками.",
                                  "example": "1.00"
                                },
                                "totalAmount": {
                                  "type": "string",
                                  "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
                                  "description": "Точный принятый общий principal с двумя десятичными знаками без чаевых.",
                                  "example": "1.00"
                                },
                                "currency": {
                                  "type": "string",
                                  "pattern": "^[A-Z]{3}$",
                                  "description": "Исходная нативная валюта; конвертация не выполняется.",
                                  "example": "GEL"
                                },
                                "currencyMinorUnit": {
                                  "type": "integer",
                                  "enum": [
                                    2
                                  ],
                                  "description": "Нативная денежная точность.",
                                  "example": 2
                                },
                                "partySize": {
                                  "type": "integer",
                                  "minimum": 1,
                                  "maximum": 99,
                                  "description": "Точное принятое число гостей.",
                                  "example": 1
                                },
                                "scheduledAt": {
                                  "type": "string",
                                  "format": "date-time",
                                  "description": "Точный запланированный момент слота в UTC.",
                                  "example": "2026-01-15T12:00:00.000Z"
                                },
                                "dueAt": {
                                  "type": "string",
                                  "format": "date-time",
                                  "description": "Точный срок оплаты до конвертации и сбора средств.",
                                  "example": "2026-12-31T18:00:00.000Z"
                                },
                                "freeCancellationAt": {
                                  "type": "string",
                                  "format": "date-time",
                                  "description": "Точная граница бесплатной отмены.",
                                  "example": "2026-01-15T12:00:00.000Z"
                                },
                                "noShowAfter": {
                                  "type": "string",
                                  "format": "date-time",
                                  "description": "Самый ранний момент удержания за неявку по принятому льготному периоду.",
                                  "example": "2026-01-15T12:00:00.000Z"
                                },
                                "forfeitOnLateCancellation": {
                                  "type": "boolean",
                                  "description": "Принятое разрешение явного удержания сотрудником при поздней отмене.",
                                  "example": true
                                },
                                "forfeitOnNoShow": {
                                  "type": "boolean",
                                  "description": "Принятое разрешение явного удержания сотрудником при неявке; автоматического списания с карты нет.",
                                  "example": true
                                },
                                "termsVersion": {
                                  "type": "string",
                                  "description": "Принятая версия публичных условий.",
                                  "example": "example"
                                },
                                "privacyVersion": {
                                  "type": "string",
                                  "description": "Принятая версия уведомления о конфиденциальности.",
                                  "example": "example"
                                }
                              },
                              "nullable": true,
                              "example": {
                                "schema": "hallify.reservation-guarantee.terms",
                                "version": 1,
                                "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                                "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                                "servicePeriodId": "4846c409-f4df-40f6-81cc-1d7157a5c646",
                                "servicePeriodRevision": 1,
                                "kind": "DEPOSIT",
                                "amountBasis": "FIXED",
                                "unitAmount": "1.00",
                                "totalAmount": "1.00",
                                "currency": "GEL",
                                "currencyMinorUnit": 2,
                                "partySize": 1,
                                "scheduledAt": "2026-01-15T12:00:00.000Z",
                                "dueAt": "2026-12-31T18:00:00.000Z",
                                "freeCancellationAt": "2026-01-15T12:00:00.000Z",
                                "noShowAfter": "2026-01-15T12:00:00.000Z",
                                "forfeitOnLateCancellation": true,
                                "forfeitOnNoShow": true,
                                "termsVersion": "example",
                                "privacyVersion": "example"
                              }
                            },
                            "termsHash": {
                              "type": "string",
                              "pattern": "^[0-9a-f]{64}$",
                              "nullable": true,
                              "description": "Канонический digest принятых условий либо null, если гарантия не применяется.",
                              "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
                            }
                          },
                          "example": {
                            "required": true,
                            "terms": null,
                            "termsHash": null
                          }
                        },
                        "activatedAgreementVersion": {
                          "type": "integer",
                          "minimum": 1,
                          "nullable": true,
                          "description": "Фактически активированная версия соглашения либо null до активации.",
                          "example": 1
                        },
                        "activatedReservationRevision": {
                          "type": "integer",
                          "minimum": 1,
                          "nullable": true,
                          "description": "Фактическая нативная ревизия, записанная активацией, либо null.",
                          "example": 1
                        }
                      },
                      "nullable": true,
                      "example": {
                        "id": "5a694cf6-acf7-40fd-81e6-92ec0fa6c91f",
                        "action": "CHANGE",
                        "state": "PENDING",
                        "revision": 1,
                        "planHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
                        "expiresAt": "2026-12-31T18:00:00.000Z",
                        "scheduledAt": "2026-01-15T12:00:00.000Z",
                        "endsAt": "2026-12-31T18:00:00.000Z",
                        "partySize": 1,
                        "servicePeriodId": "4846c409-f4df-40f6-81cc-1d7157a5c646",
                        "offer": {
                          "required": true,
                          "terms": null,
                          "termsHash": null
                        },
                        "activatedAgreementVersion": null,
                        "activatedReservationRevision": null
                      }
                    },
                    "guarantee": {
                      "type": "object",
                      "nullable": true,
                      "description": "Фактическая нативная гарантия и её неизменяемые исходные принятые условия либо null при отсутствии обязательства.",
                      "required": [
                        "id",
                        "kind",
                        "status",
                        "amount",
                        "currency",
                        "dueAt",
                        "termsHash",
                        "terms",
                        "authorizationExpiresAt"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID фактической нативной гарантии.",
                          "example": "d8c59877-4141-422c-8bcd-eb23a54e43ad"
                        },
                        "kind": {
                          "type": "string",
                          "enum": [
                            "DEPOSIT",
                            "CARD_HOLD",
                            "PREPAID"
                          ],
                          "description": "Исходный вид гарантии.",
                          "example": "DEPOSIT"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "PENDING",
                            "SATISFIED",
                            "WAIVED",
                            "EXPIRED",
                            "REFUNDED",
                            "FORFEITED"
                          ],
                          "description": "Текущий нативный жизненный цикл гарантии.",
                          "example": "PENDING"
                        },
                        "amount": {
                          "type": "string",
                          "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
                          "description": "Исходный точный нативный principal гарантии.",
                          "example": "1.00"
                        },
                        "currency": {
                          "type": "string",
                          "pattern": "^[A-Z]{3}$",
                          "description": "Исходная нативная валюта.",
                          "example": "GEL"
                        },
                        "dueAt": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "Исходный срок оплаты либо null для legacy-свидетельства.",
                          "example": "2026-12-31T18:00:00.000Z"
                        },
                        "termsHash": {
                          "type": "string",
                          "pattern": "^[0-9a-f]{64}$",
                          "nullable": true,
                          "description": "Неизменяемый digest принятых условий либо null для legacy-свидетельства.",
                          "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
                        },
                        "terms": {
                          "type": "object",
                          "description": "Исходные принятые нативные условия гарантии либо null для legacy-свидетельства.",
                          "additionalProperties": false,
                          "required": [
                            "schema",
                            "version",
                            "venueId",
                            "publicChannelId",
                            "servicePeriodId",
                            "servicePeriodRevision",
                            "kind",
                            "amountBasis",
                            "unitAmount",
                            "totalAmount",
                            "currency",
                            "currencyMinorUnit",
                            "partySize",
                            "scheduledAt",
                            "dueAt",
                            "freeCancellationAt",
                            "noShowAfter",
                            "forfeitOnLateCancellation",
                            "forfeitOnNoShow",
                            "termsVersion",
                            "privacyVersion"
                          ],
                          "properties": {
                            "schema": {
                              "type": "string",
                              "enum": [
                                "hallify.reservation-guarantee.terms"
                              ],
                              "description": "Каноническая схема нативных условий.",
                              "example": "hallify.reservation-guarantee.terms"
                            },
                            "version": {
                              "type": "integer",
                              "enum": [
                                1
                              ],
                              "description": "Каноническая версия нативных условий.",
                              "example": 1
                            },
                            "venueId": {
                              "type": "string",
                              "format": "uuid",
                              "description": "UUID нативного заведения.",
                              "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
                            },
                            "publicChannelId": {
                              "type": "string",
                              "format": "uuid",
                              "description": "UUID нативного канала бронирования.",
                              "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
                            },
                            "servicePeriodId": {
                              "type": "string",
                              "format": "uuid",
                              "description": "UUID выбранного нативного периода обслуживания.",
                              "example": "4846c409-f4df-40f6-81cc-1d7157a5c646"
                            },
                            "servicePeriodRevision": {
                              "type": "integer",
                              "minimum": 1,
                              "description": "Принятая нативная ревизия периода обслуживания.",
                              "example": 1
                            },
                            "kind": {
                              "type": "string",
                              "enum": [
                                "DEPOSIT",
                                "CARD_HOLD",
                                "PREPAID"
                              ],
                              "description": "Исходный принятый вид гарантии.",
                              "example": "DEPOSIT"
                            },
                            "amountBasis": {
                              "type": "string",
                              "enum": [
                                "FIXED",
                                "PER_GUEST"
                              ],
                              "description": "Исходный способ расчёта суммы.",
                              "example": "FIXED"
                            },
                            "unitAmount": {
                              "type": "string",
                              "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
                              "description": "Точная сумма за бронь или гостя с двумя десятичными знаками.",
                              "example": "1.00"
                            },
                            "totalAmount": {
                              "type": "string",
                              "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
                              "description": "Точный принятый общий principal с двумя десятичными знаками без чаевых.",
                              "example": "1.00"
                            },
                            "currency": {
                              "type": "string",
                              "pattern": "^[A-Z]{3}$",
                              "description": "Исходная нативная валюта; конвертация не выполняется.",
                              "example": "GEL"
                            },
                            "currencyMinorUnit": {
                              "type": "integer",
                              "enum": [
                                2
                              ],
                              "description": "Нативная денежная точность.",
                              "example": 2
                            },
                            "partySize": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 99,
                              "description": "Точное принятое число гостей.",
                              "example": 1
                            },
                            "scheduledAt": {
                              "type": "string",
                              "format": "date-time",
                              "description": "Точный запланированный момент слота в UTC.",
                              "example": "2026-01-15T12:00:00.000Z"
                            },
                            "dueAt": {
                              "type": "string",
                              "format": "date-time",
                              "description": "Точный срок оплаты до конвертации и сбора средств.",
                              "example": "2026-12-31T18:00:00.000Z"
                            },
                            "freeCancellationAt": {
                              "type": "string",
                              "format": "date-time",
                              "description": "Точная граница бесплатной отмены.",
                              "example": "2026-01-15T12:00:00.000Z"
                            },
                            "noShowAfter": {
                              "type": "string",
                              "format": "date-time",
                              "description": "Самый ранний момент удержания за неявку по принятому льготному периоду.",
                              "example": "2026-01-15T12:00:00.000Z"
                            },
                            "forfeitOnLateCancellation": {
                              "type": "boolean",
                              "description": "Принятое разрешение явного удержания сотрудником при поздней отмене.",
                              "example": true
                            },
                            "forfeitOnNoShow": {
                              "type": "boolean",
                              "description": "Принятое разрешение явного удержания сотрудником при неявке; автоматического списания с карты нет.",
                              "example": true
                            },
                            "termsVersion": {
                              "type": "string",
                              "description": "Принятая версия публичных условий.",
                              "example": "example"
                            },
                            "privacyVersion": {
                              "type": "string",
                              "description": "Принятая версия уведомления о конфиденциальности.",
                              "example": "example"
                            }
                          },
                          "nullable": true,
                          "example": {
                            "schema": "hallify.reservation-guarantee.terms",
                            "version": 1,
                            "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                            "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                            "servicePeriodId": "4846c409-f4df-40f6-81cc-1d7157a5c646",
                            "servicePeriodRevision": 1,
                            "kind": "DEPOSIT",
                            "amountBasis": "FIXED",
                            "unitAmount": "1.00",
                            "totalAmount": "1.00",
                            "currency": "GEL",
                            "currencyMinorUnit": 2,
                            "partySize": 1,
                            "scheduledAt": "2026-01-15T12:00:00.000Z",
                            "dueAt": "2026-12-31T18:00:00.000Z",
                            "freeCancellationAt": "2026-01-15T12:00:00.000Z",
                            "noShowAfter": "2026-01-15T12:00:00.000Z",
                            "forfeitOnLateCancellation": true,
                            "forfeitOnNoShow": true,
                            "termsVersion": "example",
                            "privacyVersion": "example"
                          }
                        },
                        "authorizationExpiresAt": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "Доказанный срок авторизации PSP либо null без аутентифицированных данных.",
                          "example": "2026-12-31T18:00:00.000Z"
                        }
                      },
                      "example": {
                        "id": "d8c59877-4141-422c-8bcd-eb23a54e43ad",
                        "kind": "DEPOSIT",
                        "status": "PENDING",
                        "amount": "1.00",
                        "currency": "GEL",
                        "dueAt": null,
                        "termsHash": null,
                        "terms": null,
                        "authorizationExpiresAt": null
                      }
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "RESERVATION"
                      ],
                      "description": "Вид нативного владельца.",
                      "example": "RESERVATION"
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "UUID брони, которой владеет capability.",
                      "example": "a42073ae-5313-4ace-86d8-86fb33fde1a9"
                    },
                    "referenceCode": {
                      "type": "string",
                      "description": "Ссылочный код для гостя.",
                      "example": "EXAMPLE"
                    },
                    "revision": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "Текущая нативная ревизия брони.",
                      "example": 1
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "REQUESTED",
                        "BOOKED",
                        "CONFIRMED",
                        "ARRIVED",
                        "SEATED",
                        "CANCELED",
                        "NO_SHOW",
                        "DECLINED",
                        "EXPIRED"
                      ],
                      "description": "Текущий нативный жизненный цикл брони.",
                      "example": "REQUESTED"
                    },
                    "partySize": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 99,
                      "description": "Текущее число гостей.",
                      "example": 1
                    },
                    "scheduledAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Текущий запланированный момент прибытия.",
                      "example": "2026-01-15T12:00:00.000Z"
                    },
                    "endsAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Текущее запланированное окончание брони.",
                      "example": "2026-12-31T18:00:00.000Z"
                    },
                    "allowedActions": {
                      "type": "array",
                      "description": "Действия, разрешённые текущим жизненным циклом и scope доступа. Выполнение перепроверяет ревизию, представление, коммерческий допуск, правила и вместимость.",
                      "uniqueItems": true,
                      "maxItems": 3,
                      "items": {
                        "type": "string",
                        "enum": [
                          "CONFIRM",
                          "CHANGE",
                          "CANCEL"
                        ],
                        "description": "Доступная нативная гостевая команда.",
                        "example": "CONFIRM"
                      },
                      "example": [
                        "CONFIRM"
                      ]
                    }
                  },
                  "example": {
                    "venue": {
                      "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
                      "name": "Example name",
                      "timeZone": "Asia/Tbilisi"
                    },
                    "publicChannel": {
                      "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
                      "publicHandle": "example",
                      "status": "DRAFT"
                    },
                    "servicePeriod": {
                      "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
                      "name": "Example name",
                      "bookingMode": "INSTANT"
                    },
                    "source": {
                      "kind": "RESERVATION",
                      "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
                      "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                      "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                      "presentation": {
                        "kind": "CANONICAL",
                        "connectionId": null,
                        "resourceId": null,
                        "origin": null
                      }
                    },
                    "grantExpiresAt": "2026-12-31T18:00:00.000Z",
                    "serverTime": "2026-01-15T12:00:00.000Z",
                    "pendingAgreement": null,
                    "guarantee": null,
                    "kind": "RESERVATION",
                    "id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
                    "referenceCode": "EXAMPLE",
                    "revision": 1,
                    "status": "REQUESTED",
                    "partySize": 1,
                    "scheduledAt": "2026-01-15T12:00:00.000Z",
                    "endsAt": "2026-12-31T18:00:00.000Z",
                    "allowedActions": [
                      "CONFIRM"
                    ]
                  }
                },
                {
                  "type": "object",
                  "description": "Текущий контекст ожидания, безопасная оценка времени и нативные действия в пределах capability.",
                  "additionalProperties": false,
                  "required": [
                    "kind",
                    "id",
                    "referenceCode",
                    "revision",
                    "status",
                    "partySize",
                    "claimExpiresAt",
                    "quotedWaitMinMinutes",
                    "quotedWaitMaxMinutes",
                    "estimatedSeatAt",
                    "venue",
                    "publicChannel",
                    "servicePeriod",
                    "source",
                    "grantExpiresAt",
                    "serverTime",
                    "allowedActions"
                  ],
                  "properties": {
                    "venue": {
                      "type": "object",
                      "description": "Текущий нативный контекст отображения заведения и расписания.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "name",
                        "timeZone"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID заведения-владельца.",
                          "example": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0"
                        },
                        "name": {
                          "type": "string",
                          "description": "Текущее публичное название заведения.",
                          "example": "Example name"
                        },
                        "timeZone": {
                          "type": "string",
                          "description": "Нативный часовой пояс заведения в формате IANA.",
                          "example": "Asia/Tbilisi"
                        }
                      },
                      "example": {
                        "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
                        "name": "Example name",
                        "timeZone": "Asia/Tbilisi"
                      }
                    },
                    "publicChannel": {
                      "type": "object",
                      "description": "Нативный публичный канал записи-владельца, независимый от handle представления Storefront. Его текущий статус не заменяет разрешение продолжения.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "publicHandle",
                        "status"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного канала.",
                          "example": "3db2ed63-9466-4829-81aa-e4959a2279b0"
                        },
                        "publicHandle": {
                          "type": "string",
                          "description": "Handle нативного канала бронирования.",
                          "example": "example"
                        },
                        "status": {
                          "type": "string",
                          "description": "Текущий жизненный цикл нативного публичного канала.",
                          "enum": [
                            "DRAFT",
                            "ACTIVE",
                            "PAUSED"
                          ],
                          "example": "DRAFT"
                        }
                      },
                      "example": {
                        "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
                        "publicHandle": "example",
                        "status": "DRAFT"
                      }
                    },
                    "servicePeriod": {
                      "type": "object",
                      "description": "Текущие нативные ID периода обслуживания и режим бронирования.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "name",
                        "bookingMode"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного периода обслуживания.",
                          "example": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8"
                        },
                        "name": {
                          "type": "string",
                          "description": "Текущее название периода обслуживания.",
                          "example": "Example name"
                        },
                        "bookingMode": {
                          "type": "string",
                          "description": "Текущий режим периода обслуживания; не переписывает исходную квитанцию бронирования.",
                          "enum": [
                            "INSTANT",
                            "REQUEST"
                          ],
                          "example": "INSTANT"
                        }
                      },
                      "example": {
                        "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
                        "name": "Example name",
                        "bookingMode": "INSTANT"
                      }
                    },
                    "source": {
                      "type": "object",
                      "description": "Несекретный точный набор нативного владельца и исходное представление доступа. Эти ID не дают прав и не разрешают менять origin, подключения или capability.",
                      "additionalProperties": false,
                      "required": [
                        "kind",
                        "entityId",
                        "venueId",
                        "publicChannelId",
                        "presentation"
                      ],
                      "properties": {
                        "kind": {
                          "type": "string",
                          "enum": [
                            "RESERVATION",
                            "WAITLIST"
                          ],
                          "description": "Вид нативного владельца.",
                          "example": "RESERVATION"
                        },
                        "entityId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Точный UUID брони или записи ожидания владельца.",
                          "example": "6b288694-8b6d-49cd-8007-264ca7224921"
                        },
                        "venueId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного заведения владельца.",
                          "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
                        },
                        "publicChannelId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного канала владельца.",
                          "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
                        },
                        "presentation": {
                          "type": "object",
                          "description": "Неизменяемая классификация выдачи. CANONICAL содержит null в полях Storefront; STOREFRONT сохраняет точные исходные подключение, прикреплённый ресурс и Origin запроса.",
                          "additionalProperties": false,
                          "required": [
                            "kind",
                            "connectionId",
                            "resourceId",
                            "origin"
                          ],
                          "properties": {
                            "kind": {
                              "type": "string",
                              "enum": [
                                "CANONICAL",
                                "STOREFRONT"
                              ],
                              "description": "Исходный контекст выдачи доступа.",
                              "example": "CANONICAL"
                            },
                            "connectionId": {
                              "type": "string",
                              "format": "uuid",
                              "nullable": true,
                              "description": "UUID исходного подключения Storefront либо null для канонической выдачи.",
                              "example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
                            },
                            "resourceId": {
                              "type": "string",
                              "format": "uuid",
                              "nullable": true,
                              "description": "UUID исходного прикреплённого ресурса Storefront либо null для канонической выдачи.",
                              "example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568"
                            },
                            "origin": {
                              "type": "string",
                              "format": "uri",
                              "nullable": true,
                              "description": "Точный исходный Origin браузера Storefront либо null для канонической выдачи.",
                              "example": "https://example.test/resource"
                            }
                          },
                          "example": {
                            "kind": "CANONICAL",
                            "connectionId": null,
                            "resourceId": null,
                            "origin": null
                          }
                        }
                      },
                      "example": {
                        "kind": "RESERVATION",
                        "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
                        "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                        "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                        "presentation": {
                          "kind": "CANONICAL",
                          "connectionId": null,
                          "resourceId": null,
                          "origin": null
                        }
                      }
                    },
                    "grantExpiresAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Исходный срок нативной manage-capability; чтение не продлевает его.",
                      "example": "2026-12-31T18:00:00.000Z"
                    },
                    "serverTime": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Серверный момент для допустимости текущего действия и срока принятия приглашения.",
                      "example": "2026-01-15T12:00:00.000Z"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "WAITLIST"
                      ],
                      "description": "Вид нативного владельца.",
                      "example": "WAITLIST"
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "UUID записи ожидания, которой владеет capability.",
                      "example": "a7476fce-e842-42a4-896a-c23b0e88b420"
                    },
                    "referenceCode": {
                      "type": "string",
                      "description": "Ссылочный код для гостя.",
                      "example": "EXAMPLE"
                    },
                    "revision": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "Текущая нативная ревизия записи ожидания.",
                      "example": 1
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "WAITING",
                        "NOTIFIED",
                        "CLAIMED",
                        "SKIPPED",
                        "SEATED",
                        "CANCELED",
                        "NO_SHOW"
                      ],
                      "description": "Текущий нативный жизненный цикл листа ожидания.",
                      "example": "WAITING"
                    },
                    "partySize": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 99,
                      "description": "Текущее число гостей.",
                      "example": 1
                    },
                    "claimExpiresAt": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "Нативный срок принятия приглашения либо null без текущего окна.",
                      "example": "2026-12-31T18:00:00.000Z"
                    },
                    "quotedWaitMinMinutes": {
                      "type": "integer",
                      "nullable": true,
                      "description": "Текущая нативная минимальная оценка ожидания в минутах либо null, если неизвестна.",
                      "example": 0
                    },
                    "quotedWaitMaxMinutes": {
                      "type": "integer",
                      "nullable": true,
                      "description": "Текущая нативная максимальная оценка ожидания в минутах либо null, если неизвестна.",
                      "example": 0
                    },
                    "estimatedSeatAt": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "Текущий нативный предполагаемый момент рассадки либо null, если неизвестен.",
                      "example": "2026-01-15T12:00:00.000Z"
                    },
                    "allowedActions": {
                      "type": "array",
                      "description": "Действия, разрешённые текущим жизненным циклом, scope доступа и нативным сроком принятия. CLAIM переводит запись в CLAIMED и не создаёт бронь.",
                      "uniqueItems": true,
                      "maxItems": 2,
                      "items": {
                        "type": "string",
                        "enum": [
                          "CLAIM",
                          "CANCEL"
                        ],
                        "description": "Доступная нативная гостевая команда листа ожидания.",
                        "example": "CLAIM"
                      },
                      "example": [
                        "CLAIM"
                      ]
                    }
                  },
                  "example": {
                    "venue": {
                      "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
                      "name": "Example name",
                      "timeZone": "Asia/Tbilisi"
                    },
                    "publicChannel": {
                      "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
                      "publicHandle": "example",
                      "status": "DRAFT"
                    },
                    "servicePeriod": {
                      "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
                      "name": "Example name",
                      "bookingMode": "INSTANT"
                    },
                    "source": {
                      "kind": "RESERVATION",
                      "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
                      "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                      "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                      "presentation": {
                        "kind": "CANONICAL",
                        "connectionId": null,
                        "resourceId": null,
                        "origin": null
                      }
                    },
                    "grantExpiresAt": "2026-12-31T18:00:00.000Z",
                    "serverTime": "2026-01-15T12:00:00.000Z",
                    "kind": "WAITLIST",
                    "id": "a7476fce-e842-42a4-896a-c23b0e88b420",
                    "referenceCode": "EXAMPLE",
                    "revision": 1,
                    "status": "WAITING",
                    "partySize": 1,
                    "claimExpiresAt": null,
                    "quotedWaitMinMinutes": null,
                    "quotedWaitMaxMinutes": null,
                    "estimatedSeatAt": null,
                    "allowedActions": [
                      "CLAIM"
                    ]
                  }
                }
              ],
              "example": {
                "venue": {
                  "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
                  "name": "Example name",
                  "timeZone": "Asia/Tbilisi"
                },
                "publicChannel": {
                  "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
                  "publicHandle": "example",
                  "status": "DRAFT"
                },
                "servicePeriod": {
                  "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
                  "name": "Example name",
                  "bookingMode": "INSTANT"
                },
                "source": {
                  "kind": "RESERVATION",
                  "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
                  "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                  "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                  "presentation": {
                    "kind": "CANONICAL",
                    "connectionId": null,
                    "resourceId": null,
                    "origin": null
                  }
                },
                "grantExpiresAt": "2026-12-31T18:00:00.000Z",
                "serverTime": "2026-01-15T12:00:00.000Z",
                "pendingAgreement": null,
                "guarantee": null,
                "kind": "RESERVATION",
                "id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
                "referenceCode": "EXAMPLE",
                "revision": 1,
                "status": "REQUESTED",
                "partySize": 1,
                "scheduledAt": "2026-01-15T12:00:00.000Z",
                "endsAt": "2026-12-31T18:00:00.000Z",
                "allowedActions": [
                  "CONFIRM"
                ]
              }
            },
            {
              "type": "object",
              "additionalProperties": false,
              "nullable": true,
              "enum": [
                null
              ],
              "description": "Текущее разрешённое представление управления недоступно.",
              "example": null
            }
          ],
          "example": {
            "venue": {
              "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
              "name": "Example name",
              "timeZone": "Asia/Tbilisi"
            },
            "publicChannel": {
              "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
              "publicHandle": "example",
              "status": "DRAFT"
            },
            "servicePeriod": {
              "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
              "name": "Example name",
              "bookingMode": "INSTANT"
            },
            "source": {
              "kind": "RESERVATION",
              "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
              "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
              "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
              "presentation": {
                "kind": "CANONICAL",
                "connectionId": null,
                "resourceId": null,
                "origin": null
              }
            },
            "grantExpiresAt": "2026-12-31T18:00:00.000Z",
            "serverTime": "2026-01-15T12:00:00.000Z",
            "pendingAgreement": null,
            "guarantee": null,
            "kind": "RESERVATION",
            "id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
            "referenceCode": "EXAMPLE",
            "revision": 1,
            "status": "REQUESTED",
            "partySize": 1,
            "scheduledAt": "2026-01-15T12:00:00.000Z",
            "endsAt": "2026-12-31T18:00:00.000Z",
            "allowedActions": [
              "CONFIRM"
            ]
          }
        }
      },
      "example": {
        "kind": "RESERVATION",
        "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
        "referenceCode": "EXAMPLE",
        "revision": 1,
        "status": "REQUESTED",
        "eventIds": [
          "6825b43e-93d6-4f3b-8171-c1661099fae8"
        ],
        "manageToken": "synthetic-example-credential",
        "manageTokenExpiresAt": "2026-12-31T18:00:00.000Z",
        "currentState": "AVAILABLE",
        "current": {
          "venue": {
            "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
            "name": "Example name",
            "timeZone": "Asia/Tbilisi"
          },
          "publicChannel": {
            "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
            "publicHandle": "example",
            "status": "DRAFT"
          },
          "servicePeriod": {
            "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
            "name": "Example name",
            "bookingMode": "INSTANT"
          },
          "source": {
            "kind": "RESERVATION",
            "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
            "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
            "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
            "presentation": {
              "kind": "CANONICAL",
              "connectionId": null,
              "resourceId": null,
              "origin": null
            }
          },
          "grantExpiresAt": "2026-12-31T18:00:00.000Z",
          "serverTime": "2026-01-15T12:00:00.000Z",
          "pendingAgreement": null,
          "guarantee": null,
          "kind": "RESERVATION",
          "id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
          "referenceCode": "EXAMPLE",
          "revision": 1,
          "status": "REQUESTED",
          "partySize": 1,
          "scheduledAt": "2026-01-15T12:00:00.000Z",
          "endsAt": "2026-12-31T18:00:00.000Z",
          "allowedActions": [
            "CONFIRM"
          ]
        }
      }
    },
    {
      "type": "object",
      "description": "Результат подтверждённого намерения листа ожидания.",
      "required": [
        "kind",
        "entityId",
        "referenceCode",
        "revision",
        "status",
        "eventIds",
        "manageToken",
        "manageTokenExpiresAt",
        "currentState",
        "current"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "description": "Тип созданной сущности, управляемой гостем.",
          "enum": [
            "WAITLIST"
          ],
          "example": "WAITLIST"
        },
        "entityId": {
          "type": "string",
          "description": "Идентификатор созданного бронирования или записи листа ожидания.",
          "format": "uuid",
          "example": "6b288694-8b6d-49cd-8007-264ca7224921"
        },
        "referenceCode": {
          "type": "string",
          "description": "Ссылочный код для гостя.",
          "example": "EXAMPLE"
        },
        "revision": {
          "type": "integer",
          "description": "Текущая ревизия сущности.",
          "example": 1
        },
        "status": {
          "type": "string",
          "description": "Итоговый статус бронирования или листа ожидания.",
          "enum": [
            "WAITING",
            "NOTIFIED",
            "CLAIMED",
            "SKIPPED",
            "SEATED",
            "CANCELED",
            "NO_SHOW"
          ],
          "example": "WAITING"
        },
        "eventIds": {
          "type": "array",
          "description": "События, созданные этой командой.",
          "items": {
            "type": "string",
            "description": "Идентификатор события активности бронирования.",
            "format": "uuid",
            "example": "6825b43e-93d6-4f3b-8171-c1661099fae8"
          },
          "example": [
            "6825b43e-93d6-4f3b-8171-c1661099fae8"
          ]
        },
        "manageToken": {
          "type": "string",
          "description": "Секретный гостевой токен для последующих запросов управления. Используйте указанный в документации заголовок гостевой авторизации; никогда не записывайте токен в журналы.",
          "example": "synthetic-example-credential"
        },
        "manageTokenExpiresAt": {
          "type": "string",
          "description": "Срок действия гостевого токена управления.",
          "format": "date-time",
          "example": "2026-12-31T18:00:00.000Z"
        },
        "currentState": {
          "type": "string",
          "enum": [
            "AVAILABLE",
            "UNAVAILABLE"
          ],
          "description": "Доступно ли отдельное обогащение текущим управлением. Это не меняет исходную сохранённую квитанцию и не выдаёт новый доступ.",
          "example": "AVAILABLE"
        },
        "current": {
          "description": "Отдельное текущее разрешённое управление либо null, если исходный доступ уже непригоден или текущее обогащение недоступно. Исторические поля квитанции и исходный токен сохраняются.",
          "oneOf": [
            {
              "description": "Текущее безопасное гостевое управление при точном нативном READ-доступе и текущих правах presentation. Отделено от неизменяемой исходной квитанции команды.",
              "oneOf": [
                {
                  "type": "object",
                  "description": "Текущий контекст брони и нативные действия в пределах capability.",
                  "additionalProperties": false,
                  "required": [
                    "kind",
                    "id",
                    "referenceCode",
                    "revision",
                    "status",
                    "partySize",
                    "scheduledAt",
                    "endsAt",
                    "venue",
                    "publicChannel",
                    "servicePeriod",
                    "source",
                    "grantExpiresAt",
                    "serverTime",
                    "allowedActions",
                    "guarantee",
                    "pendingAgreement"
                  ],
                  "properties": {
                    "venue": {
                      "type": "object",
                      "description": "Текущий нативный контекст отображения заведения и расписания.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "name",
                        "timeZone"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID заведения-владельца.",
                          "example": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0"
                        },
                        "name": {
                          "type": "string",
                          "description": "Текущее публичное название заведения.",
                          "example": "Example name"
                        },
                        "timeZone": {
                          "type": "string",
                          "description": "Нативный часовой пояс заведения в формате IANA.",
                          "example": "Asia/Tbilisi"
                        }
                      },
                      "example": {
                        "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
                        "name": "Example name",
                        "timeZone": "Asia/Tbilisi"
                      }
                    },
                    "publicChannel": {
                      "type": "object",
                      "description": "Нативный публичный канал записи-владельца, независимый от handle представления Storefront. Его текущий статус не заменяет разрешение продолжения.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "publicHandle",
                        "status"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного канала.",
                          "example": "3db2ed63-9466-4829-81aa-e4959a2279b0"
                        },
                        "publicHandle": {
                          "type": "string",
                          "description": "Handle нативного канала бронирования.",
                          "example": "example"
                        },
                        "status": {
                          "type": "string",
                          "description": "Текущий жизненный цикл нативного публичного канала.",
                          "enum": [
                            "DRAFT",
                            "ACTIVE",
                            "PAUSED"
                          ],
                          "example": "DRAFT"
                        }
                      },
                      "example": {
                        "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
                        "publicHandle": "example",
                        "status": "DRAFT"
                      }
                    },
                    "servicePeriod": {
                      "type": "object",
                      "description": "Текущие нативные ID периода обслуживания и режим бронирования.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "name",
                        "bookingMode"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного периода обслуживания.",
                          "example": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8"
                        },
                        "name": {
                          "type": "string",
                          "description": "Текущее название периода обслуживания.",
                          "example": "Example name"
                        },
                        "bookingMode": {
                          "type": "string",
                          "description": "Текущий режим периода обслуживания; не переписывает исходную квитанцию бронирования.",
                          "enum": [
                            "INSTANT",
                            "REQUEST"
                          ],
                          "example": "INSTANT"
                        }
                      },
                      "example": {
                        "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
                        "name": "Example name",
                        "bookingMode": "INSTANT"
                      }
                    },
                    "source": {
                      "type": "object",
                      "description": "Несекретный точный набор нативного владельца и исходное представление доступа. Эти ID не дают прав и не разрешают менять origin, подключения или capability.",
                      "additionalProperties": false,
                      "required": [
                        "kind",
                        "entityId",
                        "venueId",
                        "publicChannelId",
                        "presentation"
                      ],
                      "properties": {
                        "kind": {
                          "type": "string",
                          "enum": [
                            "RESERVATION",
                            "WAITLIST"
                          ],
                          "description": "Вид нативного владельца.",
                          "example": "RESERVATION"
                        },
                        "entityId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Точный UUID брони или записи ожидания владельца.",
                          "example": "6b288694-8b6d-49cd-8007-264ca7224921"
                        },
                        "venueId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного заведения владельца.",
                          "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
                        },
                        "publicChannelId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного канала владельца.",
                          "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
                        },
                        "presentation": {
                          "type": "object",
                          "description": "Неизменяемая классификация выдачи. CANONICAL содержит null в полях Storefront; STOREFRONT сохраняет точные исходные подключение, прикреплённый ресурс и Origin запроса.",
                          "additionalProperties": false,
                          "required": [
                            "kind",
                            "connectionId",
                            "resourceId",
                            "origin"
                          ],
                          "properties": {
                            "kind": {
                              "type": "string",
                              "enum": [
                                "CANONICAL",
                                "STOREFRONT"
                              ],
                              "description": "Исходный контекст выдачи доступа.",
                              "example": "CANONICAL"
                            },
                            "connectionId": {
                              "type": "string",
                              "format": "uuid",
                              "nullable": true,
                              "description": "UUID исходного подключения Storefront либо null для канонической выдачи.",
                              "example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
                            },
                            "resourceId": {
                              "type": "string",
                              "format": "uuid",
                              "nullable": true,
                              "description": "UUID исходного прикреплённого ресурса Storefront либо null для канонической выдачи.",
                              "example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568"
                            },
                            "origin": {
                              "type": "string",
                              "format": "uri",
                              "nullable": true,
                              "description": "Точный исходный Origin браузера Storefront либо null для канонической выдачи.",
                              "example": "https://example.test/resource"
                            }
                          },
                          "example": {
                            "kind": "CANONICAL",
                            "connectionId": null,
                            "resourceId": null,
                            "origin": null
                          }
                        }
                      },
                      "example": {
                        "kind": "RESERVATION",
                        "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
                        "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                        "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                        "presentation": {
                          "kind": "CANONICAL",
                          "connectionId": null,
                          "resourceId": null,
                          "origin": null
                        }
                      }
                    },
                    "grantExpiresAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Исходный срок нативной manage-capability; чтение не продлевает его.",
                      "example": "2026-12-31T18:00:00.000Z"
                    },
                    "serverTime": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Серверный момент для допустимости текущего действия и срока принятия приглашения.",
                      "example": "2026-01-15T12:00:00.000Z"
                    },
                    "pendingAgreement": {
                      "type": "object",
                      "description": "Текущее ожидающее предложение или принятое продолжение либо null; до активации оно не меняет фактический нативный слот.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "action",
                        "state",
                        "revision",
                        "planHash",
                        "expiresAt",
                        "scheduledAt",
                        "endsAt",
                        "partySize",
                        "servicePeriodId",
                        "offer",
                        "activatedAgreementVersion",
                        "activatedReservationRevision"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного изменения соглашения.",
                          "example": "5a694cf6-acf7-40fd-81e6-92ec0fa6c91f"
                        },
                        "action": {
                          "type": "string",
                          "enum": [
                            "CHANGE",
                            "RESTORE"
                          ],
                          "description": "Явное предложенное нативное действие.",
                          "example": "CHANGE"
                        },
                        "state": {
                          "type": "string",
                          "enum": [
                            "PENDING",
                            "ACCEPTED",
                            "ACTIVATED",
                            "EXPIRED",
                            "SUPERSEDED"
                          ],
                          "description": "Текущее нативное состояние продолжения.",
                          "example": "PENDING"
                        },
                        "revision": {
                          "type": "integer",
                          "minimum": 1,
                          "description": "Текущая нативная ревизия предложения.",
                          "example": 1
                        },
                        "planHash": {
                          "type": "string",
                          "pattern": "^[0-9a-f]{64}$",
                          "description": "Digest точных замороженных слота и условий.",
                          "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
                        },
                        "expiresAt": {
                          "type": "string",
                          "format": "date-time",
                          "description": "Фиксированный срок активации.",
                          "example": "2026-12-31T18:00:00.000Z"
                        },
                        "scheduledAt": {
                          "type": "string",
                          "format": "date-time",
                          "description": "Точный предложенный запланированный момент.",
                          "example": "2026-01-15T12:00:00.000Z"
                        },
                        "endsAt": {
                          "type": "string",
                          "format": "date-time",
                          "description": "Точный предложенный момент окончания визита.",
                          "example": "2026-12-31T18:00:00.000Z"
                        },
                        "partySize": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 99,
                          "description": "Точное предложенное число гостей.",
                          "example": 1
                        },
                        "servicePeriodId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Предложенный нативный период обслуживания.",
                          "example": "4846c409-f4df-40f6-81cc-1d7157a5c646"
                        },
                        "offer": {
                          "type": "object",
                          "description": "Предложение гарантии, рассчитанное сервером, с условиями и их дайджестом. При NONE или числе гостей ниже настроенного порога гарантия не требуется.",
                          "additionalProperties": false,
                          "required": [
                            "required",
                            "terms",
                            "termsHash"
                          ],
                          "properties": {
                            "required": {
                              "type": "boolean",
                              "description": "Требуют ли точные слот и число гостей гарантию.",
                              "example": true
                            },
                            "terms": {
                              "type": "object",
                              "description": "Точные принятые условия либо null, если гарантия не применяется.",
                              "additionalProperties": false,
                              "required": [
                                "schema",
                                "version",
                                "venueId",
                                "publicChannelId",
                                "servicePeriodId",
                                "servicePeriodRevision",
                                "kind",
                                "amountBasis",
                                "unitAmount",
                                "totalAmount",
                                "currency",
                                "currencyMinorUnit",
                                "partySize",
                                "scheduledAt",
                                "dueAt",
                                "freeCancellationAt",
                                "noShowAfter",
                                "forfeitOnLateCancellation",
                                "forfeitOnNoShow",
                                "termsVersion",
                                "privacyVersion"
                              ],
                              "properties": {
                                "schema": {
                                  "type": "string",
                                  "enum": [
                                    "hallify.reservation-guarantee.terms"
                                  ],
                                  "description": "Каноническая схема нативных условий.",
                                  "example": "hallify.reservation-guarantee.terms"
                                },
                                "version": {
                                  "type": "integer",
                                  "enum": [
                                    1
                                  ],
                                  "description": "Каноническая версия нативных условий.",
                                  "example": 1
                                },
                                "venueId": {
                                  "type": "string",
                                  "format": "uuid",
                                  "description": "UUID нативного заведения.",
                                  "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
                                },
                                "publicChannelId": {
                                  "type": "string",
                                  "format": "uuid",
                                  "description": "UUID нативного канала бронирования.",
                                  "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
                                },
                                "servicePeriodId": {
                                  "type": "string",
                                  "format": "uuid",
                                  "description": "UUID выбранного нативного периода обслуживания.",
                                  "example": "4846c409-f4df-40f6-81cc-1d7157a5c646"
                                },
                                "servicePeriodRevision": {
                                  "type": "integer",
                                  "minimum": 1,
                                  "description": "Принятая нативная ревизия периода обслуживания.",
                                  "example": 1
                                },
                                "kind": {
                                  "type": "string",
                                  "enum": [
                                    "DEPOSIT",
                                    "CARD_HOLD",
                                    "PREPAID"
                                  ],
                                  "description": "Исходный принятый вид гарантии.",
                                  "example": "DEPOSIT"
                                },
                                "amountBasis": {
                                  "type": "string",
                                  "enum": [
                                    "FIXED",
                                    "PER_GUEST"
                                  ],
                                  "description": "Исходный способ расчёта суммы.",
                                  "example": "FIXED"
                                },
                                "unitAmount": {
                                  "type": "string",
                                  "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
                                  "description": "Точная сумма за бронь или гостя с двумя десятичными знаками.",
                                  "example": "1.00"
                                },
                                "totalAmount": {
                                  "type": "string",
                                  "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
                                  "description": "Точный принятый общий principal с двумя десятичными знаками без чаевых.",
                                  "example": "1.00"
                                },
                                "currency": {
                                  "type": "string",
                                  "pattern": "^[A-Z]{3}$",
                                  "description": "Исходная нативная валюта; конвертация не выполняется.",
                                  "example": "GEL"
                                },
                                "currencyMinorUnit": {
                                  "type": "integer",
                                  "enum": [
                                    2
                                  ],
                                  "description": "Нативная денежная точность.",
                                  "example": 2
                                },
                                "partySize": {
                                  "type": "integer",
                                  "minimum": 1,
                                  "maximum": 99,
                                  "description": "Точное принятое число гостей.",
                                  "example": 1
                                },
                                "scheduledAt": {
                                  "type": "string",
                                  "format": "date-time",
                                  "description": "Точный запланированный момент слота в UTC.",
                                  "example": "2026-01-15T12:00:00.000Z"
                                },
                                "dueAt": {
                                  "type": "string",
                                  "format": "date-time",
                                  "description": "Точный срок оплаты до конвертации и сбора средств.",
                                  "example": "2026-12-31T18:00:00.000Z"
                                },
                                "freeCancellationAt": {
                                  "type": "string",
                                  "format": "date-time",
                                  "description": "Точная граница бесплатной отмены.",
                                  "example": "2026-01-15T12:00:00.000Z"
                                },
                                "noShowAfter": {
                                  "type": "string",
                                  "format": "date-time",
                                  "description": "Самый ранний момент удержания за неявку по принятому льготному периоду.",
                                  "example": "2026-01-15T12:00:00.000Z"
                                },
                                "forfeitOnLateCancellation": {
                                  "type": "boolean",
                                  "description": "Принятое разрешение явного удержания сотрудником при поздней отмене.",
                                  "example": true
                                },
                                "forfeitOnNoShow": {
                                  "type": "boolean",
                                  "description": "Принятое разрешение явного удержания сотрудником при неявке; автоматического списания с карты нет.",
                                  "example": true
                                },
                                "termsVersion": {
                                  "type": "string",
                                  "description": "Принятая версия публичных условий.",
                                  "example": "example"
                                },
                                "privacyVersion": {
                                  "type": "string",
                                  "description": "Принятая версия уведомления о конфиденциальности.",
                                  "example": "example"
                                }
                              },
                              "nullable": true,
                              "example": {
                                "schema": "hallify.reservation-guarantee.terms",
                                "version": 1,
                                "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                                "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                                "servicePeriodId": "4846c409-f4df-40f6-81cc-1d7157a5c646",
                                "servicePeriodRevision": 1,
                                "kind": "DEPOSIT",
                                "amountBasis": "FIXED",
                                "unitAmount": "1.00",
                                "totalAmount": "1.00",
                                "currency": "GEL",
                                "currencyMinorUnit": 2,
                                "partySize": 1,
                                "scheduledAt": "2026-01-15T12:00:00.000Z",
                                "dueAt": "2026-12-31T18:00:00.000Z",
                                "freeCancellationAt": "2026-01-15T12:00:00.000Z",
                                "noShowAfter": "2026-01-15T12:00:00.000Z",
                                "forfeitOnLateCancellation": true,
                                "forfeitOnNoShow": true,
                                "termsVersion": "example",
                                "privacyVersion": "example"
                              }
                            },
                            "termsHash": {
                              "type": "string",
                              "pattern": "^[0-9a-f]{64}$",
                              "nullable": true,
                              "description": "Канонический digest принятых условий либо null, если гарантия не применяется.",
                              "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
                            }
                          },
                          "example": {
                            "required": true,
                            "terms": null,
                            "termsHash": null
                          }
                        },
                        "activatedAgreementVersion": {
                          "type": "integer",
                          "minimum": 1,
                          "nullable": true,
                          "description": "Фактически активированная версия соглашения либо null до активации.",
                          "example": 1
                        },
                        "activatedReservationRevision": {
                          "type": "integer",
                          "minimum": 1,
                          "nullable": true,
                          "description": "Фактическая нативная ревизия, записанная активацией, либо null.",
                          "example": 1
                        }
                      },
                      "nullable": true,
                      "example": {
                        "id": "5a694cf6-acf7-40fd-81e6-92ec0fa6c91f",
                        "action": "CHANGE",
                        "state": "PENDING",
                        "revision": 1,
                        "planHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
                        "expiresAt": "2026-12-31T18:00:00.000Z",
                        "scheduledAt": "2026-01-15T12:00:00.000Z",
                        "endsAt": "2026-12-31T18:00:00.000Z",
                        "partySize": 1,
                        "servicePeriodId": "4846c409-f4df-40f6-81cc-1d7157a5c646",
                        "offer": {
                          "required": true,
                          "terms": null,
                          "termsHash": null
                        },
                        "activatedAgreementVersion": null,
                        "activatedReservationRevision": null
                      }
                    },
                    "guarantee": {
                      "type": "object",
                      "nullable": true,
                      "description": "Фактическая нативная гарантия и её неизменяемые исходные принятые условия либо null при отсутствии обязательства.",
                      "required": [
                        "id",
                        "kind",
                        "status",
                        "amount",
                        "currency",
                        "dueAt",
                        "termsHash",
                        "terms",
                        "authorizationExpiresAt"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID фактической нативной гарантии.",
                          "example": "d8c59877-4141-422c-8bcd-eb23a54e43ad"
                        },
                        "kind": {
                          "type": "string",
                          "enum": [
                            "DEPOSIT",
                            "CARD_HOLD",
                            "PREPAID"
                          ],
                          "description": "Исходный вид гарантии.",
                          "example": "DEPOSIT"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "PENDING",
                            "SATISFIED",
                            "WAIVED",
                            "EXPIRED",
                            "REFUNDED",
                            "FORFEITED"
                          ],
                          "description": "Текущий нативный жизненный цикл гарантии.",
                          "example": "PENDING"
                        },
                        "amount": {
                          "type": "string",
                          "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
                          "description": "Исходный точный нативный principal гарантии.",
                          "example": "1.00"
                        },
                        "currency": {
                          "type": "string",
                          "pattern": "^[A-Z]{3}$",
                          "description": "Исходная нативная валюта.",
                          "example": "GEL"
                        },
                        "dueAt": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "Исходный срок оплаты либо null для legacy-свидетельства.",
                          "example": "2026-12-31T18:00:00.000Z"
                        },
                        "termsHash": {
                          "type": "string",
                          "pattern": "^[0-9a-f]{64}$",
                          "nullable": true,
                          "description": "Неизменяемый digest принятых условий либо null для legacy-свидетельства.",
                          "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
                        },
                        "terms": {
                          "type": "object",
                          "description": "Исходные принятые нативные условия гарантии либо null для legacy-свидетельства.",
                          "additionalProperties": false,
                          "required": [
                            "schema",
                            "version",
                            "venueId",
                            "publicChannelId",
                            "servicePeriodId",
                            "servicePeriodRevision",
                            "kind",
                            "amountBasis",
                            "unitAmount",
                            "totalAmount",
                            "currency",
                            "currencyMinorUnit",
                            "partySize",
                            "scheduledAt",
                            "dueAt",
                            "freeCancellationAt",
                            "noShowAfter",
                            "forfeitOnLateCancellation",
                            "forfeitOnNoShow",
                            "termsVersion",
                            "privacyVersion"
                          ],
                          "properties": {
                            "schema": {
                              "type": "string",
                              "enum": [
                                "hallify.reservation-guarantee.terms"
                              ],
                              "description": "Каноническая схема нативных условий.",
                              "example": "hallify.reservation-guarantee.terms"
                            },
                            "version": {
                              "type": "integer",
                              "enum": [
                                1
                              ],
                              "description": "Каноническая версия нативных условий.",
                              "example": 1
                            },
                            "venueId": {
                              "type": "string",
                              "format": "uuid",
                              "description": "UUID нативного заведения.",
                              "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
                            },
                            "publicChannelId": {
                              "type": "string",
                              "format": "uuid",
                              "description": "UUID нативного канала бронирования.",
                              "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
                            },
                            "servicePeriodId": {
                              "type": "string",
                              "format": "uuid",
                              "description": "UUID выбранного нативного периода обслуживания.",
                              "example": "4846c409-f4df-40f6-81cc-1d7157a5c646"
                            },
                            "servicePeriodRevision": {
                              "type": "integer",
                              "minimum": 1,
                              "description": "Принятая нативная ревизия периода обслуживания.",
                              "example": 1
                            },
                            "kind": {
                              "type": "string",
                              "enum": [
                                "DEPOSIT",
                                "CARD_HOLD",
                                "PREPAID"
                              ],
                              "description": "Исходный принятый вид гарантии.",
                              "example": "DEPOSIT"
                            },
                            "amountBasis": {
                              "type": "string",
                              "enum": [
                                "FIXED",
                                "PER_GUEST"
                              ],
                              "description": "Исходный способ расчёта суммы.",
                              "example": "FIXED"
                            },
                            "unitAmount": {
                              "type": "string",
                              "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
                              "description": "Точная сумма за бронь или гостя с двумя десятичными знаками.",
                              "example": "1.00"
                            },
                            "totalAmount": {
                              "type": "string",
                              "pattern": "^(0|[1-9][0-9]{0,9})\\.[0-9]{2}$",
                              "description": "Точный принятый общий principal с двумя десятичными знаками без чаевых.",
                              "example": "1.00"
                            },
                            "currency": {
                              "type": "string",
                              "pattern": "^[A-Z]{3}$",
                              "description": "Исходная нативная валюта; конвертация не выполняется.",
                              "example": "GEL"
                            },
                            "currencyMinorUnit": {
                              "type": "integer",
                              "enum": [
                                2
                              ],
                              "description": "Нативная денежная точность.",
                              "example": 2
                            },
                            "partySize": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 99,
                              "description": "Точное принятое число гостей.",
                              "example": 1
                            },
                            "scheduledAt": {
                              "type": "string",
                              "format": "date-time",
                              "description": "Точный запланированный момент слота в UTC.",
                              "example": "2026-01-15T12:00:00.000Z"
                            },
                            "dueAt": {
                              "type": "string",
                              "format": "date-time",
                              "description": "Точный срок оплаты до конвертации и сбора средств.",
                              "example": "2026-12-31T18:00:00.000Z"
                            },
                            "freeCancellationAt": {
                              "type": "string",
                              "format": "date-time",
                              "description": "Точная граница бесплатной отмены.",
                              "example": "2026-01-15T12:00:00.000Z"
                            },
                            "noShowAfter": {
                              "type": "string",
                              "format": "date-time",
                              "description": "Самый ранний момент удержания за неявку по принятому льготному периоду.",
                              "example": "2026-01-15T12:00:00.000Z"
                            },
                            "forfeitOnLateCancellation": {
                              "type": "boolean",
                              "description": "Принятое разрешение явного удержания сотрудником при поздней отмене.",
                              "example": true
                            },
                            "forfeitOnNoShow": {
                              "type": "boolean",
                              "description": "Принятое разрешение явного удержания сотрудником при неявке; автоматического списания с карты нет.",
                              "example": true
                            },
                            "termsVersion": {
                              "type": "string",
                              "description": "Принятая версия публичных условий.",
                              "example": "example"
                            },
                            "privacyVersion": {
                              "type": "string",
                              "description": "Принятая версия уведомления о конфиденциальности.",
                              "example": "example"
                            }
                          },
                          "nullable": true,
                          "example": {
                            "schema": "hallify.reservation-guarantee.terms",
                            "version": 1,
                            "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                            "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                            "servicePeriodId": "4846c409-f4df-40f6-81cc-1d7157a5c646",
                            "servicePeriodRevision": 1,
                            "kind": "DEPOSIT",
                            "amountBasis": "FIXED",
                            "unitAmount": "1.00",
                            "totalAmount": "1.00",
                            "currency": "GEL",
                            "currencyMinorUnit": 2,
                            "partySize": 1,
                            "scheduledAt": "2026-01-15T12:00:00.000Z",
                            "dueAt": "2026-12-31T18:00:00.000Z",
                            "freeCancellationAt": "2026-01-15T12:00:00.000Z",
                            "noShowAfter": "2026-01-15T12:00:00.000Z",
                            "forfeitOnLateCancellation": true,
                            "forfeitOnNoShow": true,
                            "termsVersion": "example",
                            "privacyVersion": "example"
                          }
                        },
                        "authorizationExpiresAt": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "Доказанный срок авторизации PSP либо null без аутентифицированных данных.",
                          "example": "2026-12-31T18:00:00.000Z"
                        }
                      },
                      "example": {
                        "id": "d8c59877-4141-422c-8bcd-eb23a54e43ad",
                        "kind": "DEPOSIT",
                        "status": "PENDING",
                        "amount": "1.00",
                        "currency": "GEL",
                        "dueAt": null,
                        "termsHash": null,
                        "terms": null,
                        "authorizationExpiresAt": null
                      }
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "RESERVATION"
                      ],
                      "description": "Вид нативного владельца.",
                      "example": "RESERVATION"
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "UUID брони, которой владеет capability.",
                      "example": "a42073ae-5313-4ace-86d8-86fb33fde1a9"
                    },
                    "referenceCode": {
                      "type": "string",
                      "description": "Ссылочный код для гостя.",
                      "example": "EXAMPLE"
                    },
                    "revision": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "Текущая нативная ревизия брони.",
                      "example": 1
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "REQUESTED",
                        "BOOKED",
                        "CONFIRMED",
                        "ARRIVED",
                        "SEATED",
                        "CANCELED",
                        "NO_SHOW",
                        "DECLINED",
                        "EXPIRED"
                      ],
                      "description": "Текущий нативный жизненный цикл брони.",
                      "example": "REQUESTED"
                    },
                    "partySize": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 99,
                      "description": "Текущее число гостей.",
                      "example": 1
                    },
                    "scheduledAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Текущий запланированный момент прибытия.",
                      "example": "2026-01-15T12:00:00.000Z"
                    },
                    "endsAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Текущее запланированное окончание брони.",
                      "example": "2026-12-31T18:00:00.000Z"
                    },
                    "allowedActions": {
                      "type": "array",
                      "description": "Действия, разрешённые текущим жизненным циклом и scope доступа. Выполнение перепроверяет ревизию, представление, коммерческий допуск, правила и вместимость.",
                      "uniqueItems": true,
                      "maxItems": 3,
                      "items": {
                        "type": "string",
                        "enum": [
                          "CONFIRM",
                          "CHANGE",
                          "CANCEL"
                        ],
                        "description": "Доступная нативная гостевая команда.",
                        "example": "CONFIRM"
                      },
                      "example": [
                        "CONFIRM"
                      ]
                    }
                  },
                  "example": {
                    "venue": {
                      "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
                      "name": "Example name",
                      "timeZone": "Asia/Tbilisi"
                    },
                    "publicChannel": {
                      "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
                      "publicHandle": "example",
                      "status": "DRAFT"
                    },
                    "servicePeriod": {
                      "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
                      "name": "Example name",
                      "bookingMode": "INSTANT"
                    },
                    "source": {
                      "kind": "RESERVATION",
                      "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
                      "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                      "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                      "presentation": {
                        "kind": "CANONICAL",
                        "connectionId": null,
                        "resourceId": null,
                        "origin": null
                      }
                    },
                    "grantExpiresAt": "2026-12-31T18:00:00.000Z",
                    "serverTime": "2026-01-15T12:00:00.000Z",
                    "pendingAgreement": null,
                    "guarantee": null,
                    "kind": "RESERVATION",
                    "id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
                    "referenceCode": "EXAMPLE",
                    "revision": 1,
                    "status": "REQUESTED",
                    "partySize": 1,
                    "scheduledAt": "2026-01-15T12:00:00.000Z",
                    "endsAt": "2026-12-31T18:00:00.000Z",
                    "allowedActions": [
                      "CONFIRM"
                    ]
                  }
                },
                {
                  "type": "object",
                  "description": "Текущий контекст ожидания, безопасная оценка времени и нативные действия в пределах capability.",
                  "additionalProperties": false,
                  "required": [
                    "kind",
                    "id",
                    "referenceCode",
                    "revision",
                    "status",
                    "partySize",
                    "claimExpiresAt",
                    "quotedWaitMinMinutes",
                    "quotedWaitMaxMinutes",
                    "estimatedSeatAt",
                    "venue",
                    "publicChannel",
                    "servicePeriod",
                    "source",
                    "grantExpiresAt",
                    "serverTime",
                    "allowedActions"
                  ],
                  "properties": {
                    "venue": {
                      "type": "object",
                      "description": "Текущий нативный контекст отображения заведения и расписания.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "name",
                        "timeZone"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID заведения-владельца.",
                          "example": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0"
                        },
                        "name": {
                          "type": "string",
                          "description": "Текущее публичное название заведения.",
                          "example": "Example name"
                        },
                        "timeZone": {
                          "type": "string",
                          "description": "Нативный часовой пояс заведения в формате IANA.",
                          "example": "Asia/Tbilisi"
                        }
                      },
                      "example": {
                        "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
                        "name": "Example name",
                        "timeZone": "Asia/Tbilisi"
                      }
                    },
                    "publicChannel": {
                      "type": "object",
                      "description": "Нативный публичный канал записи-владельца, независимый от handle представления Storefront. Его текущий статус не заменяет разрешение продолжения.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "publicHandle",
                        "status"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного канала.",
                          "example": "3db2ed63-9466-4829-81aa-e4959a2279b0"
                        },
                        "publicHandle": {
                          "type": "string",
                          "description": "Handle нативного канала бронирования.",
                          "example": "example"
                        },
                        "status": {
                          "type": "string",
                          "description": "Текущий жизненный цикл нативного публичного канала.",
                          "enum": [
                            "DRAFT",
                            "ACTIVE",
                            "PAUSED"
                          ],
                          "example": "DRAFT"
                        }
                      },
                      "example": {
                        "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
                        "publicHandle": "example",
                        "status": "DRAFT"
                      }
                    },
                    "servicePeriod": {
                      "type": "object",
                      "description": "Текущие нативные ID периода обслуживания и режим бронирования.",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "name",
                        "bookingMode"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного периода обслуживания.",
                          "example": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8"
                        },
                        "name": {
                          "type": "string",
                          "description": "Текущее название периода обслуживания.",
                          "example": "Example name"
                        },
                        "bookingMode": {
                          "type": "string",
                          "description": "Текущий режим периода обслуживания; не переписывает исходную квитанцию бронирования.",
                          "enum": [
                            "INSTANT",
                            "REQUEST"
                          ],
                          "example": "INSTANT"
                        }
                      },
                      "example": {
                        "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
                        "name": "Example name",
                        "bookingMode": "INSTANT"
                      }
                    },
                    "source": {
                      "type": "object",
                      "description": "Несекретный точный набор нативного владельца и исходное представление доступа. Эти ID не дают прав и не разрешают менять origin, подключения или capability.",
                      "additionalProperties": false,
                      "required": [
                        "kind",
                        "entityId",
                        "venueId",
                        "publicChannelId",
                        "presentation"
                      ],
                      "properties": {
                        "kind": {
                          "type": "string",
                          "enum": [
                            "RESERVATION",
                            "WAITLIST"
                          ],
                          "description": "Вид нативного владельца.",
                          "example": "RESERVATION"
                        },
                        "entityId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Точный UUID брони или записи ожидания владельца.",
                          "example": "6b288694-8b6d-49cd-8007-264ca7224921"
                        },
                        "venueId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного заведения владельца.",
                          "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
                        },
                        "publicChannelId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "UUID нативного канала владельца.",
                          "example": "9bee613d-3322-4a03-8b9f-8a6259984eee"
                        },
                        "presentation": {
                          "type": "object",
                          "description": "Неизменяемая классификация выдачи. CANONICAL содержит null в полях Storefront; STOREFRONT сохраняет точные исходные подключение, прикреплённый ресурс и Origin запроса.",
                          "additionalProperties": false,
                          "required": [
                            "kind",
                            "connectionId",
                            "resourceId",
                            "origin"
                          ],
                          "properties": {
                            "kind": {
                              "type": "string",
                              "enum": [
                                "CANONICAL",
                                "STOREFRONT"
                              ],
                              "description": "Исходный контекст выдачи доступа.",
                              "example": "CANONICAL"
                            },
                            "connectionId": {
                              "type": "string",
                              "format": "uuid",
                              "nullable": true,
                              "description": "UUID исходного подключения Storefront либо null для канонической выдачи.",
                              "example": "2fde64d5-54a3-47d0-800f-a015f92a8878"
                            },
                            "resourceId": {
                              "type": "string",
                              "format": "uuid",
                              "nullable": true,
                              "description": "UUID исходного прикреплённого ресурса Storefront либо null для канонической выдачи.",
                              "example": "d5b5eb29-9b8d-4d6f-8f4f-6f0e58f32568"
                            },
                            "origin": {
                              "type": "string",
                              "format": "uri",
                              "nullable": true,
                              "description": "Точный исходный Origin браузера Storefront либо null для канонической выдачи.",
                              "example": "https://example.test/resource"
                            }
                          },
                          "example": {
                            "kind": "CANONICAL",
                            "connectionId": null,
                            "resourceId": null,
                            "origin": null
                          }
                        }
                      },
                      "example": {
                        "kind": "RESERVATION",
                        "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
                        "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                        "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                        "presentation": {
                          "kind": "CANONICAL",
                          "connectionId": null,
                          "resourceId": null,
                          "origin": null
                        }
                      }
                    },
                    "grantExpiresAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Исходный срок нативной manage-capability; чтение не продлевает его.",
                      "example": "2026-12-31T18:00:00.000Z"
                    },
                    "serverTime": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Серверный момент для допустимости текущего действия и срока принятия приглашения.",
                      "example": "2026-01-15T12:00:00.000Z"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "WAITLIST"
                      ],
                      "description": "Вид нативного владельца.",
                      "example": "WAITLIST"
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "UUID записи ожидания, которой владеет capability.",
                      "example": "a7476fce-e842-42a4-896a-c23b0e88b420"
                    },
                    "referenceCode": {
                      "type": "string",
                      "description": "Ссылочный код для гостя.",
                      "example": "EXAMPLE"
                    },
                    "revision": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "Текущая нативная ревизия записи ожидания.",
                      "example": 1
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "WAITING",
                        "NOTIFIED",
                        "CLAIMED",
                        "SKIPPED",
                        "SEATED",
                        "CANCELED",
                        "NO_SHOW"
                      ],
                      "description": "Текущий нативный жизненный цикл листа ожидания.",
                      "example": "WAITING"
                    },
                    "partySize": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 99,
                      "description": "Текущее число гостей.",
                      "example": 1
                    },
                    "claimExpiresAt": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "Нативный срок принятия приглашения либо null без текущего окна.",
                      "example": "2026-12-31T18:00:00.000Z"
                    },
                    "quotedWaitMinMinutes": {
                      "type": "integer",
                      "nullable": true,
                      "description": "Текущая нативная минимальная оценка ожидания в минутах либо null, если неизвестна.",
                      "example": 0
                    },
                    "quotedWaitMaxMinutes": {
                      "type": "integer",
                      "nullable": true,
                      "description": "Текущая нативная максимальная оценка ожидания в минутах либо null, если неизвестна.",
                      "example": 0
                    },
                    "estimatedSeatAt": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "Текущий нативный предполагаемый момент рассадки либо null, если неизвестен.",
                      "example": "2026-01-15T12:00:00.000Z"
                    },
                    "allowedActions": {
                      "type": "array",
                      "description": "Действия, разрешённые текущим жизненным циклом, scope доступа и нативным сроком принятия. CLAIM переводит запись в CLAIMED и не создаёт бронь.",
                      "uniqueItems": true,
                      "maxItems": 2,
                      "items": {
                        "type": "string",
                        "enum": [
                          "CLAIM",
                          "CANCEL"
                        ],
                        "description": "Доступная нативная гостевая команда листа ожидания.",
                        "example": "CLAIM"
                      },
                      "example": [
                        "CLAIM"
                      ]
                    }
                  },
                  "example": {
                    "venue": {
                      "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
                      "name": "Example name",
                      "timeZone": "Asia/Tbilisi"
                    },
                    "publicChannel": {
                      "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
                      "publicHandle": "example",
                      "status": "DRAFT"
                    },
                    "servicePeriod": {
                      "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
                      "name": "Example name",
                      "bookingMode": "INSTANT"
                    },
                    "source": {
                      "kind": "RESERVATION",
                      "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
                      "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                      "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                      "presentation": {
                        "kind": "CANONICAL",
                        "connectionId": null,
                        "resourceId": null,
                        "origin": null
                      }
                    },
                    "grantExpiresAt": "2026-12-31T18:00:00.000Z",
                    "serverTime": "2026-01-15T12:00:00.000Z",
                    "kind": "WAITLIST",
                    "id": "a7476fce-e842-42a4-896a-c23b0e88b420",
                    "referenceCode": "EXAMPLE",
                    "revision": 1,
                    "status": "WAITING",
                    "partySize": 1,
                    "claimExpiresAt": null,
                    "quotedWaitMinMinutes": null,
                    "quotedWaitMaxMinutes": null,
                    "estimatedSeatAt": null,
                    "allowedActions": [
                      "CLAIM"
                    ]
                  }
                }
              ],
              "example": {
                "venue": {
                  "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
                  "name": "Example name",
                  "timeZone": "Asia/Tbilisi"
                },
                "publicChannel": {
                  "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
                  "publicHandle": "example",
                  "status": "DRAFT"
                },
                "servicePeriod": {
                  "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
                  "name": "Example name",
                  "bookingMode": "INSTANT"
                },
                "source": {
                  "kind": "RESERVATION",
                  "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
                  "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
                  "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
                  "presentation": {
                    "kind": "CANONICAL",
                    "connectionId": null,
                    "resourceId": null,
                    "origin": null
                  }
                },
                "grantExpiresAt": "2026-12-31T18:00:00.000Z",
                "serverTime": "2026-01-15T12:00:00.000Z",
                "pendingAgreement": null,
                "guarantee": null,
                "kind": "RESERVATION",
                "id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
                "referenceCode": "EXAMPLE",
                "revision": 1,
                "status": "REQUESTED",
                "partySize": 1,
                "scheduledAt": "2026-01-15T12:00:00.000Z",
                "endsAt": "2026-12-31T18:00:00.000Z",
                "allowedActions": [
                  "CONFIRM"
                ]
              }
            },
            {
              "type": "object",
              "additionalProperties": false,
              "nullable": true,
              "enum": [
                null
              ],
              "description": "Текущее разрешённое представление управления недоступно.",
              "example": null
            }
          ],
          "example": {
            "venue": {
              "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
              "name": "Example name",
              "timeZone": "Asia/Tbilisi"
            },
            "publicChannel": {
              "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
              "publicHandle": "example",
              "status": "DRAFT"
            },
            "servicePeriod": {
              "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
              "name": "Example name",
              "bookingMode": "INSTANT"
            },
            "source": {
              "kind": "RESERVATION",
              "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
              "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
              "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
              "presentation": {
                "kind": "CANONICAL",
                "connectionId": null,
                "resourceId": null,
                "origin": null
              }
            },
            "grantExpiresAt": "2026-12-31T18:00:00.000Z",
            "serverTime": "2026-01-15T12:00:00.000Z",
            "pendingAgreement": null,
            "guarantee": null,
            "kind": "RESERVATION",
            "id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
            "referenceCode": "EXAMPLE",
            "revision": 1,
            "status": "REQUESTED",
            "partySize": 1,
            "scheduledAt": "2026-01-15T12:00:00.000Z",
            "endsAt": "2026-12-31T18:00:00.000Z",
            "allowedActions": [
              "CONFIRM"
            ]
          }
        }
      },
      "example": {
        "kind": "WAITLIST",
        "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
        "referenceCode": "EXAMPLE",
        "revision": 1,
        "status": "WAITING",
        "eventIds": [
          "6825b43e-93d6-4f3b-8171-c1661099fae8"
        ],
        "manageToken": "synthetic-example-credential",
        "manageTokenExpiresAt": "2026-12-31T18:00:00.000Z",
        "currentState": "AVAILABLE",
        "current": {
          "venue": {
            "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
            "name": "Example name",
            "timeZone": "Asia/Tbilisi"
          },
          "publicChannel": {
            "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
            "publicHandle": "example",
            "status": "DRAFT"
          },
          "servicePeriod": {
            "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
            "name": "Example name",
            "bookingMode": "INSTANT"
          },
          "source": {
            "kind": "RESERVATION",
            "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
            "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
            "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
            "presentation": {
              "kind": "CANONICAL",
              "connectionId": null,
              "resourceId": null,
              "origin": null
            }
          },
          "grantExpiresAt": "2026-12-31T18:00:00.000Z",
          "serverTime": "2026-01-15T12:00:00.000Z",
          "pendingAgreement": null,
          "guarantee": null,
          "kind": "RESERVATION",
          "id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
          "referenceCode": "EXAMPLE",
          "revision": 1,
          "status": "REQUESTED",
          "partySize": 1,
          "scheduledAt": "2026-01-15T12:00:00.000Z",
          "endsAt": "2026-12-31T18:00:00.000Z",
          "allowedActions": [
            "CONFIRM"
          ]
        }
      }
    }
  ],
  "example": {
    "kind": "RESERVATION",
    "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
    "referenceCode": "EXAMPLE",
    "revision": 1,
    "status": "REQUESTED",
    "eventIds": [
      "6825b43e-93d6-4f3b-8171-c1661099fae8"
    ],
    "manageToken": "synthetic-example-credential",
    "manageTokenExpiresAt": "2026-12-31T18:00:00.000Z",
    "currentState": "AVAILABLE",
    "current": {
      "venue": {
        "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
        "name": "Example name",
        "timeZone": "Asia/Tbilisi"
      },
      "publicChannel": {
        "id": "3db2ed63-9466-4829-81aa-e4959a2279b0",
        "publicHandle": "example",
        "status": "DRAFT"
      },
      "servicePeriod": {
        "id": "9c73cff6-cdc4-44f1-80c7-f0668753d7a8",
        "name": "Example name",
        "bookingMode": "INSTANT"
      },
      "source": {
        "kind": "RESERVATION",
        "entityId": "6b288694-8b6d-49cd-8007-264ca7224921",
        "venueId": "0604de3a-da74-4ad5-89f6-2dfe000d5391",
        "publicChannelId": "9bee613d-3322-4a03-8b9f-8a6259984eee",
        "presentation": {
          "kind": "CANONICAL",
          "connectionId": null,
          "resourceId": null,
          "origin": null
        }
      },
      "grantExpiresAt": "2026-12-31T18:00:00.000Z",
      "serverTime": "2026-01-15T12:00:00.000Z",
      "pendingAgreement": null,
      "guarantee": null,
      "kind": "RESERVATION",
      "id": "a42073ae-5313-4ace-86d8-86fb33fde1a9",
      "referenceCode": "EXAMPLE",
      "revision": 1,
      "status": "REQUESTED",
      "partySize": 1,
      "scheduledAt": "2026-01-15T12:00:00.000Z",
      "endsAt": "2026-12-31T18:00:00.000Z",
      "allowedActions": [
        "CONFIRM"
      ]
    }
  }
}
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"
}
IdempotencyConflictError

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

Полное определение
{
  "example": {
    "statusCode": 409,
    "error": "errors:http.conflict",
    "code": "IDEMPOTENCY_REQUEST_IN_PROGRESS",
    "message": "errors:idempotency.inProgress",
    "translationKey": "errors:idempotency.inProgress"
  },
  "allOf": [
    {
      "$ref": "#/components/schemas/TranslatedErrorDto"
    },
    {
      "type": "object",
      "required": [
        "code"
      ],
      "properties": {
        "statusCode": {
          "type": "integer",
          "enum": [
            409
          ],
          "description": "Статус конфликта HTTP 409.",
          "example": 409
        },
        "code": {
          "type": "string",
          "enum": [
            "IDEMPOTENCY_REQUEST_NOT_READY",
            "IDEMPOTENCY_KEY_PAYLOAD_MISMATCH",
            "IDEMPOTENCY_REQUEST_IN_PROGRESS",
            "IDEMPOTENCY_SCOPE_INCOMPLETE"
          ],
          "description": "Допустимые значения `code`: IDEMPOTENCY_REQUEST_NOT_READY, IDEMPOTENCY_KEY_PAYLOAD_MISMATCH, IDEMPOTENCY_REQUEST_IN_PROGRESS, IDEMPOTENCY_SCOPE_INCOMPLETE.",
          "example": "IDEMPOTENCY_REQUEST_NOT_READY"
        }
      },
      "example": {
        "code": "IDEMPOTENCY_REQUEST_NOT_READY"
      }
    }
  ],
  "description": "Ключ идемпотентности уже обрабатывается или использован повторно с другим телом."
}

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

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