{
  "openapi": "3.1.0",
  "info": {
    "title": "Space Weather Tracker public JSON endpoints",
    "version": "1.0.0",
    "summary": "Free, unauthenticated, read-only JSON proxies of NOAA SWPC and NASA DONKI space weather data.",
    "description": "Read-only JSON endpoints that the spaceweathertracker.com pages themselves use. No API key is needed and none is planned. Each endpoint fetches a public upstream feed server-side and returns a lightly parsed copy; values are not invented. When the upstream feed fails, most endpoints return a non-2xx status with an `error` string and an empty or null payload; exceptions are noted per endpoint (for example /api/public/kp-forecast returns HTTP 200 with an empty list and an `error` field). Timestamp honesty: only fields documented here as source times come from the upstream agency. /api/public/live-telemetry `observedAt` is the newest NOAA source observation time among its values; `fetchedAt` is the time this server assembled the response and is not an observation time. These endpoints have no documented rate limit, but responses are cacheable (see each Cache-Control TTL); please cache and cite the source agency. Only endpoints documented here are intended for public use; other routes under /api/ are internal and may change without notice.",
    "license": {
      "name": "Upstream data: NOAA SWPC and NASA public data",
      "url": "https://www.spaceweathertracker.com/data-sources"
    },
    "contact": {
      "name": "Space Weather Tracker",
      "url": "https://www.spaceweathertracker.com/contact"
    }
  },
  "servers": [
    {
      "url": "https://www.spaceweathertracker.com"
    }
  ],
  "externalDocs": {
    "description": "Data sources and methodology",
    "url": "https://www.spaceweathertracker.com/methodology"
  },
  "tags": [
    {
      "name": "Space weather",
      "description": "Solar, solar-wind and geomagnetic data."
    }
  ],
  "paths": {
    "/api/public/live-telemetry": {
      "get": {
        "operationId": "getLiveTelemetry",
        "summary": "Latest Kp, solar wind, Bz and peak aurora probability",
        "description": "Source: NOAA Space Weather Prediction Center (services.swpc.noaa.gov), a US government public-domain feed. Combines four NOAA SWPC feeds: products/noaa-planetary-k-index.json (latest non-null Kp), json/rtsw/rtsw_wind_1m.json (speed and density of the active spacecraft), json/rtsw/rtsw_mag_1m.json (Bz GSM) and json/ovation_aurora_latest.json (maximum OVATION grid probability). Cached in server memory for 5 minutes; the response is sent with Cache-Control max-age=120. IMPORTANT: each value has its own NOAA source time (`kpObservedAt`, `solarWindObservedAt`, `bzObservedAt`, `auroraObservedAt`), `observedAt` is the newest of those, and `fetchedAt` is the time this server assembled the snapshot (retrieval time, not an observation time).",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "Snapshot (at least one field available).",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=120.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LiveTelemetry"
                }
              }
            }
          },
          "503": {
            "description": "Every upstream feed was unavailable; all fields null, `unavailable` true, `observedAt` null.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LiveTelemetry"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/kp-forecast": {
      "get": {
        "operationId": "getKpForecast",
        "summary": "NOAA 3-day planetary Kp forecast",
        "description": "Source: NOAA Space Weather Prediction Center (services.swpc.noaa.gov), a US government public-domain feed. Product: products/noaa-planetary-k-index-forecast.json. Cached in server memory for 10 minutes (Cache-Control max-age=600). On upstream failure this endpoint returns HTTP 200 with `points: []` and an `error` string (no error status), so check for `error`.",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "Forecast points as parsed from NOAA (observed, estimated and predicted intervals).",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=600.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "points": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KpForecastPoint"
                      }
                    },
                    "error": {
                      "type": "string",
                      "description": "Present only on upstream failure."
                    }
                  },
                  "required": [
                    "points"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/public/aurora-ovation": {
      "get": {
        "operationId": "getAuroraOvation",
        "summary": "NOAA OVATION aurora probability grid",
        "description": "Source: NOAA Space Weather Prediction Center (services.swpc.noaa.gov), a US government public-domain feed. Product: json/ovation_aurora_latest.json (full-globe grid, a large payload). No server-side cache; Cache-Control max-age=300. Upstream timeout 20 s.",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "OVATION grid plus summary statistics computed by this site from the grid.",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=300.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuroraOvation"
                }
              }
            }
          },
          "502": {
            "description": "Upstream fetch or parse failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/cme-events": {
      "get": {
        "operationId": "getCmeEvents",
        "summary": "Coronal mass ejections from the last 7 days (NASA DONKI)",
        "description": "Source: NASA Space Weather Database Of Notifications, Knowledge, Information (DONKI), primary https://ccmc.gsfc.nasa.gov/DONKI-API/get/CME with api.nasa.gov/DONKI as fallback. The window is the 7 days before the request. Most recent first. Cache-Control max-age=1800. Speed, half-angle and type come from the DONKI analysis flagged most accurate (else the first analysis). Arrival time and Earth direction come from the associated WSA-Enlil model run, so they are model estimates, not observations.",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "List of CME events (may legitimately be empty).",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=1800.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "events": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CmeEvent"
                      }
                    }
                  },
                  "required": [
                    "events"
                  ]
                }
              }
            }
          },
          "502": {
            "description": "Upstream failure; body also includes `events: []`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/xray-flare-events": {
      "get": {
        "operationId": "getXrayFlareEvents",
        "summary": "GOES X-ray flare events, last 7 days",
        "description": "Source: NOAA Space Weather Prediction Center (services.swpc.noaa.gov), a US government public-domain feed. Product: json/goes/primary/xray-flares-7-day.json (GOES primary satellite), passed through without reduction. Cache-Control max-age=120.",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "Flare events as returned by NOAA.",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=120.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "flares": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/XrayFlare"
                      }
                    }
                  },
                  "required": [
                    "flares"
                  ]
                }
              }
            }
          },
          "502": {
            "description": "Upstream failure; body also includes `flares: []`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/flare-history": {
      "get": {
        "operationId": "getFlareHistory",
        "summary": "Highest flare class per UTC day, last 7 days",
        "description": "Source: NOAA Space Weather Prediction Center (services.swpc.noaa.gov), a US government public-domain feed. Derived by this site from json/goes/primary/xray-flares-7-day.json: for each UTC date of a flare's `max_time`, the highest class seen. Days with no flare are absent. `tier` is this site's grouping (X = severe, M = active, otherwise quiet), not an official NOAA scale. Cache-Control max-age=1800.",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "Daily maxima, ascending by date.",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=1800.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "days": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "date": {
                            "type": "string",
                            "description": "UTC date of the flare peak, YYYY-MM-DD.",
                            "format": "date"
                          },
                          "maxClass": {
                            "type": "string",
                            "description": "Highest GOES flare class that day, e.g. M2.4."
                          },
                          "tier": {
                            "type": "string",
                            "enum": [
                              "quiet",
                              "active",
                              "severe"
                            ],
                            "description": "Site-derived grouping, not a NOAA scale."
                          }
                        },
                        "required": [
                          "date",
                          "maxClass",
                          "tier"
                        ]
                      }
                    }
                  },
                  "required": [
                    "days"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Upstream failure; body also includes `days: []`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/space-weather-alerts": {
      "get": {
        "operationId": "getSpaceWeatherAlerts",
        "summary": "Current NOAA SWPC alerts, watches and warnings",
        "description": "Source: NOAA Space Weather Prediction Center (services.swpc.noaa.gov), a US government public-domain feed. Product: products/alerts.json, passed through unmodified. An empty list means NOAA reported none; failures return 502 instead. Cache-Control max-age=300.",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "Alert products.",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=300.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "alerts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/NoaaAlert"
                      }
                    }
                  },
                  "required": [
                    "alerts"
                  ]
                }
              }
            }
          },
          "502": {
            "description": "Upstream failure; body also includes `alerts: []`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/solar-flare-probabilities": {
      "get": {
        "operationId": "getSolarFlareProbabilities",
        "summary": "NOAA 3-day whole-disk flare probabilities",
        "description": "Source: NOAA Space Weather Prediction Center (services.swpc.noaa.gov), a US government public-domain feed. Product: json/solar_probabilities.json; the newest row is used. These are whole-disk forecasts, not per-region. Cache-Control max-age=900. `probabilities` is null if NOAA's file is missing a usable shape.",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "Probabilities per forecast day.",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=900.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "probabilities": {
                      "oneOf": [
                        {
                          "$ref": "#/components/schemas/SolarFlareProbabilities"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "probabilities"
                  ]
                }
              }
            }
          },
          "502": {
            "description": "Upstream failure; body also includes `probabilities: null`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/imf-vector": {
      "get": {
        "operationId": "getImfVector",
        "summary": "Latest interplanetary magnetic field Bx, By, Bz, Bt",
        "description": "Source: NOAA Space Weather Prediction Center (services.swpc.noaa.gov), a US government public-domain feed. Product: json/rtsw/rtsw_mag_1m.json (1-minute real-time solar wind magnetometer; the spacecraft flagged active is used). `latest` is the newest row by source time_tag. Cache-Control max-age=60.",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "Latest vector; `latest` is null if no complete row exists.",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=60.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "latest": {
                      "oneOf": [
                        {
                          "$ref": "#/components/schemas/ImfVector"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "count": {
                      "type": "integer",
                      "description": "Number of usable rows parsed from the NOAA file."
                    }
                  },
                  "required": [
                    "latest",
                    "count"
                  ]
                }
              }
            }
          },
          "502": {
            "description": "Upstream failure; body also includes `latest: null`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/sunspots": {
      "get": {
        "operationId": "getSunspots",
        "summary": "Latest observed monthly sunspot number",
        "description": "Source: NOAA Space Weather Prediction Center (services.swpc.noaa.gov), a US government public-domain feed. Product: json/solar-cycle/observed-solar-cycle-indices.json. Monthly cadence; NOAA treats the most recent months as preliminary. Cache-Control max-age=21600 (6 hours). If the upstream file is empty, returns HTTP 200 with `month` and `ssn` null and no `recentMonths`.",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "Latest month and the last 12 months.",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=21600.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "month": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Month label from NOAA time-tag (YYYY-MM)."
                    },
                    "ssn": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Monthly sunspot number (dimensionless count)."
                    },
                    "recentMonths": {
                      "type": "array",
                      "description": "Last 12 months, oldest first.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "month": {
                            "type": "string",
                            "description": "YYYY-MM."
                          },
                          "ssn": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Monthly sunspot number."
                          }
                        },
                        "required": [
                          "month",
                          "ssn"
                        ]
                      }
                    }
                  },
                  "required": [
                    "month",
                    "ssn"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Upstream failure; body also includes `month: null, ssn: null`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/solar-cycle": {
      "get": {
        "operationId": "getSolarCycle",
        "summary": "Monthly observed sunspot numbers since Solar Cycle 25 began",
        "description": "Source: NOAA Space Weather Prediction Center (services.swpc.noaa.gov), a US government public-domain feed. Product: json/solar-cycle/observed-solar-cycle-indices.json, filtered to months from 2019-12 onward with a non-negative SSN. Monthly cadence; recent months are preliminary. Cache-Control max-age=21600.",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "Monthly series, ascending.",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=21600.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "months": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "month": {
                            "type": "string",
                            "description": "YYYY-MM."
                          },
                          "ssn": {
                            "type": "number",
                            "description": "Monthly sunspot number."
                          }
                        },
                        "required": [
                          "month",
                          "ssn"
                        ]
                      }
                    }
                  },
                  "required": [
                    "months"
                  ]
                }
              }
            }
          },
          "502": {
            "description": "Upstream failure; body also includes `months: []`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/solar-regions": {
      "get": {
        "operationId": "getSolarRegions",
        "summary": "NOAA/USAF Solar Region Summary (active sunspot regions)",
        "description": "Source: NOAA Space Weather Prediction Center (services.swpc.noaa.gov), a US government public-domain feed. Product: text/solar-regions.txt, parsed by this site from whitespace-delimited rows. Issued once daily by NOAA. Cache-Control max-age=1800. Values are kept as NOAA prints them.",
        "tags": [
          "Space weather"
        ],
        "responses": {
          "200": {
            "description": "Regions and the report's own issue/summary labels.",
            "headers": {
              "Cache-Control": {
                "description": "Set to public, max-age=1800.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "regions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "region": {
                            "type": "string",
                            "description": "NOAA active region number."
                          },
                          "location": {
                            "type": "string",
                            "description": "Heliographic latitude/central meridian distance as printed by NOAA, e.g. S08W29."
                          },
                          "longitude": {
                            "type": "string",
                            "description": "Carrington longitude in degrees, as printed."
                          },
                          "area": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Area in millionths of the solar hemisphere (NOAA SRS convention)."
                          },
                          "extent": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Longitudinal extent in heliographic degrees."
                          },
                          "spotClass": {
                            "type": "string",
                            "description": "Modified Zurich/McIntosh sunspot classification."
                          },
                          "spotCount": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "Number of spots."
                          },
                          "magClass": {
                            "type": "string",
                            "description": "Hale magnetic classification."
                          }
                        },
                        "required": [
                          "region",
                          "location",
                          "longitude",
                          "area",
                          "extent",
                          "spotClass",
                          "spotCount",
                          "magClass"
                        ]
                      }
                    },
                    "issued": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The report's own ':Issued:' line as text (a NOAA time, not retrieval time)."
                    },
                    "summaryDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The report's ':Solar_Region_Summary:' line as text."
                    }
                  },
                  "required": [
                    "regions",
                    "issued",
                    "summaryDate"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Upstream failure or 8 s timeout; body also includes empty `regions`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Error message from the failed upstream call."
          }
        },
        "required": [
          "error"
        ]
      },
      "LiveTelemetry": {
        "type": "object",
        "properties": {
          "kp": {
            "type": [
              "number",
              "null"
            ],
            "description": "Latest non-null planetary Kp index, 0-9 (dimensionless; fractional thirds allowed)."
          },
          "solarWindSpeed": {
            "type": [
              "number",
              "null"
            ],
            "description": "Solar wind proton speed in km/s from the active spacecraft."
          },
          "density": {
            "type": [
              "number",
              "null"
            ],
            "description": "Solar wind proton density in particles per cm^3."
          },
          "bz": {
            "type": [
              "number",
              "null"
            ],
            "description": "Interplanetary magnetic field Bz (GSM) in nT; negative is southward."
          },
          "auroraMaxProbability": {
            "type": [
              "number",
              "null"
            ],
            "description": "Maximum aurora probability in the OVATION grid, percent (0-100)."
          },
          "observedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601 UTC. The newest source observation time among the returned values, as reported by NOAA SWPC (the per-value times are `kpObservedAt`, `solarWindObservedAt`, `bzObservedAt`, `auroraObservedAt`). Never the time this server assembled the response (see `fetchedAt`). Null when no returned value carries a source time."
          },
"kpObservedAt": {
            "type": ["string", "null"],
            "description": "ISO 8601 UTC time NOAA attaches to the Kp value (the start of the 3-hour interval, as NOAA reports it). Null when the value or its time is unavailable."
          },
          "solarWindObservedAt": {
            "type": ["string", "null"],
            "description": "ISO 8601 UTC time NOAA attaches to the solar wind speed/density row. Null when unavailable."
          },
          "bzObservedAt": {
            "type": ["string", "null"],
            "description": "ISO 8601 UTC time NOAA attaches to the Bz row. Null when unavailable."
          },
          "auroraObservedAt": {
            "type": ["string", "null"],
            "description": "ISO 8601 UTC OVATION `Observation Time` from NOAA. Null when unavailable."
          },
          "fetchedAt": {
            "type": ["string", "null"],
            "description": "ISO 8601 UTC time this server assembled the response. This is a retrieval time, NOT an observation time. Null when `unavailable` is true."
          },
          "unavailable": {
            "type": "boolean",
            "description": "True when every field is null because upstream data was unavailable; do not read it as quiet conditions."
          }
        },
        "required": [
          "kp",
          "solarWindSpeed",
          "density",
          "bz",
          "auroraMaxProbability",
          "observedAt",
          "kpObservedAt",
          "solarWindObservedAt",
          "bzObservedAt",
          "auroraObservedAt",
          "fetchedAt",
          "unavailable"
        ]
      },
      "KpForecastPoint": {
        "type": "object",
        "properties": {
          "time": {
            "type": "string",
            "description": "Start of the 3-hour interval, from NOAA time_tag, as given by NOAA (UTC)."
          },
          "kp": {
            "type": "number",
            "description": "Planetary Kp index, 0-9."
          },
          "observed": {
            "type": "string",
            "description": "NOAA's label for the interval (e.g. observed, estimated, predicted), passed through; empty string if absent."
          }
        },
        "required": [
          "time",
          "kp",
          "observed"
        ]
      },
      "AuroraOvation": {
        "type": "object",
        "properties": {
          "observationTime": {
            "type": "string",
            "description": "NOAA 'Observation Time': time of the solar-wind data driving the model run (source time)."
          },
          "forecastTime": {
            "type": "string",
            "description": "NOAA 'Forecast Time': the time the probabilities are valid for (source time)."
          },
          "maxProbability": {
            "type": "number",
            "description": "Maximum grid probability, percent."
          },
          "meanNorthern": {
            "type": "number",
            "description": "Mean grid probability in percent over points with latitude >= 45 (computed by this site)."
          },
          "meanSouthern": {
            "type": "number",
            "description": "Mean grid probability in percent over points with latitude <= -45 (computed by this site)."
          },
          "coordinates": {
            "type": "array",
            "description": "OVATION grid points.",
            "items": {
              "type": "array",
              "prefixItems": [
                {
                  "type": "number",
                  "description": "Longitude in degrees."
                },
                {
                  "type": "number",
                  "description": "Latitude in degrees."
                },
                {
                  "type": "number",
                  "description": "Aurora probability, percent."
                }
              ],
              "minItems": 3,
              "maxItems": 3
            }
          }
        },
        "required": [
          "observationTime",
          "forecastTime",
          "maxProbability",
          "meanNorthern",
          "meanSouthern",
          "coordinates"
        ]
      },
      "CmeEvent": {
        "type": "object",
        "properties": {
          "activityID": {
            "type": "string",
            "description": "DONKI activity identifier."
          },
          "startTime": {
            "type": "string",
            "description": "CME start time from DONKI (source time)."
          },
          "sourceLocation": {
            "type": "string",
            "description": "Source location on the Sun as given by DONKI; may be absent."
          },
          "note": {
            "type": "string",
            "description": "Free-text DONKI note; may be absent."
          },
          "speed": {
            "type": [
              "number",
              "null"
            ],
            "description": "CME speed in km/s from the most accurate DONKI analysis."
          },
          "halfAngle": {
            "type": [
              "number",
              "null"
            ],
            "description": "CME half-angle in degrees."
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "description": "DONKI CME type, e.g. S, C, O, R."
          },
          "arrivalTime": {
            "type": [
              "string",
              "null"
            ],
            "description": "Earliest WSA-Enlil estimatedShockArrivalTime; a model estimate."
          },
          "isEarthDirected": {
            "type": "boolean",
            "description": "True if any Enlil run flagged the CME as Earth-directed (isEarthGB)."
          }
        },
        "required": [
          "activityID",
          "startTime",
          "speed",
          "halfAngle",
          "type",
          "arrivalTime",
          "isEarthDirected"
        ]
      },
      "XrayFlare": {
        "type": "object",
        "properties": {
          "time_tag": {
            "type": "string",
            "description": "NOAA record time (UTC)."
          },
          "begin_time": {
            "type": "string",
            "description": "Flare begin time (source time)."
          },
          "max_time": {
            "type": "string",
            "description": "Flare peak time (source time)."
          },
          "end_time": {
            "type": [
              "string",
              "null"
            ],
            "description": "Flare end time; null if not yet ended."
          },
          "max_class": {
            "type": "string",
            "description": "Peak GOES class, e.g. M2.4, X1.1, C8.7."
          },
          "begin_class": {
            "type": "string",
            "description": "Class at flare begin; optional."
          },
          "max_xrlong": {
            "type": "number",
            "description": "Peak long-channel X-ray flux as reported by NOAA (W/m^2); optional."
          },
          "satellite": {
            "type": "integer",
            "description": "GOES satellite number; optional."
          },
          "current_class": {
            "type": "string",
            "description": "Current class if the flare is ongoing; optional."
          },
          "current_ratio": {
            "type": "number",
            "description": "Current/peak ratio as reported by NOAA; optional."
          },
          "current_int_xrlong": {
            "type": "number",
            "description": "Current integrated long-channel flux as reported by NOAA; optional."
          }
        },
        "required": [
          "time_tag",
          "begin_time",
          "max_time",
          "end_time",
          "max_class"
        ]
      },
      "NoaaAlert": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "description": "NOAA product code, e.g. K05W, A20F, ALTK07."
          },
          "issue_datetime": {
            "type": "string",
            "description": "NOAA issue time, as given by NOAA (UTC)."
          },
          "message": {
            "type": "string",
            "description": "Full plain-text alert body."
          }
        },
        "required": [
          "product_id",
          "issue_datetime",
          "message"
        ]
      },
      "SolarFlareProbabilities": {
        "type": "object",
        "properties": {
          "dayLabels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Three labels for the forecast days (e.g. Mon, 5 Oct), UTC, computed from `issuedAt`."
          },
          "classC": {
            "type": "array",
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "description": "Percent chance of at least a C-class flare for each of the 3 days."
          },
          "classM": {
            "type": "array",
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "description": "Percent chance of at least an M-class flare for each of the 3 days."
          },
          "classX": {
            "type": "array",
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "description": "Percent chance of at least an X-class flare for each of the 3 days."
          },
          "protonEvent": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "description": "Percent chance of a >=10 MeV proton event per day; null if NOAA has no such column."
          },
          "issuedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date of NOAA's newest forecast row (forecast day one), ISO 8601 UTC; a source date."
          }
        },
        "required": [
          "dayLabels",
          "classC",
          "classM",
          "classX",
          "protonEvent",
          "issuedAt"
        ]
      },
      "ImfVector": {
        "type": "object",
        "properties": {
          "time": {
            "type": "string",
            "description": "NOAA time_tag of the 1-minute sample (source observation time, UTC)."
          },
          "bx": {
            "type": "number",
            "description": "IMF Bx (GSM) in nT."
          },
          "by": {
            "type": "number",
            "description": "IMF By (GSM) in nT."
          },
          "bz": {
            "type": "number",
            "description": "IMF Bz (GSM) in nT; negative is southward."
          },
          "bt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Total IMF magnitude in nT."
          }
        },
        "required": [
          "time",
          "bx",
          "by",
          "bz",
          "bt"
        ]
      }
    }
  }
}
