Skip to content

Коды ошибок

При возникновении ошибки API SNABZHENETS+ возвращает стандартный ответ:

json
{
  "error": "VALIDATION_ERROR",
  "message": "Подробное описание ошибки",
  "statusCode": 400
}

HTTP-статусы

СтатусЗначение
200Успешный запрос
201Ресурс создан
400Ошибка валидации данных
401Не аутентифицирован
403Нет прав на это действие
404Ресурс не найден
409Конфликт (например, дублирование)
429Превышен лимит запросов
422Бизнес-логика не позволяет выполнить операцию
500Внутренняя ошибка сервера

Коды ошибок приложения

КодОписание
VALIDATION_ERRORПереданные данные не прошли валидацию
UNAUTHORIZEDТокен отсутствует или истёк
FORBIDDENДействие запрещено для вашей роли
NOT_FOUNDЗапрошенный ресурс не найден
DUPLICATE_ENTRYЗапись с такими данными уже существует
rate_limitedПревышен лимит публичного Integration API
TENANT_MISMATCHРесурс принадлежит другому порталу
INVALID_STATUS_TRANSITIONПереход в указанный статус невозможен
INSUFFICIENT_PAYMENTСумма оплаты превышает остаток по счёту

Rate limit

Публичный Integration API возвращает 429, когда tenant/API-key bucket исчерпан:

json
{
  "statusCode": 429,
  "error": "rate_limited",
  "message": "Public API rate limit exceeded",
  "limit": 300,
  "remaining": 0,
  "resetInSeconds": 17
}

Ответ также содержит Retry-After, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy и совместимые X-RateLimit-* headers. Клиенту нужно дождаться Retry-After или использовать backoff.

Обработка ошибок

Рекомендуется обрабатывать ошибки по коду:

javascript
const response = await fetch('/api/v1/purchase-requisitions', {
  headers: { Authorization: `Bearer ${token}` }
});

if (!response.ok) {
  const error = await response.json();
  if (error.statusCode === 401) {
    // Обновить токен или перенаправить на логин
  }
}

Документация платформы SNABZHENETS+.