Kodovi pogrešaka i omotnica pogreške

Jedan oblik na svim rutama: type, code, message, param, doc_url, request_id i errors.

Jedan oblik na svim rutama: type, code, message, param, doc_url, request_id i errors.

← Natrag na API dokumentaciju

Prva faktura u 6 koraka

  1. Svaki 4xx i 5xx vraća { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
  2. Granajte po type kako biste odlučili ima li ponovni pokušaj smisla, a code mapirajte u vlastiti sustav.
  3. param pokazuje na problematično polje, npr. lines.0.vat_rate; errors[] se pojavljuje kad ih je više.
  4. Bilježite request_id pri svakoj grešci — omogućuje nam da točno taj zahtjev pronađemo u našim zapisima.

Što je 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

Pogreške

StatusTipKod
401authentication_errormissing_bearer_token
401authentication_errorunauthorized
403permission_errorforbidden
404not_found_errornot_found
409conflict_erroridempotency_key_reuse
409conflict_erroridempotency_in_progress
422invalid_request_errorvalidation_failed
422invalid_request_errorinvalid_json_number
502upstream_errorupstream_error
503service_unavailable_errorservice_unavailable

Česte pogreške

  • rate_limit_error i dva upstream tipa mogu se ponoviti. authentication_error, permission_error i invalid_request_error ne rješavaju se ponovnim pokušajem.
  • 404 se vraća i za id koji pripada drugom tenantu: nikad ne potvrđujemo da tuđi podaci postoje.
  • 409 idempotency_key_reuse znači da ste ključ ponovno upotrijebili s drugačijim tijelom. Nemojte forsirati: provjerite što je već izdano.
  • doc_url u svakoj grešci vodi izravno na odjeljak o greškama u ovoj dokumentaciji.
  • Poruke su na rumunjskom jer API služi rumunjskom fiskalnom tijeku; nemojte parsirati message, granajte po code.

Pitanja i odgovori za razvijatelje

Mogu li se osloniti na vrijednosti code kroz verzije?

Da, code je stabilan i postoji upravo zbog toga. message je tekst za ljude i može se preformulirati.

Što učiniti kod 502 ili 503?

Ponovite s eksponencijalnim backoffom. To su upstream greške ili greške privremene nedostupnosti, a ne problemi s vašim zahtjevom.

Zašto 422, a ne 400 za nevaljane podatke?

422 označava ispravno oblikovan, ali semantički nevaljan JSON — na primjer vat_rate kao razlomak. 400 je rezerviran za neispravno oblikovan zahtjev.