Wszystkie błędy są zgodne z RFC 7807. Treść odpowiedzi to application/problem+json z polami type, title, status, detail, request_id oraz opcjonalnie reason lub errors[].
{
"type": "https://www.kernelhost.com/en/kernelhost-api/errors/payment_required",
"title": "Payment required",
"status": 402,
"detail": "The order could not be paid.",
"request_id": "01HX7Z3K8Q...",
"reason": "insufficient_credit_and_no_card"
}
| HTTP | type | Znaczenie |
|---|---|---|
| 400 | validation_failed | Walidacja danych wejściowych nie powiodła się. Szczegóły poszczególnych pól w errors[]. |
| 401 | auth_failed | Uwierzytelnianie nie powiodło się. Odpowiedź zawsze zawiera reason unauthorized (lub ip_not_allowed, jeśli klucz jest ograniczony do innych adresów IP) i celowo nie ujawnia niczego więcej. Należy sprawdzić klucz, secret, zegar (±300 s), nonce i podpis; pomoc techniczna ustali dokładną przyczynę na podstawie request_id. |
| 402 | payment_required | Wymagana płatność. reason zob. poniżej. |
| 403 | forbidden_scope | Brak uprawnień. reason: missing_scope. |
| 404 | not_found | Zasób nie istnieje lub jest niewidoczny dla tego klucza (zapobiega enumeracji lokatorów). |
| 409 | idempotency_conflict, order_in_progress, service_not_active | Konflikt. Idempotency-Key został już użyty z innym body lub na innym endpoincie (idempotency_conflict, reason in_progress, dopóki pierwsze żądanie jest jeszcze w toku), inne zamówienie z Państwa konta jest wciąż przetwarzane (reason order_in_progress, należy uwzględnić Retry-After) albo usługa nie jest w stanie pozwalającym na tę akcję (service_not_active, patrz service_status). |
| 413 | payload_too_large | Body żądania przekracza 65 536 bajtów. Jest odrzucane jeszcze przed uwierzytelnieniem. |
| 422 | unprocessable | Żądanie jest zrozumiałe, ale nie może zostać wykonane. reason billing_cycle_not_available: produkt nie jest oferowany w tym cyklu rozliczeniowym. reason zero_total_not_allowed: zamówienie byłoby bezpłatne bez ważnego powodu, takiego jak kod promocyjny. |
| 429 | rate_limited | Przekroczono limit szybkości. Należy uwzględnić nagłówek Retry-After. |
| 500 | internal_error | Wewnętrzny błąd serwera. Proszę podać request_id do korelacji z dziennikiem audytu, kontaktując się z pomocą techniczną. |
Powody braku płatności (HTTP 402)
Jeżeli zamówienie nie może zostać opłacone, API zwraca HTTP 402 z czytelnym maszynowo polem reason w treści JSON.
insufficient_credit_and_no_card(Saldo kredytowe niewystarczające i brak karty na koncie. Rozwiązanie: doładowanie salda lub dodanie karty w panelu klienta.)card_declined(Karta została odrzucona przez bank/bramkę. Rozwiązanie: spróbować innej karty lub skontaktować się z bankiem.)credit_apply_failed(Nie udało się zastosować salda do faktury. Nic nie zostało pobrane, a zamówienie anulowano. Należy spróbować ponownie z nowym Idempotency-Key lub skontaktować się z pomocą techniczną.)client_not_found(Identyfikator konta nieznaleziony (w praktyce nie powinno się zdarzyć, prosimy o kontakt z pomocą techniczną).)

