> ## 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.

# Opis błędów

> Wszystkie błędy, które może zwrócić publiczny interfejs API Living Security /v1, wraz ze stabilnym kodem maszynowym, statusem HTTP i sposobem rozwiązania problemu.

Każda odpowiedź z błędem `/v1` ma format `application/problem+json` ([RFC 9457](https://www.rfc-editor.org/rfc/rfc9457)) i zawiera stały zestaw pól:

```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
}
```

Logikę rozgałęziania należy opierać na `code`, nigdy na `detail` — `code` jest stabilnym kontraktem maszynowym, a `detail` jest czytelne dla człowieka i może ulec zmianie. Pole `param` występuje wtedy, gdy błąd można przypisać do konkretnego parametru żądania. Podczas kontaktu z pomocą techniczną należy podać `request_id`.

## Kody błędów

| Kod | Status HTTP | Możliwość ponowienia |
| - | - | - |
| [`unauthorized`](/pl/developers/v1/errors/unauthorized) | 401 | Nie |
| [`credential_inactive`](/pl/developers/v1/errors/credential_inactive) | 401 | Nie |
| [`credential_expired`](/pl/developers/v1/errors/credential_expired) | 401 | Nie |
| [`credential_revoked`](/pl/developers/v1/errors/credential_revoked) | 401 | Nie |
| [`not_entitled`](/pl/developers/v1/errors/not_entitled) | 403 | Nie |
| [`insufficient_permission`](/pl/developers/v1/errors/insufficient_permission) | 403 | Nie |
| [`permission_denied`](/pl/developers/v1/errors/permission_denied) | 403 | Nie |
| [`resource_not_found`](/pl/developers/v1/errors/resource_not_found) | 404 | Nie |
| [`invalid_request`](/pl/developers/v1/errors/invalid_request) | 400 lub 409 | Nie |
| [`invalid_filter`](/pl/developers/v1/errors/invalid_filter) | 400 | Nie |
| [`unsupported_version`](/pl/developers/v1/errors/unsupported_version) | 400 | Nie |
| [`idempotency_key_reuse`](/pl/developers/v1/errors/idempotency_key_reuse) | 409 | Zależy od konfliktu |
| [`rate_limited`](/pl/developers/v1/errors/rate_limited) | 429 | Tak |
| [`service_unavailable`](/pl/developers/v1/errors/service_unavailable) | 503 | Tak |
| [`internal_error`](/pl/developers/v1/errors/internal_error) | 500 | Tak |

Zbiór kodów jest zamknięty: nowe kody oznaczają zmianę publicznego kontraktu i są ogłaszane w dzienniku zmian API. Odpowiedź `retryable: true` oznacza, że przyczyna błędu może ustąpić, ale nie dowodzi, że operacja zapisu nie wywołała żadnego skutku. Operacje odczytu należy ponawiać w ramach skończonej liczby prób i ograniczonego czasu, stosując wykładniczy backoff z jitterem. Jeśli nagłówek `Retry-After` występuje, należy go uwzględnić, także w przypadku ponawialnego błędu `409` lub `429`.

W przypadku operacji modyfikujących należy postępować zgodnie z udokumentowanym dla danej operacji kontraktem idempotentności i odzyskiwania. Jeśli jest to obsługiwane, należy zachować pierwotny klucz i pierwotne żądanie. Po przekroczeniu limitu czasu lub wystąpieniu błędu `5xx` nie należy tworzyć nowego klucza: może to spowodować powtórzenie zapisu, który zakończył się powodzeniem. Nagłówek `Idempotency-Key` nie zapewnia żadnej ochrony w przypadku operacji, która go nie obsługuje.


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