# Platforms / Carriers
#
# Individual spacecraft, aircraft, drones, or other carriers that host
# the instruments in instruments.yaml. Each platform belongs to a
# mission/program (missions.yaml) and carries 1..N instruments.
#
# Spec: docs/spec/SENSOR_CATALOG.md
# Crosswalks: STAC `platform`, COSPAR, WMO OSCAR Space, CEOS Mission DB.
#
# Platform classes (controlled vocabulary):
#   satellite | airborne_crewed | airborne_uncrewed | drone | balloon
#   ship | ground_station

schema_version: "1.0"

platforms:

  # ─── LANDSAT ────────────────────────────────────────────────────

  landsat-4:
    name: "Landsat 4"
    mission: landsat
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 705
    launch: "1982-07-16"
    decommission: "2001-06-15"
    status: decommissioned
    instruments: [mss, tm]
    external_ids:
      cospar: "1982-072A"
      stac_platform: landsat-4

  landsat-5:
    name: "Landsat 5"
    mission: landsat
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 705
    launch: "1984-03-01"
    decommission: "2013-06-05"
    status: decommissioned
    instruments: [tm, mss]
    external_ids:
      cospar: "1984-021A"
      stac_platform: landsat-5

  landsat-7:
    name: "Landsat 7"
    mission: landsat
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 705
    launch: "1999-04-15"
    decommission: "2022-04-06"
    status: decommissioned
    instruments: [etm-plus]
    external_ids:
      cospar: "1999-020A"
      stac_platform: landsat-7

  landsat-8:
    name: "Landsat 8"
    mission: landsat
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 705
    launch: "2013-02-11"
    decommission: null
    status: operational
    instruments: [oli, tirs]
    external_ids:
      cospar: "2013-008A"
      stac_platform: landsat-8

  landsat-9:
    name: "Landsat 9"
    mission: landsat
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 705
    launch: "2021-09-27"
    decommission: null
    status: operational
    instruments: [oli-2, tirs-2]
    external_ids:
      cospar: "2021-088A"
      stac_platform: landsat-9

  # ─── SENTINEL ───────────────────────────────────────────────────

  tandem-x:
    name: "TanDEM-X"
    mission: tandem-x
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 514
    launch: "2010-06-21"
    decommission: null
    status: operational
    instruments: [x-band-sar]
    external_ids:
      cospar: "2010-030A"
      stac_platform: tandem-x
    notes: |
      X-band InSAR mission (DLR / Airbus). Bistatic formation with TerraSAR-X
      produced the global Digital Elevation Model published as Copernicus DEM
      GLO-30 (30 m) and GLO-90 (90 m). Single acquisition campaign 2010-2015;
      not a continuously-revisiting EO platform.

  sentinel-1a:
    name: "Sentinel-1A"
    mission: sentinel-1
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 693
    launch: "2014-04-03"
    decommission: null
    status: operational
    instruments: [c-sar]
    external_ids:
      cospar: "2014-016A"
      stac_platform: sentinel-1a

  sentinel-1b:
    name: "Sentinel-1B"
    mission: sentinel-1
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 693
    launch: "2016-04-25"
    decommission: "2022-08-03"   # mission ended after Dec 2021 power failure
    status: decommissioned
    instruments: [c-sar]
    external_ids:
      cospar: "2016-025A"
      stac_platform: sentinel-1b

  sentinel-1c:
    name: "Sentinel-1C"
    mission: sentinel-1
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 693
    launch: "2024-12-05"
    decommission: null
    status: operational
    instruments: [c-sar]
    external_ids:
      cospar: "2024-225A"
      stac_platform: sentinel-1c

  sentinel-2a:
    name: "Sentinel-2A"
    mission: sentinel-2
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 786
    launch: "2015-06-23"
    decommission: null
    status: operational
    instruments: [msi]
    external_ids:
      cospar: "2015-028A"
      stac_platform: sentinel-2a

  sentinel-2b:
    name: "Sentinel-2B"
    mission: sentinel-2
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 786
    launch: "2017-03-07"
    decommission: null
    status: operational
    instruments: [msi]
    external_ids:
      cospar: "2017-013A"
      stac_platform: sentinel-2b

  sentinel-2c:
    name: "Sentinel-2C"
    mission: sentinel-2
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 786
    launch: "2024-09-04"
    decommission: null
    status: operational
    instruments: [msi]
    external_ids:
      cospar: "2024-157A"
      stac_platform: sentinel-2c

  # ─── MODIS HOSTS ────────────────────────────────────────────────

  terra:
    name: "Terra (EOS AM-1)"
    mission: eos
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 705
    launch: "1999-12-18"
    decommission: null
    status: operational (degrading)
    instruments: [modis, aster, ceres, misr, mopitt]
    external_ids:
      cospar: "1999-068A"
      stac_platform: terra

  aqua:
    name: "Aqua (EOS PM-1)"
    mission: eos
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 705
    launch: "2002-05-04"
    decommission: null
    status: operational (degrading)
    instruments: [modis, airs, amsu-a, ceres]
    external_ids:
      cospar: "2002-022A"
      stac_platform: aqua

  # ─── ISS (shared host for hyperspectral) ────────────────────────

  iss:
    name: "International Space Station"
    mission: null                       # multi-mission shared platform
    class: satellite
    orbit_class: inclined-leo
    altitude_km: 408
    launch: "1998-11-20"
    decommission: null
    status: operational
    shared_platform: true
    instruments: [emit-spectrometer, ecostress, gedi]
    external_ids:
      cospar: "1998-067A"
      stac_platform: iss

  # ─── AIRBORNE ───────────────────────────────────────────────────

  nasa-er-2:
    name: "NASA ER-2 High-Altitude Aircraft"
    mission: null
    class: airborne_crewed
    altitude_km_typical: 20
    based_at: "Armstrong Flight Research Center"
    status: operational
    shared_platform: true
    instruments: [aviris-ng, hytes, mastr]

  # ─── COMMERCIAL ─────────────────────────────────────────────────

  planetscope-superdove:
    name: "PlanetScope SuperDove Constellation"
    mission: planetscope
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 475
    launch: "2014"                      # first Dove; SuperDoves from 2020
    decommission: null
    status: operational
    constellation: true
    member_count_approx: 200
    instruments: [planetscope-sd-imager]
    external_ids:
      stac_platform: planetscope

  skysat:
    name: "SkySat Constellation"
    mission: skysat
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 500
    launch: "2013-11-21"
    decommission: null
    status: operational
    constellation: true
    member_count_approx: 21
    instruments: [skysat-optical]
    external_ids:
      stac_platform: skysat

  worldview-3:
    name: "WorldView-3"
    mission: worldview
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 617
    launch: "2014-08-13"
    decommission: null
    status: operational
    instruments: [wv-3-vnir-swir, cavis]
    external_ids:
      cospar: "2014-048A"
      stac_platform: worldview-3

  firefly:
    name: "Pixxel Firefly Constellation"
    mission: pixxel-firefly
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 550
    launch: "2024"
    decommission: null
    status: operational
    constellation: true
    instruments: [firefly-hsi]
    external_ids:
      stac_platform: firefly

  capella:
    name: "Capella SAR Constellation"
    mission: capella
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 525
    launch: "2020-08-31"
    decommission: null
    status: operational
    constellation: true
    instruments: [capella-x-sar]
    external_ids:
      stac_platform: capella

  # ─── Wyvern Dragonette (VNIR hyperspectral smallsat constellation) ───
  wyvern-dragonette:
    name: "Wyvern Dragonette Constellation"
    mission: wyvern-dragonette
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 550
    launch: "2023-06-12"                # Dragonette-001
    decommission: null
    status: operational
    constellation: true
    instruments: [wyvern-vnir-hsi]
    external_ids:
      stac_platform: Dragonette
    notes: |
      Four on-orbit smallsats: Dragonette-001/002/003/004. STAC items
      report per-satellite platform strings ("Dragonette-001" etc.) and
      a constellation field "Dragonette".

  # ─── NOAA/NASA JPSS ───────────────────────────────────────────────────────

  suomi-npp:
    name: "Suomi NPP"
    mission: jpss
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 824
    launch: "2011-10-28"
    status: operational
    instruments: [viirs]
    external_ids:
      stac_platform: Suomi NPP

  noaa-20:
    name: "NOAA-20 (JPSS-1)"
    mission: jpss
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 824
    launch: "2017-11-18"
    status: operational
    instruments: [viirs]
    external_ids:
      stac_platform: NOAA-20

  # ─── NOAA Numerical Weather Prediction ────────────────────────────────────

  noaa-hrrr:
    name: "NOAA HRRR (Numerical Model)"
    mission: rapid-refresh
    class: nwp-model
    status: operational
    instruments: [nwp-hrrr]
    notes: Not a physical satellite — a numerical weather prediction model run operationally by NOAA NCEP.

  noaa-nwm:
    name: "NOAA National Water Model"
    mission: national-water-model
    class: nwp-model
    status: operational
    instruments: [nwp-wrfhydro]
    notes: Not a physical satellite — a continental hydrological model run operationally by NOAA.

  # ─── Planet Tanager (hyperspectral) ───
  tanager:
    name: "Planet Tanager Constellation"
    mission: tanager
    class: satellite
    orbit_class: sun-synchronous-leo
    altitude_km: 525
    launch: "2024-08-16"                # Tanager-1 on Transporter-11
    decommission: null
    status: operational
    constellation: true
    instruments: [tanager-imaging-spectrometer]
    external_ids:
      stac_platform: Planet             # Planet uses "Planet" as platform; constellation = "Tanager"
    notes: |
      Tanager-1 operational as of 2024-09; the wider Tanager constellation
      is in-build. Open-data STAC catalog at
      https://www.planet.com/data/stac/tanager-core-imagery/ uses platform:
      "Planet" and constellation: "Tanager" in items. Asset bundle is hybrid
      HDF5 (radiance + surface reflectance cubes) + COG (orthorectified CH4
      quick-look, UDM, visual). Sample products under CC-BY 4.0.

  # ─── ECMWF IFS (numerical model behind ERA5 reanalysis) ───
  ecmwf-ifs:
    name: "ECMWF Integrated Forecasting System (IFS)"
    mission: era5
    class: nwp-model
    status: operational
    instruments: [nwp-ifs]
    notes: Not a physical satellite — the numerical weather prediction and data-assimilation system (IFS Cy41r2 for ERA5) run by ECMWF. Produces the ERA5 global reanalysis.
