Ба мундариҷа гузаштан

REST API-и оммавии версияи 1: хондан бе калидҳо, JSON аз рӯи пешфарз; қабули маълумоти истгоҳҳо — POST бо калиди истгоҳ. Спетсификатсияи OpenAPI 3.1 аз ҳамон схемаҳое тавлид мешавад, ки дархостҳо ва ҷавобҳои серверро месанҷанд.

Суроғаи асосӣ
https://havo.tj
Иҷозат
Барои хондан лозим нест (маҳдудият 120 дархост дар як дақиқа аз як IP). Қабули маълумоти истгоҳҳо — сарлавҳаи Authorization: Bearer <калиди истгоҳ>, маҳдудияти алоҳида 60 дархост дар як дақиқа барои ҳар истгоҳ.
CORS
Дархостҳо аз ҳар гуна сомонаҳо иҷозат дода шудаанд (Access-Control-Allow-Origin: *).

Сифати ҳаво

GET/api/v1/stationsкеш 60 s

Рӯйхати истгоҳҳои мониторинг

Истгоҳҳои оммавӣ (ба ғайр аз истифодабарӣ баровардашуда) ҳамчун GeoJSON FeatureCollection бо сатҳи ҷории индекс; 0 — маълумот нест ё кӯҳна шудааст.

Намунаи дархост

curl "https://havo.tj/api/v1/stations"
Кушодан дар браузер → →

Ҷавобҳо

200application/jsonҶавоби бомуваффақият

  • type "FeatureCollection"ҳатмӣ
  • features object[]ҳатмӣ
    • type "Feature"ҳатмӣ
    • id integerҳатмӣ
    • geometry objectҳатмӣ
      • type "Point"ҳатмӣ
      • coordinates [number, number]ҳатмӣ
    • properties objectҳатмӣ
      • id integerҳатмӣ
      • slug stringҳатмӣ
      • code stringҳатмӣ — Station code, e.g. DU-01
      • name objectҳатмӣ — Localized text: Tajik (tg), Russian (ru), English (en)
        • tg string
        • ru string
        • en string
      • kind "air" | "meteo" | "combined"ҳатмӣ
      • status "active" | "suspended" | "decommissioned"ҳатмӣ
      • region object | nullҳатмӣ
        • tg string
        • ru string
        • en string
      • level integerҳатмӣ — Air quality level 1–5 (1–6 for six-category scales such as US AQI); 0 — no data
      • indexValue number | nullҳатмӣ — Continuous index value (level + fraction)
      • indexTime string (date-time) | nullҳатмӣ — Time of the index value
GET/api/v1/stations/{slug}/measurementsкеш 60 s

Силсилаи ченакҳои истгоҳ

Миёнаи соатӣ (24h, 7d) ё шабонарӯзӣ аз рӯи вақти маҳаллӣ (30d, 1y) аз ченакҳои эътимоднок бо min/max ва шумораи қиматҳо. CSV — бо параметри format=csv. Қиматҳо ва майдони unit — дар воҳиди намоише, ки Агентӣ интихоб кардааст (µg/m³ ё mg/m³).

Параметрҳо
ПараметрҶойНамудТавсиф
slugҳатмӣpathstringСуроғаи истгоҳ (майдони slug аз рӯйхати истгоҳҳо)
rangequery24h | 7d | 30d | 1y = 24hДавра: 24h, 7d, 30d ё 1y
pollutantquerystringРамзи модда (PM25, PM10, NO2, SO2, CO, O3, NO, CH2O, C6H5OH, HF, TSP, CO2, TVOC); бе параметр — ҳама
formatqueryjson | csv = jsonjson ё csv

Намунаи дархост

curl "https://havo.tj/api/v1/stations/dushanbe-centre/measurements?range=7d&pollutant=PM25"
Кушодан дар браузер → →

Ҷавобҳо

