{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-evangelist.github.io/aviationweather/json-schema/aviationweather-metar-schema.json",
  "title": "AviationWeather METAR Observation",
  "description": "Decoded METAR (or SPECI/SYNOP/BUOY/CMAN) aviation weather observation as returned by GET /api/data/metar?format=json.",
  "type": "object",
  "required": ["icaoId", "obsTime", "rawOb"],
  "properties": {
    "icaoId":     { "type": "string", "description": "ICAO identifier of the reporting station.", "examples": ["KORD"] },
    "receiptTime":{ "type": "string", "description": "Time the observation was received (yyyy-mm-dd hh:mm:ss.sssZ)." },
    "obsTime":    { "type": "integer", "description": "Observation time (UNIX epoch seconds)." },
    "reportTime": { "type": "string", "description": "Time of the report (yyyy-mm-dd hh:mm:ss.sssZ)." },
    "temp":       { "type": ["number","null"], "description": "Temperature in degrees Celsius." },
    "dewp":       { "type": ["number","null"], "description": "Dewpoint temperature in degrees Celsius." },
    "wdir":       { "type": ["integer","string","null"], "description": "Wind direction in degrees, or VRB for variable." },
    "wspd":       { "type": ["integer","null"], "description": "Wind speed in knots." },
    "wgst":       { "type": ["integer","null"], "description": "Wind gust in knots." },
    "visib":      { "type": ["number","string","null"], "description": "Visibility in statute miles; \"10+\" denotes >10 SM." },
    "altim":      { "type": ["number","null"], "description": "Altimeter setting in hectopascals." },
    "slp":        { "type": ["number","null"], "description": "Sea level pressure in hectopascals." },
    "wxString":   { "type": ["string","null"], "description": "Encoded present weather string (e.g. -RA, +TSRA)." },
    "presTend":   { "type": ["number","null"], "description": "Pressure tendency over last 3 hours in hPa." },
    "maxT":       { "type": ["number","null"], "description": "Maximum temperature over last 6 hours (C)." },
    "minT":       { "type": ["number","null"], "description": "Minimum temperature over last 6 hours (C)." },
    "maxT24":     { "type": ["number","null"], "description": "Maximum temperature over last 24 hours (C)." },
    "minT24":     { "type": ["number","null"], "description": "Minimum temperature over last 24 hours (C)." },
    "precip":     { "type": ["number","null"], "minimum": 0, "description": "Precipitation over last hour (inches)." },
    "pcp3hr":     { "type": ["number","null"], "minimum": 0, "description": "Precipitation over last 3 hours (inches)." },
    "pcp6hr":     { "type": ["number","null"], "minimum": 0, "description": "Precipitation over last 6 hours (inches)." },
    "pcp24hr":    { "type": ["number","null"], "minimum": 0, "description": "Precipitation over last 24 hours (inches)." },
    "snow":       { "type": ["number","null"], "minimum": 0, "description": "Snow depth (inches)." },
    "vertVis":    { "type": ["integer","null"], "minimum": 0, "description": "Vertical visibility in feet." },
    "metarType":  { "type": "string", "enum": ["METAR","SPECI","SYNOP","BUOY","CMAN"], "description": "Observation encoding type." },
    "rawOb":      { "type": "string", "description": "Raw text of the observation." },
    "lat":        { "type": "number", "description": "Latitude of site (decimal degrees)." },
    "lon":        { "type": "number", "description": "Longitude of site (decimal degrees)." },
    "elev":       { "type": "integer", "description": "Elevation in meters." },
    "name":       { "type": "string", "description": "Full name of the site." },
    "clouds": {
      "type": "array",
      "description": "Cloud layers reported.",
      "items": {
        "type": "object",
        "properties": {
          "cover": { "type": "string", "enum": ["CLR","SKC","NSC","FEW","SCT","BKN","OVC","VV","NCD","TCU","CB"], "description": "Cloud cover code." },
          "base":  { "type": ["integer","null"], "description": "Cloud base in feet AGL." },
          "type":  { "type": ["string","null"], "description": "Cloud type qualifier." }
        }
      }
    },
    "fltCat":     { "type": "string", "enum": ["VFR","MVFR","IFR","LIFR",""], "description": "Flight category." }
  }
}
