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

Гостевые предзаказы

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

GET/public/preorders/manage

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

Авторизация

Authorization: Bearer <HALLIFY_PREORDER_MANAGE_TOKEN>

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

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

Параметры

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

Ответы

200Возвращает гостевое представление предзаказа и текущую ревизию.
PreorderPublicManageResultDto
Полное определение
{
  "$ref": "#/components/schemas/PreorderPublicManageResultDto"
}
Пример ответа · 200 · application/json
{
  "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": "9fbff223-7cc1-4311-8644-0bd59ff2477a",
      "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"
}
401Отклоняет отсутствующий, некорректный, истёкший, отозванный или недействительный ключ preorderManageToken на границе владеющего домена.
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"
}

Схемы

PreorderPublicManageResultDto

Возвращает гостевое представление предзаказа и текущую ревизию.

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

UUID Hallify для fulfillmentId.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID Hallify для `fulfillmentId`.",
  "example": "0a81282f-ea3b-40be-8ef7-4ad39e32ea88"
}
orderIdОбязательно

UUID Hallify для orderId.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID Hallify для `orderId`.",
  "example": "f3127edf-ce4f-4da7-8be5-81b962024e6c"
}
revisionОбязательно

Монотонно возрастающая ревизия revision для оптимистичного контроля конкурентных изменений. Ограничения: минимум 1.

integer
Полное определение
{
  "type": "integer",
  "minimum": 1,
  "description": "Монотонно возрастающая ревизия `revision` для оптимистичного контроля конкурентных изменений. Ограничения: минимум 1.",
  "example": 1
}
statusОбязательно

Текущий статус жизненного цикла status; допустимые значения: DRAFT, HELD, CONFIRMED, IN_PREPARATION, READY_FOR_HANDOFF, OUT_FOR_DELIVERY, COMPLETED, CANCELED, EXPIRED.

string
Полное определение
{
  "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Обязательно

Допустимые значения serviceMode: DINE_IN, PICKUP, DELIVERY, CATERING.

string
Полное определение
{
  "type": "string",
  "enum": [
    "DINE_IN",
    "PICKUP",
    "DELIVERY",
    "CATERING"
  ],
  "description": "Допустимые значения `serviceMode`: DINE_IN, PICKUP, DELIVERY, CATERING.",
  "example": "DINE_IN"
}
partySizeОбязательно

Целочисленное значение partySize. Ограничения: минимум 1.

integer
Полное определение
{
  "type": "integer",
  "minimum": 1,
  "description": "Целочисленное значение `partySize`. Ограничения: минимум 1.",
  "example": 1
}
scheduledForОбязательно

Время scheduledFor в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.

string · date-time
Полное определение
{
  "type": "string",
  "format": "date-time",
  "description": "Время `scheduledFor` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
  "example": "2026-01-15T12:00:00.000Z"
}
venueОбязательно

Вложенные сведения venue; состав полей указан в схеме.

object
Полное определение
{
  "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Обязательно

Вложенные сведения channel; состав полей указан в схеме.

object
Полное определение
{
  "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Обязательно

Вложенные сведения contact; состав полей указан в схеме. Null означает отсутствие записанного значения в этом представлении.

object · null
Полное определение
{
  "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Обязательно

Вложенные сведения deposit; состав полей указан в схеме.

object
Полное определение
{
  "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Обязательно

Вложенные сведения delivery; состав полей указан в схеме.

object
Полное определение
{
  "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"
    }
  },
  "required": [
    "zoneId",
    "feeAmount"
  ],
  "description": "Вложенные сведения `delivery`; состав полей указан в схеме.",
  "example": {
    "zoneId": null,
    "feeAmount": "1.00"
  }
}
itemsОбязательно

Коллекция items в составе представления.

array
Полное определение
{
  "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": "9fbff223-7cc1-4311-8644-0bd59ff2477a"
      },
      "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": "9fbff223-7cc1-4311-8644-0bd59ff2477a",
      "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": "9fbff223-7cc1-4311-8644-0bd59ff2477a",
      "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Обязательно

Вложенные сведения allowedActions; состав полей указан в схеме.

object
Полное определение
{
  "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Обязательно

Время generatedAt в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.

string · date-time
Полное определение
{
  "type": "string",
  "format": "date-time",
  "description": "Время `generatedAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
  "example": "2026-01-15T12:00:00.000Z"
}
Полное определение
{
  "type": "object",
  "properties": {
    "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"
    },
    "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"
        }
      },
      "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": "9fbff223-7cc1-4311-8644-0bd59ff2477a"
          },
          "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": "9fbff223-7cc1-4311-8644-0bd59ff2477a",
          "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": "9fbff223-7cc1-4311-8644-0bd59ff2477a",
          "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"
  ],
  "description": "Возвращает гостевое представление предзаказа и текущую ревизию.",
  "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": "9fbff223-7cc1-4311-8644-0bd59ff2477a",
        "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"
  }
}
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 поддерживают вход, язык и тему. Аналитика выключена, пока вы явно ее не разрешите.