200application/jsonҶавоби бомуваффақият

  • station objectҳатмӣ
    • id integerҳатмӣ
    • slug stringҳатмӣ
    • code stringҳатмӣ
    • name objectҳатмӣ — Localized text: Tajik (tg), Russian (ru), English (en)
      • tg string
      • ru string
      • en string
  • range "24h" | "7d" | "30d" | "1y"ҳатмӣ
  • from string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
  • to string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
  • aggregation "hour" | "day"ҳатмӣ — hour for 24h/7d, day (local time) for 30d/1y
  • timezone "Asia/Dushanbe"ҳатмӣ
  • series object[]ҳатмӣ
    • pollutant objectҳатмӣ
      • id integerҳатмӣ
      • code stringҳатмӣ
      • shortName stringҳатмӣ
      • unit stringҳатмӣ — Display unit configured by the Agency: µg/m³ or mg/m³ (CO always mg/m³; CO2 ppm, TVOC ppb). Values are converted to it
      • decimals integerҳатмӣ
    • points object[]ҳатмӣ
      • t string (date-time)ҳатмӣ — Start of the hour/day
      • v number | nullҳатмӣ — Mean of valid measurements, in `unit`
      • min number | nullҳатмӣ
      • max number | nullҳатмӣ
      • n integerҳатмӣ — Number of measurements in the bin

200text/csvCSV (UTF-8 бо BOM): time_utc, time_local, pollutant, value, min, max, n

400application/jsonПараметрҳо нодурустанд

  • error stringҳатмӣ

404application/jsonОбъект ёфт нашуд

  • error stringҳатмӣ
GET/api/v1/index/currentкеш 60 s

Индекси ҷорӣ аз рӯи истгоҳҳо

Индекси охирини ҳисобшудаи ҳар истгоҳи оммавӣ: сатҳ, қимат, моддаи муайянкунанда, зериндексҳо ва аломати кӯҳнашавӣ (аз 6 соат кӯҳнатар). Барои шкалаи RATIO_TO_LIMIT — нишондодҳои методикаи Агентӣ (indicators): ҷамъи NO₂+SO₂, консентратсияҳои якмаротибагии баландтарин бо нисбат ба ҲМҒ(як), нишонаҳои ИБ/НИБ; units — воҳидҳои намоиш аз рӯи моддаҳо.

Параметрҳо
ПараметрҶойНамудТавсиф
scalequerystringРамзи шкала: NATIONAL_OPERATIONAL (пешфарз), WHO_24H ё IZA

Намунаи дархост

curl "https://havo.tj/api/v1/index/current"
Кушодан дар браузер → →

Ҷавобҳо

200application/jsonҶавоби бомуваффақият

  • scale objectҳатмӣ
    • code stringҳатмӣ
    • kind "breakpoints" | "ratio_to_limit" | "iza"ҳатмӣ
    • levels object[]ҳатмӣ
      • level integerҳатмӣ
      • color stringҳатмӣ — Hex colour
      • label objectҳатмӣ — Localized text: Tajik (tg), Russian (ru), English (en)
        • tg string
        • ru string
        • en string
      • lo number
      • hi number | null
  • generatedAt string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
  • units objectҳатмӣ — Display unit per pollutant code (µg/m³ or mg/m³ as configured by the Agency; ppm, ppb)
  • stations object[]ҳатмӣ
    • id integerҳатмӣ
    • slug stringҳатмӣ
    • code stringҳатмӣ
    • name objectҳатмӣ — Localized text: Tajik (tg), Russian (ru), English (en)
      • tg string
      • ru string
      • en string
    • level integerҳатмӣ — Air quality level 1–5 (1–6 for six-category scales such as US AQI); 0 — no data
    • value number | nullҳатмӣ
    • time string (date-time) | nullҳатмӣ
    • stale booleanҳатмӣ — Index older than 6 hours
    • dominantPollutant string | nullҳатмӣ — Pollutant code with the worst sub-index
    • subIndices objectҳатмӣ
      • value numberҳатмӣ — Concentration used for the sub-index, in the display unit
      • level integerҳатмӣ
      • index numberҳатмӣ — Continuous sub-index; for RATIO_TO_LIMIT — ratio to the daily limit
    • indicators object | nullҳатмӣ
      • no2so2Sum number | nullҳатмӣ — NO2 + SO2 summation: sum of the daily-limit ratios; null when one of them is not measured
      • highPollution booleanҳатмӣ — High pollution (ВЗ): a pollutant reached 10 single limits
      • extremeHighPollution booleanҳатмӣ — Extremely high pollution (ЭВЗ): a pollutant reached 50 single limits
      • maxSingle objectҳатмӣ
        • value numberҳатмӣ — Maximum single (hourly) concentration of the last 24 hours, in the display unit
        • ratio number | nullҳатмӣ — Ratio to the single limit; null without a limit
      • flagged objectҳатмӣ — Pollutants with high/extremely high pollution: ratio to the single limit

