Alla fel följer RFC 7807. Svars-bodyn är application/problem+json med fälten type, title, status, detail, request_id samt eventuellt reason eller 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 | Betydelse |
|---|---|---|
| 400 | validation_failed | Inmatningsvalidering misslyckades. Se errors[] för detaljer per fält. |
| 401 | auth_failed | Autentiseringen misslyckades. Svaret innehåller alltid reason unauthorized (eller ip_not_allowed om nyckeln är begränsad till andra IP-adresser) och avslöjar medvetet inget mer. Kontrollera nyckel, secret, klocka (±300 s), nonce och signatur; supporten kan hitta den exakta orsaken via request_id. |
| 402 | payment_required | Betalning krävs. reason se nedan. |
| 403 | forbidden_scope | Behörighet saknas. reason: missing_scope. |
| 404 | not_found | Resursen finns inte eller är inte synlig för denna nyckel (förhindrar tenant-uppräkning). |
| 409 | idempotency_conflict, order_in_progress, service_not_active | Konflikt. Idempotency-Key har redan använts med en annan body eller endpoint (idempotency_conflict, reason in_progress medan den första begäran fortfarande pågår), en annan beställning för ditt konto behandlas fortfarande (reason order_in_progress, respektera Retry-After), eller så är tjänsten inte i ett tillstånd som tillåter åtgärden (service_not_active, se service_status). |
| 413 | payload_too_large | Begärans body är större än 65 536 byte. Den avvisas redan före autentiseringen. |
| 422 | unprocessable | Förstådd men inte genomförbar. reason billing_cycle_not_available: produkten erbjuds inte med denna faktureringsperiod. reason zero_total_not_allowed: beställningen skulle bli gratis utan giltigt skäl, till exempel en kampanjkod. |
| 429 | rate_limited | Hastighetsbegränsning överskriden. Respektera headern Retry-After. |
| 500 | internal_error | Internt serverfel. Ange request_id för korrelation med granskningsloggen när du kontaktar support. |
Orsaker till payment-required (HTTP 402)
När en beställning inte kan betalas returnerar API:et HTTP 402 med en maskinläsbar orsak (reason) i JSON-bodyn.
insufficient_credit_and_no_card(Saldot räcker inte och inget kort är sparat. Lösning: fyll på saldo eller lägg till ett kort i kundportalen.)card_declined(Kortet avvisades av banken eller betalningsleverantören. Lösning: prova ett annat kort eller kontakta din bank.)credit_apply_failed(Tillgodohavandet kunde inte tillämpas på fakturan. Inget har debiterats och beställningen har avbrutits. Försök igen med en ny Idempotency-Key eller kontakta supporten.)client_not_found(Konto-ID hittades inte (bör i praktiken aldrig inträffa, kontakta support).)

