MENU 360
Интеграции и API · ПОШАГОВАЯ ИНСТРУКЦИЯ

iiko API: ошибка 400 — проверка JSON и обязательных полей

Чтение: 4 мин.Редакция: 21 октября 2026

Ошибка 400 направляет проверку на конкретный запрос, но не объясняет, какое именно поле требуется исправить. Начните с фактически отправленных байтов и используемого метода. Правильные значения переменных до сериализации ещё не доказывают, что сервер получил правильный JSON.

Область применимости

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

Как проявляется проблема

  • API возвращает 400 при отправке данных.
  • В журнале программы значения есть, но сервер считает поле отсутствующим.

Что проверить сначала

  • Объект сериализован вместо массива или наоборот.
  • Перепутаны тела похожих методов.
  • Обязательное поле потеряно при построении запроса.

Быстрая диагностика

Сравните свой симптом с проверкой и возможным результатом.
Что наблюдаемЧто проверитьКак понять результат
400 после отправкиПроверить фактическое тело JSON локальным парсером.Ошибка синтаксиса — исправлять сериализацию.
Синтаксис исправенСравнить обязательные поля именно этого endpoint.Расхождение модели — исправлять тип или вложенность.
Сбой только с одним товаромПроверить, остаётся ли items массивом.Один элемент должен сохранить требуемую структуру.
Графическая проверка

Три точки наблюдения

Три точки наблюденияТри проверки из текста. Это диагностические наблюдения, не вымышленные элементы интерфейса. Проверить фактическое тело JSON локальным парсером. Сравнить обязательные поля именно этого endpoint. Проверить, остаётся ли items массивом.1Проверитьфактическое телоJSON локальнымпарсером2Сравнитьобязательные поляименно этогоendpoint3Проверить,остаётся ли itemsмассивом
Лупы обозначают предметы и данные для проверки. Подписи кратко передают содержание диагностики; полные формулировки и ограничения приведены в статье.
Полная формулировка из статьи

Проверить фактическое тело JSON локальным парсером. Сравнить обязательные поля именно этого endpoint. Проверить, остаётся ли items массивом.

Менеджер и официант обсуждают работу ресторана с планшетом
Иллюстрация рабочего процесса; сгенерированное фото, не интерфейс iiko.

Маршрут диагностики

Графическая проверка

Маршрут проверок

Маршрут проверокПоследовательность выбранных проверок из статьи. Это маршрут диагностики, а не гарантия исправления. iiko API: ошибка 400 — проверка JSON и обязательных полей1ЗафиксируйтеJSON-запрос API2ПроверьтеContent-Type и телозапроса4Сверьтеобязательные поля итип items6Подтвердите приёмзапроса выбраннымметодом
На схеме — ключевые проверки. Выполняйте полную последовательность ниже: номера ведут к соответствующим шагам с условиями и ограничениями.
Полная формулировка из статьи

Шаг 1. Сохраните URL метода, Content-Type и обезличенное тело непосредственно перед отправкой. Не заменяйте этот снимок распечаткой исходных переменных. Если библиотека сериализует данные автоматически, выясните, не передаётся ли уже готовая строка повторно как JSON-строка. Зафиксируйте также реальный HTTP-статус и текст ответа. Шаг 2. Проверьте синтаксис локальным JSON-парсером без обращения к ресторану. Лишняя запятая, незакрытая скобка и текст отладочного сообщения относятся к формату. Если синтаксис корректен, переходите к модели: валидный JSON может иметь неверную вложенность и оставаться недопустимым для конкретного метода. Шаг 4. Сравните типы значений: строка, число, логическое значение, объект и массив. Отдельно отметьте разницу между null, отсутствием поля и пустым объектом. Если элементы должны быть массивом, один элемент тоже не превращает их в одиночный объект. Исправляйте сериализатор, чтобы следующий запрос не вернул прежнюю ошибку. Шаг 6. Повторите проблемный вариант после исправления и добавьте проверку схемы перед отправкой в собственное приложение. Сообщение пользователю должно указывать понятное действие, а технический журнал — конкретный путь поля. Не показывайте гостю весь JSON и ключи подключения. Сохраните контрольный пример для следующего обновления библиотеки.

Скриншоты и фрагменты документации

Фрагмент OpenAPI для POST /api/1/order/create: метод.
Визуализация фрагмента OpenAPI · OpenAPI 3.0.1; info.version не задана
Редакционная визуализация фрагмента OpenAPI, не скриншот интерфейса iikoCloud API — официальный справочник OpenAPI. Нажмите на изображение, чтобы открыть отдельно. Сверяйте источник с версией и настройками своей системы.
Фрагмент OpenAPI для POST /api/1/order/create: параметры.
Визуализация фрагмента OpenAPI · OpenAPI 3.0.1; info.version не задана
Редакционная визуализация фрагмента OpenAPI, не скриншот интерфейса iikoCloud API — официальный справочник OpenAPI. Нажмите на изображение, чтобы открыть отдельно. Сверяйте источник с версией и настройками своей системы.
Фрагмент OpenAPI для POST /api/1/order/create: ответ.
Визуализация фрагмента OpenAPI · OpenAPI 3.0.1; info.version не задана
Редакционная визуализация фрагмента OpenAPI, не скриншот интерфейса iikoCloud API — официальный справочник OpenAPI. Нажмите на изображение, чтобы открыть отдельно. Сверяйте источник с версией и настройками своей системы.