404application/jsonОбъект ёфт нашуд

  • error stringҳатмӣ
GET/api/v1/exceedancesкеш 60 s

Зиёдшавиҳои фаъоли ҳадҳо

Ҳодисаҳои кушодаи зиёдшавӣ аз рӯи қоидаҳои огоҳиҳои Агентӣ (канали «портал»).

Намунаи дархост

curl "https://havo.tj/api/v1/exceedances"
Кушодан дар браузер → →

Ҷавобҳо

200application/jsonҶавоби бомуваффақият

  • generatedAt string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
  • events object[]ҳатмӣ
    • id integerҳатмӣ
    • startedAt string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
    • station objectҳатмӣ
      • id integerҳатмӣ
      • slug stringҳатмӣ
      • name objectҳатмӣ — Localized text: Tajik (tg), Russian (ru), English (en)
        • tg string
        • ru string
        • en string
    • rule stringҳатмӣ
    • kind "pollutant" | "index"ҳатмӣ
    • pollutant string | nullҳатмӣ
    • unit string | nullҳатмӣ
    • value number | nullҳатмӣ
    • threshold numberҳатмӣ
    • level integer | nullҳатмӣ

Пешгӯиҳо

GET/api/v1/forecast/{slug}кеш 300 s

Пешгӯии обу ҳаво барои нуқта

Силсилаи соатӣ ва ҷамъбасти шабонарӯзии SmartMet Server; вақти оғози модел ва истеҳсолкунандаи маълумот.

Параметрҳо
ПараметрҶойНамудТавсиф
slugҳатмӣpathstringСуроғаи нуқтаи пешгӯӣ, масалан dushanbe
hoursqueryinteger = 72Шумораи соатҳои силсилаи соатӣ (1–240)
daysqueryinteger = 10Шумораи рӯзҳои пешгӯии шабонарӯзӣ (1–16)

Намунаи дархост

curl "https://havo.tj/api/v1/forecast/dushanbe?hours=48&days=7"
Кушодан дар браузер → →

Ҷавобҳо

200application/jsonҶавоби бомуваффақият

  • location objectҳатмӣ
    • slug stringҳатмӣ
    • name objectҳатмӣ — Localized text: Tajik (tg), Russian (ru), English (en)
      • tg string
      • ru string
      • en string
    • lat numberҳатмӣ
    • lon numberҳатмӣ
    • region object | nullҳатмӣ
      • tg string
      • ru string
      • en string
  • producer string | nullҳатмӣ — SmartMet producer, e.g. ecmwf
  • originTime string (date-time) | nullҳатмӣ — Model run time
  • fetchedAt string (date-time) | nullҳатмӣ
  • timeZone "Asia/Dushanbe"ҳатмӣ
  • hourly object[]ҳатмӣ
    • time string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
    • t number | null — Air temperature, °C
    • ws number | null — Wind speed, m/s
    • wd number | null — Wind direction, degrees
    • gust number | null — Wind gust, m/s
    • rh number | null — Relative humidity, %
    • p number | null — Pressure, hPa
    • dew number | null — Dew point, °C
    • precip number | null — Precipitation, mm/h
    • cloud number | null — Total cloud cover, %
    • symbol integer | null — FMI SmartSymbol code (1xx — night variant)
  • daily object[]ҳатмӣ
    • date string (date-time)ҳатмӣ — Local midnight (UTC+5) of the day
    • tmax number | null
    • tmin number | null
    • precipSum number | null — Daily precipitation, mm
    • ws number | null — Max wind speed, m/s
    • cloud number | null
    • symbol integer | null

404application/jsonОбъект ёфт нашуд

  • error stringҳатмӣ
GET/api/v1/silam/{slug}кеш 600 s

Пешгӯии сифати ҳавои SILAM барои нуқта

Консентратсияҳои соатӣ ва сатҳҳо аз рӯи моддаҳо ва ҷамъбасти шабонарӯзӣ (миёна дар шабонарӯзи маҳаллӣ, сатҳ аз рӯи бадтарин модда).

Параметрҳо
ПараметрҶойНамудТавсиф
slugҳатмӣpathstringСуроғаи нуқтаи пешгӯӣ, масалан dushanbe

Намунаи дархост

curl "https://havo.tj/api/v1/silam/dushanbe"
Кушодан дар браузер → →

Ҷавобҳо

