{
  "openapi": "3.0.0",
  "info": {
    "title": "Open-Meteo APIs",
    "description": "Open-Meteo offers free weather forecast APIs for open-source developers and non-commercial use. No API key is required.",
    "version": "1.0",
    "contact": {
      "name": "Open-Meteo",
      "url": "https://open-meteo.com",
      "email": "info@open-meteo.com"
    },
    "license": {
      "name": "Attribution 4.0 International (CC BY 4.0)",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    },
    "termsOfService": "https://open-meteo.com/en/features#terms"
  },
  "paths": {
    "/v1/forecast": {
      "servers": [
        {
          "url": "https://api.open-meteo.com"
        }
      ],
      "get": {
        "tags": [
          "Weather Forecast APIs"
        ],
        "summary": "7 day weather forecast for coordinates",
        "description": "7 day weather variables in hourly and daily resolution for given WGS84 latitude and longitude coordinates. Available worldwide.",
        "parameters": [
          {
            "name": "hourly",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "temperature_2m",
                  "relativehumidity_2m",
                  "dewpoint_2m",
                  "apparent_temperature",
                  "pressure_msl",
                  "cloudcover",
                  "cloudcover_low",
                  "cloudcover_mid",
                  "cloudcover_high",
                  "windspeed_10m",
                  "windspeed_80m",
                  "windspeed_120m",
                  "windspeed_180m",
                  "winddirection_10m",
                  "winddirection_80m",
                  "winddirection_120m",
                  "winddirection_180m",
                  "windgusts_10m",
                  "shortwave_radiation",
                  "direct_radiation",
                  "direct_normal_irradiance",
                  "diffuse_radiation",
                  "vapor_pressure_deficit",
                  "evapotranspiration",
                  "precipitation",
                  "weathercode",
                  "snow_height",
                  "freezinglevel_height",
                  "soil_temperature_0cm",
                  "soil_temperature_6cm",
                  "soil_temperature_18cm",
                  "soil_temperature_54cm",
                  "soil_moisture_0_1cm",
                  "soil_moisture_1_3cm",
                  "soil_moisture_3_9cm",
                  "soil_moisture_9_27cm",
                  "soil_moisture_27_81cm"
                ]
              }
            }
          },
          {
            "name": "daily",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "temperature_2m_max",
                  "temperature_2m_min",
                  "apparent_temperature_max",
                  "apparent_temperature_min",
                  "precipitation_sum",
                  "precipitation_hours",
                  "weathercode",
                  "sunrise",
                  "sunset",
                  "windspeed_10m_max",
                  "windgusts_10m_max",
                  "winddirection_10m_dominant",
                  "shortwave_radiation_sum",
                  "uv_index_max",
                  "uv_index_clear_sky_max",
                  "et0_fao_evapotranspiration"
                ]
              }
            }
          },
          {
            "name": "latitude",
            "in": "query",
            "required": true,
            "description": "WGS84 coordinate",
            "schema": {
              "type": "number",
              "format": "float"
            }
          },
          {
            "name": "longitude",
            "in": "query",
            "required": true,
            "description": "WGS84 coordinate",
            "schema": {
              "type": "number",
              "format": "float"
            }
          },
          {
            "name": "current_weather",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "temperature_unit",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "celsius",
              "enum": [
                "celsius",
                "fahrenheit"
              ]
            }
          },
          {
            "name": "windspeed_unit",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "kmh",
              "enum": [
                "kmh",
                "ms",
                "mph",
                "kn"
              ]
            }
          },
          {
            "name": "timeformat",
            "in": "query",
            "description": "If format `unixtime` is selected, all time values are returned in UNIX epoch time in seconds. Please not that all time is then in GMT+0! For daily values with unix timestamp, please apply `utc_offset_seconds` again to get the correct date.",
            "schema": {
              "type": "string",
              "default": "iso8601",
              "enum": [
                "iso8601",
                "unixtime"
              ]
            }
          },
          {
            "name": "timezone",
            "in": "query",
            "description": "If `timezone` is set, all timestamps are returned as local-time and data is returned starting at 0:00 local-time. Any time zone name from the [time zone database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) is supported.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "past_days",
            "in": "query",
            "description": "If `past_days` is set, yesterdays or the day before yesterdays data are also returned.",
            "schema": {
              "type": "integer",
              "enum": [
                1,
                2
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "latitude": {
                      "type": "number",
                      "example": 52.52,
                      "description": "WGS84 of the center of the weather grid-cell which was used to generate this forecast. This coordinate might be up to 5 km away."
                    },
                    "longitude": {
                      "type": "number",
                      "example": "13.419.52",
                      "description": "WGS84 of the center of the weather grid-cell which was used to generate this forecast. This coordinate might be up to 5 km away."
                    },
                    "elevation": {
                      "type": "number",
                      "example": 44.812,
                      "description": "The elevation in meters of the selected weather grid-cell. In mountain terrain it might differ from the location you would expect."
                    },
                    "generationtime_ms": {
                      "type": "number",
                      "example": 2.2119,
                      "description": "Generation time of the weather forecast in milli seconds. This is mainly used for performance monitoring and improvements."
                    },
                    "utc_offset_seconds": {
                      "type": "integer",
                      "example": 3600,
                      "description": "Applied timezone offset from the &timezone= parameter."
                    },
                    "hourly": {
                      "type": "object",
                      "description": "For each selected weather variable, data will be returned as a floating point array. Additionally a `time` array will be returned with ISO8601 timestamps."
                    },
                    "hourly_units": {
                      "type": "object",
                      "description": "For each selected weather variable, the unit will be listed here."
                    },
                    "daily": {
                      "type": "object",
                      "description": "For each selected daily weather variable, data will be returned as a floating point array. Additionally a `time` array will be returned with ISO8601 timestamps."
                    },
                    "daily_units": {
                      "type": "object",
                      "description": "For each selected daily weather variable, the unit will be listed here."
                    },
                    "current_weather": {
                      "type": "object",
                      "description": "Current weather conditions with the attributes: time, temperature, windspeed, winddirection and weathercode"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "boolean",
                      "description": "Always set true for errors"
                    },
                    "reason": {
                      "type": "string",
                      "description": "Description of the error",
                      "example": "Latitude must be in range of -90 to 90°. Given: 300"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}