Пошаговое решение

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

  1. Менеджер проверяет рабочее подключение в ресторане
    Иллюстрация рабочего процесса; сгенерированное фото, не интерфейс iiko.
  2. Менеджер проверяет оборудование на рабочем столе
    Иллюстрация рабочего процесса; сгенерированное фото, не интерфейс iiko.
Графическая проверка

Развилка результата

Развилка результатаСопоставьте результат с критерием статьи. Да — критерий подтвержден; нет — передайте диагностические данные специалисту. Критерий: Локальная проверка подтверждает синтаксис и модель, а согласованный контрольный запрос принимается выбранным методом. Проблемный вариант воспроизведён и больше не теряет поле после сериализации. Для команды отдельно проверен её конечный результат. Поддержка: Передайте поставщику один воспроизводимый пример: время с часовым поясом, используемый метод, версии компонентов и обезличенные запрос с ответом. Добавьте результат каждого шага и ожидаемое поведение. Не передавайте секреты в обычном журнале; укажите correlationId, если он получен.Критерийвыполнен?ДаНетприём запросавыбраннымметодомПередайтеметод, телоJSON и ответ400 и времясбоя
Ромб — самопроверка по критерию из статьи. Ветка «нет» ведет к подготовке обращения, а не к обещанному исправлению.
Полная формулировка из статьи

Критерий результата: Локальная проверка подтверждает синтаксис и модель, а согласованный контрольный запрос принимается выбранным методом. Проблемный вариант воспроизведён и больше не теряет поле после сериализации. Для команды отдельно проверен её конечный результат. Передача специалисту: Передайте поставщику один воспроизводимый пример: время с часовым поясом, используемый метод, версии компонентов и обезличенные запрос с ответом. Добавьте результат каждого шага и ожидаемое поведение. Не передавайте секреты в обычном журнале; укажите correlationId, если он получен.

Как понять, что проблема решена

Локальная проверка подтверждает синтаксис и модель, а согласованный контрольный запрос принимается выбранным методом. Проблемный вариант воспроизведён и больше не теряет поле после сериализации. Для команды отдельно проверен её конечный результат.

Как снизить риск повторения

Разделите модели запросов разных endpoints и проверяйте сериализацию на границе отправки. Не собирайте JSON конкатенацией пользовательского текста. При обновлении API проверяйте обязательные поля и допустимость null по используемому контракту.

Если проблема осталась

Передайте поставщику один воспроизводимый пример: время с часовым поясом, используемый метод, версии компонентов и обезличенные запрос с ответом. Добавьте результат каждого шага и ожидаемое поведение. Не передавайте секреты в обычном журнале; укажите correlationId, если он получен.

Что передать в поддержку

Скопируйте шаблон и заполните его без паролей, API-ключей, данных карт и сведений о гостях.

Проблема: iiko API: ошибка 400 — проверка JSON и обязательных полей
Версия и компонент iiko:
Ресторан / рабочее место:
Время сбоя и часовой пояс:
Точный текст сообщения:
Что ожидалось / что произошло:
Какие проверки выполнены:
Результат каждой проверки:
Идентификатор операции (если допустимо):

Где помогает Menu 360

Menu 360 интегрируется с iiko и позволяет использовать автоматические допродажи к заказу. Перед запуском проверьте, что добавленная позиция входит в корректный состав, а не теряется при сериализации. Цены задаются в самом Menu 360. Такой контроль полезнее красивого подтверждения, если касса получила другой набор блюд.

Интеграция Menu 360 с iiko · Автоматические допродажи

Вопросы и ответы

Валидный JSON исключает ошибку 400?

Нет. Парсер проверяет синтаксис, а API — ещё обязательные поля, вложенность и типы. Например, объект и массив одинаково допустимы как JSON, но конкретный endpoint может принимать только один из этих вариантов.

Нужно добавлять orderRequest, если так написал старый форум?

Только если такое поле есть в контракте вашего метода. Старый пример может относиться к другому API. Сначала сравните endpoint и схему; подгонка тела под случайное сообщение может скрыть настоящую ошибку сериализации.

Источники и применимость

Официальная документация служит основой проверки возможностей iiko. Последовательность диагностики и контрольные примеры разработаны редакцией Menu 360; это не подтверждение ошибки именно в вашей конфигурации.

Обсуждения похожих ситуаций

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

Связанные инструкции