Mediu v1 / Mediu
Clasamentul stațiilor
Staţiile ordonate după media perioadei pentru un poluant — cea mai curată şi cea mai poluată. Mediile se calculează doar din zilele cu măsurători, nu din zero-uri.
GET
https://oneapi.ro/api/mediu/v1/aer/clasament
Parametri de interogare
NumeTipDescriereValori acceptate
poluantobligatoriu
string
Poluantul. Obligatoriu.
PM10PM2.5NO2O3SO2CO
de_laopțional
string | null
Prima zi inclusă,
AAAA-LL-ZZ.
ex. 2026-01-01
pana_laopțional
string | null
Ultima zi inclusă,
AAAA-LL-ZZ.
ex. 2026-06-30
ordineopțional
string | null
descrescator (implicit) sau crescator.
crescatordescrescator
limitaopțional
integer | null
Câte stații să întoarcă, maximum 200. Implicit 50.
1 – 200
zile_minimeopțional
integer | null
Câte zile cu date trebuie să aibă o stație ca să intre în clasament. Implicit 30.
1 – 365
Cum se comportă
- Poluanţii nu se măsoară în aceleaşi staţii. PM10 are 171 de staţii, NO2 149, SO2 116, CO 99, O3 83, iar PM2.5 doar 78. Un clasament sau o comparaţie între doi poluanţi compară, de fapt, două reţele diferite — nu doar două substanţe. Când compari judeţe pe PM2.5, ţine minte că unele n-au nicio staţie care să-l măsoare.
- Se compară STAȚII, nu orașe. O stație de trafic și una de fond din același oraș măsoară realități diferite; un clasament care le amestecă nu spune nimic despre oraș. Filtrează mental pe
tipînainte de a trage o concluzie. zile_minime(implicit 30) e pragul de acoperire: fără el, o stație cu trei zile de date ar putea conduce clasamentul. Coboară-l doar dacă știi ce faci.- Ordinea implicită e descrescătoare — la calitatea aerului interesează în primul rând cine stă prost.
- Media se calculează doar pe zilele cu medie publicabilă (cel puțin 18 ore valide).
La ce folosește
- Afli unde s-a măsurat cel mai poluat aer într-o perioadă.
- Compari stații de același tip între orașe, corect.
- Ilustrezi într-un articol diferențele dintre stațiile de trafic și cele de fond.
Structura răspunsului
Toate câmpurile de mai jos sunt în data.
CâmpTipDescriere
poluant
object
Poluantul, cu unitatea și valorile-limită.
perioada
object
Intervalul clasat;
null înseamnă toată seria.
perioada.de_la
string
Începutul perioadei.
perioada.pana_la
string
Sfârșitul perioadei.
ordine
string
Ordinea aplicată.
zile_minime
integer
Pragul de acoperire aplicat.
inregistrari
integer
Câte stații conține clasamentul.
rezultate[].pozitie
integer
Poziția, de la 1.
rezultate[].statie
string
Codul EoI.
rezultate[].localitate
string
UAT-ul stației.
rezultate[].judet
string
Județul.
rezultate[].judet_cod
string
Indicativul auto.
rezultate[].tip
string
Tipul stației.
rezultate[].zona
string
Mediul de amplasare.
rezultate[].media
number
Media mediilor zilnice din perioadă.
rezultate[].maxim
number
Cea mai mare valoare orară din perioadă.
rezultate[].zile
integer
Câte zile cu medie publicabilă au intrat în calcul.
observatie
string
Avertismentul că se compară stații, nu orașe.
sursa
object
Sursa și licența.
poluant.cod
integer
Codul numeric al poluantului, cel folosit de EEA.
poluant.poluant
string
Simbolul: PM10, NO2, O3, SO2, CO, PM2.5.
poluant.denumire
string
Denumirea în clar.
poluant.unitate
string
Unitatea de măsură.
poluant.limite[]
array
Limitele legale aplicabile: tipul, valoarea, câte depășiri sunt tolerate pe an și temeiul normativ.
Exemple de răspuns
GEThttps://oneapi.ro/api/mediu/v1/aer/clasament?poluant=PM10&limita=10
{
"data": {
"poluant": {
"cod": 5,
"poluant": "PM10",
"denumire": "Pulberi în suspensie PM10",
"unitate": "µg/m³",
"limite": [
{
"tip": "zilnic",
"valoare": 50,
"depasiri_tolerate_pe_an": 35,
"temei": "Directiva 2008/50/CE, anexa XI"
}
]
},
"perioada": {
"de_la": null,
"pana_la": null
},
"ordine": "descrescator",
"zile_minime": 30,
"inregistrari": 10,
"rezultate": [
{
"pozitie": 1,
"statie": "RO0151A",
"localitate": "Rovinari",
"judet": "Gorj",
"judet_cod": "GJ",
"tip": "industrial",
"zona": "suburban",
"media": 40.34,
"maxim": 448.322,
"zile": 380
}
],
"observatie": "Se compară STAȚII, nu orașe. O stație de trafic și una de fond din același oraș măsoară realități diferite — `tip` spune care e care, iar un clasament care le amestecă nu spune nimic despre oraș.",
"sursa": {
"nume": "European Environment Agency — Air Quality Download Service (date raportate de România prin RNMCA/ANPM)",
"url": "https://eeadmz1-downloads-webapp.azurewebsites.net/",
"licenta": "Politica de reutilizare a EEA — reutilizare permisă cu indicarea sursei."
}
}
}
GEThttps://oneapi.ro/api/mediu/v1/aer/clasament?poluant=PM10&ordine=crescator&limita=10
{
"data": {
"poluant": {
"cod": 5,
"poluant": "PM10",
"denumire": "Pulberi în suspensie PM10",
"unitate": "µg/m³",
"limite": [
{
"tip": "zilnic",
"valoare": 50,
"depasiri_tolerate_pe_an": 35,
"temei": "Directiva 2008/50/CE, anexa XI"
}
]
},
"perioada": {
"de_la": null,
"pana_la": null
},
"ordine": "crescator",
"zile_minime": 30,
"inregistrari": 10,
"rezultate": [
{
"pozitie": 1,
"statie": "RO0209A",
"localitate": "Giurgiu",
"judet": "Giurgiu",
"judet_cod": "GR",
"tip": "industrial",
"zona": "suburban",
"media": 11.28,
"maxim": 98.214,
"zile": 364
}
],
"observatie": "Se compară STAȚII, nu orașe. O stație de trafic și una de fond din același oraș măsoară realități diferite — `tip` spune care e care, iar un clasament care le amestecă nu spune nimic despre oraș.",
"sursa": {
"nume": "European Environment Agency — Air Quality Download Service (date raportate de România prin RNMCA/ANPM)",
"url": "https://eeadmz1-downloads-webapp.azurewebsites.net/",
"licenta": "Politica de reutilizare a EEA — reutilizare permisă cu indicarea sursei."
}
}
}
GEThttps://oneapi.ro/api/mediu/v1/aer/clasament?poluant=PM10
{
"data": {
"poluant": {
"cod": 5,
"poluant": "PM10",
"denumire": "Pulberi în suspensie PM10",
"unitate": "µg/m³",
"limite": [
{
"tip": "zilnic",
"valoare": 50,
"depasiri_tolerate_pe_an": 35,
"temei": "Directiva 2008/50/CE, anexa XI"
}
]
},
"perioada": {
"de_la": null,
"pana_la": null
},
"ordine": "descrescator",
"zile_minime": 30,
"inregistrari": 50,
"rezultate": [
{
"pozitie": 1,
"statie": "RO0151A",
"localitate": "Rovinari",
"judet": "Gorj",
"judet_cod": "GJ",
"tip": "industrial",
"zona": "suburban",
"media": 40.34,
"maxim": 448.322,
"zile": 380
}
],
"observatie": "Se compară STAȚII, nu orașe. O stație de trafic și una de fond din același oraș măsoară realități diferite — `tip` spune care e care, iar un clasament care le amestecă nu spune nimic despre oraș.",
"sursa": {
"nume": "European Environment Agency — Air Quality Download Service (date raportate de România prin RNMCA/ANPM)",
"url": "https://eeadmz1-downloads-webapp.azurewebsites.net/",
"licenta": "Politica de reutilizare a EEA — reutilizare permisă cu indicarea sursei."
}
}
}
GEThttps://oneapi.ro/api/mediu/v1/aer/clasament?poluant=PM2.5
{
"data": {
"poluant": {
"cod": 6001,
"poluant": "PM2.5",
"denumire": "Pulberi în suspensie PM2,5",
"unitate": "µg/m³",
"limite": [
{
"tip": "anual",
"valoare": 25,
"depasiri_tolerate_pe_an": 0,
"temei": "Directiva 2008/50/CE, anexa XIV"
}
]
},
"perioada": {
"de_la": null,
"pana_la": null
},
"ordine": "descrescator",
"zile_minime": 30,
"inregistrari": 50,
"rezultate": [
{
"pozitie": 1,
"statie": "RO0151A",
"localitate": "Rovinari",
"judet": "Gorj",
"judet_cod": "GJ",
"tip": "industrial",
"zona": "suburban",
"media": 23.67,
"maxim": 186.762,
"zile": 281
}
],
"observatie": "Se compară STAȚII, nu orașe. O stație de trafic și una de fond din același oraș măsoară realități diferite — `tip` spune care e care, iar un clasament care le amestecă nu spune nimic despre oraș.",
"sursa": {
"nume": "European Environment Agency — Air Quality Download Service (date raportate de România prin RNMCA/ANPM)",
"url": "https://eeadmz1-downloads-webapp.azurewebsites.net/",
"licenta": "Politica de reutilizare a EEA — reutilizare permisă cu indicarea sursei."
}
}
}
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 | Lipsește poluant, sau ordine nu e una dintre cele două valori. |
| 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": "Lipsește poluant, sau ordine nu e una dintre cele două valori.",
"detalii": {
"poluant": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}