> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livingsecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Справочник ошибок

> Все ошибки, которые может возвращать публичный API Living Security /v1, с их стабильными машинными кодами, HTTP-статусами и способами устранения.

Каждый ответ `/v1` с ошибкой представлен в формате `application/problem+json` ([RFC 9457](https://www.rfc-editor.org/rfc/rfc9457)) с фиксированным набором полей:

```json theme={null}
{
  "type": "https://docs.livingsecurity.com/developers/v1/errors/resource_not_found",
  "title": "Not Found",
  "status": 404,
  "detail": "No such organization.",
  "code": "resource_not_found",
  "request_id": "req_...",
  "doc_url": "https://docs.livingsecurity.com/developers/v1/errors/resource_not_found",
  "retryable": false
}
```

Ориентируйтесь на `code`, а не на `detail`: `code` — это стабильный машинный контракт, а `detail` предназначено для чтения человеком и может измениться. Поле `param` присутствует, если ошибка связана с конкретным параметром запроса. При обращении в службу поддержки укажите `request_id`.

## Коды ошибок

| Код | HTTP-статус | Допускается повтор |
| - | - | - |
| [`unauthorized`](/ru/developers/v1/errors/unauthorized) | 401 | Нет |
| [`credential_inactive`](/ru/developers/v1/errors/credential_inactive) | 401 | Нет |
| [`credential_expired`](/ru/developers/v1/errors/credential_expired) | 401 | Нет |
| [`credential_revoked`](/ru/developers/v1/errors/credential_revoked) | 401 | Нет |
| [`not_entitled`](/ru/developers/v1/errors/not_entitled) | 403 | Нет |
| [`insufficient_permission`](/ru/developers/v1/errors/insufficient_permission) | 403 | Нет |
| [`permission_denied`](/ru/developers/v1/errors/permission_denied) | 403 | Нет |
| [`resource_not_found`](/ru/developers/v1/errors/resource_not_found) | 404 | Нет |
| [`invalid_request`](/ru/developers/v1/errors/invalid_request) | 400 или 409 | Нет |
| [`invalid_filter`](/ru/developers/v1/errors/invalid_filter) | 400 | Нет |
| [`unsupported_version`](/ru/developers/v1/errors/unsupported_version) | 400 | Нет |
| [`idempotency_key_reuse`](/ru/developers/v1/errors/idempotency_key_reuse) | 409 | Зависит от характера конфликта |
| [`rate_limited`](/ru/developers/v1/errors/rate_limited) | 429 | Да |
| [`service_unavailable`](/ru/developers/v1/errors/service_unavailable) | 503 | Да |
| [`internal_error`](/ru/developers/v1/errors/internal_error) | 500 | Да |

Набор кодов является закрытым: добавление новых кодов — это изменение публичного контракта, о котором сообщается в журнале изменений API. Ответ `retryable: true` означает, что условие может перестать действовать, но не доказывает, что операция записи не имела последствий. Повторяйте запросы на чтение с ограниченным числом попыток и ограниченным временем, используя экспоненциальную задержку и джиттер. Учитывайте `Retry-After`, если он присутствует, в том числе в повторяемом ответе `409` или `429`.

Для операций изменения следуйте документированному контракту идемпотентности и восстановления для соответствующей операции. Если это поддерживается, сохраняйте исходный ключ и исходный запрос. Не создавайте новый ключ после тайм-аута или `5xx`: это может привести к повторному выполнению уже успешной записи. Заголовок `Idempotency-Key` не обеспечивает защиты для операции, которая его не поддерживает.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.