200application/jsonҶавоби бомуваффақият

  • location objectҳатмӣ
    • slug stringҳатмӣ
    • name objectҳатмӣ — Localized text: Tajik (tg), Russian (ru), English (en)
      • tg string
      • ru string
      • en string
    • lat numberҳатмӣ
    • lon numberҳатмӣ
  • run object | nullҳатмӣ
    • originTime string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
    • fetchedAt string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
  • units objectҳатмӣ — Unit per pollutant code
  • hourly objectҳатмӣ — Hourly [time, value, level] per pollutant
  • days object[]ҳатмӣ
    • date stringҳатмӣ — YYYY-MM-DD, local time
    • level integerҳатмӣ — Air quality level 1–5 (1–6 for six-category scales such as US AQI); 0 — no data
    • dominantPollutant string | nullҳатмӣ
    • means objectҳатмӣ — Daily mean per pollutant code

404application/jsonОбъект ёфт нашуд

  • error stringҳатмӣ
GET/api/v1/silam/layersкеш 600 s

Феҳристи қабатҳои растрии SILAM

Сарҳадҳои тӯр ва кадрҳои PNG аз рӯи моддаҳо ва соатҳои иҷрои охирин — барои гузоштан ба харита.

Намунаи дархост

curl "https://havo.tj/api/v1/silam/layers"
Кушодан дар браузер → →

Ҷавобҳо

200application/jsonҶавоби бомуваффақият

  • run object | nullҳатмӣ
    • originTime string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
    • fetchedAt string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
    • hours integerҳатмӣ
    • bounds object | nullҳатмӣ — Grid bounds in degrees for image placement
      • west numberҳатмӣ
      • south numberҳатмӣ
      • east numberҳатмӣ
      • north numberҳатмӣ
  • pollutants object[]ҳатмӣ
    • code stringҳатмӣ
    • frames object[]ҳатмӣ
      • time string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
      • url stringҳатмӣ — Relative URL of the PNG layer
      • max number | nullҳатмӣ — Maximum concentration in the domain

Огоҳиҳо

GET/api/v1/alertsкеш 60 s

Огоҳиҳои CAP

Рӯйхати меъёршудаи огоҳиҳои SmartMet Alert бо забони интихобшуда (бо фолбэк) ё GeoJSON полигонҳо барои харита.

Параметрҳо
ПараметрҶойНамудТавсиф
activequery11 — танҳо ҳоло амалкунанда
regionquerystringРамзи минтақаи огоҳиҳо (DU, SU, KT, GB, RRP)
langquerytg | ru | en = tgЗабони матнҳо: tg, ru ё en
daysqueryinteger = 7Уфуқ дар рӯзҳо (1–14)
formatqueryjson | geojson = jsonjson ё geojson

Намунаи дархост

curl "https://havo.tj/api/v1/alerts?active=1&lang=ru"
Кушодан дар браузер → →

Ҷавобҳо

200application/jsonҶавоби бомуваффақият

  • generatedAt string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
  • lang "tg" | "ru" | "en"ҳатмӣ
  • count integerҳатмӣ
  • alerts object[]ҳатмӣ
    • id integerҳатмӣ
    • identifier stringҳатмӣ — CAP identifier
    • sent string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
    • msgType "Alert" | "Update" | "Cancel" | "Ack" | "Error"ҳатмӣ
    • language stringҳатмӣ
    • event stringҳатмӣ
    • headline stringҳатмӣ
    • description string | nullҳатмӣ
    • instruction string | nullҳатмӣ
    • severity "Extreme" | "Severe" | "Moderate" | "Minor" | "Unknown"ҳатмӣ
    • color "red" | "orange" | "yellow" | "none"ҳатмӣ
    • colorHex stringҳатмӣ
    • urgency stringҳатмӣ
    • certainty stringҳатмӣ
    • effective string (date-time) | nullҳатмӣ
    • onset string (date-time) | nullҳатмӣ
    • expires string (date-time) | nullҳатмӣ
    • start string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
    • end string (date-time) | nullҳатмӣ
    • active booleanҳатмӣ
    • upcoming booleanҳатмӣ
    • regions object[]ҳатмӣ
      • code stringҳатмӣ
      • name objectҳатмӣ — Localized text: Tajik (tg), Russian (ru), English (en)
        • tg string
        • ru string
        • en string
    • areas string[]ҳатмӣ — areaDesc values
    • web string | nullҳатмӣ
    • xml stringҳатмӣ — URL of the original CAP XML

