{
  "theatres": [
    {
      "theatre_id": "india",
      "name": "India Hazard Watch",
      "default_aoi": "delhi",
      "is_default": true,
      "admin_levels": [
        "state",
        "district",
        "ward"
      ],
      "languages": [
        "en",
        "hi",
        "pa"
      ],
      "countries": [
        "IN"
      ],
      "west": 68.0,
      "south": 6.0,
      "east": 98.0,
      "north": 38.0
    },
    {
      "theatre_id": "middle_east",
      "name": "Middle East Hazard Watch",
      "default_aoi": "dubai",
      "is_default": false,
      "admin_levels": [
        "country",
        "governorate"
      ],
      "languages": [
        "en",
        "ar"
      ],
      "countries": [
        "SA",
        "AE",
        "QA",
        "KW",
        "BH",
        "OM",
        "IQ",
        "JO",
        "IL",
        "PS",
        "YE"
      ],
      "west": 34.0,
      "south": 12.0,
      "east": 60.0,
      "north": 37.0
    }
  ],
  "aois": [
    {
      "aoi_id": "amritsar",
      "theatre_id": "india",
      "name": "Amritsar",
      "kind": "city",
      "country": null,
      "bbox_source": "derived",
      "status": "served",
      "grid_built": true,
      "lon": 74.87870000000001,
      "lat": 31.6357
    },
    {
      "aoi_id": "bathinda",
      "theatre_id": "india",
      "name": "Bathinda",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 74.868,
      "lat": 30.185000000000002
    },
    {
      "aoi_id": "bengaluru",
      "theatre_id": "india",
      "name": "Bengaluru",
      "kind": "city",
      "country": null,
      "bbox_source": "derived",
      "status": "served",
      "grid_built": true,
      "lon": 77.625,
      "lat": 12.98
    },
    {
      "aoi_id": "bhiwani",
      "theatre_id": "india",
      "name": "Bhiwani",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 75.894,
      "lat": 28.831000000000003
    },
    {
      "aoi_id": "bihar",
      "theatre_id": "india",
      "name": "Bihar",
      "kind": "region",
      "country": null,
      "bbox_source": "derived",
      "status": "pulled",
      "grid_built": false,
      "lon": 85.8,
      "lat": 25.9
    },
    {
      "aoi_id": "bikaner",
      "theatre_id": "india",
      "name": "Bikaner",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 73.30000000000001,
      "lat": 28.025
    },
    {
      "aoi_id": "chandigarh",
      "theatre_id": "india",
      "name": "Chandigarh",
      "kind": "city",
      "country": null,
      "bbox_source": "derived",
      "status": "served",
      "grid_built": true,
      "lon": 76.8,
      "lat": 30.700000000000003
    },
    {
      "aoi_id": "dehradun",
      "theatre_id": "india",
      "name": "Dehradun",
      "kind": "city",
      "country": null,
      "bbox_source": "derived",
      "status": "served",
      "grid_built": true,
      "lon": 78.0437,
      "lat": 30.3256
    },
    {
      "aoi_id": "delhi",
      "theatre_id": "india",
      "name": "Delhi",
      "kind": "city",
      "country": null,
      "bbox_source": "derived",
      "status": "served",
      "grid_built": true,
      "lon": 77.215,
      "lat": 28.615000000000002
    },
    {
      "aoi_id": "delhi_ncr",
      "theatre_id": "india",
      "name": "Delhi NCR",
      "kind": "region",
      "country": null,
      "bbox_source": "approx",
      "status": "pulled",
      "grid_built": false,
      "lon": 77.21000000000001,
      "lat": 28.64
    },
    {
      "aoi_id": "east_ganga",
      "theatre_id": "india",
      "name": "Eastern Ganga plain (clip envelope)",
      "kind": "region",
      "country": null,
      "bbox_source": "derived",
      "status": "target",
      "grid_built": false,
      "lon": 84.65,
      "lat": 26.05
    },
    {
      "aoi_id": "east_uttar_pradesh",
      "theatre_id": "india",
      "name": "Eastern Uttar Pradesh",
      "kind": "region",
      "country": null,
      "bbox_source": "derived",
      "status": "target",
      "grid_built": false,
      "lon": 82.85,
      "lat": 26.05
    },
    {
      "aoi_id": "faridkot",
      "theatre_id": "india",
      "name": "Faridkot",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 74.759,
      "lat": 30.572499999999998
    },
    {
      "aoi_id": "fazilka",
      "theatre_id": "india",
      "name": "Fazilka",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 74.21000000000001,
      "lat": 30.0785
    },
    {
      "aoi_id": "gurdaspur",
      "theatre_id": "india",
      "name": "Gurdaspur",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 75.273,
      "lat": 32.011
    },
    {
      "aoi_id": "haryana",
      "theatre_id": "india",
      "name": "Haryana",
      "kind": "region",
      "country": null,
      "bbox_source": "derived",
      "status": "pulled",
      "grid_built": false,
      "lon": 76.03,
      "lat": 29.285
    },
    {
      "aoi_id": "himachal",
      "theatre_id": "india",
      "name": "Himachal Pradesh",
      "kind": "region",
      "country": null,
      "bbox_source": "derived",
      "status": "pulled",
      "grid_built": false,
      "lon": 77.255,
      "lat": 31.799999999999997
    },
    {
      "aoi_id": "hoshiarpur",
      "theatre_id": "india",
      "name": "Hoshiarpur",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 75.84,
      "lat": 31.6705
    },
    {
      "aoi_id": "hyderabad",
      "theatre_id": "india",
      "name": "Hyderabad",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 78.42500000000001,
      "lat": 17.41
    },
    {
      "aoi_id": "india",
      "theatre_id": "india",
      "name": "India Hazard Watch",
      "kind": "national",
      "country": null,
      "bbox_source": "derived",
      "status": "pulled",
      "grid_built": false,
      "lon": 83.0,
      "lat": 22.0
    },
    {
      "aoi_id": "jaipur",
      "theatre_id": "india",
      "name": "Jaipur",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 75.80000000000001,
      "lat": 26.9
    },
    {
      "aoi_id": "jammu_kashmir",
      "theatre_id": "india",
      "name": "Jammu & Kashmir",
      "kind": "region",
      "country": null,
      "bbox_source": "approx",
      "status": "pulled",
      "grid_built": false,
      "lon": 76.6,
      "lat": 33.45
    },
    {
      "aoi_id": "jind",
      "theatre_id": "india",
      "name": "Jind",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 76.32050000000001,
      "lat": 29.3
    },
    {
      "aoi_id": "jodhpur",
      "theatre_id": "india",
      "name": "Jodhpur",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 73.03,
      "lat": 26.285
    },
    {
      "aoi_id": "kanpur",
      "theatre_id": "india",
      "name": "Kanpur",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 80.33000000000001,
      "lat": 26.465
    },
    {
      "aoi_id": "kota",
      "theatre_id": "india",
      "name": "Kota",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 75.85,
      "lat": 25.189999999999998
    },
    {
      "aoi_id": "lucknow",
      "theatre_id": "india",
      "name": "Lucknow",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 80.94999999999999,
      "lat": 26.85
    },
    {
      "aoi_id": "ludhiana",
      "theatre_id": "india",
      "name": "Ludhiana",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 75.86,
      "lat": 30.9
    },
    {
      "aoi_id": "mangaluru",
      "theatre_id": "india",
      "name": "Mangaluru",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 74.83500000000001,
      "lat": 12.875
    },
    {
      "aoi_id": "mumbai",
      "theatre_id": "india",
      "name": "Mumbai",
      "kind": "city",
      "country": null,
      "bbox_source": "derived",
      "status": "served",
      "grid_built": true,
      "lon": 72.94,
      "lat": 19.1
    },
    {
      "aoi_id": "ncr",
      "theatre_id": "india",
      "name": "Delhi NCR (satellite cities)",
      "kind": "region",
      "country": null,
      "bbox_source": "derived",
      "status": "target",
      "grid_built": false,
      "lon": 77.19999999999999,
      "lat": 28.575
    },
    {
      "aoi_id": "north_india",
      "theatre_id": "india",
      "name": "North India",
      "kind": "region",
      "country": null,
      "bbox_source": "derived",
      "status": "pulled",
      "grid_built": false,
      "lon": 77.02000000000001,
      "lat": 30.75
    },
    {
      "aoi_id": "pathankot",
      "theatre_id": "india",
      "name": "Pathankot",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 75.5735,
      "lat": 32.253
    },
    {
      "aoi_id": "patna",
      "theatre_id": "india",
      "name": "Patna",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 85.125,
      "lat": 25.6
    },
    {
      "aoi_id": "pune",
      "theatre_id": "india",
      "name": "Pune",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 73.87,
      "lat": 18.525
    },
    {
      "aoi_id": "punjab",
      "theatre_id": "india",
      "name": "Punjab",
      "kind": "region",
      "country": null,
      "bbox_source": "derived",
      "status": "pulled",
      "grid_built": false,
      "lon": 75.4,
      "lat": 31.025
    },
    {
      "aoi_id": "rajasthan_north",
      "theatre_id": "india",
      "name": "Northern Rajasthan",
      "kind": "region",
      "country": null,
      "bbox_source": "approx",
      "status": "pulled",
      "grid_built": false,
      "lon": 74.8,
      "lat": 28.549999999999997
    },
    {
      "aoi_id": "rohtak",
      "theatre_id": "india",
      "name": "Rohtak",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 76.681,
      "lat": 28.9105
    },
    {
      "aoi_id": "ropar",
      "theatre_id": "india",
      "name": "Ropar",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 76.4875,
      "lat": 31.1295
    },
    {
      "aoi_id": "shimla",
      "theatre_id": "india",
      "name": "Shimla",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 77.175,
      "lat": 31.1
    },
    {
      "aoi_id": "sirsa",
      "theatre_id": "india",
      "name": "Sirsa",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 74.917,
      "lat": 29.558
    },
    {
      "aoi_id": "uttarakhand",
      "theatre_id": "india",
      "name": "Uttarakhand",
      "kind": "region",
      "country": null,
      "bbox_source": "derived",
      "status": "pulled",
      "grid_built": false,
      "lon": 79.305,
      "lat": 30.085
    },
    {
      "aoi_id": "varanasi",
      "theatre_id": "india",
      "name": "Varanasi",
      "kind": "city",
      "country": null,
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 82.975,
      "lat": 25.310000000000002
    },
    {
      "aoi_id": "west_uttar_pradesh",
      "theatre_id": "india",
      "name": "Western Uttar Pradesh",
      "kind": "region",
      "country": null,
      "bbox_source": "approx",
      "status": "pulled",
      "grid_built": false,
      "lon": 78.8,
      "lat": 28.1
    },
    {
      "aoi_id": "abu_dhabi",
      "theatre_id": "middle_east",
      "name": "Abu Dhabi",
      "kind": "city",
      "country": "AE",
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 54.5,
      "lat": 24.45
    },
    {
      "aoi_id": "basra",
      "theatre_id": "middle_east",
      "name": "Basra",
      "kind": "city",
      "country": "IQ",
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 47.75,
      "lat": 30.549999999999997
    },
    {
      "aoi_id": "doha",
      "theatre_id": "middle_east",
      "name": "Doha",
      "kind": "city",
      "country": "QA",
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 51.5,
      "lat": 25.3
    },
    {
      "aoi_id": "dubai",
      "theatre_id": "middle_east",
      "name": "Dubai",
      "kind": "city",
      "country": "AE",
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 55.3,
      "lat": 25.1
    },
    {
      "aoi_id": "jeddah",
      "theatre_id": "middle_east",
      "name": "Jeddah",
      "kind": "city",
      "country": "SA",
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 39.2,
      "lat": 21.55
    },
    {
      "aoi_id": "kuwait_city",
      "theatre_id": "middle_east",
      "name": "Kuwait City",
      "kind": "city",
      "country": "KW",
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 47.95,
      "lat": 29.35
    },
    {
      "aoi_id": "manama",
      "theatre_id": "middle_east",
      "name": "Manama",
      "kind": "city",
      "country": "BH",
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 50.55,
      "lat": 26.200000000000003
    },
    {
      "aoi_id": "muscat",
      "theatre_id": "middle_east",
      "name": "Muscat",
      "kind": "city",
      "country": "OM",
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 58.45,
      "lat": 23.6
    },
    {
      "aoi_id": "riyadh",
      "theatre_id": "middle_east",
      "name": "Riyadh",
      "kind": "city",
      "country": "SA",
      "bbox_source": "approx",
      "status": "served",
      "grid_built": false,
      "lon": 46.75,
      "lat": 24.7
    }
  ],
  "regions": [
    {
      "region_id": "arid_northwest",
      "theatre_id": "india",
      "name": "Arid Thar (western Rajasthan & Kutch)",
      "taxonomy": "biogeographic",
      "dominant_hazards": [
        "heat",
        "drought",
        "cmip"
      ],
      "aois": [
        "bikaner",
        "jaipur",
        "jodhpur",
        "kota"
      ]
    },
    {
      "region_id": "deccan_plateau",
      "theatre_id": "india",
      "name": "Deccan plateau uplands",
      "taxonomy": "biogeographic",
      "dominant_hazards": [
        "flood",
        "water_stress",
        "heat",
        "drought",
        "cmip"
      ],
      "aois": [
        "bengaluru",
        "hyderabad",
        "pune"
      ]
    },
    {
      "region_id": "eastern_gangetic_plain",
      "theatre_id": "india",
      "name": "Eastern (lower) Gangetic plain (Bihar\u2013eastern UP\u2013Bengal)",
      "taxonomy": "biogeographic",
      "dominant_hazards": [
        "flood",
        "drought",
        "heat",
        "cmip"
      ],
      "aois": [
        "kanpur",
        "lucknow",
        "patna",
        "varanasi"
      ]
    },
    {
      "region_id": "northwestern_plains",
      "theatre_id": "india",
      "name": "Northwestern semi-arid plains (Punjab\u2013Haryana\u2013Delhi Indo-Gangetic)",
      "taxonomy": "biogeographic",
      "dominant_hazards": [
        "dam_safety",
        "flood",
        "heat",
        "water_stress",
        "drought",
        "cmip"
      ],
      "aois": [
        "amritsar",
        "bathinda",
        "bhiwani",
        "chandigarh",
        "delhi",
        "faridkot",
        "fazilka",
        "gurdaspur",
        "hoshiarpur",
        "jind",
        "ludhiana",
        "pathankot",
        "rohtak",
        "ropar",
        "sirsa"
      ]
    },
    {
      "region_id": "western_coast",
      "theatre_id": "india",
      "name": "Western coastal lowlands (Konkan)",
      "taxonomy": "biogeographic",
      "dominant_hazards": [
        "flood",
        "heat",
        "cmip"
      ],
      "aois": [
        "mangaluru",
        "mumbai"
      ]
    },
    {
      "region_id": "western_himalaya",
      "theatre_id": "india",
      "name": "Western Himalaya & Trans-Himalaya",
      "taxonomy": "biogeographic",
      "dominant_hazards": [
        "landslide",
        "cloudburst",
        "dam_safety",
        "deforestation",
        "cmip"
      ],
      "aois": [
        "dehradun",
        "shimla"
      ]
    },
    {
      "region_id": "arabian_interior",
      "theatre_id": "middle_east",
      "name": "Arabian Interior (Nejd)",
      "taxonomy": "mena",
      "dominant_hazards": [
        "dust_storm",
        "wet_bulb_heat",
        "water_scarcity"
      ],
      "aois": [
        "jeddah",
        "riyadh"
      ]
    },
    {
      "region_id": "gulf_coast",
      "theatre_id": "middle_east",
      "name": "Gulf Coast",
      "taxonomy": "mena",
      "dominant_hazards": [
        "wet_bulb_heat",
        "dust_storm",
        "wadi_flash_flood",
        "water_scarcity"
      ],
      "aois": [
        "abu_dhabi",
        "doha",
        "dubai",
        "kuwait_city",
        "manama"
      ]
    },
    {
      "region_id": "mesopotamia",
      "theatre_id": "middle_east",
      "name": "Mesopotamia",
      "taxonomy": "mena",
      "dominant_hazards": [
        "dust_storm",
        "water_scarcity",
        "wadi_flash_flood"
      ],
      "aois": [
        "basra"
      ]
    },
    {
      "region_id": "oman_coast",
      "theatre_id": "middle_east",
      "name": "Oman Coast",
      "taxonomy": "mena",
      "dominant_hazards": [
        "cyclone",
        "wadi_flash_flood",
        "wet_bulb_heat"
      ],
      "aois": [
        "muscat"
      ]
    }
  ],
  "hazards": [
    {
      "hazard_slug": "air_quality",
      "name": "Air quality",
      "method_class": "index",
      "config_path": null,
      "theatres": [
        "india",
        "middle_east"
      ]
    },
    {
      "hazard_slug": "cloudburst",
      "name": "Cloudburst",
      "method_class": "index",
      "config_path": "configs/hazard/cloudburst.yaml",
      "theatres": [
        "india"
      ]
    },
    {
      "hazard_slug": "cmip",
      "name": "Climate projection",
      "method_class": "climatology",
      "config_path": "configs/hazard/cmip.yaml",
      "theatres": [
        "india"
      ]
    },
    {
      "hazard_slug": "cyclone",
      "name": "Cyclone",
      "method_class": "official",
      "config_path": null,
      "theatres": [
        "india",
        "middle_east"
      ]
    },
    {
      "hazard_slug": "dam_overflow",
      "name": "Dam overflow",
      "method_class": "rule",
      "config_path": "configs/hazard/dam_safety.yaml",
      "theatres": [
        "india"
      ]
    },
    {
      "hazard_slug": "drought",
      "name": "Drought",
      "method_class": "index",
      "config_path": "configs/hazard/drought.yaml",
      "theatres": [
        "india"
      ]
    },
    {
      "hazard_slug": "dust_storm",
      "name": "Dust & sandstorm",
      "method_class": "index",
      "config_path": null,
      "theatres": [
        "middle_east"
      ]
    },
    {
      "hazard_slug": "flood",
      "name": "Flood",
      "method_class": "learned",
      "config_path": "configs/hazard/flood.yaml",
      "theatres": [
        "india"
      ]
    },
    {
      "hazard_slug": "forest",
      "name": "Forest loss",
      "method_class": "index",
      "config_path": "configs/hazard/deforestation.yaml",
      "theatres": [
        "india"
      ]
    },
    {
      "hazard_slug": "heat",
      "name": "Extreme heat",
      "method_class": "learned",
      "config_path": "configs/hazard/heat.yaml",
      "theatres": [
        "india",
        "middle_east"
      ]
    },
    {
      "hazard_slug": "landslide",
      "name": "Landslide",
      "method_class": "index",
      "config_path": "configs/hazard/landslide.yaml",
      "theatres": [
        "india"
      ]
    },
    {
      "hazard_slug": "plastic",
      "name": "Plastic accumulation",
      "method_class": "index",
      "config_path": "configs/hazard/plastic.yaml",
      "theatres": [
        "india"
      ]
    },
    {
      "hazard_slug": "wadi_flash_flood",
      "name": "Wadi flash flood",
      "method_class": "index",
      "config_path": null,
      "theatres": [
        "middle_east"
      ]
    },
    {
      "hazard_slug": "water_scarcity",
      "name": "Water scarcity",
      "method_class": "index",
      "config_path": null,
      "theatres": [
        "middle_east"
      ]
    },
    {
      "hazard_slug": "water_stress",
      "name": "Groundwater stress",
      "method_class": "index",
      "config_path": "configs/hazard/water_stress.yaml",
      "theatres": [
        "india"
      ]
    },
    {
      "hazard_slug": "wet_bulb_heat",
      "name": "Wet-bulb heat",
      "method_class": "index",
      "config_path": null,
      "theatres": [
        "middle_east"
      ]
    }
  ],
  "sources": [
    {
      "source_id": "cgwb_well",
      "family_id": "cgwb",
      "label": "India CGWB groundwater-level readings (data.gov.in)",
      "modality": "hydrological",
      "reliability_w": 0.9,
      "license": "data.gov.in (provenance-tagged)",
      "url": null,
      "commercial_ok": "unknown",
      "licence_ref": "https://www.data.gov.in/",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "uncertain",
      "noncommercial_licence_ref": "https://www.data.gov.in/",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "sentinel1_sar_flood",
      "family_id": "copernicus_sar",
      "label": "Sentinel-1 SAR flood change detection (the urban-flood-ml label source)",
      "modality": "imagery",
      "reliability_w": 0.8,
      "license": "Copernicus Open Access (via Google Earth Engine, noncommercial)",
      "url": null,
      "commercial_ok": "no",
      "licence_ref": "https://earthengine.google.com/terms/",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://earthengine.google.com/noncommercial",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "eonet_events",
      "family_id": "eonet",
      "label": "NASA EONET \u2014 Earth Observatory Natural Event Tracker (free/open, no-key, geolocated)",
      "modality": "text",
      "reliability_w": 0.6,
      "license": "free/open (NASA)",
      "url": "https://eonet.gsfc.nasa.gov/api/v3/events",
      "commercial_ok": "yes",
      "licence_ref": "https://www.earthdata.nasa.gov/about/science-strategy/open-science/data-information-policy",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://www.earthdata.nasa.gov/about/science-strategy/open-science/data-information-policy",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "google_open_buildings",
      "family_id": "exposure_stock",
      "label": "Google Open Buildings v3 (ML building footprints, points tiles from the public GCS bucket)",
      "modality": "imagery",
      "reliability_w": 0.5,
      "license": "CC BY 4.0 or ODbL 1.0, user's choice \u2014 aqualens elects CC BY 4.0",
      "url": "https://sites.research.google/open-buildings/",
      "commercial_ok": "yes",
      "licence_ref": "https://sites.research.google/open-buildings/",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://sites.research.google/open-buildings/",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "worldpop",
      "family_id": "exposure_stock",
      "label": "WorldPop Global 2000-2020 unconstrained 100 m people-per-pixel (wpgp), 2020",
      "modality": "imagery",
      "reliability_w": 0.5,
      "license": "CC BY 4.0",
      "url": "https://hub.worldpop.org/rest/data/pop/wpgp?iso3=IND",
      "commercial_ok": "yes",
      "licence_ref": "https://hub.worldpop.org/data/licence.txt",
      "licence_checked_on": "2026-10-04",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://hub.worldpop.org/data/licence.txt",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "gdacs_rss",
      "family_id": "gdacs",
      "label": "GDACS multi-hazard alerts (UN/EC Global Disaster Alert & Coordination System)",
      "modality": "text",
      "reliability_w": 0.6,
      "license": "free / official public GeoRSS feed (automated consumption intended)",
      "url": "https://www.gdacs.org/xml/rss.xml",
      "commercial_ok": "yes",
      "licence_ref": "https://www.gdacs.org/",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://www.gdacs.org/",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "gdelt_news",
      "family_id": "gdelt",
      "label": "GDELT DOC 2.0 flood news",
      "modality": "text",
      "reliability_w": 0.6,
      "license": "Public Domain",
      "url": "https://www.gdeltproject.org/",
      "commercial_ok": "yes",
      "licence_ref": "https://www.gdeltproject.org/about.html",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://www.gdeltproject.org/about.html",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "global_flood_db",
      "family_id": "gfd_satellite",
      "label": "Global Flood Database v1 (MODIS / DFO)",
      "modality": "imagery",
      "reliability_w": 0.75,
      "license": "free (Cloud to Street / global-flood-database)",
      "url": "https://global-flood-database.cloudtostreet.ai/",
      "commercial_ok": "unknown",
      "licence_ref": "https://global-flood-database.cloudtostreet.ai/",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "uncertain",
      "noncommercial_licence_ref": "https://global-flood-database.cloudtostreet.ai/",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "grace_satellite",
      "family_id": "grace",
      "label": "GRACE / GRACE-FO groundwater-storage trend",
      "modality": "imagery",
      "reliability_w": 0.7,
      "license": "Public Domain (NASA/DLR)",
      "url": null,
      "commercial_ok": "yes",
      "licence_ref": "https://www.earthdata.nasa.gov/about/science-strategy/open-science/data-information-policy",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://www.earthdata.nasa.gov/about/science-strategy/open-science/data-information-policy",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "reliefweb",
      "family_id": "humanitarian",
      "label": "ReliefWeb (UN OCHA) \u2014 curated humanitarian disaster reports, free/open no-key API",
      "modality": "text",
      "reliability_w": 0.6,
      "license": "free/open (UN OCHA; appname-identified)",
      "url": "https://api.reliefweb.int/v2/reports",
      "commercial_ok": "no",
      "licence_ref": "https://reliefweb.int/terms-conditions",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "uncertain",
      "noncommercial_licence_ref": "https://reliefweb.int/terms-conditions",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "imd_warnings",
      "family_id": "imd",
      "label": "IMD colour-coded district/state warnings & nowcasts (India Meteorological Department)",
      "modality": "text",
      "reliability_w": 0.65,
      "license": "free/official; rainfall via data.gov.in needs an API key",
      "url": "https://mausam.imd.gov.in/imd_latest/contents/rss/warning.xml",
      "commercial_ok": "unknown",
      "licence_ref": "https://mausam.imd.gov.in/newdelhi/docs/data-procedure.pdf",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "uncertain",
      "noncommercial_licence_ref": "https://mausam.imd.gov.in/newdelhi/docs/data-procedure.pdf",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "pwd_advisory",
      "family_id": "municipal_advisory",
      "label": "PWD / Traffic-Police waterlogging advisories (media-documented, OSM-geocoded)",
      "modality": "text",
      "reliability_w": 0.85,
      "license": "media/advisory-derived; geocoded via OSM Nominatim",
      "url": "https://nominatim.openstreetmap.org/",
      "commercial_ok": "yes",
      "licence_ref": "https://operations.osmfoundation.org/policies/nominatim/",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://operations.osmfoundation.org/policies/nominatim/",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "gdelt_doc",
      "family_id": "news",
      "label": "GDELT DOC 2.0 / GEO 2.0 \u2014 machine-indexed global news (public domain), India hazard scope",
      "modality": "text",
      "reliability_w": 0.55,
      "license": "Public Domain (GDELT)",
      "url": "https://api.gdeltproject.org/api/v2/doc/doc",
      "commercial_ok": "yes",
      "licence_ref": "https://www.gdeltproject.org/about.html",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://www.gdeltproject.org/about.html",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "news_rss",
      "family_id": "news",
      "label": "Direct outlet + official RSS/Atom feeds (Down To Earth, The Hindu, TOI, HT, IE, NDTV, \u2026)",
      "modality": "text",
      "reliability_w": 0.55,
      "license": "per-outlet RSS (published for automated consumption)",
      "url": null,
      "commercial_ok": "unknown",
      "licence_ref": "https://www.downtoearth.org.in/rss/environment",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "uncertain",
      "noncommercial_licence_ref": "https://www.downtoearth.org.in/rss/environment",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "open_meteo_air_quality",
      "family_id": "open_meteo",
      "label": "Open-Meteo air-quality API (PM2.5, PM10, CAMS dust)",
      "modality": "meteorological",
      "reliability_w": 0.65,
      "license": "CC BY 4.0 (open data, no key)",
      "url": "https://open-meteo.com/en/docs/air-quality-api",
      "commercial_ok": "no",
      "licence_ref": "https://open-meteo.com/en/terms",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://open-meteo.com/en/terms",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "open_meteo_archive",
      "family_id": "open_meteo",
      "label": "Open-Meteo ERA5 archive (hourly reanalysis)",
      "modality": "meteorological",
      "reliability_w": 0.7,
      "license": "CC BY 4.0 (ERA5, Copernicus)",
      "url": "https://open-meteo.com/en/docs/historical-weather-api",
      "commercial_ok": "no",
      "licence_ref": "https://open-meteo.com/en/terms",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://open-meteo.com/en/terms",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "open_meteo_forecast",
      "family_id": "open_meteo",
      "label": "Open-Meteo forecast API (temperature, humidity, wind, precipitation)",
      "modality": "meteorological",
      "reliability_w": 0.7,
      "license": "CC BY 4.0 (open data, no key)",
      "url": "https://open-meteo.com/",
      "commercial_ok": "no",
      "licence_ref": "https://open-meteo.com/en/terms",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://open-meteo.com/en/terms",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "sachet_cap",
      "family_id": "sachet",
      "label": "Sachet / NDMA national CAP feed (IMD + CWC + INCOIS + state SDMAs), free/open, no-key",
      "modality": "text",
      "reliability_w": 0.8,
      "license": "free/official (NDMA; published for agencies to rebroadcast)",
      "url": "https://sachet.ndma.gov.in/",
      "commercial_ok": "unknown",
      "licence_ref": "https://sachet.ndma.gov.in/WebsitePolicy",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "uncertain",
      "noncommercial_licence_ref": "https://sachet.ndma.gov.in/WebsitePolicy",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "mastodon",
      "family_id": "social_public",
      "label": "Mastodon public tag timelines (ActivityPub) \u2014 the house-rule-clean public-social read",
      "modality": "text",
      "reliability_w": 0.3,
      "license": "per-instance open API (no key/auth on permitting instances)",
      "url": "https://docs.joinmastodon.org/api/",
      "commercial_ok": "unknown",
      "licence_ref": "https://docs.joinmastodon.org/api/",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "uncertain",
      "noncommercial_licence_ref": "https://docs.joinmastodon.org/api/",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "social_public",
      "family_id": "social_public",
      "label": "Public social posts via COMPLIANT surfaces only (mastodon live; Bluesky/YouTube reserved)",
      "modality": "text",
      "reliability_w": 0.3,
      "license": "per-platform, house-rule-clean paths only",
      "url": null,
      "commercial_ok": "unknown",
      "licence_ref": "https://docs.joinmastodon.org/api/",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "uncertain",
      "noncommercial_licence_ref": "https://docs.joinmastodon.org/api/",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "wikipedia",
      "family_id": "wikipedia",
      "label": "Wikipedia reference/context (REST + action API)",
      "modality": "text",
      "reliability_w": 0.45,
      "license": "CC BY-SA (attribution required)",
      "url": "https://en.wikipedia.org/api/rest_v1/",
      "commercial_ok": "yes",
      "licence_ref": "https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "yes",
      "noncommercial_licence_ref": "https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use",
      "noncommercial_checked_on": "2026-10-13"
    },
    {
      "source_id": "wmo_cap",
      "family_id": "wmo_alerthub",
      "label": "WMO Alert Hub \u2014 the same India CAP alerts mirrored globally (no key, automated-consumption)",
      "modality": "text",
      "reliability_w": 0.75,
      "license": "free/official (WMO)",
      "url": "https://alert-hub.org/",
      "commercial_ok": "unknown",
      "licence_ref": "https://sachet.ndma.gov.in/WebsitePolicy",
      "licence_checked_on": "2026-08-25",
      "noncommercial_ok": "uncertain",
      "noncommercial_licence_ref": "https://sachet.ndma.gov.in/WebsitePolicy",
      "noncommercial_checked_on": "2026-10-13"
    }
  ]
}
