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

Гостевой кабинет

Прочитать собственную историю предзаказа

GET/guest-portal/preorders/{fulfillmentId}

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

Авторизация

x-guest-portal-token: <HALLIFY_GUEST_PORTAL_TOKEN>

Гостевой токен сессии своего кабинета.

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

Параметры

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

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

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

Ответы

200Сводка исполнения, исходная валюта и допустимая нативная проекция только для чтения.
GuestPortalPreorderHistoryDetailsResultDto
Полное определение
{
  "$ref": "#/components/schemas/GuestPortalPreorderHistoryDetailsResultDto"
}
Пример ответа · 200 · application/json
{
  "summary": {
    "id": "2d986aef-c54e-477a-8d90-0a0909ab3b3a",
    "type": "RESERVATION",
    "status": "example",
    "occurredAt": "2026-01-15T12:00:00.000Z",
    "partySize": 0
  },
  "currency": "GEL",
  "native": null,
  "hasVerifiedSource": true
}
400UUID нативного ресурса или сохранённый proof недействительны.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 400 · application/json
{
  "statusCode": 400,
  "error": "errors:http.badRequest",
  "code": "HTTP_BAD_REQUEST",
  "message": "errors:http.badRequest",
  "translationKey": "errors:http.badRequest"
}
401Текущая сессия Guest Portal или субъект недоступны.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 401 · application/json
{
  "statusCode": 401,
  "error": "errors:http.unauthorized",
  "code": "HTTP_UNAUTHORIZED",
  "message": "errors:http.unauthorized",
  "translationKey": "errors:http.unauthorized"
}
403Текущая сессия требует свежую проверку контакта до чтения приватной истории.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 403 · application/json
{
  "statusCode": 403,
  "error": "errors:http.forbidden",
  "code": "HTTP_FORBIDDEN",
  "message": "errors:http.forbidden",
  "translationKey": "errors:http.forbidden"
}
404В точной области гостя и заведения нет ресурса, доступного для чтения.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 404 · application/json
{
  "statusCode": 404,
  "error": "errors:http.notFound",
  "code": "HTTP_NOT_FOUND",
  "message": "errors:http.notFound",
  "translationKey": "errors:http.notFound"
}
503Необходимая политика ключей защищённых данных недоступна.
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"
}

Схемы

GuestPortalPreorderHistoryDetailsResultDto

История предзаказа после проверки контакта с канонической нативной проекцией только для чтения.

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

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

object
Полное определение
{
  "type": "object",
  "description": "Принадлежащая гостю сводка нативной истории без прав управления или оплаты.",
  "required": [
    "id",
    "type",
    "status",
    "occurredAt",
    "partySize"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "UUID нативного ресурса либо UUID исходной association для QR-визита.",
      "example": "2d986aef-c54e-477a-8d90-0a0909ab3b3a"
    },
    "type": {
      "type": "string",
      "description": "Вид нативного источника; вместе с UUID определяет одну строку истории.",
      "enum": [
        "RESERVATION",
        "WAITLIST",
        "PREORDER",
        "QR_VISIT",
        "VISIT",
        "ORDER"
      ],
      "example": "RESERVATION"
    },
    "status": {
      "type": "string",
      "description": "Текущий статус жизненного цикла, предоставленный нативным доменом-владельцем.",
      "example": "example"
    },
    "occurredAt": {
      "type": "string",
      "format": "date-time",
      "description": "Нативное время события для сортировки истории по убыванию.",
      "example": "2026-01-15T12:00:00.000Z"
    },
    "completedAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "Нативное время завершения при наличии либо null.",
      "example": "2026-01-15T13:00:00.000Z"
    },
    "partySize": {
      "type": "integer",
      "description": "Число гостей, возвращённое нативным источником.",
      "example": 0
    },
    "reference": {
      "type": "string",
      "nullable": true,
      "description": "Нативный код для гостя при наличии либо null.",
      "example": "example-reference"
    }
  },
  "example": {
    "id": "2d986aef-c54e-477a-8d90-0a0909ab3b3a",
    "type": "RESERVATION",
    "status": "example",
    "occurredAt": "2026-01-15T12:00:00.000Z",
    "partySize": 0
  }
}
currencyОбязательно

Зафиксированная валюта исполнения; текущие настройки заведения не используются.

string
Полное определение
{
  "type": "string",
  "pattern": "^[A-Z]{3}$",
  "description": "Зафиксированная валюта исполнения; текущие настройки заведения не используются.",
  "example": "GEL"
}
nativeОбязательно

Каноническая нативная проекция со всеми отключёнными действиями управления либо null для старых или недоступных сохранённых прав. Нативный bearer не возвращается.