200application/geo+jsonGeoJSON ҳангоми format=geojson

  • type "FeatureCollection"ҳатмӣ
  • generatedAt string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
  • features object[]ҳатмӣ
    • type "Feature"ҳатмӣ
    • id stringҳатмӣ
    • geometry objectҳатмӣ
      • type stringҳатмӣ
      • coordinates any[]ҳатмӣ
    • properties objectҳатмӣ
      • id integerҳатмӣ
      • identifier stringҳатмӣ
      • event stringҳатмӣ
      • headline stringҳатмӣ
      • severity stringҳатмӣ
      • level integerҳатмӣ
      • color stringҳатмӣ
      • start string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
      • end string (date-time) | nullҳатмӣ
      • active booleanҳатмӣ
      • region string | nullҳатмӣ
      • areaDesc stringҳатмӣ
      • href stringҳатмӣ
GET/api/v1/alerts/{id}/xmlкеш 300 s

CAP XML аслӣ

Паёми аслии CAP 1.2 (танҳо status=Actual).

Параметрҳо
ПараметрҶойНамудТавсиф
idҳатмӣpathstringИдентификатори огоҳӣ аз рӯйхат

Намунаи дархост

curl "https://havo.tj/api/v1/alerts/1/xml"
Кушодан дар браузер → →

Ҷавобҳо

200application/cap+xmlПаёми аслии CAP 1.2

404application/jsonОбъект ёфт нашуд

  • error stringҳатмӣ

Ахбор

GET/api/v1/newsкеш 300 s

Ахбор

Ахбори нашршуда бо аннотатсия, рубрика, муқова ва истинод ба саҳифа.

Параметрҳо
ПараметрҶойНамудТавсиф
localequerytg | ru | en = tgЗабон: tg, ru ё en
pagequeryinteger = 1Рақами саҳифа
pageSizequeryinteger = 12Андозаи саҳифа (1–50)
categoryquerystringSlug-и рубрика

Намунаи дархост

curl "https://havo.tj/api/v1/news?locale=ru&pageSize=5"
Кушодан дар браузер → →

Ҷавобҳо

200application/jsonҶавоби бомуваффақият

  • locale "tg" | "ru" | "en"ҳатмӣ
  • page integerҳатмӣ
  • pageSize integerҳатмӣ
  • total integerҳатмӣ
  • items object[]ҳатмӣ
    • id integerҳатмӣ
    • slug stringҳатмӣ
    • title stringҳатмӣ
    • excerpt stringҳатмӣ
    • publishedAt string (date-time) | nullҳатмӣ
    • updatedAt string (date-time)ҳатмӣ — ISO 8601 timestamp (UTC)
    • pinned booleanҳатмӣ
    • category object | nullҳатмӣ
      • slug stringҳатмӣ
      • name stringҳатмӣ
    • cover string | nullҳатмӣ — Absolute URL of the cover image
    • url stringҳатмӣ — Absolute URL of the article
GET/api/v1/news/rss.xmlкеш 300 s

RSS-и ахбор

20 ахбори охирин дар RSS 2.0 бо забони интихобшуда.

Параметрҳо
ПараметрҶойНамудТавсиф
localequerytg | ru | en = tgЗабон: tg, ru ё en

Намунаи дархост

curl "https://havo.tj/api/v1/news/rss.xml?locale=tg"
Кушодан дар браузер → →

Ҷавобҳо

200application/rss+xmlRSS 2.0

География

GET/api/v1/regionsкеш 600 s

Сарҳадҳои маъмурӣ: вилоятҳо

Вилоятҳо, Душанбе ва НТҶ бо полигонҳои соддакардашуда, сентроидҳо, шумораи истгоҳҳо ва бадтарин сатҳи ҷории индекс (0 — маълумот нест). Кэш 10 дақиқа, ETag.

Намунаи дархост

curl "https://havo.tj/api/v1/regions"
Кушодан дар браузер → →

Ҷавобҳо

200application/jsonҶавоби бомуваффақият

  • type "FeatureCollection"ҳатмӣ
  • features object[]ҳатмӣ
    • type "Feature"ҳатмӣ
    • id integerҳатмӣ
    • geometry objectҳатмӣ
      • type "MultiPolygon"ҳатмӣ
      • coordinates any[]ҳатмӣ
    • properties objectҳатмӣ
      • id integerҳатмӣ
      • code stringҳатмӣ
      • name objectҳатмӣ — Localized text: Tajik (tg), Russian (ru), English (en)
        • tg string
        • ru string
        • en string
      • stationsCount integerҳатмӣ — Public stations located inside the unit
      • level integerҳатмӣ — Worst current index level among the unit's stations; 0 — no data or stale
      • sortOrder integerҳатмӣ
      • centroid [number, number] | nullҳатмӣ
