Locations v1 / Meteo
Stații meteo
Reţeaua de staţii meteo, cu poziţia, localitatea, anii acoperiţi şi parametrii măsuraţi de fiecare. Nu toate măsoară tot.
GET
https://oneapi.ro/api/locations/v1/meteo/statii
Parametri de interogare
NumeTipDescriereValori acceptate
judetopțional
string | null
Indicativul auto al județului (ex.
CJ). Filtrează stațiile după județul în care cad.
max 4 car.
sirutaopțional
integer | null
Codul SIRUTA al unui UAT — doar stațiile care cad în interiorul lui.
1
cu_dateopțional
boolean | null
1 păstrează doar stațiile care au efectiv serie zilnică importată.
ex. 1
per_paginaopțional
text
Câte stații pe pagină (implicit 100, maxim 200).
ex. 5
paginaopțional
text
Pagina, numărată de la 1.
ex. 2
Cum se comportă
- Legătura stație→UAT e calculată SPAȚIAL de noi (punctul stației intersectat cu limita UAT), nu vine din sursă. O stație poate cădea în afara oricărui UAT — cazul real e stația de pe digul portului Constanța, care e pe mare.
- Portalul publică serie zilnică pentru mai multe stații decât are în catalogul cu coordonate. Diferența sunt stații cu istoric care nu mai figurează în catalogul curent. Nu le aruncăm seria: primesc un rând marcat
fara_catalog, fără nume și fără poziție. Le poți interoga prin?statie=<wsi>, dar nu apar în/meteo/langași nu pot fi alese automat ca stație de referință — n-avem unde să le punem pe hartă. - Rețeaua nu e uniformă. Înainte de a lua o normală de bună pentru un loc, uită-te la
primul_anal stației pe care se sprijină și la distanța până la ea. ANM nu publică altitudinea stațiilor în setul deschis, deci nu o expunem — în zonă de munte, verifică manual ce stație s-a ales, fiindcă relieful contează mai mult decât distanța în linie dreaptă.
La ce folosește
- Alegi stația de referință pentru un studiu, uitându-te la altitudine și la lungimea seriei, nu doar la distanță.
- Verifici ce stații are un județ înainte de a promite acoperire meteo unui client de acolo.
- Construiești un selector de stații într-o interfață, paginat.
Structura răspunsului
CâmpTipDescriere
data.statii[].wsi
string
Identificatorul OMM al stației (WSI). E cheia publică: se dă mai departe la
/meteo/zilnic?statie=.
data.statii[].nume
string
Denumirea stației, așa cum o publică ANM.
null la stațiile fără fișă de catalog.
data.statii[].latitudine
number
Latitudinea stației (WGS84).
null la stațiile fără fișă de catalog.
data.statii[].longitudine
number
Longitudinea stației (WGS84).
null la stațiile fără fișă de catalog.
data.statii[].fara_catalog
boolean
true pentru stațiile cărora portalul le publică serie zilnică dar nu și fișă de catalog: n-au nume, n-au coordonate și nu apar în căutările geografice. Seria lor se ia prin ?statie=<wsi>.
data.statii[].localitate
object
UAT-ul în care cade stația (
{cod_siruta, nume}) — legătură calculată spațial de noi, nu declarată de sursă. null pentru stațiile din afara oricărui UAT (ex. cea de pe digul portului Constanța, care e pe mare).
data.statii[].localitate.cod_siruta
integer
Codul SIRUTA al unităţii teritoriale.
data.statii[].localitate.nume
string
Numele, aşa cum îl publică sursa.
data.statii[].judet
string
Numele județului în care cade stația.
data.statii[].judet_cod
string
Indicativul auto al județului (ex.
CJ).
data.statii[].primul_an
integer
Primul an cu măsurători în seria zilnică. Variază enorm: unele stații pornesc din secolul XIX, altele din anii 1960.
data.statii[].ultimul_an
integer
Ultimul an cu măsurători.
data.statii[].zile_cu_date
integer
Câte zile măsurate are stația în total — indicatorul brut de robustețe al seriei.
data.statii[].parametri
array
Codurile parametrilor pe care îi publică stația, exact cum le numește ANM:
ta temperatura medie, tn minima, tx maxima (toate la 2 m), r precipitații, ff viteza medie a vântului (la 10 m), p presiunea la nivelul mării. O stație poate lipsi ani întregi la un parametru pe care îl publică azi.
data.sursa
object
Sursa datelor: Administrația Națională de Meteorologie, seria zilnică oficială, licență CC-BY-4.0. Conține și data ultimei importări.
data.sursa.nume
string
Denumirea sursei oficiale.
data.sursa.url
string
Adresa publică a sursei.
data.sursa.licenta
string
Licenţa sub care sursa permite reutilizarea.
meta.paginare.pagina
integer
Pagina curentă, numărată de la 1.
meta.paginare.per_pagina
integer
Câte înregistrări are o pagină.
meta.paginare.total
integer
Totalul înregistrărilor care se potrivesc, dincolo de pagina curentă.
meta.paginare.pagini
integer
Câte pagini are lista.
Exemple de răspuns
GEThttps://oneapi.ro/api/locations/v1/meteo/statii?judet=CJ
{
"data": {
"statii": [
{
"wsi": "0-20000-0-15163",
"nume": "Baisoara",
"latitudine": 46.535556,
"longitudine": 23.310278,
"fara_catalog": false,
"localitate": {
"cod_siruta": 55918,
"nume": "Băișoara"
},
"judet": "Cluj",
"judet_cod": "CJ",
"primul_an": 1941,
"ultimul_an": 2026,
"zile_cu_date": 30110,
"parametri": [
"ff",
"p",
"r",
"ta",
"tn",
"tx"
]
}
],
"sursa": {
"nume": "Administrația Națională de Meteorologie (ANM) — date climatologice zilnice, controlate calitativ",
"url": "https://odp.meteoromania.ro/",
"licenta": "CC BY 4.0, cu indicarea sursei."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 100,
"total": 6,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/locations/v1/meteo/statii?cu_date=1&per_pagina=5
{
"data": {
"statii": [
{
"wsi": "0-20000-0-15208",
"nume": "Alba Iulia",
"latitudine": 46.063911,
"longitudine": 23.563402,
"fara_catalog": false,
"localitate": {
"cod_siruta": 1017,
"nume": "Alba Iulia"
},
"judet": "Alba",
"judet_cod": "AB",
"primul_an": 1881,
"ultimul_an": 2026,
"zile_cu_date": 43155,
"parametri": [
"ff",
"p",
"r",
"ta",
"tn",
"tx"
]
}
],
"sursa": {
"nume": "Administrația Națională de Meteorologie (ANM) — date climatologice zilnice, controlate calitativ",
"url": "https://odp.meteoromania.ro/",
"licenta": "CC BY 4.0, cu indicarea sursei."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 160,
"pagini": 32
}
}
}
GEThttps://oneapi.ro/api/locations/v1/meteo/statii?pagina=2
{
"data": {
"statii": [
{
"wsi": "0-20000-0-15109",
"nume": "Piatra Neamt",
"latitudine": 46.933611,
"longitudine": 26.389444,
"fara_catalog": false,
"localitate": {
"cod_siruta": 120726,
"nume": "Piatra-Neamț"
},
"judet": "Neamț",
"judet_cod": "NT",
"primul_an": 1889,
"ultimul_an": 2026,
"zile_cu_date": 46181,
"parametri": [
"ff",
"p",
"r",
"ta",
"tn",
"tx"
]
}
],
"sursa": {
"nume": "Administrația Națională de Meteorologie (ANM) — date climatologice zilnice, controlate calitativ",
"url": "https://odp.meteoromania.ro/",
"licenta": "CC BY 4.0, cu indicarea sursei."
}
},
"meta": {
"paginare": {
"pagina": 2,
"per_pagina": 100,
"total": 160,
"pagini": 2
}
}
}
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 (judet, siruta, cu_date). 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 (judet, siruta, cu_date). Câmpul vinovat e în detalii.",
"detalii": {
"judet": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}