Alle Fehler folgen RFC 7807. Antwort-Body ist application/problem+json mit den Feldern type, title, status, detail, request_id und ggf. reason oder 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 | Bedeutung |
|---|---|---|
| 400 | validation_failed | Eingabe-Validierung fehlgeschlagen. Siehe errors[] für Detail pro Feld. |
| 401 | auth_failed | Authentifizierung fehlgeschlagen. Die Antwort enthält immer reason unauthorized (bzw. ip_not_allowed, wenn der Key auf andere IP-Adressen beschränkt ist) und verrät bewusst nicht mehr. Prüfen Sie Key, Secret, Uhrzeit (±300 s), Nonce und Signatur; der Support findet die genaue Ursache über die request_id. |
| 402 | payment_required | Zahlung erforderlich. reason siehe unten. |
| 403 | forbidden_scope | Berechtigung fehlt. reason: missing_scope. |
| 404 | not_found | Ressource existiert nicht oder ist für diesen Key nicht sichtbar (verhindert Tenant-Enumeration). |
| 409 | idempotency_conflict, order_in_progress, service_not_active | Konflikt. Der Idempotency-Key wurde bereits mit anderem Body oder Endpoint verwendet (idempotency_conflict, reason in_progress, solange die erste Anfrage noch läuft), für Ihr Konto läuft gerade noch eine andere Bestellung (reason order_in_progress, Retry-After beachten), oder der Service ist nicht in einem Zustand, der die Aktion erlaubt (service_not_active, siehe service_status). |
| 413 | payload_too_large | Request-Body größer als 65.536 Bytes. Er wird bereits vor der Authentifizierung abgelehnt. |
| 422 | unprocessable | Verstanden, aber nicht ausführbar. reason billing_cycle_not_available: Das Produkt wird in diesem Abrechnungszyklus nicht angeboten. reason zero_total_not_allowed: Die Bestellung wäre ohne gültigen Grund wie einen Promo-Code kostenlos. |
| 429 | rate_limited | Rate-Limit überschritten. Retry-After Header beachten. |
| 500 | internal_error | Interner Server-Fehler. request_id zur Korrelation mit dem Audit-Log angeben wenn Sie Support kontaktieren. |
Payment-Required Gründe (HTTP 402)
Wenn die Bestellung nicht bezahlt werden kann, liefert die API HTTP 402 mit einem maschinen-lesbaren reason im JSON-Body.
insufficient_credit_and_no_card(Guthaben reicht nicht und keine Karte hinterlegt. Lösung: Guthaben aufladen oder Karte im Kundenportal hinzufügen.)card_declined(Karte wurde von der Bank/dem Gateway abgelehnt. Lösung: andere Karte hinterlegen oder Bank kontaktieren.)credit_apply_failed(Guthaben konnte nicht auf die Rechnung angewendet werden. Es wurde nichts abgebucht und die Bestellung storniert. Mit neuem Idempotency-Key erneut versuchen oder den Support kontaktieren.)client_not_found(Account-ID nicht auffindbar (sollte praktisch nie vorkommen, Support kontaktieren).)