GET/api/v1/districtsкеш 600 s

Сарҳадҳои маъмурӣ: ноҳияҳо

Ноҳияҳо ва шаҳрҳои тобеи вилоят бо полигонҳои соддакардашуда, рамзи вилоят, шумораи истгоҳҳо ва бадтарин сатҳи ҷории индекс. Воҳидҳои бе геометрия дохил карда намешаванд.

Намунаи дархост

curl "https://havo.tj/api/v1/districts"
Кушодан дар браузер → →

Ҷавобҳо

200application/jsonҶавоби бомуваффақият

  • type "FeatureCollection"ҳатмӣ
  • features object[]ҳатмӣ
    • type "Feature"ҳатмӣ
    • id integerҳатмӣ
    • geometry objectҳатмӣ
      • type "MultiPolygon"ҳатмӣ
      • coordinates any[]ҳатмӣ
    • properties objectҳатмӣ
      • id integerҳатмӣ
      • code stringҳатмӣ
      • name objectҳатмӣ — Localized text: Tajik (tg), Russian (ru), English (en)
        • tg string
        • ru string
        • en string
      • stationsCount integerҳатмӣ — Public stations located inside the unit
      • level integerҳатмӣ — Worst current index level among the unit's stations; 0 — no data or stale
      • regionId integerҳатмӣ — Parent region id
      • regionCode stringҳатмӣ — Parent region code (DU, RRP, SU, KT, GB)

Қабули маълумоти истгоҳҳо

POST/api/v1/ingest/{code}

Қабули ченакҳо аз истгоҳ

Логгер, агенти истгоҳ ё нармафзори истеҳсолкунанда массиви JSON-и ченакҳоро мефиристад (то 1000 дар як дархост). Вақт — ISO 8601 бо минтақа ё маҳаллӣ (Asia/Dushanbe); моддаҳо — рамзҳои PM25, PM10, NO2, SO2, CO, O3 ё муродифҳо; воҳиди пешфарз — воҳиди вуруди истгоҳ. Қиматҳо ба воҳиди модда табдил дода, аз қоидаи доираи QC мегузаранд ва аз рӯи калиди вақт/модда/миёнагирӣ сабт мешаванд — фиристодани такрорӣ идемпотент аст, қарорҳои оператор нигоҳ дошта мешаванд. Ҷавоб шумораи сабтҳои қабулшуда ва радшуда ва сабабҳоро барои ҳар кадом дар бар мегирад. Пас аз сабт индекс ва қоидаҳои огоҳӣ аз нав ҳисоб мешаванд.

Параметрҳо
ПараметрҶойНамудТавсиф
codeҳатмӣpathstringРамзи истгоҳ аз феҳрист (масалан DU-01)

Иҷозат: Калиди API-и истгоҳ аз корти истгоҳ дар панели маъмурӣ; бо сарлавҳаи Authorization: Bearer <калид> фиристода мешавад. Дар пойгоҳ танҳо хэши калид нигоҳ дошта мешавад.

Матни дархост

application/json

object[] | object

Намунаи дархост

curl -X POST "https://havo.tj/api/v1/ingest/DU-01" \
  -H "Authorization: Bearer <station-api-key>" \
  -H "Content-Type: application/json" \
  -d '[
  {
    "time": "2026-10-18T07:00:00Z",
    "pollutant": "PM25",
    "value": 42.5
  },
  {
    "time": "2026-10-18 12:00",
    "pollutant": "pm2.5",
    "value": "12,5",
    "unit": "µg/m³"
  },
  {
    "time": "2026-10-18T07:00:00Z",
    "pollutant": "NO2",
    "value": 10,
    "unit": "ppb",
    "flag": "valid"
  },
  {
    "time": "2026-10-18T07:00:00Z",
    "pollutant": "CO",
    "value": null,
    "flag": "missing"
  }
]'

Ҷавобҳо

