Business v1 / Firme
Căutare firme
Caută firme după nume (fuzzy, word_similarity) și/sau filtre: județ, localitate (cod SIRUTA sau nume),
CAEN principal (caen de orice nivel — J, 62, 620, 6201 — prinde firmele de sub el; inexistent = 404),
formă juridică, stare, plătitor TVA. Filtrele de locație folosesc sediul REZOLVAT.
Rezultat paginat (?pagina=&per_pagina=), sortat pe relevanță (când e q) apoi denumire.
GET
https://oneapi.ro/api/business/v1/firme/cauta
Parametri de interogare
NumeTipDescriereValori acceptate
caenopțional
string | null
Cod CAEN de orice nivel — secţiune (
J), diviziune (62), grupă (620), clasă (6201) — şi întoarce firmele de sub el. Un cod inexistent e 404, nu o listă goală. Ce s-a căutat e în meta.caen.
ex. 62ex. 4932ex. 6210
caen_versiuneopțional
string | null
Revizia codului din
caen (1, 2, 3), când forma lui e ambiguă: 4932 e taxi în Rev.2 şi transport ocazional de pasageri în Rev.3. Fără ea, codul se caută întâi în Rev.3, apoi în Rev.2 şi Rev.1.
123
sortareopțional
string | null
Ordinea:
relevanta (implicit când se caută după nume), denumire (implicit fără q), cifra_afaceri, profit, salariati (descrescător, pe ultimul bilanţ depus), data_inmatriculare (cele mai noi întâi).
relevantadenumirecifra_afaceriprofitsalariatidata_inmatriculare
salariati_minopțional
integer | null
Cel puţin atâţia salariaţi (numărul mediu din ultimul bilanţ). Firmele fără bilanţ nu trec de filtru.
0
salariati_maxopțional
integer | null
Cel mult atâţia salariaţi.
0
ca_minopțional
number | null
Cifra de afaceri minimă, în lei, din ultimul bilanţ.
0
ca_maxopțional
number | null
Cifra de afaceri maximă, în lei.
0
an_infiintare_minopțional
integer | null
Înmatriculate cel mai devreme în acest an.
1800 – 2100
an_infiintare_maxopțional
integer | null
Înmatriculate cel târziu în acest an.
1800 – 2100
are_registruopțional
boolean | null
Cu
1, doar firmele care apar în cel puţin un registru public (autorizaţii, licenţe, sancţiuni — /firme/{cui}/registre); cu 0, cele care nu apar.
ex. 1
are_achizitiiopțional
boolean | null
Cu
1, doar firmele care au câştigat cel puţin o achiziţie publică; cu 0, cele care n-au câştigat niciuna.
ex. 1
are_fonduriopțional
boolean | null
Cu
1, doar beneficiarii de fonduri europene; cu 0, ceilalţi.
ex. 1
categorieopțional
string | null
O categorie de servicii de la
/caen/categorii (instalatori, stomatologi, service-auto…) în loc de un cod CAEN. Nu se combină cu caen. ⚠️ Totalul e o limită de jos, nu numărul meseriei. Categoria îşi declară codurile în CAEN Rev.3, iar codul pe care îl poartă o firmă vine din ANAF fără să spună ediţia; din ediţiile vechi se iau numai codurile care duc EXCLUSIV în categorie, nu şi clasele-sac (a lua tot „4399 — construcţii specializate n.c.a." ar umfla cifra cu firme care fac altceva). De aceea categorie=X dă mai puţin decât caen=<codul ei>, care e permisiv — pe meseriile cu un singur cod, mediana e în jur de trei sferturi. Răspunsul o spune: meta.total_e_limita_de_jos, meta.coduri_cautate şi meta.nota_acoperire.
constructii-cladiriinstalatorielectricienizugravifinisajefaiantari-parchetaritamplariizolatiiacoperisurizidariterasamente-demolariarhitectiproiectare-ingineriedesign-interiormobilacurateniedezinsectie-deratizaregradinarireparatii-electrocasnicereparatii-calculatoare-telefoaneservice-autoservice-motopiese-autodealeri-autoinchirieri-autobenzinariitransport-marfamutaricurierattaxitransport-persoanelogistica-depozitarerestaurantefood-truckcateringbaruri-cafenelehoteluripensiuni-cazarecampingbrutarii-cofetariimedici-familieclinici-medicalestomatologilaboratoare-analizepsihologikinetoterapiefarmaciispitaleingrijire-varstniciveterinarifrizerii-coafuricosmeticaspa-masajspalatorii-curatatoriipompe-funebrefitnesssportevenimenteartisti-spectacolecontabilitateavocati-notariconsultanta-managementpublicitate-marketingdesign-graficfotografitraducatoriresurse-umanepaza-protectieservicii-birouasigurariagentii-imobiliaredezvoltatori-imobiliariinchirieri-imobiliareagentii-turismdezvoltare-softwareconsultanta-ithosting-webtelecomunicatiigradinite-cresescolicursuri-meditatiiscoli-sofericursuri-arte-sportmagazine-alimentaremagazine-constructiimagazine-hainemagazine-electronicemagazine-mobilaflorariibijuteriicultura-plantelorzootehnieservicii-agricolesilviculturaenergie-regenerabilafurnizori-energiedeseuri-reciclare
formaopțional
string | null
Forma juridică (
SRL, SA, PFA…), aşa cum apare în nomenclatorul ONRC.
ex. SRL
judetopțional
string | null
Filtrare pe judeţul sediului rezolvat.
ex. CJex. IS
localitateopțional
integer | null
Localitatea sediului rezolvat prin Locations — nume sau cod SIRUTA.
1
qopțional
string | null
Textul căutat în denumire (potrivire fuzzy).
ex. digital
stareopțional
string | null
Starea firmei la registrul comerţului (
funcţiune, radiată, dizolvare…).
ex. funcțiune
tvaopțional
boolean | null
Cu
1 întoarce numai plătitorii de TVA, cu 0 numai neplătitorii.
ex. true
uatopțional
integer | null
UAT-ul sediului rezolvat — nume sau cod SIRUTA. Mai îngust decât
judet, mai larg decât localitate.
1
Cum se comportă
- Căutare după denumire cu potrivire fuzzy (similaritate de cuvinte), plus filtre combinabile:
judet,localitate,uat,caen,forma,stare,tva. Rezultatele sunt paginate offset (pagina,per_pagina). - Filtrele geografice (
judet,localitate,uat) se aplică pe sediul rezolvat prin Locations, nu pe textul brut — aşa că prind şi firmele al căror sediu era scris neuniform la ONRC. - Căutarea nu e menită să înlocuiască o interogare exactă după CUI: pentru asta există
/firme/{cui}. E gândită pentru descoperire — „firme de transport din Cluj plătitoare de TVA". caene ierarhic şi trece peste revizii.caen=62prinde6201,6202…, iar firmele care încă poartă coduri Rev.1 ori deja Rev.3 se prind prin corespondenţa oficială INS. Fişierul ANAF amestecă reviziile, deci un filtru pe codul exact ar fi pierdut firmele trecute pe altă revizie.- Filtrele de mărime (
salariati_*,ca_*) citesc ultimul bilanţ depus al firmei: o firmă fără bilanţ nu trece de ele, pentru că nu ştim cât e — n-o putem declara „între 10 şi 49 de salariaţi". - Cu
sortare=cifra_afaceri,profitorisalariati, lista devine un clasament pe ultimul bilanţ depus al fiecărei firme (anul e înfinanciar.an, deci poate diferi între firme) şi cuprinde doar firmele care au bilanţ —meta.paginare.totalscade în consecinţă. Pentru un clasament pe un singur an:/firme/top. - Firmele încă pe Rev.2 intră într-o categorie doar când codul lor vechi duce clar acolo: fie toate corespondentele lui Rev.3 sunt în categorie, fie a fost doar renumerotat în cel mult 3 coduri (5610 restaurante → 5611 + 5612; 4120 → 4100; 4532 piese auto → 4782), fie îşi păstrează numărul (6820 → 6820). Codurile-sac nu intră: 4399 „alte lucrări speciale de construcţii" se împarte în zece coduri Rev.3, deci „instalatori" nu mai prinde firme de schele ori fundaţii. Preţul: activităţile care în Rev.2 stăteau doar în codurile-sac (zidăria, în 4399) apar abia pe măsură ce firmele trec, obligatoriu, pe Rev.3.
La ce folosește
- Un câmp de căutare cu autocomplete pentru firme.
- Segmentarea pieţei: câte firme active dintr-un CAEN, într-un judeţ.
- Găsirea unei firme al cărei CUI nu-l ştii, pornind de la nume.
Structura răspunsului
CâmpTipDescriere
data[].cui
integer
Codul fiscal.
data[].denumire
string | null
Denumirea.
data[].cod_inmatriculare
string | null
Numărul de ordine în registrul comerţului (J…).
data[].forma_juridica
string | null
Forma juridică (SRL, SA, PFA…).
data[].stare
string | null
Starea firmei, ca obiect:
denumire e textul brut din ONRC (107 valori distincte folosite), categorie e clasificarea noastră în 7 cutii — activa, suspendata, dizolvata, lichidare, radiata, insolventa, alta — pe care o foloseşti ca să filtrezi sau să grupezi. cod e codul ONRC al stării.
data[].data_inmatriculare
string | null
Data înmatriculării la registrul comerţului.
data[].radiere.vazut_la
string
data[].radiere.dupa
string | null
data[].sediu.judet
string
Judeţul sediului social.opțional
data[].sediu.localitate
string
Localitatea sediului social.opțional
data[].sediu.cod_siruta
integer
Codul SIRUTA al localităţii — chainable spre /locations/v1.opțional
data[].caen_principal.cod
string
Codul CAEN principal.
data[].caen_principal.denumire
string | null
Denumirea activităţii principale.
data[].fiscal.tva
boolean
Plătitoare de TVA.
data[].fiscal.inactiv
boolean
Declarată inactivă fiscal.
data[].fiscal.e_factura
boolean
Înrolată în e-Factura.
data[].financiar
object
Ultimul bilanţ depus (an, cifră de afaceri, profit net, salariaţi);
null la firmele fără bilanţ — PFA-uri, firme noi —, nu zero.
data[].financiar.an
integer
Anul bilanţului.
data[].financiar.cifra_afaceri
number | null
Cifra de afaceri netă, în lei.
data[].financiar.profit_net
number | null
Profitul net, în lei; negativ = pierdere.
data[].financiar.salariati
integer | null
Numărul mediu de salariaţi.
meta.paginare.pagina
integer
Pagina curentă.
meta.paginare.per_pagina
integer
Rezultate pe pagină.
meta.paginare.total
integer
Total rezultate.
meta.paginare.pagini
integer
Număr de pagini.
meta.caen
object
Cum s-a înţeles parametrul
caen: codul cerut, revizia în care s-a citit şi codul pe care l-a folosit ruta. La o listă de coduri, câte un obiect pe cod.
meta.caen.cerut
string
Codul CAEN trimis, normalizat (litere mari, fără puncte).
meta.caen.versiune_cerut
string
Revizia în care s-a citit codul trimis: cea din
caen_versiune, altfel prima în care există.
meta.caen.nivel
string
Nivelul codului folosit — la rutele de firme, al codului cerut:
sectiune, subsectiune, diviziune, grupa, clasa sau agregat.
meta.caen.denumire
string
Denumirea codului, din nomenclatorul CAEN.
meta.caen.clase_cautate
integer
Câte clase CAEN, din toate reviziile purtate de firme, cad sub codul cerut.
meta.caen.clase_altele_decat_cerut
integer
Câte dintre ele NU sunt codul cerut. Căutarea e permisivă (traduce codul în toate ediţiile, ca să prindă firmele nerenumerotate), iar traducerea urcă uneori în clase mult mai largi — deci totalul poate fi despre mai mult decât meseria cerută.
meta.caen.nota_acoperire
string
Apare doar când s-a căutat şi pe alte clase decât codul cerut, şi spune ce să foloseşti dacă vrei o cifră strict despre meseria cerută.
meta.caen.clase
string[]
Clasele brute pe care s-a căutat, când sunt cel mult 20. Ca totalul să fie verificabil, nu o cifră de luat pe credit.
Exemple de răspuns
GEThttps://oneapi.ro/api/business/v1/firme/cauta?q=digital
{
"data": [
{
"cui": 32917762,
"denumire": "DIGITAL 1 VENTURES DEVELOPMENT SRL",
"cod_inmatriculare": "J12/957/2014",
"forma_juridica": "SRL",
"stare": {
"cod": "1084",
"denumire": "radiată",
"categorie": "radiata"
},
"data_inmatriculare": "2014-03-13",
"sediu": {
"judet": "Cluj",
"localitate": "Cluj-Napoca",
"cod_siruta": 54984
},
"caen_principal": {
"cod": "6201",
"denumire": "Activități de realizare a soft-ului la comandă (software orientat client)"
},
"fiscal": {
"tva": true,
"inactiv": false,
"e_factura": false
},
"financiar": {
"an": 2025,
"cifra_afaceri": 83990,
"profit_net": 3947,
"salariati": 1
}
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 20,
"total": 6105,
"pagini": 306
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/cauta?judet=CJ&are_registru=1&per_pagina=3
{
"data": [
{
"cui": 32749316,
"denumire": "101 DISTRACȚII & PETRECERI S.R.L.",
"cod_inmatriculare": "J2014000317125",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2014-02-05",
"sediu": {
"judet": "Cluj",
"localitate": "Sălicea",
"cod_siruta": 57289
},
"caen_principal": {
"cod": "9329",
"denumire": "Alte activități recreative și distractive n.c.a."
},
"fiscal": {
"tva": false,
"inactiv": false,
"e_factura": true
},
"financiar": {
"an": 2025,
"cifra_afaceri": 146708,
"profit_net": 718,
"salariati": 1
}
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 22821,
"pagini": 7607
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/cauta?judet=CJ&are_fonduri=1&per_pagina=3
{
"data": [
{
"cui": 9718722,
"denumire": "3 UP SERV IMPEX SRL",
"cod_inmatriculare": "J12/1540/1997",
"forma_juridica": "SRL",
"stare": {
"cod": "1084",
"denumire": "radiată",
"categorie": "radiata"
},
"data_inmatriculare": "1997-08-28",
"sediu": {
"judet": "Cluj",
"localitate": "Cluj-Napoca",
"cod_siruta": 54984
},
"caen_principal": {
"cod": "4399",
"denumire": "Alte lucrări speciale de construcții n.c.a."
},
"fiscal": {
"tva": false,
"inactiv": false,
"e_factura": false
},
"financiar": {
"an": 2021,
"cifra_afaceri": null,
"profit_net": -20,
"salariati": null
}
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 530,
"pagini": 177
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/cauta?caen=62&judet=CJ&per_pagina=5
{
"data": [
{
"cui": 47254471,
"denumire": "01 CODE S.R.L.",
"cod_inmatriculare": "J2022007141126",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2022-11-28",
"sediu": {
"judet": "Cluj",
"localitate": "Cluj-Napoca",
"cod_siruta": 54984
},
"caen_principal": {
"cod": "6210",
"denumire": "Activități de realizare a soft-ului la comandă (software orientat client)"
},
"fiscal": {
"tva": true,
"inactiv": false,
"e_factura": false
},
"financiar": {
"an": 2025,
"cifra_afaceri": null,
"profit_net": -383,
"salariati": null
}
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 14621,
"pagini": 2925
},
"caen": {
"cerut": "62",
"versiune_cerut": "Rev.3",
"nivel": "diviziune",
"denumire": "Activităţi de programare și activități de consultanță în tehnologia informaţiei",
"clase_cautate": 13,
"clase_altele_decat_cerut": 13,
"nota_acoperire": "Căutarea e permisivă: codul cerut s-a tradus în toate ediţiile CAEN, ca să prindă şi firmele nerenumerotate încă. Totalul cuprinde deci şi 13 clase diferite de [62], iar unele pot fi mult mai largi decât codul cerut. Pentru o cifră strict despre meseria cerută, foloseşte `categorie=` de la `/caen/categorii`, care refuză clasele-sac.",
"clase": [
"6201",
"6202",
"6203",
"6209",
"6220",
"6210",
"6290",
"3002",
"7230",
"7240",
"7260",
"7221",
"7222"
]
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/cauta?caen=4932&caen_versiune=3&per_pagina=5
{
"data": [
{
"cui": 3576610,
"denumire": "101 COMSERV SRL",
"cod_inmatriculare": "J40/22706/1992",
"forma_juridica": "SRL",
"stare": {
"cod": "1084",
"denumire": "radiată",
"categorie": "radiata"
},
"data_inmatriculare": "1992-08-31",
"sediu": {
"judet": "București",
"localitate": "București Sectorul 3",
"cod_siruta": 179169
},
"caen_principal": {
"cod": "6023",
"denumire": "Transporturi terestre de călători, ocazionale"
},
"fiscal": {
"tva": false,
"inactiv": false,
"e_factura": false
},
"financiar": null
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 30454,
"pagini": 6091
},
"caen": {
"cerut": "4932",
"versiune_cerut": "Rev.3",
"nivel": "clasa",
"denumire": "Transporturi terestre de pasageri, ocazionale",
"clase_cautate": 3,
"clase_altele_decat_cerut": 3,
"nota_acoperire": "Căutarea e permisivă: codul cerut s-a tradus în toate ediţiile CAEN, ca să prindă şi firmele nerenumerotate încă. Totalul cuprinde deci şi 3 clase diferite de [4932], iar unele pot fi mult mai largi decât codul cerut. Pentru o cifră strict despre meseria cerută, foloseşte `categorie=` de la `/caen/categorii`, care refuză clasele-sac.",
"clase": [
"4939",
"6021",
"6023"
]
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/cauta?categorie=instalatori&judet=CJ&sortare=cifra_afaceri&per_pagina=5
{
"data": [
{
"cui": 18781745,
"denumire": "ALTENOVA ROMANIA S.R.L.",
"cod_inmatriculare": "J2006004407120",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2006-12-21",
"sediu": {
"judet": "Cluj",
"localitate": "Cluj-Napoca",
"cod_siruta": 54984
},
"caen_principal": {
"cod": "4322",
"denumire": "Lucrări de instalații sanitare, de încălzire și de aer condiționat"
},
"fiscal": {
"tva": true,
"inactiv": false,
"e_factura": false
},
"financiar": {
"an": 2025,
"cifra_afaceri": 275866151,
"profit_net": 45887333,
"salariati": 210
}
}
],
"meta": {
"categorie": "instalatori",
"coduri_categorie": [
"4322"
],
"coduri_cautate": [
"4322",
"4533"
],
"clase_ambigue": [],
"total_e_limita_de_jos": true,
"nota_acoperire": "Totalul e o LIMITĂ DE JOS. Categoria îşi declară codurile în CAEN Rev.3, iar codul pe care îl poartă o firmă vine din ANAF fără să spună ediţia; din ediţiile vechi se iau numai codurile care duc exclusiv în categorie, nu şi clasele-sac (a lua tot „4399 — construcţii specializate n.c.a.\" ar umfla cifra cu firme care fac altceva). Firmele rămase pe un cod generic intră pe măsură ce trec, obligatoriu, pe Rev.3. Pentru un singur cod exact, foloseşte `caen=`, care e permisiv.",
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 1003,
"pagini": 201
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/cauta?caen=62&judet=IS&salariati_min=10&salariati_max=49&per_pagina=5
{
"data": [
{
"cui": 50432188,
"denumire": "AAC IT SERVICES ROMANIA S.R.L.",
"cod_inmatriculare": "J2024016198007",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2024-08-12",
"sediu": {
"judet": "Iași",
"localitate": "Iași",
"cod_siruta": 95079
},
"caen_principal": {
"cod": "6210",
"denumire": "Activități de realizare a soft-ului la comandă (software orientat client)"
},
"fiscal": {
"tva": true,
"inactiv": false,
"e_factura": false
},
"financiar": {
"an": 2025,
"cifra_afaceri": 15460231,
"profit_net": 1503207,
"salariati": 23
}
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 79,
"pagini": 16
},
"caen": {
"cerut": "62",
"versiune_cerut": "Rev.3",
"nivel": "diviziune",
"denumire": "Activităţi de programare și activități de consultanță în tehnologia informaţiei",
"clase_cautate": 13,
"clase_altele_decat_cerut": 13,
"nota_acoperire": "Căutarea e permisivă: codul cerut s-a tradus în toate ediţiile CAEN, ca să prindă şi firmele nerenumerotate încă. Totalul cuprinde deci şi 13 clase diferite de [62], iar unele pot fi mult mai largi decât codul cerut. Pentru o cifră strict despre meseria cerută, foloseşte `categorie=` de la `/caen/categorii`, care refuză clasele-sac.",
"clase": [
"6201",
"6202",
"6203",
"6209",
"6220",
"6210",
"6290",
"3002",
"7230",
"7240",
"7260",
"7221",
"7222"
]
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/cauta?caen=6210&an_infiintare_min=2020&are_achizitii=1&sortare=cifra_afaceri&per_pagina=5
{
"data": [
{
"cui": 47104490,
"denumire": "THALES ROMANIA S.R.L.",
"cod_inmatriculare": "J2022021770401",
"forma_juridica": "SRL",
"stare": {
"cod": "1048",
"denumire": "funcțiune",
"categorie": "activa"
},
"data_inmatriculare": "2022-11-01",
"sediu": {
"judet": "București",
"localitate": "București Sectorul 6",
"cod_siruta": 179196
},
"caen_principal": {
"cod": "6210",
"denumire": "Activități de realizare a soft-ului la comandă (software orientat client)"
},
"fiscal": {
"tva": true,
"inactiv": false,
"e_factura": false
},
"financiar": {
"an": 2025,
"cifra_afaceri": 262375553,
"profit_net": -2682521,
"salariati": 568
}
}
],
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 529,
"pagini": 106
},
"caen": {
"cerut": "6210",
"versiune_cerut": "Rev.3",
"nivel": "clasa",
"denumire": "Activități de realizare a soft-ului la comandă (software orientat client)",
"clase_cautate": 5,
"clase_altele_decat_cerut": 4,
"nota_acoperire": "Căutarea e permisivă: codul cerut s-a tradus în toate ediţiile CAEN, ca să prindă şi firmele nerenumerotate încă. Totalul cuprinde deci şi 4 clase diferite de [6210], iar unele pot fi mult mai largi decât codul cerut. Pentru o cifră strict despre meseria cerută, foloseşte `categorie=` de la `/caen/categorii`, care refuză clasele-sac.",
"clase": [
"6201",
"6210",
"7240",
"7221",
"7222"
]
}
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 200 | categorie_nerezolvabila | data: null + motivul în meta.fara_date: categoria cerută nu se poate rezolva în codurile pe care le poartă firmele, fiindcă înţelesul codului ei diferă între ediţiile CAEN (meta.clase_ambigue le numeşte). NU e „nu există astfel de firme" — de aceea nu e listă goală. |
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 422 | validare | Un parametru nedeclarat ori o valoare care nu trece validarea (an_infiintare_, are_, ca_, caen, caen_versiune, categorie, forma, judet, localitate, q, salariati_, sortare, stare, tva, uat); un maxim sub minim ori categorie împreună cu caen intră tot aici. Câmpul vinovat e în detalii. |
| 422 | q_scurt | Termenul de căutare trebuie să aibă cel puțin 3 caractere. |
| 422 | fara_criteriu | Specifică q sau cel puțin un filtru. |
| 422 | filtru_necunoscut | Un filtru care nu corespunde niciunei entităţi (judeţ, localitate, UAT, formă juridică, stare, CATEGORIE scrise greşit) — nu o listă goală; detalii.camp spune care. |
| 422 | caen_inexistent | Codul din caen nu există în nicio revizie CAEN. ⚠️ 422, nu 404, din 6 oct 2026: aici caen e o valoare de FILTRU, iar pe o listare 404 ar însemna „resursa nu există" şi nu s-ar putea deosebi, la client, de o secţiune fără date. Codul scurt rămâne caen_inexistent, nu devine filtru_necunoscut: „codul CAEN nu există" şi „judeţul nu există" rămân două lucruri diferite. Pe rutele care au codul în CALE (/caen/{cod}/…, /sector/{caen}/…) rămâne 404, fiindcă acolo codul E resursa. |
| 429 | cota_depasita | Cota lunară a planului a fost depăşită (vezi Retry-After). |
Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.
{
"eroare": {
"cod": "validare",
"mesaj": "Un parametru nedeclarat ori o valoare care nu trece validarea (an_infiintare_*, are_*, ca_*, caen, caen_versiune, categorie, forma, judet, localitate, q, salariati_*, sortare, stare, tva, uat); un maxim sub minim ori categorie împreună cu caen intră tot aici. Câmpul vinovat e în detalii.",
"detalii": {
"caen": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}