API debug · realm api-public · validation chain
req: 7a02-fb11-9c81-de44 · 20.05.2026 10:48 UTC
HTTP 400 · Bad Request

Запрос не прошёл валидацию схемы

Парсер успешно разобрал тело запроса как JSON, но валидатор обнаружил 5 нарушений требований схемы. Ниже — полный технический разбор каждой ошибки и рекомендации по исправлению.

Контактные данные администратора недоступны на этой странице.

5 VALIDATION FAIL
статус
400
Bad Request
нарушений
5
из 12 полей
прошло
7
полей в норме
parser
json/v3
strict
schema
orders/v2
validator

// сведения о запросе

Технические параметры
методPOST
путь/api/v3/orders/create
content-typeapplication/json; charset=utf-8
content-length522 байт
status400 Bad Request
request-id7a02-fb11-9c81-de44
edge nodeedge-09 · sin
parserjson/v3 · ok
validatorschema/v2 · 5 errors
handlerapi.orders.create
серверnginx 1.25.3
protocolHTTP/2 · TLS 1.3
время20.05.2026 10:48 UTC
{ "customer_id": "cust-7c21", "items": [], // пустой массив (нужен ≥1) "total": "540 руб", // строка вместо числа "currency": "₽", // символ вместо ISO "created": "только что", // не дата "customer_email": "user.example", // нет @ "shipping": {}, // пустой объект "published": true // ok }

// валидация полей

Что нашёл валидатор
itemsrequired / min length 1

Поле items обязательно и должно содержать хотя бы один элемент заказа. Передан пустой массив [].

пример: [{"id":"sku-001","qty":2}]
totaltype · number

Поле total ожидает числовое значение. Получена строка "540 руб". Уберите текст из значения — валюта передаётся отдельным полем.

пример: 540.00
currencyenum · ISO-4217

Поле currency ожидает код по ISO-4217 (трёхбуквенный): RUB, USD, EUR. Символ не входит в допустимый набор.

пример: "RUB"
createdformat · ISO-8601

Поле created ожидает дату в формате ISO-8601 с тайм-зоной. Литерал "только что" не принимается.

пример: "2026-05-20T10:48:00Z"
customer_emailformat · email

Поле customer_email ожидает корректный email. Значение "user.example" не содержит символа @ и домен не указан.

пример: "user@example.invalid"
shippingrequired object

Поле shipping обязательно, в нём ждут хотя бы address и method. Передан пустой объект {}.

пример: {"address":"...","method":"std"}

// исправленный вид

Что должно прийти
// получено (нарушения)
{
  "items": [],
  "total": "540 руб",
  "currency": "₽",
  "created": "только что",
  "customer_email": "user.example",
  "shipping": {}
}
// ожидается (валидно)
{
  "items": [{"id":"sku-001","qty":2}],
  "total": 540.00,
  "currency": "RUB",
  "created": "2026-05-20T10:48:00Z",
  "customer_email": "user@example.invalid",
  "shipping": {
    "address":"...",
    "method":"std"
  }
}

// шаги исправления

Что сделать в коде клиента
  1. Сверить схему — откройте описание orders/v2 и пройдите по списку обязательных полей. Каждое поле должно соответствовать ожидаемому типу и формату.
  2. Привести типы — числа передавать без единиц измерения, даты в ISO-8601, коды валют в ISO-4217. Парсер в strict-режиме не приводит типы автоматически.
  3. Заполнить обязательные коллекции — массивы items и объект shipping не могут быть пустыми. При формировании заказа всегда добавляйте хотя бы один элемент и адрес доставки.
  4. Проверить email-формат — поле должно содержать @ и домен. Для тестов используйте псевдо-домен example.invalid.
  5. Повторить запрос — отправьте исправленное тело тем же методом POST на тот же путь. Дополнительных шагов не требуется.
  6. Если ошибка сохраняется — сравните формат с примером в документации API. Если запрос валиден, но всё равно отбивается — обратитесь к ответственному оператору с указанием request-id.

// журнал обработки

Что происходило с запросом
10:48:01.001 · edge-09.sin
Запрос принят. Метод POST, путь /api/v3/orders/create, content-length 522 байт. TLS 1.3 рукопожатие успешное.
10:48:01.002 · acl chain
Проверки ACL пройдены. acl.geo / acl.rate / acl.source / acl.auth — все pass. Запрос прошёл к парсеру тела.
10:48:01.003 · parser json/v3
Тело разобрано как JSON. Синтаксис корректный, объект высокого уровня сформирован, 8 полей прочитано.
10:48:01.004 · validator schema/v2
Начата валидация по схеме orders/v2. Поля customer_id и published прошли проверку.
10:48:01.005 · validator
Найдено 5 нарушений схемы. items (empty), total (type), currency (enum), created (format), customer_email (format), shipping (empty object).
10:48:01.006 · response
Возвращён 400 Bad Request. Тело ответа содержит список нарушений и request-id для отслеживания. Дальнейшая обработка остановлена до получения корректного запроса.

// FAQ

Частые вопросы

Это ошибка инфраструктуры?

Нет. Код 400 — штатная часть HTTP-протокола. Сервер работает корректно и принимает решения по правилам схемы. Проблема находится в формате данных, которые отправил клиент.

Поможет ли повтор запроса без изменений?

Нет. Тот же запрос вернёт тот же 400 с тем же списком нарушений. Валидация — детерминированная: одинаковый вход даёт одинаковый выход.

Где документация по схеме orders/v2?

Описание схемы публикуется в разделе API-документации. Эта страница содержит только разбор конкретного запроса и не заменяет полную спецификацию.

Что значит strict mode у парсера?

В strict-режиме парсер не пытается приводить типы автоматически. Строка "540" не превращается в число 540 — клиент обязан прислать значение нужного типа сразу.

Видны ли мои данные в техническом разборе?

Тело запроса показано в анонимизированном виде. Реальные значения полей не публикуются; идентификаторы и адреса заменены на условные. Конфиденциальные данные не утекают через страницы ошибок.

Как обратиться к администратору?

Контактные данные администратора недоступны на этой странице. Если задача срочная, используйте принятый в вашей среде канал связи с ответственным оператором. Обязательно укажите request-id для быстрого поиска контекста.

Что делать, если все поля корректны, а 400 всё равно?

Сверить версию схемы: возможно, изменился контракт API. Также проверить заголовки запроса, в первую очередь content-type. Если по всем признакам запрос валиден — обратитесь к ответственному оператору с request-id.

Скорректируйте поля и продолжайте

После исправления тела запроса валидация пройдёт штатно и заказ попадёт в основную обработку. Никаких действий на стороне сервера не требуется — это исключительно вопрос формата клиентских данных.

request: 7a02-fb11-9c81-de44 · edge-09 · sin · nginx 1.25.3 · parser json/v3 · validator schema/v2 orders · 20.05.2026 10:48 UTC · контактные данные администратора недоступны на этой странице