Toate erorile respectă RFC 7807. Corpul răspunsului este application/problem+json, cu câmpurile type, title, status, detail, request_id și, opțional, reason sau 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 | Semnificație |
|---|---|---|
| 400 | validation_failed | Validarea datelor de intrare a eșuat. Consultați errors[] pentru detalii pe fiecare câmp. |
| 401 | auth_failed | Autentificare eșuată. reason indică motivul: 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 | Plată necesară. Consultați motivele de mai jos. |
| 403 | forbidden_scope | Permisiune lipsă. reason: missing_scope. |
| 404 | not_found | Resursa nu există sau nu este vizibilă pentru această cheie (previne enumerarea tenanților). |
| 409 | idempotency_conflict | Idempotency-Key deja utilizată cu un corp diferit. |
| 429 | rate_limited | Limita ratei a fost depășită. Respectați antetul Retry-After. |
| 500 | internal_error | Eroare internă de server. Furnizați request_id pentru corelarea cu jurnalul de audit atunci când contactați suportul. |
Motive pentru "Plată necesară" (HTTP 402)
Atunci când comanda nu poate fi plătită, API-ul returnează HTTP 402, cu un motiv lizibil pentru aplicații, în corpul JSON.
insufficient_credit_and_no_card(Credit insuficient și niciun card înregistrat. Soluție: alimentați creditul sau adăugați un card în portalul de clienți.)card_declined(Cardul a fost refuzat de bancă sau de procesatorul de plăți. Soluție: încercați un alt card sau contactați banca.)card_expired(Card expirat. Soluție: adăugați un card nou în portalul de clienți.)client_not_found(ID-ul contului nu a fost găsit (practic, nu ar trebui să se întâmple niciodată; contactați suportul).)

