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/reseller-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 | Uwierzytelnienie nie powiodło się. reason wskazuje przyczynę: missing_headers, bad_key, bad_timestamp, timestamp_out_of_window, bad_nonce, bad_signature, signature_mismatch, replay_detected, unknown_or_locked_key, ip_not_allowed. |
| 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 | Idempotency-Key już użyty z inną treścią. |
| 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.)card_expired(Karta wygasła. Rozwiązanie: dodanie nowej karty w panelu klienta.)client_not_found(Identyfikator konta nieznaleziony (w praktyce nie powinno się zdarzyć, prosimy o kontakt z pomocą techniczną).)

