Viena forma kiekviename maršrute: type, code, message, param, doc_url, request_id ir errors.
Pirmoji sąskaita per 6 žingsnius
- Kiekvienas 4xx ir 5xx grąžina { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
- Remkitės type, kad nuspręstumėte, ar pakartojimas prasmingas, o code susiekite su savo sistema.
- param nurodo pažeidžiamą lauką, pvz., lines.0.vat_rate; errors[] atsiranda, kai yra keli.
- Registruokite request_id kiekvienai klaidai — pagal jį rasime tikslią užklausą mūsų žurnaluose.
Kas yra 4invoices API
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
Klaidos
| Būsena | Tipas | Kodas |
|---|---|---|
| 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 |
Dažniausios klaidos
- rate_limit_error ir du upstream tipai yra pakartojami. authentication_error, permission_error ir invalid_request_error pakartojimu neištaisomi.
- 404 grąžinamas ir tuo atveju, kai identifikatorius priklauso kitam tenant: niekada nepatvirtiname, kad kito asmens duomenys egzistuoja.
- 409 idempotency_key_reuse reiškia, kad panaudojote raktą su kitu turiniu. Nebandykite priversti: patikrinkite, kas jau išrašyta.
- Kiekvienos klaidos doc_url veda tiesiai į šios dokumentacijos klaidų skyrių.
- Pranešimai pateikiami rumunų kalba, nes API aptarnauja rumunišką fiskalinį procesą; neanalizuokite message — šakokite pagal code.
Kūrėjų klausimai ir atsakymai
Ar galiu pasikliauti code reikšmėmis tarp versijų?
Taip, code yra stabilus ir egzistuoja būtent tam. message yra žmonėms skirtas tekstas ir jis gali būti perfrazuotas.
Ką daryti esant 502 arba 503?
Bandykite dar kartą su eksponentiniu backoff. Tai upstream arba laikinos prieinamumo klaidos, o ne jūsų užklausos problemos.
Kodėl neteisingiems duomenims 422, o ne 400?
422 žymi formaliai teisingą, bet semantiškai neteisingą JSON — pavyzdžiui, vat_rate kaip trupmena. 400 skirtas netinkamai suformuotai užklausai.