Hər marşrutda bir forma: type, code, message, param, doc_url, request_id və errors.
6 addımda ilk fakturanız
- Hər 4xx və 5xx { "error": { type, code, message, param?, doc_url, request_id, errors? } } qaytarır.
- Təkrar cəhdin mənası olub-olmadığına type üzrə qərar verin və code-u öz sisteminizə xəritələyin.
- param problemli sahəyə işarə edir, məsələn lines.0.vat_rate; errors[] bir neçəsi olduqda görünür.
- Hər xətada request_id-ni qeyd edin — bizim qeydlərdə dəqiq sorğunu tapmağa imkan verir.
4invoices API nədir
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
Xətalar
| Status | Növ | Kod |
|---|---|---|
| 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 |
Ümumi səhvlər
- rate_limit_error və iki upstream növü təkrar cəhd oluna bilər. authentication_error, permission_error və invalid_request_error təkrar cəhdlə düzəlmir.
- Başqa müştərinin id-si üçün də 404 qaytarılır: biz heç vaxt başqasının məlumatının mövcud olduğunu təsdiq etmirik.
- 409 idempotency_key_reuse o deməkdir ki, açarı fərqli body ilə təkrar istifadə etmisiniz. Məcbur etməyin: artıq nə verildiyini yoxlayın.
- Hər xətanın doc_url-i birbaşa bu sənədləşmənin xətalar bölməsinə aparır.
- Mesajlar rumın dilindədir, çünki API rumın fiskal axınına xidmət edir; message-i təhlil etməyin, code üzrə qərar verin.
İnkişafçılar üçün suallar və cavablar
Versiyalar arasında code dəyərlərinə güvənmək olarmı?
Bəli, code sabitdir və məhz bunun üçün mövcuddur. message insanlar üçün mətndir və yenidən ifadə oluna bilər.
502 və ya 503 aldıqda nə etməliyəm?
Eksponensial backoff ilə təkrar cəhd edin. Bunlar upstream və ya müvəqqəti əlçatanlıq xətalarıdır, sorğunuzla bağlı problem deyil.
Səhv məlumat üçün niyə 400 yox, 422?
422 düzgün formatlı, lakin semantik olaraq etibarsız JSON-u bildirir — məsələn, kəsr şəklində vat_rate. 400 formatı pozulmuş sorğu üçün saxlanılır.