200application/jsonАқаллан як сабт қабул шуд (сабабҳои радшудаҳо — дар errors)

  • station objectҳатмӣ
    • id integerҳатмӣ
    • code stringҳатмӣ
    • slug stringҳатмӣ
  • received integerҳатмӣ — Records in the request
  • accepted integerҳатмӣ — Records stored (distinct time/pollutant/averaging keys)
  • rejected integerҳатмӣ — Records rejected; see errors
  • inserted integerҳатмӣ — New rows
  • updated integerҳатмӣ — Existing rows overwritten (idempotent re-sends)
  • skippedLocked integerҳатмӣ — Rows kept as decided by an operator (qc_locked)
  • invalidRange integerҳатмӣ — Accepted values outside the QC range, stored with flag invalid
  • duplicates integerҳатмӣ — Records superseded by a later record with the same key
  • from string (date-time) | nullҳатмӣ
  • to string (date-time) | nullҳатмӣ
  • pollutants string[]ҳатмӣ — Pollutant codes of accepted records
  • errors object[]ҳатмӣ — Per-record reasons for rejected and superseded records
    • index integerҳатмӣ — Index of the record in the request array
    • message stringҳатмӣ — Reason: time, futureTime, tooOld, unknownPollutant:X, pollutantNotConfigured:X, emptyValue, value:X, unit:X, unitConversion:X, averagingMin:X, duplicate

400application/jsonПараметрҳо нодурустанд

  • error stringҳатмӣ — unauthorized | station_inactive | invalid_json | validation | payload_too_large | rate_limited
  • message string
  • issues object[]
    • path stringҳатмӣ
    • message stringҳатмӣ

401application/jsonСарлавҳаи Authorization нест ё калид ба рамзи истгоҳ мувофиқ нест

  • error stringҳатмӣ — unauthorized | station_inactive | invalid_json | validation | payload_too_large | rate_limited
  • message string
  • issues object[]
    • path stringҳатмӣ
    • message stringҳатмӣ

403application/jsonИстгоҳ боздошта ё аз истифода бароварда шудааст

  • error stringҳатмӣ — unauthorized | station_inactive | invalid_json | validation | payload_too_large | rate_limited
  • message string
  • issues object[]
    • path stringҳатмӣ
    • message stringҳатмӣ

413application/jsonМатн аз 2 МБ калонтар аст

  • error stringҳатмӣ — unauthorized | station_inactive | invalid_json | validation | payload_too_large | rate_limited
  • message string
  • issues object[]
    • path stringҳатмӣ
    • message stringҳатмӣ

422application/jsonЯгон сабт қабул нашуд — ниг. errors

  • station objectҳатмӣ
    • id integerҳатмӣ
    • code stringҳатмӣ
    • slug stringҳатмӣ
  • received integerҳатмӣ — Records in the request
  • accepted integerҳатмӣ — Records stored (distinct time/pollutant/averaging keys)
  • rejected integerҳатмӣ — Records rejected; see errors
  • inserted integerҳатмӣ — New rows
  • updated integerҳатмӣ — Existing rows overwritten (idempotent re-sends)
  • skippedLocked integerҳатмӣ — Rows kept as decided by an operator (qc_locked)
  • invalidRange integerҳатмӣ — Accepted values outside the QC range, stored with flag invalid
  • duplicates integerҳатмӣ — Records superseded by a later record with the same key
  • from string (date-time) | nullҳатмӣ
  • to string (date-time) | nullҳатмӣ
  • pollutants string[]ҳатмӣ — Pollutant codes of accepted records
  • errors object[]ҳатмӣ — Per-record reasons for rejected and superseded records
    • index integerҳатмӣ — Index of the record in the request array
    • message stringҳатмӣ — Reason: time, futureTime, tooOld, unknownPollutant:X, pollutantNotConfigured:X, emptyValue, value:X, unit:X, unitConversion:X, averagingMin:X, duplicate

429application/jsonМаҳдудияти дархостҳои истгоҳ гузашт (ниг. Retry-After)

  • error stringҳатмӣ — unauthorized | station_inactive | invalid_json | validation | payload_too_large | rate_limited
  • message string
  • issues object[]
    • path stringҳатмӣ
    • message stringҳатмӣ

Маълумот — тибқи иҷозатномаи CC BY 4.0 бо нишон додани манбаъ; пешгӯиҳои FMI — бо нишон додани Институти обуҳавошиносии Финляндия.

Барои сомонаҳои бе таҳия виджетҳои iframe /embed/aqi, /embed/forecast ва /embed/alerts мавҷуданд (ниг. «Маълумоти кушода»).