Klaidų kodai ir klaidos apvalkalas

Viena forma kiekviename maršrute: type, code, message, param, doc_url, request_id ir errors.

Viena forma kiekviename maršrute: type, code, message, param, doc_url, request_id ir errors.

← Atgal į API dokumentaciją

Pirmoji sąskaita per 6 žingsnius

  1. Kiekvienas 4xx ir 5xx grąžina { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
  2. Remkitės type, kad nuspręstumėte, ar pakartojimas prasmingas, o code susiekite su savo sistema.
  3. param nurodo pažeidžiamą lauką, pvz., lines.0.vat_rate; errors[] atsiranda, kai yra keli.
  4. 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ūsenaTipasKodas
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

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.