Parsează adresă (text liber)
Primește un singur string (q) — ex. „Petroșani, jud Hunedoara, str Șt O Iosif nr 1a" —
* îl parsează în componente și le potrivește conjunctiv: fiecare semnal (județ / stradă /
* cod poștal / număr) restrânge rezultatul, iar dacă totul duce la o singură entitate se
* întoarce doar aceea. Fără boolean „valid": nivel_confirmat spune cât de adânc s-a
confirmat, componente[*].stare ce s-a întâmplat cu fiecare câmp, potrivire un rezumat.
Datele oficiale (localitate→UAT→județ→regiune, cod poștal) sunt complete; strada/numărul
vin din OSM (acoperire parțială), deci pot ieși negasit fără ca adresa să fie invalidă.
Parametri de interogare
Cum se comportă
- Parsează o adresă ca text liber (
q) în componente și le potrivește conjunctiv: fiecare semnal (județ / localitate / stradă / cod poștal / număr) restrânge rezultatul; dacă totul duce la o singură entitate, se întoarce doar aceea. - Fără boolean „valid":
nivel_confirmatspune cât de adânc s-a confirmat,componente[*].starece s-a întâmplat cu fiecare câmp,potrivireun rezumat. - Oficialul (localitate→UAT→județ→regiune, cod poștal) e complet; strada/numărul vin din OSM (acoperire parțială), deci pot ieși
negasitfără ca adresa să fie invalidă. - Potrivirea folosește gazetteer-ul (aliasuri: „Cluj" → Cluj-Napoca, exonime, denumiri istorice) și dezambiguizează pe populație.
rezultate[].matched_onspune CUM s-a potrivit fiecare entitate. unparsedconține segmentele pe care nu le-am putut asigna (ex. „lângă biserică") — obligatoriu, chiar și gol; e sursa principală de îmbunătățiri (aliasuri lipsă etc.).
La ce folosește
- O singură casetă „adresă completă": userul lipește tot, tu spargi în componente și rezolvi la localitate/UAT/județ (geocodare administrativă) cu
cod_siruta. - Procesare de comenzi din emailuri/CSV/marketplace: adrese în text liber → entități oficiale, pentru rutare la curier sau raportare pe județ.
- Confirmare pentru user: din ce a tastat, îi arăți ce a înțeles sistemul („am găsit Cluj-Napoca, jud. Cluj") înainte de a salva.
Structura răspunsului
null dacă n-a fost recunoscut.
Exemple de răspuns
{
"data": {
"parsat": {
"judet": "Cluj",
"localitate": "Cluj-Napoca",
"strada": "Memorandumului",
"numar": "28",
"cod_postal": null,
"detalii": null
},
"potrivire": "exacta",
"nivel_confirmat": "numar",
"ambiguu": false,
"unparsed": [],
"componente": {
"judet": {
"stare": "confirmat",
"cod": "CJ",
"nume": "Cluj"
},
"localitate": {
"stare": "confirmat"
},
"strada": {
"stare": "confirmat",
"nume": "Memorandumului"
},
"numar": {
"stare": "confirmat",
"numar": "28"
}
},
"rezultate": [
{
"numar": {
"numar": "28",
"cod_postal": "400114",
"lat": 46.769304853413416,
"lng": 23.585544611959204
},
"strada": {
"nume": "Memorandumului",
"cod_postal": "400114",
"lat": 46.76951318182015,
"lng": 23.58672888056244
},
"localitate": {
"cod_siruta": 54984,
"nume": "Cluj-Napoca",
"tip": "resedinta_municipiu",
"populatie": 286598,
"lat": 46.78,
"lng": 23.559444444444
},
"uat": {
"cod_siruta": 54975,
"nume": "Cluj-Napoca",
"tip": "municipiu"
},
"judet": {
"cod": "CJ",
"nume": "Cluj"
},
"regiune": {
"cod": "RO11",
"nume": "Nord-Vest"
},
"matched_on": {
"localitate": "nume_oficial",
"strada": "nume_oficial"
}
}
]
},
"meta": {
"actualizat": {
"administrativ": "2026-08-15T16: 39: 14+03: 00",
"strazi": "2026-10-06T16: 33: 40+03: 00"
}
}
}
„Cluj" → Cluj-Napoca (matched_on: nume_scurt).
{
"data": {
"parsat": {
"judet": "CJ",
"localitate": "Cluj",
"strada": "Memorandumului",
"numar": "28",
"cod_postal": null,
"detalii": null
},
"potrivire": "exacta",
"nivel_confirmat": "numar",
"ambiguu": false,
"unparsed": [],
"componente": {
"judet": {
"stare": "confirmat",
"cod": "CJ",
"nume": "Cluj"
},
"localitate": {
"stare": "confirmat"
},
"strada": {
"stare": "confirmat",
"nume": "Memorandumului"
},
"numar": {
"stare": "confirmat",
"numar": "28"
}
},
"rezultate": [
{
"numar": {
"numar": "28",
"cod_postal": "400114",
"lat": 46.769304853413416,
"lng": 23.585544611959204
},
"strada": {
"nume": "Memorandumului",
"cod_postal": "400114",
"lat": 46.76951318182015,
"lng": 23.58672888056244
},
"localitate": {
"cod_siruta": 54984,
"nume": "Cluj-Napoca",
"tip": "resedinta_municipiu",
"populatie": 286598,
"lat": 46.78,
"lng": 23.559444444444
},
"uat": {
"cod_siruta": 54975,
"nume": "Cluj-Napoca",
"tip": "municipiu"
},
"judet": {
"cod": "CJ",
"nume": "Cluj"
},
"regiune": {
"cod": "RO11",
"nume": "Nord-Vest"
},
"matched_on": {
"localitate": "nume_scurt",
"strada": "nume_oficial"
}
}
]
},
"meta": {
"actualizat": {
"administrativ": "2026-08-15T16: 39: 14+03: 00",
"strazi": "2026-10-06T16: 33: 40+03: 00"
}
}
}
„langa biserica" → unparsed.
{
"data": {
"parsat": {
"judet": null,
"localitate": "Cluj-Napoca",
"strada": "Memorandumului",
"numar": "28",
"cod_postal": null,
"detalii": null
},
"potrivire": "exacta",
"nivel_confirmat": "numar",
"ambiguu": false,
"unparsed": [
"langa biserica"
],
"componente": {
"localitate": {
"stare": "confirmat"
},
"strada": {
"stare": "confirmat",
"nume": "Memorandumului"
},
"numar": {
"stare": "confirmat",
"numar": "28"
}
},
"rezultate": [
{
"numar": {
"numar": "28",
"cod_postal": "400114",
"lat": 46.769304853413416,
"lng": 23.585544611959204
},
"strada": {
"nume": "Memorandumului",
"cod_postal": "400114",
"lat": 46.76951318182015,
"lng": 23.58672888056244
},
"localitate": {
"cod_siruta": 54984,
"nume": "Cluj-Napoca",
"tip": "resedinta_municipiu",
"populatie": 286598,
"lat": 46.78,
"lng": 23.559444444444
},
"uat": {
"cod_siruta": 54975,
"nume": "Cluj-Napoca",
"tip": "municipiu"
},
"judet": {
"cod": "CJ",
"nume": "Cluj"
},
"regiune": {
"cod": "RO11",
"nume": "Nord-Vest"
},
"matched_on": {
"localitate": "nume_oficial",
"strada": "nume_oficial"
}
}
]
},
"meta": {
"actualizat": {
"administrativ": "2026-08-15T16: 39: 14+03: 00",
"strazi": "2026-10-06T16: 33: 40+03: 00"
}
}
}
{
"data": {
"parsat": {
"judet": "Ilfov",
"localitate": "Bragadiru",
"strada": null,
"numar": null,
"cod_postal": null,
"detalii": null
},
"potrivire": "exacta",
"nivel_confirmat": "localitate",
"ambiguu": false,
"unparsed": [],
"componente": {
"judet": {
"stare": "confirmat",
"cod": "IF",
"nume": "Ilfov"
},
"localitate": {
"stare": "confirmat"
}
},
"rezultate": [
{
"localitate": {
"cod_siruta": 179230,
"nume": "Bragadiru",
"tip": "resedinta_oras",
"populatie": 40080,
"lat": 44.36944444,
"lng": 25.97527778
},
"uat": {
"cod_siruta": 179221,
"nume": "Bragadiru",
"tip": "oras"
},
"judet": {
"cod": "IF",
"nume": "Ilfov"
},
"regiune": {
"cod": "RO32",
"nume": "București-Ilfov"
},
"matched_on": {
"localitate": "nume_oficial"
}
}
]
},
"meta": {
"actualizat": {
"administrativ": "2026-08-15T16: 39: 14+03: 00",
"strazi": "2026-10-06T16: 33: 40+03: 00"
}
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 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 (q). Câmpul vinovat e în detalii. |
| 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 (q). Câmpul vinovat e în detalii.",
"detalii": {
"q": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}