Satu bentuk di setiap rute: type, code, message, param, doc_url, request_id, dan errors.
Faktur pertama Anda dalam 6 langkah
- Setiap 4xx dan 5xx mengembalikan { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
- Cabangkan berdasarkan type untuk memutuskan apakah percobaan ulang masuk akal, dan petakan code ke sistem Anda sendiri.
- param menunjuk ke field yang bermasalah, misalnya lines.0.vat_rate; errors[] muncul jika ada beberapa.
- Catat request_id di setiap kesalahan — dengan itu kami dapat menemukan permintaan tepat di log kami.
Apa itu API 4invoices
json
{
"error": {
"type": "invalid_request_error",
"code": "validation_failed",
"message": "Datele trimise nu sunt valide.",
"param": "lines.0.vat_rate",
"doc_url": "https://4invoices.net/ro/api-dezvoltatori#errors",
"request_id": "req_8a893f2f33d4472da8d6e144",
"errors": [
{ "param": "lines.0.vat_rate", "message": "VAT rate must be a percent (21), not a fraction", "type": "value_error" }
]
}
}https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json
Error
| Status | Tipe | Kode |
|---|---|---|
| 401 | authentication_error | missing_bearer_token |
| 401 | authentication_error | unauthorized |
| 403 | permission_error | forbidden |
| 404 | not_found_error | not_found |
| 409 | conflict_error | idempotency_key_reuse |
| 409 | conflict_error | idempotency_in_progress |
| 422 | invalid_request_error | validation_failed |
| 422 | invalid_request_error | invalid_json_number |
| 502 | upstream_error | upstream_error |
| 503 | service_unavailable_error | service_unavailable |
Kesalahan umum
- rate_limit_error dan dua tipe upstream dapat dicoba ulang. authentication_error, permission_error, dan invalid_request_error tidak diperbaiki dengan mencoba ulang.
- 404 juga dikembalikan untuk id yang milik tenant lain: kami tidak pernah mengonfirmasi bahwa data orang lain ada.
- 409 idempotency_key_reuse berarti Anda memakai ulang kunci dengan isi yang berbeda. Jangan memaksanya: periksa apa yang sudah diterbitkan.
- doc_url di setiap error langsung menunjuk ke bagian error dalam dokumentasi ini.
- Pesan berbahasa Rumania karena API melayani alur fiskal Rumania; jangan mengurai message, cabangkan berdasarkan code.
Tanya jawab untuk pengembang
Bisakah saya mengandalkan nilai code di berbagai versi?
Bisa, code stabil dan memang ada untuk itu. message adalah teks untuk manusia dan dapat diubah redaksinya.
Apa yang harus saya lakukan saat mendapat 502 atau 503?
Coba lagi dengan backoff eksponensial. Itu adalah error upstream atau ketersediaan sementara, bukan masalah pada permintaan Anda.
Mengapa 422 dan bukan 400 untuk data yang tidak valid?
422 menandai JSON yang berbentuk benar tetapi tidak valid secara semantik — misalnya vat_rate sebagai pecahan. 400 disediakan untuk permintaan yang rusak formatnya.