Skip to content

Коды ошибок

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

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

HTTP-статусы

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

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

КодОписание
VALIDATION_ERRORПереданные данные не прошли валидацию
UNAUTHORIZEDAPI key отсутствует или недействителен
FORBIDDENВыданный ключ не имеет нужного scope
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/integration-api/catalog-items', {
  headers: { 'X-API-Key': apiKey }
});

if (!response.ok) {
  const error = await response.json();
  if (error.statusCode === 401) {
    // Остановить запросы и запросить замену ключа у владельца портала
  }
  if (error.statusCode === 403) {
    // Не повторять запрос: согласовать отдельный минимальный scope
  }
}

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