{
  "checkedAt": "2026-10-22",
  "version": 1,
  "scope": "Dated source-family review, not proof that every public dataset has been exhausted.",
  "sources": [
    {
      "id": "doe",
      "name": "DOE MyEQMS / APIMS",
      "family": "air",
      "url": "https://eqms.doe.gov.my/apims/main",
      "signal": "Observed · API/IPU",
      "cadence": "Hourly; current ≤3h",
      "scope": "MY station network",
      "license": "DOE attribution; redistribution terms not established",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "Index, not PM2.5 or an address reading. Disabled/old stations remain unknown.",
        "ms": "Indeks, bukan PM2.5 atau bacaan alamat. Stesen lama kekal tidak diketahui.",
        "zh": "指数并非PM2.5或地址读数。旧站或停用站保持未知。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "jps",
      "name": "JPS Public Infobanjir",
      "family": "water",
      "url": "https://publicinfobanjir.water.gov.my/",
      "signal": "Observed · water level m",
      "cadence": "120s relay; current ≤45min",
      "scope": "Mapped MY gauges",
      "license": "JPS attribution; no blanket open licence verified",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "Station datum and thresholds differ. Not flood depth at a home.",
        "ms": "Datum dan ambang stesen berbeza. Bukan kedalaman banjir di rumah.",
        "zh": "站点基准与阈值不同。并非住宅洪水深度。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "met",
      "name": "MET Malaysia weather / warnings",
      "family": "weather",
      "url": "https://developer.data.gov.my/realtime-api/weather",
      "signal": "Official forecast / issued warning",
      "cadence": "Forecast + validity windows",
      "scope": "Named states / districts / waters",
      "license": "CC BY 4.0",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "A forecast is not a rain gauge. Expired warnings cannot remain in force.",
        "ms": "Ramalan bukan tolok hujan. Amaran tamat tidak kekal berkuat kuasa.",
        "zh": "预报不是雨量计。过期警报不能视为生效。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "asmc",
      "name": "ASMC regional haze products",
      "family": "air",
      "url": "https://asmc.asean.org/asmc-haze-hotspot-daily/",
      "signal": "Regional satellite interpretation",
      "cadence": "Daily publication",
      "scope": "ASEAN",
      "license": "ASMC attribution; product terms apply",
      "status": {
        "malaysia": "integrated",
        "kl": "external"
      },
      "limit": {
        "en": "Publication age matters. Not a local concentration or smoke-source attribution.",
        "ms": "Usia penerbitan penting. Bukan kepekatan setempat atau atribusi asap.",
        "zh": "须看发布时间。并非本地浓度或烟源归因。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "cams",
      "name": "CAMS / Open-Meteo",
      "family": "air",
      "url": "https://open-meteo.com/en/docs/air-quality-api",
      "signal": "Model · PM2.5 µg/m³ / US AQI",
      "cadence": "Model initialization + valid hour",
      "scope": "~40km global model cells",
      "license": "CC BY 4.0 data; free API non-commercial terms",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "Nearby neighbourhoods can share a cell. US AQI differs from Malaysian API.",
        "ms": "Kejiranan boleh berkongsi sel. US AQI berbeza daripada IPU Malaysia.",
        "zh": "邻里可共用模型网格。美国AQI不同于马来西亚API。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "openmeteo-wx",
      "name": "Open-Meteo weather model",
      "family": "weather",
      "url": "https://open-meteo.com/en/docs",
      "signal": "Model · precipitation mm per 15 min / temperature °C / wind km/h",
      "cadence": "15-minute current aggregate; hourly forecast",
      "scope": "~11km grid, 21 Malaysian cities",
      "license": "CC BY 4.0 data; free API non-commercial terms",
      "status": {
        "malaysia": "integrated",
        "kl": "candidate"
      },
      "limit": {
        "en": "current.precipitation is a total over the payload's own window (900 s = 15 min), not an hourly rate. An hourly rate is arithmetic on that total; the board names the window it shows.",
        "ms": "current.precipitation ialah jumlah dalam tempoh payload itu sendiri (900 s = 15 min), bukan kadar sejam. Kadar sejam ialah aritmetik atas jumlah itu; papan menyatakan tempoh yang dipaparkan.",
        "zh": "current.precipitation 是载荷自身时间窗（900 秒 = 15 分钟）内的累计量，不是小时率。小时率是对该累计量的换算；版面会标明所显示数字的时间窗。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "firms",
      "name": "NASA FIRMS VIIRS",
      "family": "fire",
      "url": "https://firms.modaps.eosdis.nasa.gov/",
      "signal": "Satellite detection · FRP MW",
      "cadence": "Near-real-time; retain acquisition time",
      "scope": "Regional hotspot detections",
      "license": "NASA data policy + sensor attribution",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "Detection is not a confirmed fire or burned area; no smoke attribution.",
        "ms": "Pengesanan bukan kebakaran disahkan atau kawasan terbakar; tiada atribusi asap.",
        "zh": "探测点不等于确认火灾或过火面积，不能据此归因烟源。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "lstday",
      "name": "MODIS Terra daytime surface heat",
      "family": "satellite",
      "url": "https://gibs.earthdata.nasa.gov/layer-metadata/v1.0/MODIS_Terra_Land_Surface_Temp_Day.json",
      "signal": "Satellite retrieval · K",
      "cadence": "Daily available product / clear sky",
      "scope": "1km",
      "license": "NASA / product-provider product attribution; scientific product terms",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "Surface temperature, not air temperature or heat stress. K − 273.15 = °C.",
        "ms": "Suhu permukaan, bukan suhu udara atau tekanan haba. K − 273.15 = °C.",
        "zh": "地表温度并非气温或热应激。K − 273.15 = °C。"
      },
      "access": "none",
      "basis": "NASA capabilities GET + primary product metadata, checked 2026-10-15"
    },
    {
      "id": "lstnight",
      "name": "MODIS Terra nighttime surface heat",
      "family": "satellite",
      "url": "https://gibs.earthdata.nasa.gov/layer-metadata/v1.0/MODIS_Terra_Land_Surface_Temp_Night.json",
      "signal": "Satellite retrieval · K",
      "cadence": "Daily available product / clear sky",
      "scope": "1km",
      "license": "NASA / product-provider product attribution; scientific product terms",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "A single image is not a measured urban heat-island difference.",
        "ms": "Imej tunggal bukan ukuran perbezaan pulau haba bandar.",
        "zh": "单幅影像不等于实测城市热岛温差。"
      },
      "access": "none",
      "basis": "NASA capabilities GET + primary product metadata, checked 2026-10-15"
    },
    {
      "id": "soil",
      "name": "SMAP Level 4 soil moisture",
      "family": "satellite",
      "url": "https://gibs.earthdata.nasa.gov/layer-metadata/v1.0/SMAP_L4_Analyzed_Surface_Soil_Moisture.json",
      "signal": "Model + satellite assimilation · m³/m³",
      "cadence": "Dated daily browse; product latency",
      "scope": "9km",
      "license": "NASA / product-provider product attribution; scientific product terms",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "Not field saturation, flood depth or a flood forecast.",
        "ms": "Bukan ketepuan tapak, kedalaman atau ramalan banjir.",
        "zh": "并非实地饱和度、洪水深度或洪水预报。"
      },
      "access": "none",
      "basis": "NASA capabilities GET + primary product metadata, checked 2026-10-15"
    },
    {
      "id": "ndvi",
      "name": "VIIRS NOAA20 vegetation",
      "family": "satellite",
      "url": "https://gibs.earthdata.nasa.gov/layer-metadata/v1.0/VIIRS_NOAA20_NDVI_8Day.json",
      "signal": "Satellite composite · NDVI",
      "cadence": "8-day composite; provider dates",
      "scope": "1km",
      "license": "NASA / product-provider product attribution; scientific product terms",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "Greenness is not canopy cover, park access or legal land use.",
        "ms": "Kehijauan bukan kanopi, akses taman atau guna tanah sah.",
        "zh": "绿度不等于树冠覆盖、公园可达性或法定土地用途。"
      },
      "access": "none",
      "basis": "NASA capabilities GET + primary product metadata, checked 2026-10-15"
    },
    {
      "id": "imerg",
      "name": "GPM IMERG precipitation rate",
      "family": "satellite",
      "url": "https://gibs.earthdata.nasa.gov/layer-metadata/v1.0/IMERG_Precipitation_Rate.json",
      "signal": "Satellite estimate · mm/h",
      "cadence": "Dated daily browse; not live gauge",
      "scope": "0.1°",
      "license": "NASA / product-provider product attribution; scientific product terms",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "Rate is not accumulated daily rainfall. Validate local pixels and dates.",
        "ms": "Kadar bukan jumlah hujan harian. Semak piksel setempat dan tarikh.",
        "zh": "降雨率不等于日累计雨量。须核对当地像素与日期。"
      },
      "access": "none",
      "basis": "NASA capabilities GET + primary product metadata, checked 2026-10-15"
    },
    {
      "id": "satwater",
      "name": "MODIS combined flood",
      "family": "satellite",
      "url": "https://gibs.earthdata.nasa.gov/layer-metadata/v1.0/MODIS_Combined_Flood_3-Day.json",
      "signal": "Satellite classification",
      "cadence": "Three-day composite",
      "scope": "250m",
      "license": "NASA / product-provider product attribution; scientific product terms",
      "status": {
        "malaysia": "candidate",
        "kl": "integrated"
      },
      "limit": {
        "en": "Clouds, buildings and vegetation hide water; not road safety or flood depth.",
        "ms": "Awan, bangunan dan tumbuhan melindungi air; bukan keselamatan jalan atau kedalaman banjir.",
        "zh": "云、建筑和植被可遮挡水面；不能判定道路安全或水深。"
      },
      "access": "none",
      "basis": "NASA capabilities GET + primary product metadata, checked 2026-10-15"
    },
    {
      "id": "night",
      "name": "VIIRS Black Marble",
      "family": "satellite",
      "url": "https://gibs.earthdata.nasa.gov/layer-metadata/v1.0/VIIRS_NOAA20_GapFilled_BRDF_Corrected_DayNightBand_Radiance.json",
      "signal": "Satellite corrected / gap-filled radiance",
      "cadence": "Daily availability; often delayed",
      "scope": "500m",
      "license": "NASA / product-provider product attribution; scientific product terms",
      "status": {
        "malaysia": "candidate",
        "kl": "integrated"
      },
      "limit": {
        "en": "Radiance is not population, GDP, electricity use or proof of unbuilt land.",
        "ms": "Radians bukan penduduk, KDNK, penggunaan elektrik atau bukti tanah tidak dibina.",
        "zh": "辐亮度并非人口、GDP、用电量或未开发土地证据。"
      },
      "access": "none",
      "basis": "NASA capabilities GET + primary product metadata, checked 2026-10-15"
    },
    {
      "id": "aod",
      "name": "VIIRS Deep Blue aerosol",
      "family": "satellite",
      "url": "https://gibs.earthdata.nasa.gov/layer-metadata/v1.0/VIIRS_NOAA20_AOD_Deep_Blue_Land_Ocean.json",
      "signal": "Satellite column · unitless AOD",
      "cadence": "Daytime pass; cloud gaps",
      "scope": "6km",
      "license": "NASA / product-provider product attribution; scientific product terms",
      "status": {
        "malaysia": "candidate",
        "kl": "integrated"
      },
      "limit": {
        "en": "Atmospheric column is not surface PM2.5.",
        "ms": "Lajur atmosfera bukan PM2.5 permukaan.",
        "zh": "大气柱气溶胶并非地面PM2.5。"
      },
      "access": "none",
      "basis": "NASA capabilities GET + primary product metadata, checked 2026-10-15"
    },
    {
      "id": "himawari",
      "name": "Himawari AHI infrared",
      "family": "satellite",
      "url": "https://gibs.earthdata.nasa.gov/layer-metadata/v1.0/Himawari_AHI_Band13_Clean_Infrared.json",
      "signal": "Satellite cloud-top temperature · K",
      "cadence": "10min product frames",
      "scope": "2km",
      "license": "NASA/JMA product attribution; scientific product terms",
      "status": {
        "malaysia": "candidate",
        "kl": "integrated"
      },
      "limit": {
        "en": "Cloud-top temperature is not measured rainfall or surface heat.",
        "ms": "Suhu puncak awan bukan hujan terukur atau haba permukaan.",
        "zh": "云顶温度并非实测降雨或地表温度。"
      },
      "access": "none",
      "basis": "NASA capabilities GET + primary product metadata, checked 2026-10-15"
    },
    {
      "id": "ridership",
      "name": "Prasarana / MOT headline ridership",
      "family": "mobility",
      "url": "https://data.gov.my/data-catalogue/ridership_headline",
      "signal": "Published trips / daily means",
      "cadence": "Daily reference rows; audited monthly",
      "scope": "Operator lines / services",
      "license": "CC BY 4.0",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "Trips, not unique people or live crowding. Latest source date 2026-08-31 in this probe.",
        "ms": "Perjalanan, bukan individu unik atau kesesakan semasa. Tarikh sumber terakhir 2026-08-31.",
        "zh": "行程次数并非独立乘客或实时拥挤度。本次源数据截至2026-08-31。"
      },
      "access": "none",
      "basis": "Catalogue + CSV GET through 2026-08-31, checked 2026-10-15"
    },
    {
      "id": "gtfs",
      "name": "Prasarana / KTMB GTFS",
      "family": "mobility",
      "url": "https://developer.data.gov.my/realtime-api/gtfs-static",
      "signal": "Operator vehicle positions / scheduled routes",
      "cadence": "RT positions; static feed daily refresh",
      "scope": "Operator network",
      "license": "data.gov.my CC BY 4.0; agency terms",
      "status": {
        "malaysia": "integrated",
        "kl": "external"
      },
      "limit": {
        "en": "Position does not establish occupancy, service reliability or passenger wait time.",
        "ms": "Kedudukan bukan penumpang, kebolehpercayaan atau masa menunggu.",
        "zh": "位置不能证明载客量、可靠性或候车时间。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "dbkl-water",
      "name": "DBKL detention ponds / pump houses",
      "family": "water",
      "url": "https://www.dbkl.gov.my/data-statistik/data-terbuka",
      "signal": "Official registry · XLSX",
      "cadence": "Publication vintage must be checked",
      "scope": "KL facility lists",
      "license": "Public download; reuse licence not verified",
      "status": {
        "malaysia": "candidate",
        "kl": "candidate"
      },
      "limit": {
        "en": "Names alone do not establish surveyed coordinates, pump operation or current storage.",
        "ms": "Nama tidak membuktikan koordinat ukur, operasi pam atau simpanan semasa.",
        "zh": "名称不能证明测绘坐标、水泵运行或当前蓄水量。"
      },
      "access": "none",
      "basis": "DBKL catalogue + download URLs checked 2026-10-15"
    },
    {
      "id": "myhijau",
      "name": "PTGWP / MyHijau gazetted green areas",
      "family": "land",
      "url": "https://www.dbkl.gov.my/files/ptg_myhijau2.pdf",
      "signal": "Official notice linking to PTGWP",
      "cadence": "Gazette/reference",
      "scope": "KL gazetted sites",
      "license": "Public notice; geometry reuse not verified",
      "status": {
        "malaysia": "external",
        "kl": "external"
      },
      "limit": {
        "en": "This PDF is a gateway notice, not reusable park geometry.",
        "ms": "PDF ini notis pautan, bukan geometri taman guna semula.",
        "zh": "该PDF只是入口通知，不是可复用公园几何。"
      },
      "access": "none",
      "basis": "DBKL one-page PDF read 2026-10-15"
    },
    {
      "id": "kl2040",
      "name": "KL Structure Plan 2040 / Climate Action Plan 2050",
      "family": "planning",
      "url": "https://ppkl.dbkl.gov.my/wp-content/uploads/2023/12/Pelan-Struktur-Kuala-Lumpur-2040-ENG.pdf",
      "signal": "Official policy / planning reference",
      "cadence": "Published editions",
      "scope": "KL planning area",
      "license": "DBKL publication terms",
      "status": {
        "malaysia": "external",
        "kl": "external"
      },
      "limit": {
        "en": "Policy maps are not live development approvals or surveyed parcel boundaries.",
        "ms": "Peta dasar bukan kelulusan pembangunan semasa atau sempadan lot terukur.",
        "zh": "政策图并非实时开发许可或测绘地块边界。"
      },
      "access": "none",
      "basis": "Primary DBKL planning publication discovered 2026-10-15"
    },
    {
      "id": "sentinel",
      "name": "Copernicus Sentinel 1 / 2 / 3 / 5P",
      "family": "satellite",
      "url": "https://dataspace.copernicus.eu/data-collections",
      "signal": "Radar / optical / thermal / atmospheric retrievals",
      "cadence": "Orbit + processing latency",
      "scope": "Scene footprints; instrument resolution",
      "license": "Copernicus free/open data; service quotas apply",
      "status": {
        "malaysia": "restricted",
        "kl": "candidate"
      },
      "limit": {
        "en": "Scene-level processing needs QA and quotas; no automatic flood or smoke attribution.",
        "ms": "Pemprosesan adegan perlu QA dan kuota; tiada atribusi banjir/asap automatik.",
        "zh": "场景处理需要质量控制和配额；不能自动归因洪水或烟源。"
      },
      "access": "Catalogue public; some processing requires OAuth",
      "basis": "Copernicus primary collections page checked 2026-10-15"
    },
    {
      "id": "landsat",
      "name": "USGS Landsat Collection 2",
      "family": "satellite",
      "url": "https://www.usgs.gov/landsat-missions/landsat-collection-2",
      "signal": "Optical / surface temperature archive",
      "cadence": "Scene revisit + cloud and QA screening",
      "scope": "30m optical; thermal native coarser",
      "license": "USGS public-domain data policy",
      "status": {
        "malaysia": "candidate",
        "kl": "candidate"
      },
      "limit": {
        "en": "Useful for historical change; thermal resampling does not create building-level measurements.",
        "ms": "Berguna untuk perubahan sejarah; pensampelan semula terma bukan ukuran bangunan.",
        "zh": "适合历史变化；热红外重采样不会产生建筑级测量。"
      },
      "access": "none",
      "basis": "Primary catalogue candidate; local scene pipeline not integrated"
    },
    {
      "id": "worldcover",
      "name": "ESA WorldCover / Dynamic World",
      "family": "land",
      "url": "https://esa-worldcover.org/en/data-access",
      "signal": "Land-cover classification",
      "cadence": "WorldCover 2020/2021 reference",
      "scope": "10m classification",
      "license": "WorldCover CC BY 4.0; product-specific terms",
      "status": {
        "malaysia": "candidate",
        "kl": "candidate"
      },
      "limit": {
        "en": "Classification is not a cadastral or legal zoning map; confusion classes require validation.",
        "ms": "Pengelasan bukan kadaster atau zon sah; kelas perlu disahkan.",
        "zh": "分类并非地籍或法定分区；需验证混淆类别。"
      },
      "access": "none",
      "basis": "Primary catalogue candidate; no local accuracy validation"
    },
    {
      "id": "ghsl",
      "name": "GHSL / Google Open Buildings 2.5D / Overture",
      "family": "buildings",
      "url": "https://human-settlement.emergency.copernicus.eu/",
      "signal": "Dated geometry / estimated building height",
      "cadence": "Release / 2018 GHSL / 2023 Google",
      "scope": "100m area estimates vs individual footprints",
      "license": "GHSL notice; Google terms; Overture per-source licences",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "Inferred heights are not surveyed structure, valuation, flood clearance or fire-safety evidence.",
        "ms": "Ketinggian anggaran bukan bukti ukur struktur, nilai, aras banjir atau keselamatan kebakaran.",
        "zh": "推断高度不是测绘结构、估值、防洪净空或消防安全证据。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "osm",
      "name": "OpenStreetMap roads / rail / waterways",
      "family": "land",
      "url": "https://www.openstreetmap.org/copyright",
      "signal": "Community-mapped reference geometry",
      "cadence": "Dated extracts",
      "scope": "Mapped features; coverage varies",
      "license": "ODbL attribution + database obligations",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "Not an official completeness guarantee or a current road-closure feed.",
        "ms": "Bukan jaminan kelengkapan rasmi atau suapan jalan ditutup semasa.",
        "zh": "不保证官方完整性，也不是实时封路数据。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "hies",
      "name": "DOSM HIES income / poverty",
      "family": "people",
      "url": "https://data.gov.my/data-catalogue/hh_income_district",
      "signal": "Published survey · RM / household %",
      "cadence": "2024 survey snapshot",
      "scope": "State / source district geography",
      "license": "CC BY 4.0",
      "status": {
        "malaysia": "integrated",
        "kl": "external"
      },
      "limit": {
        "en": "Citizen households, nominal RM. Do not substitute into Census 2020 exposure weights.",
        "ms": "Isi rumah warganegara, RM nominal. Jangan ganti wajaran pendedahan Banci 2020.",
        "zh": "公民家庭、名义令吉。不得替换2020人口普查暴露权重。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "dosm",
      "name": "DOSM population / CPI / labour / GDP",
      "family": "people",
      "url": "https://developer.data.gov.my/static-api/opendosm",
      "signal": "Published statistics; separate periods",
      "cadence": "Annual / monthly / quarterly by series",
      "scope": "National / state / district as published",
      "license": "CC BY 4.0",
      "status": {
        "malaysia": "integrated",
        "kl": "external"
      },
      "limit": {
        "en": "Reference period differs from fetch time; no borrowed neighbouring district values.",
        "ms": "Tempoh rujukan berbeza daripada masa muat turun; jangan pinjam nilai daerah jiran.",
        "zh": "统计期不同于抓取时间；不得借用邻区数值。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "hrsl",
      "name": "Meta HRSL population / age",
      "family": "people",
      "url": "https://dataforgood.facebook.com/dfg/tools/high-resolution-population-density-maps",
      "signal": "Modelled spatial allocation / historical reference",
      "cadence": "Dated population surfaces",
      "scope": "Source grid; dashboard aggregates",
      "license": "Product-specific CC BY attribution",
      "status": {
        "malaysia": "integrated",
        "kl": "candidate"
      },
      "limit": {
        "en": "Spatial allocation is estimated; cell totals do not locate individual people.",
        "ms": "Agihan ruang dianggarkan; jumlah sel tidak menempatkan individu.",
        "zh": "空间分布为估计，网格总量不定位个人。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "moh",
      "name": "MOH / KKMNOW health",
      "family": "services",
      "url": "https://data.moh.gov.my/",
      "signal": "Published health / facility statistics",
      "cadence": "Series-dependent, inspect reference date",
      "scope": "Published administrative geography",
      "license": "Dataset-specific public data terms",
      "status": {
        "malaysia": "candidate",
        "kl": "external"
      },
      "limit": {
        "en": "Published hospital utilisation is not current bed or ambulance availability.",
        "ms": "Penggunaan hospital diterbitkan bukan katil atau ambulans semasa.",
        "zh": "已发布医院使用率并非当前床位或救护车可用性。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "mygdi",
      "name": "MyGDI / MyGeoportal",
      "family": "land",
      "url": "https://www.mygeoportal.gov.my/en/perkongsian-data-mygdi",
      "signal": "Official geospatial discovery / requests",
      "cadence": "Custodian-specific",
      "scope": "Dataset-specific",
      "license": "Custodian/request conditions",
      "status": {
        "malaysia": "restricted",
        "kl": "restricted"
      },
      "limit": {
        "en": "Catalogue visibility does not grant anonymous parcel/imagery access or redistribution rights.",
        "ms": "Katalog kelihatan tidak memberi akses lot/imejan tanpa nama atau hak edar semula.",
        "zh": "可见目录并不授予匿名地块/影像访问或再分发权。"
      },
      "access": "Request / custodian approval",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "nadma",
      "name": "NADMA disaster operations",
      "family": "water",
      "url": "https://portalbencana.nadma.gov.my/",
      "signal": "Official operational portal",
      "cadence": "Published by authority",
      "scope": "Disaster administrative areas",
      "license": "Official portal terms",
      "status": {
        "malaysia": "external",
        "kl": "external"
      },
      "limit": {
        "en": "No stable anonymous machine feed verified here for shelters, occupancy or evacuation orders.",
        "ms": "Tiada suapan mesin tanpa nama stabil disahkan bagi pusat perlindungan atau arahan pemindahan.",
        "zh": "尚未验证稳定匿名机器接口来提供避难所、容量或撤离命令。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "forest",
      "name": "UMD Hansen / Global Forest Watch",
      "family": "land",
      "url": "https://data.globalforestwatch.org/",
      "signal": "Satellite-derived tree-cover loss",
      "cadence": "Annual release",
      "scope": "Landsat-scale forest-loss pixels",
      "license": "Dataset-specific attribution",
      "status": {
        "malaysia": "integrated",
        "kl": "candidate"
      },
      "limit": {
        "en": "Tree-cover loss is not automatically deforestation, burned area or measured carbon emissions.",
        "ms": "Kehilangan pokok bukan automatik penebangan hutan, kawasan terbakar atau pelepasan karbon terukur.",
        "zh": "树木覆盖损失不自动等于毁林、过火面积或实测碳排放。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "water-jrc",
      "name": "JRC Global Surface Water",
      "family": "water",
      "url": "https://global-surface-water.appspot.com/",
      "signal": "Historical water occurrence",
      "cadence": "1984–2021 retained reference",
      "scope": "30m",
      "license": "EC JRC / Google attribution",
      "status": {
        "malaysia": "integrated",
        "kl": "candidate"
      },
      "limit": {
        "en": "Historical occurrence is not today’s water or a flood forecast.",
        "ms": "Kejadian sejarah bukan air hari ini atau ramalan banjir.",
        "zh": "历史水体出现率并非当前积水或洪水预报。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "eonet",
      "name": "NASA EONET / GDACS / USGS",
      "family": "hazards",
      "url": "https://eonet.gsfc.nasa.gov/docs/v3",
      "signal": "Events / alerts / instrument reports",
      "cadence": "Event-dependent",
      "scope": "Regional/global event geography",
      "license": "Provider-specific data/attribution",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "An event catalogue cannot establish neighbourhood safety; source times and definitions differ.",
        "ms": "Katalog kejadian bukan bukti keselamatan kejiranan; masa dan definisi berbeza.",
        "zh": "事件目录不能证明邻里安全；各源时间和定义不同。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "rainviewer",
      "name": "RainViewer radar composite",
      "family": "weather",
      "url": "https://www.rainviewer.com/api.html",
      "signal": "Radar composite · dBZ",
      "cadence": "Timestamped frames; coverage varies",
      "scope": "Radar footprint",
      "license": "Provider API attribution/usage terms",
      "status": {
        "malaysia": "integrated",
        "kl": "integrated"
      },
      "limit": {
        "en": "No echo and no coverage differ. Not flood depth.",
        "ms": "Tiada gema berbeza daripada tiada liputan. Bukan kedalaman banjir.",
        "zh": "无回波不同于无覆盖。并非洪水深度。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "airselangor",
      "name": "Air Selangor service disruptions",
      "family": "services",
      "url": "https://www.airselangor.com/",
      "signal": "Official service notices",
      "cadence": "Notice publication / restoration estimates",
      "scope": "Named affected supply areas",
      "license": "Provider terms; machine reuse not verified",
      "status": {
        "malaysia": "external",
        "kl": "external"
      },
      "limit": {
        "en": "Not a verified open telemetry feed for pressure, water quality or live household supply.",
        "ms": "Bukan suapan telemetri terbuka disahkan untuk tekanan, kualiti air atau bekalan rumah semasa.",
        "zh": "并非已验证的开放水压、水质或实时家庭供水遥测。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "dbkl-dengue",
      "name": "DBKL public health / dengue notices",
      "family": "services",
      "url": "https://www.dbkl.gov.my/",
      "signal": "Official notices / published statistics",
      "cadence": "Publication dependent",
      "scope": "Published local areas",
      "license": "DBKL publication terms",
      "status": {
        "malaysia": "external",
        "kl": "external"
      },
      "limit": {
        "en": "No anonymous current case-level feed verified; do not fabricate household risk pins.",
        "ms": "Tiada suapan kes semasa tanpa nama disahkan; jangan reka pin risiko rumah.",
        "zh": "未验证匿名实时病例接口；不得编造家庭风险点。"
      },
      "access": "none",
      "basis": "primary documentation + existing adapter"
    },
    {
      "id": "procurement",
      "name": "MOF / procurement / SSM",
      "family": "economy",
      "url": "https://www.eperolehan.gov.my/",
      "signal": "Procurement / registry discovery",
      "cadence": "Publication / licensed access",
      "scope": "Published tender or entity scope",
      "license": "Service/licensing/access restrictions",
      "status": {
        "malaysia": "restricted",
        "kl": "restricted"
      },
      "limit": {
        "en": "No unrestricted company-register or complete award feed verified; budgets are not actual spending.",
        "ms": "Tiada daftar syarikat atau suapan anugerah lengkap tanpa sekatan disahkan; bajet bukan belanja sebenar.",
        "zh": "未验证无限制公司注册或完整中标数据；预算不等于实际支出。"
      },
      "access": "Service-specific access/licensing",
      "basis": "primary documentation + existing adapter"
    }
  ]
}
