Ошибки
Обрабатывайте ответы о проблемах и сопоставляйте их с запросами.
Ошибки следуют формату problem JSON из RFC 9457 с типом содержимого application/problem+json.
{
"type": "https://www.ninjabuy.com/api/v1/problems/bad-body",
"title": "Invalid request",
"status": 400,
"detail": "The request did not match the expected shape.",
"request_id": "REQUEST_ID",
"errors": [{"pointer": "/links", "detail": "Validation detail"}]
}type — постоянный идентификатор проблемы; title и detail описывают её. status совпадает с HTTP-статусом. Необязательные элементы errors содержат JSON Pointer и сведения о проверке; пустой указатель означает всё тело. При сообщении о проблеме укажите request_id (также доступен в X-Request-Id).
Все перечисленные типы начинаются с https://www.ninjabuy.com/api/v1/problems/.
| Окончание типа | HTTP | Значение / действие |
|---|---|---|
bad-json | 400 | Тело не является корректным JSON. Исправьте синтаксис. |
bad-body | 400 | Тело, параметры запроса или курсор не прошли проверку. Прочитайте errors. |
bad-idempotency-key | 400 | Используйте от 1 до 255 печатных символов ASCII в Idempotency-Key. |
unauthorized | 401 | Передайте действительный Bearer-токен; WWW-Authenticate указывает метаданные. |
not-found | 404 | Ресурс недоступен, неизвестен или не принадлежит этому аккаунту. |
method-not-allowed | 405 | Используйте метод из Allow. |
idempotency-key-in-progress | 409 | Первый запрос с этим ключом ещё выполняется. Подождите согласно Retry-After. |
upload-too-large | 413 | Загруженные байты превышают заявленный размер или 20 MiB. |
unsupported-media-type | 415 | Отправьте Content-Type: application/json. |
idempotency-key-reused | 422 | Этот ключ уже использован с другим запросом. Используйте новый ключ. |
invalid-workbook | 422 | Загрузка не является читаемым XLSX/CSV в пределах ограничений. Прочитайте errors. |
upload-expired | 422 | Резервирование загрузки истекло. Загрузите файл заново. |
rate-limited | 429 | Перед повтором подождите число секунд из Retry-After. |
search-rate-limited | 429 | Квота поиска по ключевым словам исчерпана. Подождите согласно Retry-After. |
service-unavailable | 503 | Повторите вскоре; учитывайте Retry-After, если заголовок есть. |
internal-error | 500 | Повторите позже; сохраните идентификатор запроса, если проблема не исчезнет. |
Успешный запрос всё равно может содержать ошибки отдельных входных значений. Обрабатывайте статусы ссылок отдельно от ошибок HTTP. Используйте Idempotency-Key для воспроизведения запроса создания; без ключа повторная отправка пакета создаёт ещё одно задание.