oneapi
Autentificare
Mediu v1 / Mediu

Stațiile de monitorizare a aerului

Rețeaua națională, filtrabilă pe județ, localitate, poluant măsurat, tip și mediu de amplasare.

GET
https://oneapi.ro/api/mediu/v1/aer/statii

Parametri de interogare

NumeTipDescriereValori acceptate
judetopțional string | null Indicativul auto al județului. max 4 car.
sirutaopțional integer | null Codul SIRUTA al UAT-ului. 1
poluantopțional string | null Doar stațiile care măsoară activ acest poluant: PM10, PM2.5, NO2, O3, SO2, CO. PM10PM2.5NO2O3SO2CO
tipopțional string | null background, traffic sau industrial. backgroundtrafficindustrial
zonaopțional string | null urban, suburban sau rural. urbansuburbanrural
activaopțional boolean | null true pentru stațiile în funcțiune. ex. true
per_paginaopțional text Câte stații pe pagină, maximum 250. Implicit 100. ex. 50
paginaopțional text Pagina, numărată de la 1. ex. 1

Cum se comportă

  • date spune ce avem NOI, nu ce spune catalogul. Câmpurile activa, prima_observatie şi ultima_observatie descriu staţia aşa cum o publică EEA — şi nu coincid cu acoperirea noastră. 10 din cele 187 de staţii n-au nicio măsurătoare importată, deşi apar activa: true cu o primă observaţie din 2008; iar ultima_observatie e null pe 186 din 187, fiindcă sursa lasă capătul deschis la staţiile în funcţiune. Ramura date — are, zile, prima_zi, ultima_zi, poluanti — e calculată din măsurătorile noastre. Verific-o înainte de a cere serii pentru o staţie.
  • Tipul stației schimbă complet interpretarea. traffic e amplasată lângă o arteră aglomerată și măsoară expunerea în trafic; background măsoară fondul urban sau rural; industrial e lângă o sursă industrială. Compararea unei stații de trafic cu una de fond nu spune nimic despre „aerul din oraș".
  • Fiecare stație e legată de UAT-ul în care cade, prin intersecție spațială cu limitele din modulul Locations — legătura o calculăm noi, sursa europeană n-are noțiunea de unitate administrativă românească. Toate cele 187 de stații se leagă.
  • Datele vin de la Agenția Europeană de Mediu, unde ajung prin raportarea obligatorie a României. Nu de pe calitateaer.ro, care e un portal fără acces programatic.
  • Filtrul poluant întoarce stațiile cu un instrument ACTIV pentru acel poluant, nu cele care l-au măsurat cândva.

La ce folosește

  • Afli ce stații măsoară în județul sau localitatea ta și ce poluanți urmăresc.
  • Pui pe hartă rețeaua de monitorizare, cu tipul fiecărei stații.
  • Alegi stația relevantă înainte de a cere seria zilnică — o stație de trafic și una de fond din același oraș măsoară realități diferite.

Structura răspunsului

CâmpTipDescriere
data.statii[].cod string Codul EoI al stației (RO0073A) — cheia publică, folosită și în rapoartele naționale.
data.statii[].cod_national string Codul intern al operatorului român.
data.statii[].latitudine number Latitudinea stației (WGS84).
data.statii[].longitudine number Longitudinea stației (WGS84).
data.statii[].altitudine integer Altitudinea, în metri.
data.statii[].tip string background, traffic sau industrial.
data.statii[].zona string urban, suburban sau rural.
data.statii[].localitate object Localitatea în care cade stația, legată la nomenclatorul Locations.
data.statii[].localitate.cod_siruta integer UAT-ul în care cade stația — chainable spre modulul Locations.
data.statii[].localitate.nume string Denumirea UAT-ului.
data.statii[].judet string Județul.
data.statii[].judet_cod string Indicativul auto al județului.
data.statii[].prima_observatie string De când raportează stația.
data.statii[].ultima_observatie string Până când a raportat. null înseamnă că e încă în funcțiune.
data.statii[].activa boolean Are cel puțin un instrument fără dată de încheiere.
data.statii[].poluanti[] string Poluanții pe care îi măsoară stația.
data.sursa object Sursa și licența.
data.statii[].date.are boolean Dacă avem măsurători importate pentru staţie. false nu înseamnă că staţia nu există, ci că noi n-avem date de la ea.
data.statii[].date.zile integer Câte zile-poluant avem pentru staţie.
data.statii[].date.prima_zi string Prima zi cu date la NOI (poate fi mult mai recentă decât prima_observatie din catalog).
data.statii[].date.ultima_zi string Ultima zi cu date la noi.
data.statii[].date.poluanti[] array Poluanţii pentru care avem efectiv măsurători — subset al listei poluanti, care vine din catalog.
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/mediu/v1/aer/statii?judet=CJ
{
    "data": {
        "statii": [
            {
                "cod": "RO0073A",
                "cod_national": "RO-CJ-1",
                "latitudine": 46.778253,
                "longitudine": 23.615619,
                "altitudine": 336,
                "tip": "traffic",
                "zona": "urban",
                "localitate": {
                    "cod_siruta": 54975,
                    "nume": "Cluj-Napoca"
                },
                "judet": "Cluj",
                "judet_cod": "CJ",
                "prima_observatie": "2006-01-01",
                "ultima_observatie": null,
                "activa": true,
                "date": {
                    "are": true,
                    "zile": 1512,
                    "prima_zi": "2024-12-31",
                    "ultima_zi": "2026-09-22",
                    "poluanti": [
                        "CO",
                        "NO2",
                        "PM10"
                    ]
                },
                "poluanti": [
                    "CO",
                    "NO2",
                    "PM10",
                    "SO2"
                ]
            }
        ],
        "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."
        }
    },
    "meta": {
        "paginare": {
            "pagina": 1,
            "per_pagina": 100,
            "total": 6,
            "pagini": 1
        }
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422validarePoluant, tip sau zonă necunoscute.
429cota_depasitaCota 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": "Poluant, tip sau zonă necunoscute.",
        "detalii": {
            "judet": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}