object · null
Полное определение
{
  "nullable": true,
  "description": "Каноническая нативная проекция со всеми отключёнными действиями управления либо null для старых или недоступных сохранённых прав. Нативный bearer не возвращается.",
  "type": "object",
  "properties": {
    "paymentActorReference": {
      "type": "string",
      "nullable": true,
      "pattern": "^[a-f0-9]{64}$",
      "minLength": 64,
      "maxLength": 64,
      "description": "Несекретный стабильный раздел платёжного UI для этого нативного actor и fulfillment. Присутствует только для проверенного исходного публичного EXCHANGE и линии первоначального принятия CREATE. Не является токеном или платёжным полномочием; при отсутствии или недоказуемой линии возвращается null.",
      "example": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
    },
    "fulfillmentId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID Hallify для `fulfillmentId`.",
      "example": "0a81282f-ea3b-40be-8ef7-4ad39e32ea88"
    },
    "orderId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID Hallify для `orderId`.",
      "example": "f3127edf-ce4f-4da7-8be5-81b962024e6c"
    },
    "revision": {
      "type": "integer",
      "minimum": 1,
      "description": "Монотонно возрастающая ревизия `revision` для оптимистичного контроля конкурентных изменений. Ограничения: минимум 1.",
      "example": 1
    },
    "status": {
      "type": "string",
      "enum": [
        "DRAFT",
        "HELD",
        "CONFIRMED",
        "IN_PREPARATION",
        "READY_FOR_HANDOFF",
        "OUT_FOR_DELIVERY",
        "COMPLETED",
        "CANCELED",
        "EXPIRED"
      ],
      "description": "Текущий статус жизненного цикла `status`; допустимые значения: DRAFT, HELD, CONFIRMED, IN_PREPARATION, READY_FOR_HANDOFF, OUT_FOR_DELIVERY, COMPLETED, CANCELED, EXPIRED.",
      "example": "DRAFT"
    },
    "serviceMode": {
      "type": "string",
      "enum": [
        "DINE_IN",
        "PICKUP",
        "DELIVERY",
        "CATERING"
      ],
      "description": "Допустимые значения `serviceMode`: DINE_IN, PICKUP, DELIVERY, CATERING.",
      "example": "DINE_IN"
    },
    "partySize": {
      "type": "integer",
      "minimum": 1,
      "description": "Целочисленное значение `partySize`. Ограничения: минимум 1.",
      "example": 1
    },
    "scheduledFor": {
      "type": "string",
      "format": "date-time",
      "description": "Время `scheduledFor` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
      "example": "2026-01-15T12:00:00.000Z"
    },
    "timingMode": {
      "type": "string",
      "enum": [
        "ASAP",
        "SCHEDULED"
      ],
      "description": "Явный клиентский выбор времени, связанный с сохранённым нативным черновиком, quote или заказом. У legacy scheduled записей отсутствует.",
      "example": "ASAP"
    },
    "venue": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "UUID Hallify для `id`.",
          "example": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0"
        },
        "name": {
          "type": "string",
          "description": "Понятное человеку значение `name`.",
          "example": "Example name"
        },
        "timeZone": {
          "type": "string",
          "description": "Идентификатор часового пояса IANA в `timeZone` для трактовки местных дат и времени заведения.",
          "example": "Asia/Tbilisi"
        }
      },
      "required": [
        "id",
        "name",
        "timeZone"
      ],
      "description": "Вложенные сведения `venue`; состав полей указан в схеме.",
      "example": {
        "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
        "name": "Example name",
        "timeZone": "Asia/Tbilisi"
      }
    },
    "channel": {
      "type": "object",
      "properties": {
        "publicHandle": {
          "type": "string",
          "description": "Публичный идентификатор канала `publicHandle`.",
          "example": "example"
        },
        "salesChannelId": {
          "type": "string",
          "format": "uuid",
          "description": "UUID Hallify для `salesChannelId`.",
          "example": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"
        },
        "termsVersion": {
          "type": "string",
          "description": "Версия условий `termsVersion`.",
          "example": "example"
        },
        "privacyVersion": {
          "type": "string",
          "description": "Версия уведомления о персональных данных `privacyVersion`.",
          "example": "example"
        }
      },
      "required": [
        "publicHandle",
        "salesChannelId",
        "termsVersion",
        "privacyVersion"
      ],
      "description": "Вложенные сведения `channel`; состав полей указан в схеме.",
      "example": {
        "publicHandle": "example",
        "salesChannelId": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc",
        "termsVersion": "example",
        "privacyVersion": "example"
      }
    },
    "contact": {
      "type": "object",
      "nullable": true,
      "properties": {
        "contactName": {
          "type": "string",
          "description": "Понятное человеку значение `contactName`.",
          "example": "Example name"
        },
        "contactPhone": {
          "type": "string",
          "nullable": true,
          "description": "Номер телефона `contactPhone`. Null означает отсутствие записанного значения в этом представлении.",
          "example": "+995555000000"
        },
        "contactEmail": {
          "type": "string",
          "nullable": true,
          "description": "Адрес электронной почты `contactEmail`. Null означает отсутствие записанного значения в этом представлении.",
          "format": "email",
          "example": "user@example.test"
        },
        "addressLine1": {
          "type": "string",
          "nullable": true,
          "description": "Основная строка почтового адреса `addressLine1`. Null означает отсутствие записанного значения в этом представлении.",
          "example": "example"
        },
        "addressLine2": {
          "type": "string",
          "nullable": true,
          "description": "Необязательные дополнительные сведения адреса `addressLine2`: помещение, этаж или корпус. Null означает отсутствие записанного значения в этом представлении.",
          "example": "example"
        },
        "city": {
          "type": "string",
          "nullable": true,
          "description": "Город или населённый пункт адреса `city`. Null означает отсутствие записанного значения в этом представлении.",
          "example": "example"
        },
        "region": {
          "type": "string",
          "nullable": true,
          "description": "Регион, штат или административная единица `region`. Null означает отсутствие записанного значения в этом представлении.",
          "example": "example"
        },
        "postalCode": {
          "type": "string",
          "nullable": true,
          "description": "Стабильный код `postalCode` для классификации или идентификации. Null означает отсутствие записанного значения в этом представлении.",
          "example": "EXAMPLE"
        },
        "countryCode": {
          "type": "string",
          "nullable": true,
          "description": "Стабильный код `countryCode` для классификации или идентификации. Null означает отсутствие записанного значения в этом представлении.",
          "example": "GE"
        },
        "administrativeDivisionId": {
          "type": "string",
          "format": "uuid",
          "nullable": true,
          "description": "UUID Hallify для `administrativeDivisionId`. Null означает отсутствие записанного значения в этом представлении.",
          "example": "c8efbc76-614d-4a79-8f15-db6d48283d46"
        },
        "localityId": {
          "type": "string",
          "format": "uuid",
          "nullable": true,
          "description": "UUID Hallify для `localityId`. Null означает отсутствие записанного значения в этом представлении.",
          "example": "1bfa5864-39f3-4647-8093-42aea5d9d046"
        },
        "postalCodeId": {
          "type": "string",
          "format": "uuid",
          "nullable": true,
          "description": "UUID Hallify для `postalCodeId`. Null означает отсутствие записанного значения в этом представлении.",
          "example": "7424d59b-d459-4e7b-8cbc-7f5222274f26"
        },
        "latitude": {
          "type": "number",
          "nullable": true,
          "description": "Числовое значение `latitude`, допускающее дроби. Null означает отсутствие записанного значения в этом представлении.",
          "example": 41.7151
        },
        "longitude": {
          "type": "number",
          "nullable": true,
          "description": "Числовое значение `longitude`, допускающее дроби. Null означает отсутствие записанного значения в этом представлении.",
          "example": 44.8271
        },
        "coordinateSource": {
          "type": "string",
          "nullable": true,
          "enum": [
            "STAFF",
            "EXTERNAL_CLIENT",
            "GEOREFERENCE_CENTROID",
            null
          ],
          "description": "Допустимые значения `coordinateSource`: STAFF, EXTERNAL_CLIENT, GEOREFERENCE_CENTROID. Null означает отсутствие записанного значения в этом представлении.",
          "example": "STAFF"
        },
        "coordinateAccuracy": {
          "type": "integer",
          "minimum": 0,
          "maximum": 10,
          "nullable": true,
          "description": "Целочисленное значение `coordinateAccuracy`. Ограничения: минимум 0; максимум 10. Null означает отсутствие записанного значения в этом представлении.",
          "example": 0
        },
        "deliveryInstructions": {
          "type": "string",
          "nullable": true,
          "description": "Указания для доставки `deliveryInstructions`. Null означает отсутствие записанного значения в этом представлении.",
          "example": "example"
        }
      },
      "required": [
        "contactName",
        "contactPhone",
        "contactEmail",
        "addressLine1",
        "addressLine2",
        "city",
        "region",
        "postalCode",
        "countryCode",
        "administrativeDivisionId",
        "localityId",
        "postalCodeId",
        "latitude",
        "longitude",
        "coordinateSource",
        "coordinateAccuracy",
        "deliveryInstructions"
      ],
      "description": "Вложенные сведения `contact`; состав полей указан в схеме. Null означает отсутствие записанного значения в этом представлении.",
      "example": {
        "contactName": "Example name",
        "contactPhone": null,
        "contactEmail": null,
        "addressLine1": null,
        "addressLine2": null,
        "city": null,
        "region": null,
        "postalCode": null,
        "countryCode": null,
        "administrativeDivisionId": null,
        "localityId": null,
        "postalCodeId": null,
        "latitude": null,
        "longitude": null,
        "coordinateSource": null,
        "coordinateAccuracy": null,
        "deliveryInstructions": null
      }
    },
    "deposit": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "NOT_REQUIRED",
            "REQUIRED",
            "PARTIALLY_PAID",
            "PAID",
            "OVERDUE"
          ],
          "description": "Текущий статус жизненного цикла `status`; допустимые значения: NOT_REQUIRED, REQUIRED, PARTIALLY_PAID, PAID, OVERDUE.",
          "example": "NOT_REQUIRED"
        },
        "requiredAmount": {
          "type": "string",
          "pattern": "^\\d+\\.\\d{2}$",
          "description": "Десятичная денежная величина `requiredAmount`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
          "example": "1.00"
        },
        "paidAmount": {
          "type": "string",
          "pattern": "^\\d+\\.\\d{2}$",
          "description": "Десятичная денежная величина `paidAmount`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
          "example": "1.00"
        },
        "dueAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true,
          "description": "Время `dueAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент. Null означает отсутствие записанного значения в этом представлении.",
          "example": "2026-12-31T18:00:00.000Z"
        }
      },
      "required": [
        "status",
        "requiredAmount",
        "paidAmount",
        "dueAt"
      ],
      "description": "Вложенные сведения `deposit`; состав полей указан в схеме.",
      "example": {
        "status": "NOT_REQUIRED",
        "requiredAmount": "1.00",
        "paidAmount": "1.00",
        "dueAt": null
      }
    },
    "delivery": {
      "type": "object",
      "properties": {
        "zoneId": {
          "type": "string",
          "format": "uuid",
          "nullable": true,
          "description": "UUID Hallify для `zoneId`. Null означает отсутствие записанного значения в этом представлении.",
          "example": "f6864a47-6a06-4534-8879-1bfd5a7ed49b"
        },
        "feeAmount": {
          "type": "string",
          "pattern": "^\\d+\\.\\d{2}$",
          "description": "Десятичная денежная величина `feeAmount`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
          "example": "1.00"
        },
        "method": {
          "type": "string",
          "enum": [
            "SELF",
            "UBER_DIRECT",
            "WOLT_DRIVE"
          ],
          "description": "Неизменяемый способ доставки из текущего принятого клиентского предложения, доступный ещё до вызова курьера. Отсутствует для старых заказов без принятой пары предложений, где способом доставки является SELF.",
          "example": "SELF"
        },
        "tracking": {
          "type": "object",
          "nullable": true,
          "description": "Подтверждённый ход доставки курьером для текущей принятой пары клиентских предложений либо null до появления отправления. Этот статус независим от жизненного цикла самого заказа и депозита.",
          "properties": {
            "shipmentId": {
              "type": "string",
              "format": "uuid",
              "description": "Курьерское отправление, принадлежащее текущей принятой паре предложений.",
              "example": "107f0aae-41ba-4259-84aa-b07de763733f"
            },
            "revision": {
              "type": "integer",
              "minimum": 1,
              "description": "Монотонно возрастающая ревизия представления курьерской доставки.",
              "example": 1
            },
            "provider": {
              "type": "string",
              "enum": [
                "UBER_DIRECT",
                "WOLT_DRIVE"
              ],
              "description": "Курьерская служба, зафиксированная в принятом запросе на доставку.",
              "example": "UBER_DIRECT"
            },
            "state": {
              "type": "string",
              "enum": [
                "PREPARED",
                "DISPATCHING",
                "UNKNOWN",
                "CONFIRMED",
                "PICKUP_STARTED",
                "PICKED_UP",
                "IN_TRANSIT",
                "DELIVERED",
                "CANCELED",
                "NOT_DELIVERED",
                "RETURNING",
                "RETURNED",
                "REJECTED",
                "RECONCILIATION_REQUIRED"
              ],
              "description": "Подтверждённый жизненный цикл курьерской доставки, включая явные состояния неопределённости и сверки.",
              "example": "PREPARED"
            },
            "trackingUrl": {
              "type": "string",
              "nullable": true,
              "format": "uri",
              "maxLength": 2048,
              "description": "Проверенная HTTPS-ссылка для отслеживания либо null, если она недоступна или скрыта действующими правилами приватности.",
              "example": "https://example.test/resource"
            },
            "pickupEta": {
              "type": "string",
              "format": "date-time",
              "nullable": true,
              "description": "Последняя оценка времени забора заказа провайдером как момент времени UTC либо null.",
              "example": "2026-01-15T12:00:00.000Z"
            },
            "dropoffEtaMin": {
              "type": "string",
              "format": "date-time",
              "nullable": true,
              "description": "Самая ранняя оценка времени вручения заказа провайдером как момент времени UTC либо null.",
              "example": "2026-01-15T12:00:00.000Z"
            },
            "dropoffEtaMax": {
              "type": "string",
              "format": "date-time",
              "nullable": true,
              "description": "Самая поздняя оценка времени вручения заказа провайдером как момент времени UTC либо null.",
              "example": "2026-01-15T12:00:00.000Z"
            },
            "requiresAttention": {
              "type": "boolean",
              "description": "Данные курьера или применение результата к заказу требуют внимания персонала; это не даёт полномочий на оплату или отмену самого заказа.",
              "example": true
            }
          },
          "required": [
            "shipmentId",
            "revision",
            "provider",
            "state",
            "trackingUrl",
            "pickupEta",
            "dropoffEtaMin",
            "dropoffEtaMax",
            "requiresAttention"
          ],
          "example": {
            "shipmentId": "107f0aae-41ba-4259-84aa-b07de763733f",
            "revision": 1,
            "provider": "UBER_DIRECT",
            "state": "PREPARED",
            "trackingUrl": null,
            "pickupEta": null,
            "dropoffEtaMin": null,
            "dropoffEtaMax": null,
            "requiresAttention": true
          }
        }
      },
      "required": [
        "zoneId",
        "feeAmount"
      ],
      "description": "Вложенные сведения `delivery`; состав полей указан в схеме.",
      "example": {
        "zoneId": null,
        "feeAmount": "1.00"
      }
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "clientLineId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "description": "Непрозрачный идентификатор `clientLineId`; клиент не должен предполагать формат UUID. Ограничения: минимальная длина 1; максимальная длина 80.",
            "example": "example-id"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "UUID Hallify для `id`.",
            "example": "9122e965-4f99-4380-8392-2befd29097e7"
          },
          "menuVersionId": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "UUID Hallify для `menuVersionId`. Null означает отсутствие записанного значения в этом представлении.",
            "example": "490ccfcb-caa6-472e-836a-a8416e8cee92"
          },
          "salesChannelId": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "UUID Hallify для `salesChannelId`. Null означает отсутствие записанного значения в этом представлении.",
            "example": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"
          },
          "menuItemId": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "UUID Hallify для `menuItemId`. Null означает отсутствие записанного значения в этом представлении.",
            "example": "16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"
          },
          "menuVariantId": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "UUID Hallify для `menuVariantId`. Null означает отсутствие записанного значения в этом представлении.",
            "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
          },
          "name": {
            "type": "string",
            "description": "Понятное человеку значение `name`.",
            "example": "Example name"
          },
          "rootItemStructureKind": {
            "type": "string",
            "enum": [
              "SINGLE_ITEM",
              "SIZED_PORTIONED",
              "COMBO_MEAL_DEAL",
              "FIXED_PRICE_COURSE_MENU",
              "BUILD_YOUR_OWN",
              "BUNDLE_KIT",
              "MEASURED",
              "OPEN_PRICE",
              "CATERING_PREORDER",
              "CUSTOM"
            ],
            "description": "Допустимые значения `rootItemStructureKind`: SINGLE_ITEM, SIZED_PORTIONED, COMBO_MEAL_DEAL, FIXED_PRICE_COURSE_MENU, BUILD_YOUR_OWN, BUNDLE_KIT, MEASURED, OPEN_PRICE, CATERING_PREORDER, CUSTOM.",
            "example": "SINGLE_ITEM"
          },
          "itemStructureExecutionMode": {
            "type": "string",
            "enum": [
              "DIRECT_ITEM",
              "SELLABLE_VERSION",
              "COMPONENT_GROUPS",
              "COURSE_SEQUENCE",
              "GUIDED_STAGES",
              "BUNDLE_SECTIONS",
              "MEASURED_QUANTITY",
              "OPEN_PRICE_ENTRY",
              "PREORDER_PACKAGE",
              "CUSTOM_POLICY"
            ],
            "description": "Допустимые значения `itemStructureExecutionMode`: DIRECT_ITEM, SELLABLE_VERSION, COMPONENT_GROUPS, COURSE_SEQUENCE, GUIDED_STAGES, BUNDLE_SECTIONS, MEASURED_QUANTITY, OPEN_PRICE_ENTRY, PREORDER_PACKAGE, CUSTOM_POLICY.",
            "example": "DIRECT_ITEM"
          },
          "effectiveExecutionMode": {
            "type": "string",
            "enum": [
              "DIRECT_ITEM",
              "SELLABLE_VERSION",
              "COMPONENT_GROUPS",
              "COURSE_SEQUENCE",
              "GUIDED_STAGES",
              "BUNDLE_SECTIONS",
              "MEASURED_QUANTITY",
              "OPEN_PRICE_ENTRY",
              "PREORDER_PACKAGE",
              "CUSTOM_POLICY"
            ],
            "description": "Допустимые значения `effectiveExecutionMode`: DIRECT_ITEM, SELLABLE_VERSION, COMPONENT_GROUPS, COURSE_SEQUENCE, GUIDED_STAGES, BUNDLE_SECTIONS, MEASURED_QUANTITY, OPEN_PRICE_ENTRY, PREORDER_PACKAGE, CUSTOM_POLICY.",
            "example": "DIRECT_ITEM"
          },
          "quantity": {
            "type": "integer",
            "minimum": 0,
            "description": "Целое количество `quantity` в единице измерения содержащей его позиции или строки. Ограничения: минимум 0.",
            "example": 1
          },
          "billableQuantity": {
            "type": "integer",
            "minimum": 0,
            "description": "Целое количество `billableQuantity` в единице измерения содержащей его позиции или строки. Ограничения: минимум 0.",
            "example": 1
          },
          "unitPrice": {
            "type": "string",
            "pattern": "^\\d+\\.\\d{2}$",
            "description": "Десятичная денежная величина `unitPrice`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
            "example": "1.00"
          },
          "totalAmount": {
            "type": "string",
            "pattern": "^\\d+\\.\\d{2}$",
            "description": "Десятичная денежная величина `totalAmount`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
            "example": "1.00"
          },
          "specialRequest": {
            "type": "string",
            "nullable": true,
            "description": "Особое пожелание `specialRequest`. Null означает отсутствие записанного значения в этом представлении.",
            "example": "example"
          },
          "serviceFlags": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "example"
            },
            "description": "Коллекция `serviceFlags` в составе представления.",
            "example": [
              "example"
            ]
          },
          "allergenCodes": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "EXAMPLE"
            },
            "description": "Коллекция `allergenCodes` в составе представления.",
            "example": [
              "EXAMPLE"
            ]
          },
          "kitchenStatus": {
            "type": "string",
            "example": "PENDING",
            "description": "Текущий статус жизненного цикла `kitchenStatus`."
          },
          "modifiers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "optionId": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true,
                  "description": "UUID Hallify для `optionId`. Null означает отсутствие записанного значения в этом представлении.",
                  "example": "c3152e09-81b4-4a57-8893-2eca47cc44e8"
                },
                "groupName": {
                  "type": "string",
                  "description": "Понятное человеку значение `groupName`.",
                  "example": "Example name"
                },
                "optionName": {
                  "type": "string",
                  "description": "Понятное человеку значение `optionName`.",
                  "example": "Example name"
                },
                "priceDelta": {
                  "type": "string",
                  "pattern": "^\\d+\\.\\d{2}$",
                  "description": "Десятичная денежная величина `priceDelta`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
                  "example": "1.00"
                },
                "allergenCodes": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "example": "EXAMPLE"
                  },
                  "description": "Коллекция `allergenCodes` в составе представления.",
                  "example": [
                    "EXAMPLE"
                  ]
                }
              },
              "required": [
                "optionId",
                "groupName",
                "optionName",
                "priceDelta",
                "allergenCodes"
              ],
              "example": {
                "optionId": null,
                "groupName": "Example name",
                "optionName": "Example name",
                "priceDelta": "1.00",
                "allergenCodes": [
                  "EXAMPLE"
                ]
              }
            },
            "description": "Коллекция `modifiers` в составе представления.",
            "example": [
              {
                "optionId": null,
                "groupName": "Example name",
                "optionName": "Example name",
                "priceDelta": "1.00",
                "allergenCodes": [
                  "EXAMPLE"
                ]
              }
            ]
          },
          "components": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "UUID Hallify для `id`.",
                  "example": "cada95b5-09b4-4bdd-8379-2e6df6ee6198"
                },
                "operationalRole": {
                  "type": "string",
                  "enum": [
                    "GUEST_SELECTION",
                    "ASSEMBLY"
                  ],
                  "description": "Допустимые значения `operationalRole`: GUEST_SELECTION, ASSEMBLY.",
                  "example": "GUEST_SELECTION"
                },
                "name": {
                  "type": "string",
                  "description": "Понятное человеку значение `name`.",
                  "example": "Example name"
                },
                "menuVariantId": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true,
                  "description": "UUID Hallify для `menuVariantId`. Null означает отсутствие записанного значения в этом представлении.",
                  "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
                },
                "quantity": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Целое количество `quantity` в единице измерения содержащей его позиции или строки. Ограничения: минимум 0.",
                  "example": 1
                },
                "componentGroupId": {
                  "type": "string",
                  "description": "Непрозрачный идентификатор `componentGroupId`; клиент не должен предполагать формат UUID.",
                  "example": "example-id"
                },
                "componentGroupName": {
                  "type": "string",
                  "description": "Понятное человеку значение `componentGroupName`.",
                  "example": "Example name"
                },
                "componentChoiceId": {
                  "type": "string",
                  "description": "Непрозрачный идентификатор `componentChoiceId`; клиент не должен предполагать формат UUID.",
                  "example": "example-id"
                },
                "componentQuantity": {
                  "type": "number",
                  "minimum": 0,
                  "description": "Количество `componentQuantity`, допускающее дроби, в единице измерения содержащей его позиции или строки. Ограничения: минимум 0.",
                  "example": 1
                },
                "componentUpcharge": {
                  "type": "string",
                  "pattern": "^\\d+\\.\\d{2}$",
                  "description": "Десятичная денежная величина `componentUpcharge`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
                  "example": "1.00"
                },
                "componentIsDefault": {
                  "type": "boolean",
                  "description": "Выбирается ли компонент по умолчанию при создании новой конфигурации позиции.",
                  "example": true
                },
                "kitchenStatus": {
                  "type": "string",
                  "example": "PENDING",
                  "description": "Текущий статус жизненного цикла `kitchenStatus`."
                },
                "modifiers": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "optionId": {
                        "type": "string",
                        "format": "uuid",
                        "nullable": true,
                        "description": "UUID Hallify для `optionId`. Null означает отсутствие записанного значения в этом представлении.",
                        "example": "c3152e09-81b4-4a57-8893-2eca47cc44e8"
                      },
                      "groupName": {
                        "type": "string",
                        "description": "Понятное человеку значение `groupName`.",
                        "example": "Example name"
                      },
                      "optionName": {
                        "type": "string",
                        "description": "Понятное человеку значение `optionName`.",
                        "example": "Example name"
                      },
                      "priceDelta": {
                        "type": "string",
                        "pattern": "^\\d+\\.\\d{2}$",
                        "description": "Десятичная денежная величина `priceDelta`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
                        "example": "1.00"
                      },
                      "allergenCodes": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "example": "EXAMPLE"
                        },
                        "description": "Коллекция `allergenCodes` в составе представления.",
                        "example": [
                          "EXAMPLE"
                        ]
                      }
                    },
                    "required": [
                      "optionId",
                      "groupName",
                      "optionName",
                      "priceDelta",
                      "allergenCodes"
                    ],
                    "example": {
                      "optionId": null,
                      "groupName": "Example name",
                      "optionName": "Example name",
                      "priceDelta": "1.00",
                      "allergenCodes": [
                        "EXAMPLE"
                      ]
                    }
                  },
                  "description": "Коллекция `modifiers` в составе представления.",
                  "example": [
                    {
                      "optionId": null,
                      "groupName": "Example name",
                      "optionName": "Example name",
                      "priceDelta": "1.00",
                      "allergenCodes": [
                        "EXAMPLE"
                      ]
                    }
                  ]
                }
              },
              "required": [
                "id",
                "operationalRole",
                "name",
                "menuVariantId",
                "quantity",
                "componentGroupId",
                "componentGroupName",
                "componentChoiceId",
                "componentQuantity",
                "componentUpcharge",
                "componentIsDefault",
                "kitchenStatus",
                "modifiers"
              ],
              "example": {
                "id": "cada95b5-09b4-4bdd-8379-2e6df6ee6198",
                "operationalRole": "GUEST_SELECTION",
                "name": "Example name",
                "menuVariantId": null,
                "quantity": 1,
                "componentGroupId": "example-id",
                "componentGroupName": "Example name",
                "componentChoiceId": "example-id",
                "componentQuantity": 1,
                "componentUpcharge": "1.00",
                "componentIsDefault": true,
                "kitchenStatus": "PENDING",
                "modifiers": [
                  {
                    "optionId": null,
                    "groupName": "Example name",
                    "optionName": "Example name",
                    "priceDelta": "1.00",
                    "allergenCodes": [
                      "EXAMPLE"
                    ]
                  }
                ]
              }
            },
            "description": "Коллекция `components` в составе представления.",
            "example": [
              {
                "id": "cada95b5-09b4-4bdd-8379-2e6df6ee6198",
                "operationalRole": "GUEST_SELECTION",
                "name": "Example name",
                "menuVariantId": null,
                "quantity": 1,
                "componentGroupId": "example-id",
                "componentGroupName": "Example name",
                "componentChoiceId": "example-id",
                "componentQuantity": 1,
                "componentUpcharge": "1.00",
                "componentIsDefault": true,
                "kitchenStatus": "PENDING",
                "modifiers": [
                  {
                    "optionId": null,
                    "groupName": "Example name",
                    "optionName": "Example name",
                    "priceDelta": "1.00",
                    "allergenCodes": [
                      "EXAMPLE"
                    ]
                  }
                ]
              }
            ]
          }
        },
        "required": [
          "clientLineId",
          "id",
          "menuVersionId",
          "salesChannelId",
          "menuItemId",
          "menuVariantId",
          "name",
          "rootItemStructureKind",
          "itemStructureExecutionMode",
          "effectiveExecutionMode",
          "quantity",
          "billableQuantity",
          "unitPrice",
          "totalAmount",
          "specialRequest",
          "serviceFlags",
          "allergenCodes",
          "kitchenStatus",
          "modifiers",
          "components"
        ],
        "example": {
          "clientLineId": "example-id",
          "id": "9122e965-4f99-4380-8392-2befd29097e7",
          "menuVersionId": null,
          "salesChannelId": null,
          "menuItemId": null,
          "menuVariantId": null,
          "name": "Example name",
          "rootItemStructureKind": "SINGLE_ITEM",
          "itemStructureExecutionMode": "DIRECT_ITEM",
          "effectiveExecutionMode": "DIRECT_ITEM",
          "quantity": 1,
          "billableQuantity": 1,
          "unitPrice": "1.00",
          "totalAmount": "1.00",
          "specialRequest": null,
          "serviceFlags": [
            "example"
          ],
          "allergenCodes": [
            "EXAMPLE"
          ],
          "kitchenStatus": "PENDING",
          "modifiers": [
            {
              "optionId": null,
              "groupName": "Example name",
              "optionName": "Example name",
              "priceDelta": "1.00",
              "allergenCodes": [
                "EXAMPLE"
              ]
            }
          ],
          "components": [
            {
              "id": "cada95b5-09b4-4bdd-8379-2e6df6ee6198",
              "operationalRole": "GUEST_SELECTION",
              "name": "Example name",
              "menuVariantId": null,
              "quantity": 1,
              "componentGroupId": "example-id",
              "componentGroupName": "Example name",
              "componentChoiceId": "example-id",
              "componentQuantity": 1,
              "componentUpcharge": "1.00",
              "componentIsDefault": true,
              "kitchenStatus": "PENDING",
              "modifiers": [
                {
                  "optionId": null,
                  "groupName": "Example name",
                  "optionName": "Example name",
                  "priceDelta": "1.00",
                  "allergenCodes": [
                    "EXAMPLE"
                  ]
                }
              ]
            }
          ]
        }
      },
      "description": "Коллекция `items` в составе представления.",
      "example": [
        {
          "clientLineId": "example-id",
          "id": "9122e965-4f99-4380-8392-2befd29097e7",
          "menuVersionId": null,
          "salesChannelId": null,
          "menuItemId": null,
          "menuVariantId": null,
          "name": "Example name",
          "rootItemStructureKind": "SINGLE_ITEM",
          "itemStructureExecutionMode": "DIRECT_ITEM",
          "effectiveExecutionMode": "DIRECT_ITEM",
          "quantity": 1,
          "billableQuantity": 1,
          "unitPrice": "1.00",
          "totalAmount": "1.00",
          "specialRequest": null,
          "serviceFlags": [
            "example"
          ],
          "allergenCodes": [
            "EXAMPLE"
          ],
          "kitchenStatus": "PENDING",
          "modifiers": [
            {
              "optionId": null,
              "groupName": "Example name",
              "optionName": "Example name",
              "priceDelta": "1.00",
              "allergenCodes": [
                "EXAMPLE"
              ]
            }
          ],
          "components": [
            {
              "id": "cada95b5-09b4-4bdd-8379-2e6df6ee6198",
              "operationalRole": "GUEST_SELECTION",
              "name": "Example name",
              "menuVariantId": null,
              "quantity": 1,
              "componentGroupId": "example-id",
              "componentGroupName": "Example name",
              "componentChoiceId": "example-id",
              "componentQuantity": 1,
              "componentUpcharge": "1.00",
              "componentIsDefault": true,
              "kitchenStatus": "PENDING",
              "modifiers": [
                {
                  "optionId": null,
                  "groupName": "Example name",
                  "optionName": "Example name",
                  "priceDelta": "1.00",
                  "allergenCodes": [
                    "EXAMPLE"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "allowedActions": {
      "type": "object",
      "properties": {
        "cancel": {
          "type": "boolean",
          "description": "Может ли вызывающая сторона отменить заказ; false означает недоступность действия в текущем состоянии и контексте прав.",
          "example": true
        },
        "reschedule": {
          "type": "boolean",
          "description": "Может ли вызывающая сторона перенести заказ; false означает недоступность действия в текущем состоянии и контексте прав.",
          "example": true
        },
        "changeRequest": {
          "type": "boolean",
          "description": "Может ли вызывающая сторона изменить запрос; false означает недоступность действия в текущем состоянии и контексте прав.",
          "example": true
        }
      },
      "required": [
        "cancel",
        "reschedule",
        "changeRequest"
      ],
      "description": "Вложенные сведения `allowedActions`; состав полей указан в схеме.",
      "example": {
        "cancel": true,
        "reschedule": true,
        "changeRequest": true
      }
    },
    "generatedAt": {
      "type": "string",
      "format": "date-time",
      "description": "Время `generatedAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
      "example": "2026-01-15T12:00:00.000Z"
    }
  },
  "required": [
    "fulfillmentId",
    "orderId",
    "revision",
    "status",
    "serviceMode",
    "partySize",
    "scheduledFor",
    "venue",
    "channel",
    "contact",
    "deposit",
    "delivery",
    "items",
    "allowedActions",
    "generatedAt"
  ],
  "example": {
    "fulfillmentId": "0a81282f-ea3b-40be-8ef7-4ad39e32ea88",
    "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
    "revision": 1,
    "status": "DRAFT",
    "serviceMode": "DINE_IN",
    "partySize": 1,
    "scheduledFor": "2026-01-15T12:00:00.000Z",
    "venue": {
      "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
      "name": "Example name",
      "timeZone": "Asia/Tbilisi"
    },
    "channel": {
      "publicHandle": "example",
      "salesChannelId": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc",
      "termsVersion": "example",
      "privacyVersion": "example"
    },
    "contact": null,
    "deposit": {
      "status": "NOT_REQUIRED",
      "requiredAmount": "1.00",
      "paidAmount": "1.00",
      "dueAt": null
    },
    "delivery": {
      "zoneId": null,
      "feeAmount": "1.00"
    },
    "items": [
      {
        "clientLineId": "example-id",
        "id": "9122e965-4f99-4380-8392-2befd29097e7",
        "menuVersionId": null,
        "salesChannelId": null,
        "menuItemId": null,
        "menuVariantId": null,
        "name": "Example name",
        "rootItemStructureKind": "SINGLE_ITEM",
        "itemStructureExecutionMode": "DIRECT_ITEM",
        "effectiveExecutionMode": "DIRECT_ITEM",
        "quantity": 1,
        "billableQuantity": 1,
        "unitPrice": "1.00",
        "totalAmount": "1.00",
        "specialRequest": null,
        "serviceFlags": [
          "example"
        ],
        "allergenCodes": [
          "EXAMPLE"
        ],
        "kitchenStatus": "PENDING",
        "modifiers": [
          {
            "optionId": null,
            "groupName": "Example name",
            "optionName": "Example name",
            "priceDelta": "1.00",
            "allergenCodes": [
              "EXAMPLE"
            ]
          }
        ],
        "components": [
          {
            "id": "cada95b5-09b4-4bdd-8379-2e6df6ee6198",
            "operationalRole": "GUEST_SELECTION",
            "name": "Example name",
            "menuVariantId": null,
            "quantity": 1,
            "componentGroupId": "example-id",
            "componentGroupName": "Example name",
            "componentChoiceId": "example-id",
            "componentQuantity": 1,
            "componentUpcharge": "1.00",
            "componentIsDefault": true,
            "kitchenStatus": "PENDING",
            "modifiers": [
              {
                "optionId": null,
                "groupName": "Example name",
                "optionName": "Example name",
                "priceDelta": "1.00",
                "allergenCodes": [
                  "EXAMPLE"
                ]
              }
            ]
          }
        ]
      }
    ],
    "allowedActions": {
      "cancel": true,
      "reschedule": true,
      "changeRequest": true
    },
    "generatedAt": "2026-01-15T12:00:00.000Z"
  }
}
hasVerifiedSourceОбязательно

Сохранённое подтверждение исходного источника доступно для чтения. Этот признак не предоставляет прав управления, оплаты или доступа к счёту; для нативного входа по-прежнему нужны новый целевой proof и текущий допуск.

boolean
Полное определение
{
  "type": "boolean",
  "description": "Сохранённое подтверждение исходного источника доступно для чтения. Этот признак не предоставляет прав управления, оплаты или доступа к счёту; для нативного входа по-прежнему нужны новый целевой proof и текущий допуск.",
  "example": true
}
Полное определение
{
  "type": "object",
  "description": "История предзаказа после проверки контакта с канонической нативной проекцией только для чтения.",
  "required": [
    "summary",
    "currency",
    "native",
    "hasVerifiedSource"
  ],
  "properties": {
    "summary": {
      "type": "object",
      "description": "Принадлежащая гостю сводка нативной истории без прав управления или оплаты.",
      "required": [
        "id",
        "type",
        "status",
        "occurredAt",
        "partySize"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "UUID нативного ресурса либо UUID исходной association для QR-визита.",
          "example": "2d986aef-c54e-477a-8d90-0a0909ab3b3a"
        },
        "type": {
          "type": "string",
          "description": "Вид нативного источника; вместе с UUID определяет одну строку истории.",
          "enum": [
            "RESERVATION",
            "WAITLIST",
            "PREORDER",
            "QR_VISIT",
            "VISIT",
            "ORDER"
          ],
          "example": "RESERVATION"
        },
        "status": {
          "type": "string",
          "description": "Текущий статус жизненного цикла, предоставленный нативным доменом-владельцем.",
          "example": "example"
        },
        "occurredAt": {
          "type": "string",
          "format": "date-time",
          "description": "Нативное время события для сортировки истории по убыванию.",
          "example": "2026-01-15T12:00:00.000Z"
        },
        "completedAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true,
          "description": "Нативное время завершения при наличии либо null.",
          "example": "2026-01-15T13:00:00.000Z"
        },
        "partySize": {
          "type": "integer",
          "description": "Число гостей, возвращённое нативным источником.",
          "example": 0
        },
        "reference": {
          "type": "string",
          "nullable": true,
          "description": "Нативный код для гостя при наличии либо null.",
          "example": "example-reference"
        }
      },
      "example": {
        "id": "2d986aef-c54e-477a-8d90-0a0909ab3b3a",
        "type": "RESERVATION",
        "status": "example",
        "occurredAt": "2026-01-15T12:00:00.000Z",
        "partySize": 0
      }
    },
    "currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$",
      "description": "Зафиксированная валюта исполнения; текущие настройки заведения не используются.",
      "example": "GEL"
    },
    "native": {
      "nullable": true,
      "description": "Каноническая нативная проекция со всеми отключёнными действиями управления либо null для старых или недоступных сохранённых прав. Нативный bearer не возвращается.",
      "type": "object",
      "properties": {
        "paymentActorReference": {
          "type": "string",
          "nullable": true,
          "pattern": "^[a-f0-9]{64}$",
          "minLength": 64,
          "maxLength": 64,
          "description": "Несекретный стабильный раздел платёжного UI для этого нативного actor и fulfillment. Присутствует только для проверенного исходного публичного EXCHANGE и линии первоначального принятия CREATE. Не является токеном или платёжным полномочием; при отсутствии или недоказуемой линии возвращается null.",
          "example": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
        },
        "fulfillmentId": {
          "type": "string",
          "format": "uuid",
          "description": "UUID Hallify для `fulfillmentId`.",
          "example": "0a81282f-ea3b-40be-8ef7-4ad39e32ea88"
        },
        "orderId": {
          "type": "string",
          "format": "uuid",
          "description": "UUID Hallify для `orderId`.",
          "example": "f3127edf-ce4f-4da7-8be5-81b962024e6c"
        },
        "revision": {
          "type": "integer",
          "minimum": 1,
          "description": "Монотонно возрастающая ревизия `revision` для оптимистичного контроля конкурентных изменений. Ограничения: минимум 1.",
          "example": 1
        },
        "status": {
          "type": "string",
          "enum": [
            "DRAFT",
            "HELD",
            "CONFIRMED",
            "IN_PREPARATION",
            "READY_FOR_HANDOFF",
            "OUT_FOR_DELIVERY",
            "COMPLETED",
            "CANCELED",
            "EXPIRED"
          ],
          "description": "Текущий статус жизненного цикла `status`; допустимые значения: DRAFT, HELD, CONFIRMED, IN_PREPARATION, READY_FOR_HANDOFF, OUT_FOR_DELIVERY, COMPLETED, CANCELED, EXPIRED.",
          "example": "DRAFT"
        },
        "serviceMode": {
          "type": "string",
          "enum": [
            "DINE_IN",
            "PICKUP",
            "DELIVERY",
            "CATERING"
          ],
          "description": "Допустимые значения `serviceMode`: DINE_IN, PICKUP, DELIVERY, CATERING.",
          "example": "DINE_IN"
        },
        "partySize": {
          "type": "integer",
          "minimum": 1,
          "description": "Целочисленное значение `partySize`. Ограничения: минимум 1.",
          "example": 1
        },
        "scheduledFor": {
          "type": "string",
          "format": "date-time",
          "description": "Время `scheduledFor` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
          "example": "2026-01-15T12:00:00.000Z"
        },
        "timingMode": {
          "type": "string",
          "enum": [
            "ASAP",
            "SCHEDULED"
          ],
          "description": "Явный клиентский выбор времени, связанный с сохранённым нативным черновиком, quote или заказом. У legacy scheduled записей отсутствует.",
          "example": "ASAP"
        },
        "venue": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "format": "uuid",
              "description": "UUID Hallify для `id`.",
              "example": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0"
            },
            "name": {
              "type": "string",
              "description": "Понятное человеку значение `name`.",
              "example": "Example name"
            },
            "timeZone": {
              "type": "string",
              "description": "Идентификатор часового пояса IANA в `timeZone` для трактовки местных дат и времени заведения.",
              "example": "Asia/Tbilisi"
            }
          },
          "required": [
            "id",
            "name",
            "timeZone"
          ],
          "description": "Вложенные сведения `venue`; состав полей указан в схеме.",
          "example": {
            "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
            "name": "Example name",
            "timeZone": "Asia/Tbilisi"
          }
        },
        "channel": {
          "type": "object",
          "properties": {
            "publicHandle": {
              "type": "string",
              "description": "Публичный идентификатор канала `publicHandle`.",
              "example": "example"
            },
            "salesChannelId": {
              "type": "string",
              "format": "uuid",
              "description": "UUID Hallify для `salesChannelId`.",
              "example": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"
            },
            "termsVersion": {
              "type": "string",
              "description": "Версия условий `termsVersion`.",
              "example": "example"
            },
            "privacyVersion": {
              "type": "string",
              "description": "Версия уведомления о персональных данных `privacyVersion`.",
              "example": "example"
            }
          },
          "required": [
            "publicHandle",
            "salesChannelId",
            "termsVersion",
            "privacyVersion"
          ],
          "description": "Вложенные сведения `channel`; состав полей указан в схеме.",
          "example": {
            "publicHandle": "example",
            "salesChannelId": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc",
            "termsVersion": "example",
            "privacyVersion": "example"
          }
        },
        "contact": {
          "type": "object",
          "nullable": true,
          "properties": {
            "contactName": {
              "type": "string",
              "description": "Понятное человеку значение `contactName`.",
              "example": "Example name"
            },
            "contactPhone": {
              "type": "string",
              "nullable": true,
              "description": "Номер телефона `contactPhone`. Null означает отсутствие записанного значения в этом представлении.",
              "example": "+995555000000"
            },
            "contactEmail": {
              "type": "string",
              "nullable": true,
              "description": "Адрес электронной почты `contactEmail`. Null означает отсутствие записанного значения в этом представлении.",
              "format": "email",
              "example": "user@example.test"
            },
            "addressLine1": {
              "type": "string",
              "nullable": true,
              "description": "Основная строка почтового адреса `addressLine1`. Null означает отсутствие записанного значения в этом представлении.",
              "example": "example"
            },
            "addressLine2": {
              "type": "string",
              "nullable": true,
              "description": "Необязательные дополнительные сведения адреса `addressLine2`: помещение, этаж или корпус. Null означает отсутствие записанного значения в этом представлении.",
              "example": "example"
            },
            "city": {
              "type": "string",
              "nullable": true,
              "description": "Город или населённый пункт адреса `city`. Null означает отсутствие записанного значения в этом представлении.",
              "example": "example"
            },
            "region": {
              "type": "string",
              "nullable": true,
              "description": "Регион, штат или административная единица `region`. Null означает отсутствие записанного значения в этом представлении.",
              "example": "example"
            },
            "postalCode": {
              "type": "string",
              "nullable": true,
              "description": "Стабильный код `postalCode` для классификации или идентификации. Null означает отсутствие записанного значения в этом представлении.",
              "example": "EXAMPLE"
            },
            "countryCode": {
              "type": "string",
              "nullable": true,
              "description": "Стабильный код `countryCode` для классификации или идентификации. Null означает отсутствие записанного значения в этом представлении.",
              "example": "GE"
            },
            "administrativeDivisionId": {
              "type": "string",
              "format": "uuid",
              "nullable": true,
              "description": "UUID Hallify для `administrativeDivisionId`. Null означает отсутствие записанного значения в этом представлении.",
              "example": "c8efbc76-614d-4a79-8f15-db6d48283d46"
            },
            "localityId": {
              "type": "string",
              "format": "uuid",
              "nullable": true,
              "description": "UUID Hallify для `localityId`. Null означает отсутствие записанного значения в этом представлении.",
              "example": "1bfa5864-39f3-4647-8093-42aea5d9d046"
            },
            "postalCodeId": {
              "type": "string",
              "format": "uuid",
              "nullable": true,
              "description": "UUID Hallify для `postalCodeId`. Null означает отсутствие записанного значения в этом представлении.",
              "example": "7424d59b-d459-4e7b-8cbc-7f5222274f26"
            },
            "latitude": {
              "type": "number",
              "nullable": true,
              "description": "Числовое значение `latitude`, допускающее дроби. Null означает отсутствие записанного значения в этом представлении.",
              "example": 41.7151
            },
            "longitude": {
              "type": "number",
              "nullable": true,
              "description": "Числовое значение `longitude`, допускающее дроби. Null означает отсутствие записанного значения в этом представлении.",
              "example": 44.8271
            },
            "coordinateSource": {
              "type": "string",
              "nullable": true,
              "enum": [
                "STAFF",
                "EXTERNAL_CLIENT",
                "GEOREFERENCE_CENTROID",
                null
              ],
              "description": "Допустимые значения `coordinateSource`: STAFF, EXTERNAL_CLIENT, GEOREFERENCE_CENTROID. Null означает отсутствие записанного значения в этом представлении.",
              "example": "STAFF"
            },
            "coordinateAccuracy": {
              "type": "integer",
              "minimum": 0,
              "maximum": 10,
              "nullable": true,
              "description": "Целочисленное значение `coordinateAccuracy`. Ограничения: минимум 0; максимум 10. Null означает отсутствие записанного значения в этом представлении.",
              "example": 0
            },
            "deliveryInstructions": {
              "type": "string",
              "nullable": true,
              "description": "Указания для доставки `deliveryInstructions`. Null означает отсутствие записанного значения в этом представлении.",
              "example": "example"
            }
          },
          "required": [
            "contactName",
            "contactPhone",
            "contactEmail",
            "addressLine1",
            "addressLine2",
            "city",
            "region",
            "postalCode",
            "countryCode",
            "administrativeDivisionId",
            "localityId",
            "postalCodeId",
            "latitude",
            "longitude",
            "coordinateSource",
            "coordinateAccuracy",
            "deliveryInstructions"
          ],
          "description": "Вложенные сведения `contact`; состав полей указан в схеме. Null означает отсутствие записанного значения в этом представлении.",
          "example": {
            "contactName": "Example name",
            "contactPhone": null,
            "contactEmail": null,
            "addressLine1": null,
            "addressLine2": null,
            "city": null,
            "region": null,
            "postalCode": null,
            "countryCode": null,
            "administrativeDivisionId": null,
            "localityId": null,
            "postalCodeId": null,
            "latitude": null,
            "longitude": null,
            "coordinateSource": null,
            "coordinateAccuracy": null,
            "deliveryInstructions": null
          }
        },
        "deposit": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string",
              "enum": [
                "NOT_REQUIRED",
                "REQUIRED",
                "PARTIALLY_PAID",
                "PAID",
                "OVERDUE"
              ],
              "description": "Текущий статус жизненного цикла `status`; допустимые значения: NOT_REQUIRED, REQUIRED, PARTIALLY_PAID, PAID, OVERDUE.",
              "example": "NOT_REQUIRED"
            },
            "requiredAmount": {
              "type": "string",
              "pattern": "^\\d+\\.\\d{2}$",
              "description": "Десятичная денежная величина `requiredAmount`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
              "example": "1.00"
            },
            "paidAmount": {
              "type": "string",
              "pattern": "^\\d+\\.\\d{2}$",
              "description": "Десятичная денежная величина `paidAmount`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
              "example": "1.00"
            },
            "dueAt": {
              "type": "string",
              "format": "date-time",
              "nullable": true,
              "description": "Время `dueAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент. Null означает отсутствие записанного значения в этом представлении.",
              "example": "2026-12-31T18:00:00.000Z"
            }
          },
          "required": [
            "status",
            "requiredAmount",
            "paidAmount",
            "dueAt"
          ],
          "description": "Вложенные сведения `deposit`; состав полей указан в схеме.",
          "example": {
            "status": "NOT_REQUIRED",
            "requiredAmount": "1.00",
            "paidAmount": "1.00",
            "dueAt": null
          }
        },
        "delivery": {
          "type": "object",
          "properties": {
            "zoneId": {
              "type": "string",
              "format": "uuid",
              "nullable": true,
              "description": "UUID Hallify для `zoneId`. Null означает отсутствие записанного значения в этом представлении.",
              "example": "f6864a47-6a06-4534-8879-1bfd5a7ed49b"
            },
            "feeAmount": {
              "type": "string",
              "pattern": "^\\d+\\.\\d{2}$",
              "description": "Десятичная денежная величина `feeAmount`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
              "example": "1.00"
            },
            "method": {
              "type": "string",
              "enum": [
                "SELF",
                "UBER_DIRECT",
                "WOLT_DRIVE"
              ],
              "description": "Неизменяемый способ доставки из текущего принятого клиентского предложения, доступный ещё до вызова курьера. Отсутствует для старых заказов без принятой пары предложений, где способом доставки является SELF.",
              "example": "SELF"
            },
            "tracking": {
              "type": "object",
              "nullable": true,
              "description": "Подтверждённый ход доставки курьером для текущей принятой пары клиентских предложений либо null до появления отправления. Этот статус независим от жизненного цикла самого заказа и депозита.",
              "properties": {
                "shipmentId": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Курьерское отправление, принадлежащее текущей принятой паре предложений.",
                  "example": "107f0aae-41ba-4259-84aa-b07de763733f"
                },
                "revision": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Монотонно возрастающая ревизия представления курьерской доставки.",
                  "example": 1
                },
                "provider": {
                  "type": "string",
                  "enum": [
                    "UBER_DIRECT",
                    "WOLT_DRIVE"
                  ],
                  "description": "Курьерская служба, зафиксированная в принятом запросе на доставку.",
                  "example": "UBER_DIRECT"
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "PREPARED",
                    "DISPATCHING",
                    "UNKNOWN",
                    "CONFIRMED",
                    "PICKUP_STARTED",
                    "PICKED_UP",
                    "IN_TRANSIT",
                    "DELIVERED",
                    "CANCELED",
                    "NOT_DELIVERED",
                    "RETURNING",
                    "RETURNED",
                    "REJECTED",
                    "RECONCILIATION_REQUIRED"
                  ],
                  "description": "Подтверждённый жизненный цикл курьерской доставки, включая явные состояния неопределённости и сверки.",
                  "example": "PREPARED"
                },
                "trackingUrl": {
                  "type": "string",
                  "nullable": true,
                  "format": "uri",
                  "maxLength": 2048,
                  "description": "Проверенная HTTPS-ссылка для отслеживания либо null, если она недоступна или скрыта действующими правилами приватности.",
                  "example": "https://example.test/resource"
                },
                "pickupEta": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "Последняя оценка времени забора заказа провайдером как момент времени UTC либо null.",
                  "example": "2026-01-15T12:00:00.000Z"
                },
                "dropoffEtaMin": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "Самая ранняя оценка времени вручения заказа провайдером как момент времени UTC либо null.",
                  "example": "2026-01-15T12:00:00.000Z"
                },
                "dropoffEtaMax": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "Самая поздняя оценка времени вручения заказа провайдером как момент времени UTC либо null.",
                  "example": "2026-01-15T12:00:00.000Z"
                },
                "requiresAttention": {
                  "type": "boolean",
                  "description": "Данные курьера или применение результата к заказу требуют внимания персонала; это не даёт полномочий на оплату или отмену самого заказа.",
                  "example": true
                }
              },
              "required": [
                "shipmentId",
                "revision",
                "provider",
                "state",
                "trackingUrl",
                "pickupEta",
                "dropoffEtaMin",
                "dropoffEtaMax",
                "requiresAttention"
              ],
              "example": {
                "shipmentId": "107f0aae-41ba-4259-84aa-b07de763733f",
                "revision": 1,
                "provider": "UBER_DIRECT",
                "state": "PREPARED",
                "trackingUrl": null,
                "pickupEta": null,
                "dropoffEtaMin": null,
                "dropoffEtaMax": null,
                "requiresAttention": true
              }
            }
          },
          "required": [
            "zoneId",
            "feeAmount"
          ],
          "description": "Вложенные сведения `delivery`; состав полей указан в схеме.",
          "example": {
            "zoneId": null,
            "feeAmount": "1.00"
          }
        },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "clientLineId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80,
                "description": "Непрозрачный идентификатор `clientLineId`; клиент не должен предполагать формат UUID. Ограничения: минимальная длина 1; максимальная длина 80.",
                "example": "example-id"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "UUID Hallify для `id`.",
                "example": "9122e965-4f99-4380-8392-2befd29097e7"
              },
              "menuVersionId": {
                "type": "string",
                "format": "uuid",
                "nullable": true,
                "description": "UUID Hallify для `menuVersionId`. Null означает отсутствие записанного значения в этом представлении.",
                "example": "490ccfcb-caa6-472e-836a-a8416e8cee92"
              },
              "salesChannelId": {
                "type": "string",
                "format": "uuid",
                "nullable": true,
                "description": "UUID Hallify для `salesChannelId`. Null означает отсутствие записанного значения в этом представлении.",
                "example": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc"
              },
              "menuItemId": {
                "type": "string",
                "format": "uuid",
                "nullable": true,
                "description": "UUID Hallify для `menuItemId`. Null означает отсутствие записанного значения в этом представлении.",
                "example": "16ee6f36-c0cb-4311-85e8-2d2b3edea0fd"
              },
              "menuVariantId": {
                "type": "string",
                "format": "uuid",
                "nullable": true,
                "description": "UUID Hallify для `menuVariantId`. Null означает отсутствие записанного значения в этом представлении.",
                "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
              },
              "name": {
                "type": "string",
                "description": "Понятное человеку значение `name`.",
                "example": "Example name"
              },
              "rootItemStructureKind": {
                "type": "string",
                "enum": [
                  "SINGLE_ITEM",
                  "SIZED_PORTIONED",
                  "COMBO_MEAL_DEAL",
                  "FIXED_PRICE_COURSE_MENU",
                  "BUILD_YOUR_OWN",
                  "BUNDLE_KIT",
                  "MEASURED",
                  "OPEN_PRICE",
                  "CATERING_PREORDER",
                  "CUSTOM"
                ],
                "description": "Допустимые значения `rootItemStructureKind`: SINGLE_ITEM, SIZED_PORTIONED, COMBO_MEAL_DEAL, FIXED_PRICE_COURSE_MENU, BUILD_YOUR_OWN, BUNDLE_KIT, MEASURED, OPEN_PRICE, CATERING_PREORDER, CUSTOM.",
                "example": "SINGLE_ITEM"
              },
              "itemStructureExecutionMode": {
                "type": "string",
                "enum": [
                  "DIRECT_ITEM",
                  "SELLABLE_VERSION",
                  "COMPONENT_GROUPS",
                  "COURSE_SEQUENCE",
                  "GUIDED_STAGES",
                  "BUNDLE_SECTIONS",
                  "MEASURED_QUANTITY",
                  "OPEN_PRICE_ENTRY",
                  "PREORDER_PACKAGE",
                  "CUSTOM_POLICY"
                ],
                "description": "Допустимые значения `itemStructureExecutionMode`: DIRECT_ITEM, SELLABLE_VERSION, COMPONENT_GROUPS, COURSE_SEQUENCE, GUIDED_STAGES, BUNDLE_SECTIONS, MEASURED_QUANTITY, OPEN_PRICE_ENTRY, PREORDER_PACKAGE, CUSTOM_POLICY.",
                "example": "DIRECT_ITEM"
              },
              "effectiveExecutionMode": {
                "type": "string",
                "enum": [
                  "DIRECT_ITEM",
                  "SELLABLE_VERSION",
                  "COMPONENT_GROUPS",
                  "COURSE_SEQUENCE",
                  "GUIDED_STAGES",
                  "BUNDLE_SECTIONS",
                  "MEASURED_QUANTITY",
                  "OPEN_PRICE_ENTRY",
                  "PREORDER_PACKAGE",
                  "CUSTOM_POLICY"
                ],
                "description": "Допустимые значения `effectiveExecutionMode`: DIRECT_ITEM, SELLABLE_VERSION, COMPONENT_GROUPS, COURSE_SEQUENCE, GUIDED_STAGES, BUNDLE_SECTIONS, MEASURED_QUANTITY, OPEN_PRICE_ENTRY, PREORDER_PACKAGE, CUSTOM_POLICY.",
                "example": "DIRECT_ITEM"
              },
              "quantity": {
                "type": "integer",
                "minimum": 0,
                "description": "Целое количество `quantity` в единице измерения содержащей его позиции или строки. Ограничения: минимум 0.",
                "example": 1
              },
              "billableQuantity": {
                "type": "integer",
                "minimum": 0,
                "description": "Целое количество `billableQuantity` в единице измерения содержащей его позиции или строки. Ограничения: минимум 0.",
                "example": 1
              },
              "unitPrice": {
                "type": "string",
                "pattern": "^\\d+\\.\\d{2}$",
                "description": "Десятичная денежная величина `unitPrice`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
                "example": "1.00"
              },
              "totalAmount": {
                "type": "string",
                "pattern": "^\\d+\\.\\d{2}$",
                "description": "Десятичная денежная величина `totalAmount`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
                "example": "1.00"
              },
              "specialRequest": {
                "type": "string",
                "nullable": true,
                "description": "Особое пожелание `specialRequest`. Null означает отсутствие записанного значения в этом представлении.",
                "example": "example"
              },
              "serviceFlags": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "example"
                },
                "description": "Коллекция `serviceFlags` в составе представления.",
                "example": [
                  "example"
                ]
              },
              "allergenCodes": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "EXAMPLE"
                },
                "description": "Коллекция `allergenCodes` в составе представления.",
                "example": [
                  "EXAMPLE"
                ]
              },
              "kitchenStatus": {
                "type": "string",
                "example": "PENDING",
                "description": "Текущий статус жизненного цикла `kitchenStatus`."
              },
              "modifiers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "optionId": {
                      "type": "string",
                      "format": "uuid",
                      "nullable": true,
                      "description": "UUID Hallify для `optionId`. Null означает отсутствие записанного значения в этом представлении.",
                      "example": "c3152e09-81b4-4a57-8893-2eca47cc44e8"
                    },
                    "groupName": {
                      "type": "string",
                      "description": "Понятное человеку значение `groupName`.",
                      "example": "Example name"
                    },
                    "optionName": {
                      "type": "string",
                      "description": "Понятное человеку значение `optionName`.",
                      "example": "Example name"
                    },
                    "priceDelta": {
                      "type": "string",
                      "pattern": "^\\d+\\.\\d{2}$",
                      "description": "Десятичная денежная величина `priceDelta`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
                      "example": "1.00"
                    },
                    "allergenCodes": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "example": "EXAMPLE"
                      },
                      "description": "Коллекция `allergenCodes` в составе представления.",
                      "example": [
                        "EXAMPLE"
                      ]
                    }
                  },
                  "required": [
                    "optionId",
                    "groupName",
                    "optionName",
                    "priceDelta",
                    "allergenCodes"
                  ],
                  "example": {
                    "optionId": null,
                    "groupName": "Example name",
                    "optionName": "Example name",
                    "priceDelta": "1.00",
                    "allergenCodes": [
                      "EXAMPLE"
                    ]
                  }
                },
                "description": "Коллекция `modifiers` в составе представления.",
                "example": [
                  {
                    "optionId": null,
                    "groupName": "Example name",
                    "optionName": "Example name",
                    "priceDelta": "1.00",
                    "allergenCodes": [
                      "EXAMPLE"
                    ]
                  }
                ]
              },
              "components": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "UUID Hallify для `id`.",
                      "example": "cada95b5-09b4-4bdd-8379-2e6df6ee6198"
                    },
                    "operationalRole": {
                      "type": "string",
                      "enum": [
                        "GUEST_SELECTION",
                        "ASSEMBLY"
                      ],
                      "description": "Допустимые значения `operationalRole`: GUEST_SELECTION, ASSEMBLY.",
                      "example": "GUEST_SELECTION"
                    },
                    "name": {
                      "type": "string",
                      "description": "Понятное человеку значение `name`.",
                      "example": "Example name"
                    },
                    "menuVariantId": {
                      "type": "string",
                      "format": "uuid",
                      "nullable": true,
                      "description": "UUID Hallify для `menuVariantId`. Null означает отсутствие записанного значения в этом представлении.",
                      "example": "94389946-e5d8-4fba-8358-e3a9c8a04b11"
                    },
                    "quantity": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Целое количество `quantity` в единице измерения содержащей его позиции или строки. Ограничения: минимум 0.",
                      "example": 1
                    },
                    "componentGroupId": {
                      "type": "string",
                      "description": "Непрозрачный идентификатор `componentGroupId`; клиент не должен предполагать формат UUID.",
                      "example": "example-id"
                    },
                    "componentGroupName": {
                      "type": "string",
                      "description": "Понятное человеку значение `componentGroupName`.",
                      "example": "Example name"
                    },
                    "componentChoiceId": {
                      "type": "string",
                      "description": "Непрозрачный идентификатор `componentChoiceId`; клиент не должен предполагать формат UUID.",
                      "example": "example-id"
                    },
                    "componentQuantity": {
                      "type": "number",
                      "minimum": 0,
                      "description": "Количество `componentQuantity`, допускающее дроби, в единице измерения содержащей его позиции или строки. Ограничения: минимум 0.",
                      "example": 1
                    },
                    "componentUpcharge": {
                      "type": "string",
                      "pattern": "^\\d+\\.\\d{2}$",
                      "description": "Десятичная денежная величина `componentUpcharge`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
                      "example": "1.00"
                    },
                    "componentIsDefault": {
                      "type": "boolean",
                      "description": "Выбирается ли компонент по умолчанию при создании новой конфигурации позиции.",
                      "example": true
                    },
                    "kitchenStatus": {
                      "type": "string",
                      "example": "PENDING",
                      "description": "Текущий статус жизненного цикла `kitchenStatus`."
                    },
                    "modifiers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "optionId": {
                            "type": "string",
                            "format": "uuid",
                            "nullable": true,
                            "description": "UUID Hallify для `optionId`. Null означает отсутствие записанного значения в этом представлении.",
                            "example": "c3152e09-81b4-4a57-8893-2eca47cc44e8"
                          },
                          "groupName": {
                            "type": "string",
                            "description": "Понятное человеку значение `groupName`.",
                            "example": "Example name"
                          },
                          "optionName": {
                            "type": "string",
                            "description": "Понятное человеку значение `optionName`.",
                            "example": "Example name"
                          },
                          "priceDelta": {
                            "type": "string",
                            "pattern": "^\\d+\\.\\d{2}$",
                            "description": "Десятичная денежная величина `priceDelta`, сериализованная строкой в валюте содержащего её финансового документа или правила. Ноль означает записанную сумму, а не отсутствие значения.",
                            "example": "1.00"
                          },
                          "allergenCodes": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "example": "EXAMPLE"
                            },
                            "description": "Коллекция `allergenCodes` в составе представления.",
                            "example": [
                              "EXAMPLE"
                            ]
                          }
                        },
                        "required": [
                          "optionId",
                          "groupName",
                          "optionName",
                          "priceDelta",
                          "allergenCodes"
                        ],
                        "example": {
                          "optionId": null,
                          "groupName": "Example name",
                          "optionName": "Example name",
                          "priceDelta": "1.00",
                          "allergenCodes": [
                            "EXAMPLE"
                          ]
                        }
                      },
                      "description": "Коллекция `modifiers` в составе представления.",
                      "example": [
                        {
                          "optionId": null,
                          "groupName": "Example name",
                          "optionName": "Example name",
                          "priceDelta": "1.00",
                          "allergenCodes": [
                            "EXAMPLE"
                          ]
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "operationalRole",
                    "name",
                    "menuVariantId",
                    "quantity",
                    "componentGroupId",
                    "componentGroupName",
                    "componentChoiceId",
                    "componentQuantity",
                    "componentUpcharge",
                    "componentIsDefault",
                    "kitchenStatus",
                    "modifiers"
                  ],
                  "example": {
                    "id": "cada95b5-09b4-4bdd-8379-2e6df6ee6198",
                    "operationalRole": "GUEST_SELECTION",
                    "name": "Example name",
                    "menuVariantId": null,
                    "quantity": 1,
                    "componentGroupId": "example-id",
                    "componentGroupName": "Example name",
                    "componentChoiceId": "example-id",
                    "componentQuantity": 1,
                    "componentUpcharge": "1.00",
                    "componentIsDefault": true,
                    "kitchenStatus": "PENDING",
                    "modifiers": [
                      {
                        "optionId": null,
                        "groupName": "Example name",
                        "optionName": "Example name",
                        "priceDelta": "1.00",
                        "allergenCodes": [
                          "EXAMPLE"
                        ]
                      }
                    ]
                  }
                },
                "description": "Коллекция `components` в составе представления.",
                "example": [
                  {
                    "id": "cada95b5-09b4-4bdd-8379-2e6df6ee6198",
                    "operationalRole": "GUEST_SELECTION",
                    "name": "Example name",
                    "menuVariantId": null,
                    "quantity": 1,
                    "componentGroupId": "example-id",
                    "componentGroupName": "Example name",
                    "componentChoiceId": "example-id",
                    "componentQuantity": 1,
                    "componentUpcharge": "1.00",
                    "componentIsDefault": true,
                    "kitchenStatus": "PENDING",
                    "modifiers": [
                      {
                        "optionId": null,
                        "groupName": "Example name",
                        "optionName": "Example name",
                        "priceDelta": "1.00",
                        "allergenCodes": [
                          "EXAMPLE"
                        ]
                      }
                    ]
                  }
                ]
              }
            },
            "required": [
              "clientLineId",
              "id",
              "menuVersionId",
              "salesChannelId",
              "menuItemId",
              "menuVariantId",
              "name",
              "rootItemStructureKind",
              "itemStructureExecutionMode",
              "effectiveExecutionMode",
              "quantity",
              "billableQuantity",
              "unitPrice",
              "totalAmount",
              "specialRequest",
              "serviceFlags",
              "allergenCodes",
              "kitchenStatus",
              "modifiers",
              "components"
            ],
            "example": {
              "clientLineId": "example-id",
              "id": "9122e965-4f99-4380-8392-2befd29097e7",
              "menuVersionId": null,
              "salesChannelId": null,
              "menuItemId": null,
              "menuVariantId": null,
              "name": "Example name",
              "rootItemStructureKind": "SINGLE_ITEM",
              "itemStructureExecutionMode": "DIRECT_ITEM",
              "effectiveExecutionMode": "DIRECT_ITEM",
              "quantity": 1,
              "billableQuantity": 1,
              "unitPrice": "1.00",
              "totalAmount": "1.00",
              "specialRequest": null,
              "serviceFlags": [
                "example"
              ],
              "allergenCodes": [
                "EXAMPLE"
              ],
              "kitchenStatus": "PENDING",
              "modifiers": [
                {
                  "optionId": null,
                  "groupName": "Example name",
                  "optionName": "Example name",
                  "priceDelta": "1.00",
                  "allergenCodes": [
                    "EXAMPLE"
                  ]
                }
              ],
              "components": [
                {
                  "id": "cada95b5-09b4-4bdd-8379-2e6df6ee6198",
                  "operationalRole": "GUEST_SELECTION",
                  "name": "Example name",
                  "menuVariantId": null,
                  "quantity": 1,
                  "componentGroupId": "example-id",
                  "componentGroupName": "Example name",
                  "componentChoiceId": "example-id",
                  "componentQuantity": 1,
                  "componentUpcharge": "1.00",
                  "componentIsDefault": true,
                  "kitchenStatus": "PENDING",
                  "modifiers": [
                    {
                      "optionId": null,
                      "groupName": "Example name",
                      "optionName": "Example name",
                      "priceDelta": "1.00",
                      "allergenCodes": [
                        "EXAMPLE"
                      ]
                    }
                  ]
                }
              ]
            }
          },
          "description": "Коллекция `items` в составе представления.",
          "example": [
            {
              "clientLineId": "example-id",
              "id": "9122e965-4f99-4380-8392-2befd29097e7",
              "menuVersionId": null,
              "salesChannelId": null,
              "menuItemId": null,
              "menuVariantId": null,
              "name": "Example name",
              "rootItemStructureKind": "SINGLE_ITEM",
              "itemStructureExecutionMode": "DIRECT_ITEM",
              "effectiveExecutionMode": "DIRECT_ITEM",
              "quantity": 1,
              "billableQuantity": 1,
              "unitPrice": "1.00",
              "totalAmount": "1.00",
              "specialRequest": null,
              "serviceFlags": [
                "example"
              ],
              "allergenCodes": [
                "EXAMPLE"
              ],
              "kitchenStatus": "PENDING",
              "modifiers": [
                {
                  "optionId": null,
                  "groupName": "Example name",
                  "optionName": "Example name",
                  "priceDelta": "1.00",
                  "allergenCodes": [
                    "EXAMPLE"
                  ]
                }
              ],
              "components": [
                {
                  "id": "cada95b5-09b4-4bdd-8379-2e6df6ee6198",
                  "operationalRole": "GUEST_SELECTION",
                  "name": "Example name",
                  "menuVariantId": null,
                  "quantity": 1,
                  "componentGroupId": "example-id",
                  "componentGroupName": "Example name",
                  "componentChoiceId": "example-id",
                  "componentQuantity": 1,
                  "componentUpcharge": "1.00",
                  "componentIsDefault": true,
                  "kitchenStatus": "PENDING",
                  "modifiers": [
                    {
                      "optionId": null,
                      "groupName": "Example name",
                      "optionName": "Example name",
                      "priceDelta": "1.00",
                      "allergenCodes": [
                        "EXAMPLE"
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        "allowedActions": {
          "type": "object",
          "properties": {
            "cancel": {
              "type": "boolean",
              "description": "Может ли вызывающая сторона отменить заказ; false означает недоступность действия в текущем состоянии и контексте прав.",
              "example": true
            },
            "reschedule": {
              "type": "boolean",
              "description": "Может ли вызывающая сторона перенести заказ; false означает недоступность действия в текущем состоянии и контексте прав.",
              "example": true
            },
            "changeRequest": {
              "type": "boolean",
              "description": "Может ли вызывающая сторона изменить запрос; false означает недоступность действия в текущем состоянии и контексте прав.",
              "example": true
            }
          },
          "required": [
            "cancel",
            "reschedule",
            "changeRequest"
          ],
          "description": "Вложенные сведения `allowedActions`; состав полей указан в схеме.",
          "example": {
            "cancel": true,
            "reschedule": true,
            "changeRequest": true
          }
        },
        "generatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Время `generatedAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
          "example": "2026-01-15T12:00:00.000Z"
        }
      },
      "required": [
        "fulfillmentId",
        "orderId",
        "revision",
        "status",
        "serviceMode",
        "partySize",
        "scheduledFor",
        "venue",
        "channel",
        "contact",
        "deposit",
        "delivery",
        "items",
        "allowedActions",
        "generatedAt"
      ],
      "example": {
        "fulfillmentId": "0a81282f-ea3b-40be-8ef7-4ad39e32ea88",
        "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
        "revision": 1,
        "status": "DRAFT",
        "serviceMode": "DINE_IN",
        "partySize": 1,
        "scheduledFor": "2026-01-15T12:00:00.000Z",
        "venue": {
          "id": "fbc6db41-f1c2-4f74-862d-210bd28ee2a0",
          "name": "Example name",
          "timeZone": "Asia/Tbilisi"
        },
        "channel": {
          "publicHandle": "example",
          "salesChannelId": "ff0fa725-ba44-4e7a-82bb-a15650e0a0cc",
          "termsVersion": "example",
          "privacyVersion": "example"
        },
        "contact": null,
        "deposit": {
          "status": "NOT_REQUIRED",
          "requiredAmount": "1.00",
          "paidAmount": "1.00",
          "dueAt": null
        },
        "delivery": {
          "zoneId": null,
          "feeAmount": "1.00"
        },
        "items": [
          {
            "clientLineId": "example-id",
            "id": "9122e965-4f99-4380-8392-2befd29097e7",
            "menuVersionId": null,
            "salesChannelId": null,
            "menuItemId": null,
            "menuVariantId": null,
            "name": "Example name",
            "rootItemStructureKind": "SINGLE_ITEM",
            "itemStructureExecutionMode": "DIRECT_ITEM",
            "effectiveExecutionMode": "DIRECT_ITEM",
            "quantity": 1,
            "billableQuantity": 1,
            "unitPrice": "1.00",
            "totalAmount": "1.00",
            "specialRequest": null,
            "serviceFlags": [
              "example"
            ],
            "allergenCodes": [
              "EXAMPLE"
            ],
            "kitchenStatus": "PENDING",
            "modifiers": [
              {
                "optionId": null,
                "groupName": "Example name",
                "optionName": "Example name",
                "priceDelta": "1.00",
                "allergenCodes": [
                  "EXAMPLE"
                ]
              }
            ],
            "components": [
              {
                "id": "cada95b5-09b4-4bdd-8379-2e6df6ee6198",
                "operationalRole": "GUEST_SELECTION",
                "name": "Example name",
                "menuVariantId": null,
                "quantity": 1,
                "componentGroupId": "example-id",
                "componentGroupName": "Example name",
                "componentChoiceId": "example-id",
                "componentQuantity": 1,
                "componentUpcharge": "1.00",
                "componentIsDefault": true,
                "kitchenStatus": "PENDING",
                "modifiers": [
                  {
                    "optionId": null,
                    "groupName": "Example name",
                    "optionName": "Example name",
                    "priceDelta": "1.00",
                    "allergenCodes": [
                      "EXAMPLE"
                    ]
                  }
                ]
              }
            ]
          }
        ],
        "allowedActions": {
          "cancel": true,
          "reschedule": true,
          "changeRequest": true
        },
        "generatedAt": "2026-01-15T12:00:00.000Z"
      }
    },
    "hasVerifiedSource": {
      "type": "boolean",
      "description": "Сохранённое подтверждение исходного источника доступно для чтения. Этот признак не предоставляет прав управления, оплаты или доступа к счёту; для нативного входа по-прежнему нужны новый целевой proof и текущий допуск.",
      "example": true
    }
  },
  "example": {
    "summary": {
      "id": "2d986aef-c54e-477a-8d90-0a0909ab3b3a",
      "type": "RESERVATION",
      "status": "example",
      "occurredAt": "2026-01-15T12:00:00.000Z",
      "partySize": 0
    },
    "currency": "GEL",
    "native": null,
    "hasVerifiedSource": true
  }
}
TranslatedErrorDto

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Полное определение
{
  "oneOf": [
    {
      "type": "string",
      "nullable": true,
      "example": "example"
    },
    {
      "type": "number",
      "example": 0
    },
    {
      "type": "boolean",
      "example": true
    },
    {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": [
        "example"
      ]
    },
    {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": {
        "exampleKey": "example"
      }
    }
  ],
  "description": "Рекурсивно допустимое JSON-значение. Используется только там, где контракт явно разрешает произвольные структурированные данные.",
  "example": "example"
}

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

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