Documentația se poate citi și de asistenții AI. Server MCP

Ilustromania.
Intră în aplicație

Erori

Codurile HTTP pe care le întoarce platforma, ce înseamnă fiecare și ce faci când îl primești.

Coduri HTTP

CodÎnseamnăCe faci
200, 201reușit; 201 când s-a creat ceva—
202primit, se procesează mai târziu (de exemplu cererea de resetare a parolei)—
400cererea nu trece de schemă sau nu se poate citi (JSON stricat, tip de conținut greșit)corectezi câmpurile
401nu ești autentificat sau ruta nu este declaratăintri în cont din nou
403ești autentificat, dar nu ai rolul sau dreptulceri administratorului acces
404obiectul nu există în firma activăverifici identificatorul și firma
409starea obiectului nu permite schimbarea (de exemplu un document emis) sau o cerere cu aceeași cheie de idempotență încă ruleazăreîncarci obiectul și decizi din nou; la idempotency_key_in_lucru, aștepți și repeți
413corpul cererii este prea maretrimiți mai puțin
422datele sunt corecte ca formă, dar regula de business le refuzăcitești eroare; unele rute adaugă un câmp cu explicația (motiv, detalii sau lista elementelor refuzate)
429ai trecut de limităaștepți Retry-After secunde
500eroare neprevăzută în platformă; corpul e mereu {"eroare": "eroare interna"}, fără detaliireîncerci; dacă se repetă, trimiți administratorului antetul x-request-id al răspunsului
502serviciul extern (FGO, ANAF, un canal) a răspuns cu eroarereîncerci mai târziu
503sursa externă nu este configurată sau lipseșteadministratorul configurează sursa

Un 404 poate însemna și că obiectul există, dar în altă firmă. Platforma nu spune niciodată dacă un obiect există într-o firmă la care nu ai acces.

Codurile din câmpul eroare

Cele mai frecvente valori, numărate în cod:

eroareCod HTTP obișnuitÎnseamnă
neautentificat401lipsește sesiunea sau a expirat
ruta_nedeclarata401ruta nu are acces declarat
interzis403rolul sau dreptul lipsește
negasit404obiectul nu există în firma activă
cerere_invalida400parametri sau corp care nu trec de schemă
corp_invalid400corpul cererii nu trece de schemă
intrare invalida400schema rutei a respins cererea; câmpul detalii spune ce câmp și de ce
cerere invalida400 (sau alt 4xx)cererea nu s-a putut citi: JSON stricat, corp prea mare, tip de conținut greșit
prea_multe_cereri429limita unei rute speciale
prea multe cereri429limita generală a sesiunii sau a adresei IP, pentru scrieri și pentru citiri
sursa_neconfigurata503sursa externă nu este configurată
parola_comuna400parola apare în listele de parole sparte
parola_anterioara400parola este una dintre ultimele 5 ale contului
jeton_invalid400jeton expirat, revocat sau greșit
idempotency_key_invalid400antetul Idempotency-Key are caractere nepermise sau e prea lung (detalii)
idempotency_key_alt_corp422aceeași cheie de idempotență, trimisă cu alt corp
idempotency_key_in_lucru409prima cerere cu aceeași cheie încă rulează
eroare interna500eroare neprevăzută; detaliile rămân doar în jurnalul serverului

Formatul RFC 9457, la cerere

Dacă trimiți antetul Accept: application/problem+json, orice eroare cu câmpul eroare vine în formatul RFC 9457, cu content-type: application/problem+json; charset=utf-8. Fără antet (sau cu q=0 pe acest tip), corpul rămâne cel de mai sus, neschimbat.

Cererea formatului noubash
curl https://app.ilustromania.com/nucleu/v1/oferte/nu-exista \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Accept: application/problem+json"

În formatul nou, toate câmpurile vechi rămân (inclusiv eroare, detalii, motiv), iar în plus apar:

CâmpCe conține
typeurn:ilustromania:eroare:<cod>
titletitlul scurt al codului, în română
statuscodul HTTP, ca număr
codcodul canonic, stabil: după el compari în integrare
id_cerereacelași număr ca în antetul x-request-id
cod_detaliudoar când ruta trimitea deja un câmp cod (avize, emitere, oferte, tabelul de produse): valoarea lui veche
Eroare în format RFC 9457json
{
  "eroare": "corp_invalid",
  "type": "urn:…:eroare:cerere_invalida",
  "title": "Cerere invalidă",
  "status": 400,
  "cod": "cerere_invalida",
  "id_cerere": "…"
}

Codurile canonice

Câmpul cod adună mesajele vechi care spun același lucru. Un mesaj care nu e în tabel și arată deja ca un cod (litere mici, cifre și _, de exemplu ruta_nedeclarata sau idempotency_key_alt_corp) rămâne neschimbat; altfel codul vine din statusul HTTP.

codtitleStatus implicitMesajele vechi adunate aici
cerere_invalidaCerere invalidă400, 422cerere_invalida, corp_invalid, date_gresite, date_nevalide, intrare invalida, cerere invalida, parametri_invalizi, interogare_invalida, id_invalid
neautentificatNeautentificat401neautentificat
interzisInterzis403interzis
negasitNegăsit404negasit
conflictConflict409—
prea_marePrea mare413—
prea_multe_cereriPrea multe cereri429prea multe cereri, prea_multe_cereri, prea_multe_incercari, prea multe incercari, limita_depasita
eroare_internaEroare internă500eroare interna

Un status care nu e în tabel dă eroare_interna de la 500 în sus și cerere_invalida sub 500. Pentru codurile care nu sunt în tabel, title este chiar codul.

Erorile OAuth, MCP și fluxurile în timp real (SSE) nu se transformă: au formatul lor, descris mai jos.

Erorile OAuth

Rutele OAuth folosesc formatul din standard, nu câmpul eroare:

Eroare OAuthjson
{ "error": "unsupported_grant_type", "error_description": "grant_type nesuportat" }

Erorile MCP

Serverul MCP răspunde cu obiecte de eroare JSON-RPC 2.0 (error.code, error.message). O unealtă care eșuează întoarce rezultatul cu isError: true, ca asistentul să poată citi motivul.

A fost utilă pagina?
Documentație Ilustromania · ediția 12.11.2026Generată din codul platformei