{
  "parameters": {
    "fields": {
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query"
    },
    "upload_protocol": {
      "location": "query",
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")."
    },
    "access_token": {
      "location": "query",
      "type": "string",
      "description": "OAuth access token."
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "alt": {
      "location": "query",
      "type": "string",
      "description": "Data format for response.",
      "default": "json",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "enum": [
        "json",
        "media",
        "proto"
      ]
    },
    "callback": {
      "type": "string",
      "description": "JSONP",
      "location": "query"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "prettyPrint": {
      "location": "query",
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "default": "true"
    },
    "$.xgafv": {
      "location": "query",
      "type": "string",
      "description": "V1 error format.",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "enum": [
        "1",
        "2"
      ]
    },
    "key": {
      "location": "query",
      "type": "string",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token."
    },
    "quotaUser": {
      "type": "string",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "location": "query"
    }
  },
  "schemas": {
    "ForecastDay": {
      "id": "ForecastDay",
      "description": "Represents a daily forecast record at a given location.",
      "type": "object",
      "properties": {
        "minTemperature": {
          "$ref": "Temperature",
          "description": "The minimum (low) temperature throughout the day."
        },
        "maxHeatIndex": {
          "description": "The maximum heat index temperature throughout the day.",
          "$ref": "Temperature"
        },
        "nighttimeForecast": {
          "description": "The forecasted weather conditions for the nighttime part of the day (7pm to 7am next day, local time).",
          "$ref": "ForecastDayPart"
        },
        "feelsLikeMinTemperature": {
          "description": "The minimum (low) feels-like temperature throughout the day.",
          "$ref": "Temperature"
        },
        "moonEvents": {
          "$ref": "MoonEvents",
          "description": "The events related to the moon (e.g. moonrise, moonset)."
        },
        "displayDate": {
          "description": "The local date in the time zone of the location (civil time) which this daily forecast is calculated for. This field may be used for display purposes on the client.",
          "$ref": "Date"
        },
        "feelsLikeMaxTemperature": {
          "description": "The maximum (high) feels-like temperature throughout the day.",
          "$ref": "Temperature"
        },
        "daytimeForecast": {
          "$ref": "ForecastDayPart",
          "description": "The forecasted weather conditions for the daytime part of the day (7am to 7pm local time)."
        },
        "interval": {
          "description": "The UTC time interval when this forecasted day is starts (inclusive) and ends (exclusive). Note: a day starts at 7am and ends at 7am next day, local time. For example: If the local time zone is UTC-7, then the interval will start at the time `14:00:00.000Z` and end at the same hour the next day.",
          "$ref": "Interval"
        },
        "sunEvents": {
          "description": "The events related to the sun (e.g. sunrise, sunset).",
          "$ref": "SunEvents"
        },
        "maxTemperature": {
          "$ref": "Temperature",
          "description": "The maximum (high) temperature throughout the day."
        }
      }
    },
    "Precipitation": {
      "id": "Precipitation",
      "description": "Represents a set of precipitation values at a given location.",
      "type": "object",
      "properties": {
        "snowQpf": {
          "$ref": "QuantitativePrecipitationForecast",
          "description": "The amount of snow, measured as liquid water equivalent, that has accumulated over a period of time. Note: QPF is an abbreviation for Quantitative Precipitation Forecast (please see the QuantitativePrecipitationForecast definition for more details)."
        },
        "probability": {
          "description": "The probability of precipitation (values from 0 to 100).",
          "$ref": "PrecipitationProbability"
        },
        "qpf": {
          "description": "The amount of precipitation rain, measured as liquid water equivalent, that has accumulated over a period of time. Note: QPF is an abbreviation for Quantitative Precipitation Forecast (please see the QuantitativePrecipitationForecast definition for more details).",
          "$ref": "QuantitativePrecipitationForecast"
        }
      }
    },
    "IceThickness": {
      "properties": {
        "thickness": {
          "format": "float",
          "description": "The ice thickness value.",
          "type": "number"
        },
        "unit": {
          "description": "The code that represents the unit used to measure the ice thickness.",
          "type": "string",
          "enumDescriptions": [
            "The unit is not specified.",
            "The thickness is measured in millimeters.",
            "The thickness is measured in inches."
          ],
          "enum": [
            "UNIT_UNSPECIFIED",
            "MILLIMETERS",
            "INCHES"
          ]
        }
      },
      "id": "IceThickness",
      "description": "Represents ice thickness conditions.",
      "type": "object"
    },
    "LookupHistoryHoursResponse": {
      "properties": {
        "timeZone": {
          "$ref": "TimeZone",
          "description": "The time zone at the requested location."
        },
        "historyHours": {
          "description": "The hourly historical records, according to the number of hours and page size specified in the request.",
          "type": "array",
          "items": {
            "$ref": "HistoryHour"
          }
        },
        "nextPageToken": {
          "description": "The token to retrieve the next page.",
          "type": "string"
        }
      },
      "description": "Response for the LookupHistoryHours RPC.",
      "type": "object",
      "id": "LookupHistoryHoursResponse"
    },
    "DataSource": {
      "id": "DataSource",
      "description": "Represents a link to a data source.",
      "type": "object",
      "properties": {
        "authorityUri": {
          "description": "The URL of the authority's website.",
          "type": "string"
        },
        "publisher": {
          "description": "The publisher of the alert.",
          "type": "string",
          "enumDescriptions": [
            "Publisher unspecified.",
            "Australia Australian Capital Territory",
            "New South Wales",
            "Queensland",
            "South Australia",
            "Meteoalarm / EUMETNET Austria",
            "Bosnia",
            "Brazil Disaster Agency in Brazil",
            "Meteorological Agency in Brazil",
            "Meteoalarm / EUMETNET Bulgaria",
            "Croatia",
            "Cyprus",
            "Czechia",
            "Denmark",
            "Ecuador",
            "Meteoalarm / EUMETNET Finland",
            "France",
            "Germany",
            "Meteoalarm / EUMETNET Great Britain",
            "Greece",
            "Hungary",
            "Iceland",
            "Ireland",
            "Italy",
            "Jamaica",
            "Japan",
            "Meteoalarm / EUMETNET Netherlands",
            "Latvia",
            "Lithuania",
            "Luxembourg",
            "Mexico Mexico CIRES",
            "New Zealand New Zealand GeoNet",
            "MetService",
            "Meteoalarm / EUMETNET North Macedonia",
            "Norway",
            "Philippines",
            "Meteoalarm / EUMETNET Poland",
            "Portugal",
            "Romania",
            "Serbia",
            "Singapore",
            "Meteoalarm / EUMETNET Slovakia",
            "Slovenia",
            "Solomon Islands",
            "Meteoalarm / EUMETNET Spain",
            "Sweden",
            "Switzerland",
            "Taiwan",
            "United States NOAA",
            "National Tsunami Warning Center"
          ],
          "enum": [
            "PUBLISHER_UNSPECIFIED",
            "AUSTRALIA_ACT_ESA",
            "AUSTRALIA_NSW_RFS",
            "AUSTRALIA_QLD_QFES",
            "AUSTRALIA_SA_CFS",
            "METEO_ALARM_AT",
            "METEO_ALARM_BS",
            "BRAZIL_CENAD",
            "BRAZIL_INMET",
            "METEO_ALARM_BG",
            "METEO_ALARM_CR",
            "METEO_ALARM_CY",
            "METEO_ALARM_CS",
            "METEO_ALARM_DK",
            "EC_INAMHI",
            "METEO_ALARM_FI",
            "METEO_ALARM_FR",
            "DE_DWD",
            "METEO_ALARM_GB",
            "METEO_ALARM_GR",
            "METEO_ALARM_HU",
            "METEO_ALARM_IS",
            "METEO_ALARM_IE",
            "METEO_ALARM_IT",
            "JM_JMS",
            "JMA",
            "METEO_ALARM_NL",
            "METEO_ALARM_LV",
            "METEO_ALARM_LT",
            "METEO_ALARM_LU",
            "MEXICO_CIRES",
            "NZ_GEONET",
            "NZ_NMS",
            "METEO_ALARM_MK",
            "METEO_ALARM_NO",
            "PHILIPPINES_PAGASA",
            "METEO_ALARM_PL",
            "METEO_ALARM_PT",
            "METEO_ALARM_RO",
            "METEO_ALARM_RS",
            "SG_MSS",
            "METEO_ALARM_SK",
            "METEO_ALARM_SI",
            "SB_MET",
            "METEO_ALARM_ES",
            "METEO_ALARM_SE",
            "METEO_ALARM_CH",
            "TAIWAN_NCDR",
            "NOAA",
            "WCATWC"
          ]
        },
        "name": {
          "description": "Official publisher name. Please note that while this field should be localized, it is not guaranteed that it will be.",
          "type": "string"
        }
      }
    },
    "MoonEvents": {
      "properties": {
        "moonriseTimes": {
          "description": "The time when the upper limb of the moon appears above the horizon (see https://en.wikipedia.org/wiki/Moonrise_and_moonset). NOTE: For most cases, there'll be a single moon rise time per day. In other cases, the list might be empty (e.g. when the moon rises after next day midnight). However, in unique cases (e.g. in polar regions), the list may contain more than one value. In these cases, the values are sorted in ascending order.",
          "type": "array",
          "items": {
            "type": "string",
            "format": "google-datetime"
          }
        },
        "moonsetTimes": {
          "description": "The time when the upper limb of the moon disappears below the horizon (see https://en.wikipedia.org/wiki/Moonrise_and_moonset). NOTE: For most cases, there'll be a single moon set time per day. In other cases, the list might be empty (e.g. when the moon sets after next day midnight). However, in unique cases (e.g. in polar regions), the list may contain more than one value. In these cases, the values are sorted in ascending order.",
          "type": "array",
          "items": {
            "type": "string",
            "format": "google-datetime"
          }
        },
        "moonPhase": {
          "description": "The moon phase (a.k.a. lunar phase).",
          "type": "string",
          "enumDescriptions": [
            "Unspecified moon phase.",
            "The moon is not illuminated by the sun.",
            "The moon is lit by 0%-50% on its right side in the northern hemisphere 🌒 and on its left side in the southern hemisphere 🌘.",
            "The moon is lit by 50.1% on its right side in the northern hemisphere 🌓 and on its left side in the southern hemisphere 🌗.",
            "The moon is lit by 50%-100% on its right side in the northern hemisphere 🌔 and on its left side in the southern hemisphere 🌖.",
            "The moon is fully illuminated.",
            "The moon is lit by 50%-100% on its left side in the northern hemisphere 🌖 and on its right side in the southern hemisphere 🌔.",
            "The moon is lit by 50.1% on its left side in the northern hemisphere 🌗 and on its right side in the southern hemisphere 🌓.",
            "The moon is lit by 0%-50% on its left side in the northern hemisphere 🌘 and on its right side in the southern hemisphere 🌒."
          ],
          "enum": [
            "MOON_PHASE_UNSPECIFIED",
            "NEW_MOON",
            "WAXING_CRESCENT",
            "FIRST_QUARTER",
            "WAXING_GIBBOUS",
            "FULL_MOON",
            "WANING_GIBBOUS",
            "LAST_QUARTER",
            "WANING_CRESCENT"
          ]
        }
      },
      "id": "MoonEvents",
      "description": "Represents the events related to the moon (e.g. moonrise, moonset).",
      "type": "object"
    },
    "LookupCurrentConditionsResponse": {
      "properties": {
        "currentTime": {
          "description": "Current time (UTC) associated with the returned data.",
          "type": "string",
          "format": "google-datetime"
        },
        "isDaytime": {
          "description": "True if the current time at the requested location is between the local sunrise (inclusive) and the sunset (exclusive) times. Otherwise, it is nighttime (between the sunset and the next sunrise).",
          "type": "boolean"
        },
        "currentConditionsHistory": {
          "description": "The changes in the current conditions over the last 24 hours.",
          "$ref": "CurrentConditionsHistory"
        },
        "windChill": {
          "$ref": "Temperature",
          "description": "The current wind chill, air temperature exposed on the skin."
        },
        "uvIndex": {
          "format": "int32",
          "description": "The current ultraviolet (UV) index.",
          "type": "integer"
        },
        "dewPoint": {
          "description": "The current dew point temperature.",
          "$ref": "Temperature"
        },
        "temperature": {
          "description": "The current temperature.",
          "$ref": "Temperature"
        },
        "airPressure": {
          "$ref": "AirPressure",
          "description": "The current air pressure conditions."
        },
        "feelsLikeTemperature": {
          "$ref": "Temperature",
          "description": "The measure of how the temperature currently feels like at the requested location."
        },
        "thunderstormProbability": {
          "description": "The current thunderstorm probability (values from 0 to 100).",
          "type": "integer",
          "format": "int32"
        },
        "cloudCover": {
          "format": "int32",
          "description": "The current percentage of the sky covered by clouds (values from 0 to 100).",
          "type": "integer"
        },
        "wind": {
          "description": "The current wind conditions.",
          "$ref": "Wind"
        },
        "visibility": {
          "$ref": "Visibility",
          "description": "The current visibility."
        },
        "weatherCondition": {
          "description": "The current weather condition.",
          "$ref": "WeatherCondition"
        },
        "heatIndex": {
          "$ref": "Temperature",
          "description": "The current heat index temperature."
        },
        "precipitation": {
          "description": "The current precipitation probability and amount of precipitation accumulated over the last hour.",
          "$ref": "Precipitation"
        },
        "timeZone": {
          "$ref": "TimeZone",
          "description": "The time zone at the requested location."
        },
        "relativeHumidity": {
          "description": "The current percent of relative humidity (values from 0 to 100).",
          "type": "integer",
          "format": "int32"
        }
      },
      "description": "Response for the LookupCurrentConditions RPC - represents the current weather conditions at the requested location.",
      "type": "object",
      "id": "LookupCurrentConditionsResponse"
    },
    "Visibility": {
      "description": "Represents visibility conditions, the distance at which objects can be discerned.",
      "type": "object",
      "id": "Visibility",
      "properties": {
        "distance": {
          "description": "The visibility distance in the specified unit.",
          "type": "number",
          "format": "float"
        },
        "unit": {
          "description": "The code that represents the unit used to measure the distance.",
          "type": "string",
          "enumDescriptions": [
            "The visibility unit is unspecified.",
            "The visibility is measured in kilometers.",
            "The visibility is measured in miles."
          ],
          "enum": [
            "UNIT_UNSPECIFIED",
            "KILOMETERS",
            "MILES"
          ]
        }
      }
    },
    "ForecastHour": {
      "properties": {
        "dewPoint": {
          "description": "The forecasted dew point temperature.",
          "$ref": "Temperature"
        },
        "airPressure": {
          "description": "The forecasted air pressure conditions.",
          "$ref": "AirPressure"
        },
        "temperature": {
          "$ref": "Temperature",
          "description": "The forecasted temperature."
        },
        "wetBulbTemperature": {
          "$ref": "Temperature",
          "description": "The forecasted wet bulb temperature, lowest temperature achievable by evaporating water."
        },
        "isDaytime": {
          "description": "True if this hour is between the local sunrise (inclusive) and sunset (exclusive) times. Otherwise, it is nighttime (between the sunset and the next sunrise). Note: this hour will be considered as daytime or nighttime if the interval intersects with the local sunrise and sunset times respectively (e.g.: if the interval is from 5am to 6am and sunrise is at 5:59am, then is_daytime will be true).",
          "type": "boolean"
        },
        "displayDateTime": {
          "$ref": "DateTime",
          "description": "The local date and time in the time zone of the location (civil time) which this hourly forecast is calculated for. This field may be used for display purposes on the client. Note: this date will consist of the year, month, day, hour and offset from UTC."
        },
        "uvIndex": {
          "description": "The forecasted ultraviolet (UV) index.",
          "type": "integer",
          "format": "int32"
        },
        "windChill": {
          "$ref": "Temperature",
          "description": "The forecasted wind chill, air temperature exposed on the skin."
        },
        "relativeHumidity": {
          "format": "int32",
          "description": "The forecasted percent of relative humidity (values from 0 to 100).",
          "type": "integer"
        },
        "weatherCondition": {
          "description": "The foreacasted weather condition.",
          "$ref": "WeatherCondition"
        },
        "heatIndex": {
          "$ref": "Temperature",
          "description": "The forecasted heat index temperature."
        },
        "precipitation": {
          "$ref": "Precipitation",
          "description": "The forecasted precipitation probability and amount of precipitation accumulated over the last hour."
        },
        "iceThickness": {
          "$ref": "IceThickness",
          "description": "The forecasted ice thickness."
        },
        "thunderstormProbability": {
          "format": "int32",
          "description": "The forecasted thunderstorm probability (values from 0 to 100).",
          "type": "integer"
        },
        "feelsLikeTemperature": {
          "description": "The measure of how the temperature will feel like at the requested location.",
          "$ref": "Temperature"
        },
        "interval": {
          "$ref": "Interval",
          "description": "The one hour interval (in UTC time) this forecast data is valid for (the timestamps are rounded down to the closest hour)."
        },
        "wind": {
          "description": "The forecasted wind conditions.",
          "$ref": "Wind"
        },
        "visibility": {
          "$ref": "Visibility",
          "description": "The forecasted visibility."
        },
        "cloudCover": {
          "format": "int32",
          "description": "The forecasted percentage of the sky covered by clouds (values from 0 to 100).",
          "type": "integer"
        }
      },
      "description": "Represents an hourly forecast record at a given location.",
      "type": "object",
      "id": "ForecastHour"
    },
    "DateTime": {
      "description": "Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year, month, or day are 0, the DateTime is considered not to have a specific year, month, or day respectively. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user's timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application's limitations.",
      "type": "object",
      "id": "DateTime",
      "properties": {
        "hours": {
          "description": "Optional. Hours of day in 24 hour format. Should be from 0 to 23, defaults to 0 (midnight). An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
          "type": "integer",
          "format": "int32"
        },
        "nanos": {
          "description": "Optional. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999, defaults to 0.",
          "type": "integer",
          "format": "int32"
        },
        "month": {
          "description": "Optional. Month of year. Must be from 1 to 12, or 0 if specifying a datetime without a month.",
          "type": "integer",
          "format": "int32"
        },
        "day": {
          "description": "Optional. Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a datetime without a day.",
          "type": "integer",
          "format": "int32"
        },
        "year": {
          "format": "int32",
          "description": "Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.",
          "type": "integer"
        },
        "timeZone": {
          "description": "Time zone.",
          "$ref": "TimeZone"
        },
        "utcOffset": {
          "description": "UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.",
          "type": "string",
          "format": "google-duration"
        },
        "minutes": {
          "format": "int32",
          "description": "Optional. Minutes of hour of day. Must be from 0 to 59, defaults to 0.",
          "type": "integer"
        },
        "seconds": {
          "format": "int32",
          "description": "Optional. Seconds of minutes of the time. Must normally be from 0 to 59, defaults to 0. An API may allow the value 60 if it allows leap-seconds.",
          "type": "integer"
        }
      }
    },
    "Temperature": {
      "id": "Temperature",
      "description": "Represents a temperature value.",
      "type": "object",
      "properties": {
        "degrees": {
          "description": "The temperature value (in degrees) in the specified unit.",
          "type": "number",
          "format": "float"
        },
        "unit": {
          "description": "The code for the unit used to measure the temperature value.",
          "type": "string",
          "enumDescriptions": [
            "The temperature unit is unspecified.",
            "The temperature is measured in Celsius.",
            "The temperature is measured in Fahrenheit."
          ],
          "enum": [
            "TEMPERATURE_UNIT_UNSPECIFIED",
            "CELSIUS",
            "FAHRENHEIT"
          ]
        }
      }
    },
    "HttpBody": {
      "description": "Message that represents an arbitrary HTTP body. It should only be used for payload formats that can't be represented as JSON, such as raw binary or an HTML page. This message can be used both in streaming and non-streaming API methods in the request as well as the response. It can be used as a top-level request field, which is convenient if one wants to extract parameters from either the URL or HTTP template into the request fields and also want access to the raw HTTP body. Example: message GetResourceRequest { // A unique request id. string request_id = 1; // The raw HTTP body is bound to this field. google.api.HttpBody http_body = 2; } service ResourceService { rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); rpc UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); } Example with streaming methods: service CaldavService { rpc GetCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); rpc UpdateCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); } Use of this type only changes how the request and response bodies are handled, all other features will continue to work unchanged.",
      "type": "object",
      "id": "HttpBody",
      "properties": {
        "extensions": {
          "description": "Application specific response metadata. Must be set in the first response for streaming APIs.",
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "any",
              "description": "Properties of the object. Contains field @type with type URL."
            }
          }
        },
        "contentType": {
          "description": "The HTTP Content-Type header value specifying the content type of the body.",
          "type": "string"
        },
        "data": {
          "description": "The HTTP request/response body as raw binary.",
          "type": "string",
          "format": "byte"
        }
      }
    },
    "CurrentConditionsHistory": {
      "properties": {
        "snowQpf": {
          "description": "The amount of snow, measured as liquid water equivalent, that has accumulated over the last 24 hours. Note: QPF is an abbreviation for Quantitative Precipitation Forecast (please see the QuantitativePrecipitationForecast definition for more details).",
          "$ref": "QuantitativePrecipitationForecast"
        },
        "temperatureChange": {
          "description": "The current temperature minus the temperature 24 hours ago.",
          "$ref": "Temperature"
        },
        "minTemperature": {
          "$ref": "Temperature",
          "description": "The minimum (low) temperature in the past 24 hours."
        },
        "maxTemperature": {
          "description": "The maximum (high) temperature in the past 24 hours.",
          "$ref": "Temperature"
        },
        "qpf": {
          "$ref": "QuantitativePrecipitationForecast",
          "description": "The amount of precipitation rain, measured as liquid water equivalent, that has accumulated over the last 24 hours. Note: QPF is an abbreviation for Quantitative Precipitation Forecast (please see the QuantitativePrecipitationForecast definition for more details)."
        }
      },
      "id": "CurrentConditionsHistory",
      "description": "Represents a set of changes in the current conditions over the last 24 hours.",
      "type": "object"
    },
    "PrecipitationProbability": {
      "properties": {
        "percent": {
          "format": "int32",
          "description": "A percentage from 0 to 100 that indicates the chances of precipitation.",
          "type": "integer"
        },
        "type": {
          "description": "A code that indicates the type of precipitation.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified precipitation type.",
            "No precipitation.",
            "Snow precipitation.",
            "Rain precipitation.",
            "Light rain precipitation.",
            "Heavy rain precipitation.",
            "Both rain and snow precipitations.",
            "Sleet precipitation.",
            "Freezing rain precipitation.",
            "Hail precipitation."
          ],
          "enum": [
            "PRECIPITATION_TYPE_UNSPECIFIED",
            "NONE",
            "SNOW",
            "RAIN",
            "LIGHT_RAIN",
            "HEAVY_RAIN",
            "RAIN_AND_SNOW",
            "SLEET",
            "FREEZING_RAIN",
            "PRECIPITATION_TYPE_HAIL"
          ]
        }
      },
      "description": "Represents the probability of precipitation at a given location.",
      "type": "object",
      "id": "PrecipitationProbability"
    },
    "QuantitativePrecipitationForecast": {
      "description": "Represents the expected amount of melted precipitation accumulated over a specified time period over a specified area (reference: https://en.wikipedia.org/wiki/Quantitative_precipitation_forecast) - usually abbreviated QPF for short.",
      "type": "object",
      "id": "QuantitativePrecipitationForecast",
      "properties": {
        "unit": {
          "description": "The code of the unit used to measure the amount of accumulated precipitation.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified precipitation unit.",
            "The amount of precipitation is measured in millimeters.",
            "The amount of precipitation is measured in inches."
          ],
          "enum": [
            "UNIT_UNSPECIFIED",
            "MILLIMETERS",
            "INCHES"
          ]
        },
        "quantity": {
          "format": "float",
          "description": "The amount of precipitation, measured as liquid water equivalent, that has accumulated over a period of time.",
          "type": "number"
        }
      }
    },
    "WindSpeed": {
      "id": "WindSpeed",
      "description": "Represents the speed of the wind.",
      "type": "object",
      "properties": {
        "value": {
          "format": "float",
          "description": "The value of the wind speed.",
          "type": "number"
        },
        "unit": {
          "description": "The code that represents the unit used to measure the wind speed.",
          "type": "string",
          "enumDescriptions": [
            "The speed unit is unspecified.",
            "The speed is measured in kilometers per hour.",
            "The speed is measured in miles per hour."
          ],
          "enum": [
            "SPEED_UNIT_UNSPECIFIED",
            "KILOMETERS_PER_HOUR",
            "MILES_PER_HOUR"
          ]
        }
      }
    },
    "SunEvents": {
      "id": "SunEvents",
      "description": "Represents the events related to the sun (e.g. sunrise, sunset).",
      "type": "object",
      "properties": {
        "sunriseTime": {
          "format": "google-datetime",
          "description": "The time when the sun rises. NOTE: In some unique cases (e.g. north of the artic circle) there may be no sunrise time for a day. In these cases, this field will be unset.",
          "type": "string"
        },
        "sunsetTime": {
          "description": "The time when the sun sets. NOTE: In some unique cases (e.g. north of the artic circle) there may be no sunset time for a day. In these cases, this field will be unset.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "PublicAlerts": {
      "properties": {
        "severity": {
          "description": "The severity level of the alert.",
          "type": "string",
          "enumDescriptions": [
            "Severity not known.",
            "Extraordinary threat to life or property.",
            "Significant threat to life or property.",
            "Possible threat to life or property.",
            "Minor threat to life or property."
          ],
          "enum": [
            "SEVERITY_UNKNOWN",
            "EXTREME",
            "SEVERE",
            "MODERATE",
            "MINOR"
          ]
        },
        "startTime": {
          "description": "The start time of the event.",
          "type": "string",
          "format": "google-datetime"
        },
        "dataSource": {
          "$ref": "DataSource",
          "description": "Details of the publisher that issued the alert."
        },
        "areaName": {
          "description": "The name of the area where the alert is issued.",
          "type": "string"
        },
        "alertTitle": {
          "description": "The localized title for the alert.",
          "$ref": "LocalizedText"
        },
        "safetyRecommendations": {
          "description": "Safety recommendations directive to the user, these can be provided by the publisher or other authorities.",
          "type": "array",
          "items": {
            "$ref": "SafetyRecommendation"
          }
        },
        "polygon": {
          "description": "A GeoJSON representation of the areas where the alert is issued. The GeoJSON data must be in RFC 7946 format and represent either a Polygon (for a single contiguous area) or a MultiPolygon (for multiple distinct areas). Example: { \"type\": \"Polygon\", \"coordinates\": [ [ [-1, -1], [-1, 0], [0, 0], [-1, -1] ] ] } A sample MultiPolygon GeoJson string looks like: { \"type\": \"MultiPolygon\", \"coordinates\": [ [ [0, 0], [-1, 0], [-1, 1], [0, 0] ], [ [0, 0], [-2, 0], [-2, 2], [0, 0] ] ]",
          "type": "string"
        },
        "urgency": {
          "description": "The urgency of the alert.",
          "type": "string",
          "enumDescriptions": [
            "Urgency not known.",
            "Responsive action SHOULD be taken immediately.",
            "Responsive action SHOULD be taken soon (within next hour).",
            "Responsive action SHOULD be taken in the near future.",
            "Responsive action is no longer required."
          ],
          "enum": [
            "URGENCY_UNKNOWN",
            "IMMEDIATE",
            "EXPECTED",
            "FUTURE",
            "PAST"
          ]
        },
        "eventType": {
          "description": "The type of weather event.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified weather event type.",
            "Acid rain event.",
            "Aftershock event.",
            "Avalanche event.",
            "Blizzard event.",
            "Blowing snow event.",
            "Bushfire event.",
            "Coastal flood event.",
            "Coastal hazard event.",
            "Cold event.",
            "Cyclone event.",
            "Drought event.",
            "Dust storm event.",
            "Earthquake event.",
            "Extra tropical cyclone event.",
            "Fire event.",
            "Fire weather event.",
            "Flash flood event.",
            "Flood event.",
            "Fog event.",
            "Freezing event.",
            "Freezing air temperature event.",
            "Freezing drizzle event.",
            "Freezing rain event.",
            "Frost event.",
            "Gale event.",
            "Glaze event.",
            "Hail event.",
            "Hazardous seas event.",
            "Heat event.",
            "Humidity event.",
            "Hurricane event.",
            "Ice storm event.",
            "Industrial fire event.",
            "Lake effect snow event.",
            "Landslide event.",
            "Monsoon event.",
            "Muddy flood event.",
            "Outflow event.",
            "Radiation event.",
            "Rain event.",
            "River flooding event.",
            "Severe thunderstorm warning event.",
            "Snowsquall event.",
            "Snow event.",
            "Storm event.",
            "Storm surge event.",
            "Thunder event.",
            "Thunderstorm event.",
            "Tornado event.",
            "Tornado warning event.",
            "Tropical cyclone event.",
            "Tropical cyclone warnings and watches event.",
            "Tropical disturbance event.",
            "Tropical storm event.",
            "Tsunami event.",
            "Typhoon event.",
            "Volcanic ash event.",
            "Volcanic eruption event.",
            "Wildfire event.",
            "Wind event.",
            "Wind chill event.",
            "Wind wave event.",
            "Winter storm event."
          ],
          "enum": [
            "WEATHER_EVENT_TYPE_UNSPECIFIED",
            "ACID_RAIN",
            "AFTERSHOCK",
            "AVALANCHE",
            "BLIZZARD",
            "BLOWING_SNOW",
            "BUSHFIRE",
            "COASTAL_FLOOD",
            "COASTAL_HAZARD",
            "COLD",
            "CYCLONE",
            "DROUGHT",
            "DUST_STORM",
            "EARTHQUAKE",
            "EXTRATROPICAL_CYCLONE",
            "FIRE",
            "FIRE_WEATHER",
            "FLASH_FLOOD",
            "FLOOD",
            "FOG",
            "FREEZING",
            "FREEZING_AIR_TEMPERATURE",
            "FREEZING_DRIZZLE",
            "FREEZING_RAIN_EVENT",
            "FROST",
            "GALE",
            "GLAZE",
            "HAIL",
            "HAZARDOUS_SEAS",
            "HEAT",
            "HUMIDITY",
            "HURRICANE",
            "ICE_STORM",
            "INDUSTRIAL_FIRE",
            "LAKE_EFFECT_SNOW",
            "LANDSLIDE",
            "MONSOON",
            "MUDDY_FLOOD",
            "OUTFLOW",
            "RADIATION",
            "RAIN_EVENT",
            "RIVER_FLOODING",
            "SEVERE_THUNDERSTORM_WARNING",
            "SNOWSQUALL",
            "SNOW_EVENT",
            "STORM",
            "STORM_SURGE",
            "THUNDER",
            "THUNDERSTORM",
            "TORNADO",
            "TORNADO_WARNING",
            "TROPICAL_CYCLONE",
            "TROPICAL_CYCLONE_WARNINGS_AND_WATCHES",
            "TROPICAL_DISTURBANCE",
            "TROPICAL_STORM",
            "TSUNAMI",
            "TYPHOON",
            "VOLCANIC_ASH",
            "VOLCANIC_ERUPTION",
            "WILDFIRE",
            "WIND",
            "WIND_CHILL",
            "WIND_WAVE",
            "WINTER_STORM"
          ]
        },
        "timezoneOffset": {
          "description": "The time zone offset from UTC for the location of the alert. The value is formatted as a string ending in 's', e.g., \"-14400s\" for 4 hours behind UTC.",
          "type": "string"
        },
        "alertId": {
          "description": "The unique identifier for this alert.",
          "type": "string"
        },
        "instruction": {
          "description": "Instructions recommended by the publisher. Please note that while this field should be localized, it is not guaranteed that it will be.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "description": {
          "description": "The latest text describing the alert as issued by the official authority. Please note that while this field should be localized, it is not guaranteed that it will be.",
          "type": "string"
        },
        "certainty": {
          "description": "The certainty of the alert.",
          "type": "string",
          "enumDescriptions": [
            "Certainty not known.",
            "Determined to have occurred or to be ongoing.",
            "Very likely.",
            "Likely (p \u003e ~50%).",
            "Possible but not likely (p \u003c= ~50%).",
            "Unlikely (p ~ 0%)."
          ],
          "enum": [
            "CERTAINTY_UNKNOWN",
            "OBSERVED",
            "VERY_LIKELY",
            "LIKELY",
            "POSSIBLE",
            "UNLIKELY"
          ]
        },
        "expirationTime": {
          "description": "The expiration time of the event.",
          "type": "string",
          "format": "google-datetime"
        }
      },
      "description": "Represents the public weather alerts.",
      "type": "object",
      "id": "PublicAlerts"
    },
    "SafetyRecommendation": {
      "id": "SafetyRecommendation",
      "description": "Represents a safety recommendation.",
      "type": "object",
      "properties": {
        "directive": {
          "description": "A directive to the user. Please note that while this field should be localized, it is not guaranteed that it will be.",
          "type": "string"
        },
        "subtext": {
          "description": "An optional subtext for the directive, which may contain additional context for the user. Please note that while this field should be localized, it is not guaranteed that it will be.",
          "type": "string"
        }
      }
    },
    "Wind": {
      "id": "Wind",
      "description": "Represents a set of wind properties.",
      "type": "object",
      "properties": {
        "speed": {
          "description": "The speed of the wind.",
          "$ref": "WindSpeed"
        },
        "gust": {
          "$ref": "WindSpeed",
          "description": "The wind gust (sudden increase in the wind speed)."
        },
        "direction": {
          "description": "The direction of the wind, the angle it is coming from.",
          "$ref": "WindDirection"
        }
      }
    },
    "LookupPublicAlertsResponse": {
      "properties": {
        "weatherAlerts": {
          "description": "The public weather alert records, according to the number of alerts and page size specified in the request.",
          "type": "array",
          "items": {
            "$ref": "PublicAlerts"
          }
        },
        "nextPageToken": {
          "description": "A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "regionCode": {
          "description": "The ISO_3166-1 alpha-2 code of the region corresponding to the location provided in the request. The region is stated using ISO_3166-1_alpha-2.",
          "type": "string"
        }
      },
      "id": "LookupPublicAlertsResponse",
      "description": "Response for the LookupPublicAlerts RPC.",
      "type": "object"
    },
    "AirPressure": {
      "properties": {
        "meanSeaLevelMillibars": {
          "description": "The mean sea level air pressure in millibars.",
          "type": "number",
          "format": "float"
        }
      },
      "id": "AirPressure",
      "description": "Represents the atmospheric air pressure conditions.",
      "type": "object"
    },
    "ForecastDayPart": {
      "properties": {
        "weatherCondition": {
          "$ref": "WeatherCondition",
          "description": "The forecasted weather condition."
        },
        "precipitation": {
          "$ref": "Precipitation",
          "description": "The forecasted precipitation."
        },
        "iceThickness": {
          "description": "The accumulated amount of ice for the part of the day.",
          "$ref": "IceThickness"
        },
        "relativeHumidity": {
          "format": "int32",
          "description": "The forecasted percent of relative humidity (values from 0 to 100).",
          "type": "integer"
        },
        "uvIndex": {
          "description": "The maximum forecasted ultraviolet (UV) index.",
          "type": "integer",
          "format": "int32"
        },
        "cloudCover": {
          "format": "int32",
          "description": "Average cloud cover percent.",
          "type": "integer"
        },
        "interval": {
          "description": "The UTC date and time when this part of the day starts (inclusive) and ends (exclusive). Note: a part of a day starts at 7am and ends at 7pm the same day, local time. For example: If the local time zone is UTC-7, then the daytime interval will start at the time `14:00:00.000Z` and end at `02:00:00.000Z` the next day and the nighttime interval will start at `02:00:00.000Z` the next day and end at `14:00:00.000Z` that same day.",
          "$ref": "Interval"
        },
        "wind": {
          "description": "The average wind direction and maximum speed and gust.",
          "$ref": "Wind"
        },
        "thunderstormProbability": {
          "format": "int32",
          "description": "The average thunderstorm probability.",
          "type": "integer"
        }
      },
      "description": "Represents a forecast record for a part of the day.",
      "type": "object",
      "id": "ForecastDayPart"
    },
    "LocalizedText": {
      "id": "LocalizedText",
      "description": "Localized variant of a text in a particular language.",
      "type": "object",
      "properties": {
        "text": {
          "description": "Localized string in the language corresponding to language_code below.",
          "type": "string"
        },
        "languageCode": {
          "description": "The text's BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
          "type": "string"
        }
      }
    },
    "TimeZone": {
      "properties": {
        "id": {
          "description": "IANA Time Zone Database time zone. For example \"America/New_York\".",
          "type": "string"
        },
        "version": {
          "description": "Optional. IANA Time Zone Database version number. For example \"2019a\".",
          "type": "string"
        }
      },
      "description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).",
      "type": "object",
      "id": "TimeZone"
    },
    "LookupForecastDaysResponse": {
      "properties": {
        "forecastDays": {
          "description": "The daily forecast records, according to the number of days and page size specified in the request.",
          "type": "array",
          "items": {
            "$ref": "ForecastDay"
          }
        },
        "timeZone": {
          "description": "The time zone at the requested location.",
          "$ref": "TimeZone"
        },
        "nextPageToken": {
          "description": "The token to retrieve the next page.",
          "type": "string"
        }
      },
      "description": "Response for the LookupForecastDays RPC.",
      "type": "object",
      "id": "LookupForecastDaysResponse"
    },
    "Interval": {
      "id": "Interval",
      "description": "Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). The start must be less than or equal to the end. When the start equals the end, the interval is empty (matches no time). When both start and end are unspecified, the interval matches any time.",
      "type": "object",
      "properties": {
        "startTime": {
          "format": "google-datetime",
          "description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start.",
          "type": "string"
        },
        "endTime": {
          "description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "PrecipitationSegment": {
      "properties": {
        "intensity": {
          "description": "Precipitation intensity of the segment.",
          "type": "string",
          "enumDescriptions": [
            "Unknown precipitation intensity.",
            "No precipitation intensity.",
            "Light precipitation intensity.",
            "Moderate precipitation intensity.",
            "Heavy precipitation intensity."
          ],
          "enum": [
            "PRECIPITATION_INTENSITY_UNSPECIFIED",
            "NO_INTENSITY",
            "LIGHT",
            "MODERATE",
            "HEAVY"
          ]
        },
        "qpf": {
          "description": "Quantitative precipitation forecast",
          "$ref": "QuantitativePrecipitationForecast"
        },
        "type": {
          "description": "The type of precipitation.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified precipitation type.",
            "No precipitation.",
            "Rain.",
            "Snow.",
            "Hail."
          ],
          "enum": [
            "DOMINANT_PRECIPITATION_TYPE_UNSPECIFIED",
            "NONE",
            "RAIN",
            "SNOW",
            "HAIL"
          ]
        },
        "timeFrame": {
          "$ref": "Interval",
          "description": "The timeframe relevant to the segment."
        },
        "probability": {
          "format": "int32",
          "description": "The chance of precipitation. Values are in percentages ranging from 0 to 100.",
          "type": "integer"
        },
        "snowfallAmount": {
          "description": "Snow quantitative precipitation forecast",
          "$ref": "QuantitativePrecipitationForecast"
        }
      },
      "id": "PrecipitationSegment",
      "description": "Represents a segment of precipitation forecast data.",
      "type": "object"
    },
    "WindDirection": {
      "description": "Represents the direction from which the wind originates.",
      "type": "object",
      "id": "WindDirection",
      "properties": {
        "degrees": {
          "description": "The direction of the wind in degrees (values from 0 to 360).",
          "type": "integer",
          "format": "int32"
        },
        "cardinal": {
          "description": "The code that represents the cardinal direction from which the wind is blowing.",
          "type": "string",
          "enumDescriptions": [
            "The cardinal direction is unspecified.",
            "The north cardinal direction.",
            "The north-northeast secondary intercardinal direction.",
            "The northeast intercardinal direction.",
            "The east-northeast secondary intercardinal direction.",
            "The east cardinal direction.",
            "The east-southeast secondary intercardinal direction.",
            "The southeast intercardinal direction.",
            "The south-southeast secondary intercardinal direction.",
            "The south cardinal direction.",
            "The south-southwest secondary intercardinal direction.",
            "The southwest intercardinal direction.",
            "The west-southwest secondary intercardinal direction.",
            "The west cardinal direction.",
            "The west-northwest secondary intercardinal direction.",
            "The northwest intercardinal direction.",
            "The north-northwest secondary intercardinal direction."
          ],
          "enum": [
            "CARDINAL_DIRECTION_UNSPECIFIED",
            "NORTH",
            "NORTH_NORTHEAST",
            "NORTHEAST",
            "EAST_NORTHEAST",
            "EAST",
            "EAST_SOUTHEAST",
            "SOUTHEAST",
            "SOUTH_SOUTHEAST",
            "SOUTH",
            "SOUTH_SOUTHWEST",
            "SOUTHWEST",
            "WEST_SOUTHWEST",
            "WEST",
            "WEST_NORTHWEST",
            "NORTHWEST",
            "NORTH_NORTHWEST"
          ]
        }
      }
    },
    "LookupForecastMinutesResponse": {
      "description": "Response for the LookupForecastMinutes RPC.",
      "type": "object",
      "id": "LookupForecastMinutesResponse",
      "properties": {
        "nextPageToken": {
          "description": "The token to retrieve the next page.",
          "type": "string"
        },
        "overallPredictionTimeframe": {
          "description": "The overall timeframe for the predictions.",
          "$ref": "Interval"
        },
        "timeZone": {
          "$ref": "TimeZone",
          "description": "The time zone at the requested location."
        },
        "segments": {
          "description": "The minute-level prediction segments.",
          "type": "array",
          "items": {
            "$ref": "PrecipitationSegment"
          }
        }
      }
    },
    "HistoryHour": {
      "description": "Represents an hourly history record at a given location.",
      "type": "object",
      "id": "HistoryHour",
      "properties": {
        "temperature": {
          "$ref": "Temperature",
          "description": "The historical temperature."
        },
        "wetBulbTemperature": {
          "description": "The historical wet bulb temperature, lowest temperature achievable by evaporating water.",
          "$ref": "Temperature"
        },
        "airPressure": {
          "description": "The historical air pressure conditions.",
          "$ref": "AirPressure"
        },
        "dewPoint": {
          "description": "The historical dew point temperature.",
          "$ref": "Temperature"
        },
        "windChill": {
          "$ref": "Temperature",
          "description": "The historical wind chill, air temperature exposed on the skin."
        },
        "uvIndex": {
          "format": "int32",
          "description": "The historical ultraviolet (UV) index.",
          "type": "integer"
        },
        "displayDateTime": {
          "$ref": "DateTime",
          "description": "The local date and time in the time zone of the location (civil time) which this hourly record is calculated for. This field may be used for display purposes on the client. Note: this date will consist of the year, month, day, hour and offset from UTC."
        },
        "isDaytime": {
          "description": "True if this hour is between the local sunrise (inclusive) and sunset (exclusive) times. Otherwise, it is nighttime (between the sunset and the next sunrise). Note: this hour will be considered as daytime or nighttime if the interval intersects with the local sunrise and sunset times respectively (e.g.: if the interval is from 5am to 6am and sunrise is at 5:59am, then is_daytime will be true).",
          "type": "boolean"
        },
        "weatherCondition": {
          "$ref": "WeatherCondition",
          "description": "The historical weather condition."
        },
        "heatIndex": {
          "description": "The historical heat index temperature.",
          "$ref": "Temperature"
        },
        "precipitation": {
          "description": "The historical precipitation probability and amount of precipitation accumulated over the last hour.",
          "$ref": "Precipitation"
        },
        "iceThickness": {
          "$ref": "IceThickness",
          "description": "The historical ice thickness."
        },
        "relativeHumidity": {
          "description": "The historical percent of relative humidity (values from 0 to 100).",
          "type": "integer",
          "format": "int32"
        },
        "cloudCover": {
          "description": "The historical percentage of the sky covered by clouds (values from 0 to 100).",
          "type": "integer",
          "format": "int32"
        },
        "interval": {
          "$ref": "Interval",
          "description": "The one hour interval (in UTC time) this historical data is valid for (the timestamps are rounded down to the closest hour)."
        },
        "wind": {
          "description": "The historical wind conditions.",
          "$ref": "Wind"
        },
        "visibility": {
          "$ref": "Visibility",
          "description": "The historical visibility."
        },
        "feelsLikeTemperature": {
          "$ref": "Temperature",
          "description": "The measure of how the temperature felt like at the requested location."
        },
        "thunderstormProbability": {
          "format": "int32",
          "description": "The historical thunderstorm probability (values from 0 to 100).",
          "type": "integer"
        }
      }
    },
    "Date": {
      "properties": {
        "month": {
          "description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
          "type": "integer",
          "format": "int32"
        },
        "year": {
          "format": "int32",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
          "type": "integer"
        },
        "day": {
          "description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
          "type": "integer",
          "format": "int32"
        }
      },
      "id": "Date",
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "type": "object"
    },
    "WeatherCondition": {
      "id": "WeatherCondition",
      "description": "Represents a weather condition for a given location at a given period of time. Disclaimer: Weather icons and condition codes are subject to change. Google may introduce new codes and icons or update existing ones as needed. We encourage you to refer to this documentation regularly for the most up-to-date information.",
      "type": "object",
      "properties": {
        "iconBaseUri": {
          "description": "The base URI for the icon not including the file type extension. To display the icon, append a theme if desired and the file type extension (`.png` or `.svg`) to this URI. By default, the icon is light themed, but `_dark` can be appended for dark mode. For example: \"https://maps.gstatic.com/weather/v1/dust.svg\" or \"https://maps.gstatic.com/weather/v1/dust_dark.svg\", where `icon_base_uri` is \"https://maps.gstatic.com/weather/v1/dust\".",
          "type": "string"
        },
        "description": {
          "$ref": "LocalizedText",
          "description": "The textual description for this weather condition (localized)."
        },
        "type": {
          "description": "The type of weather condition.",
          "type": "string",
          "enumDescriptions": [
            "The weather condition is unspecified.",
            "No clouds.",
            "Periodic clouds.",
            "Party cloudy (some clouds).",
            "Mostly cloudy (more clouds than sun).",
            "Cloudy (all clouds, no sun).",
            "High wind.",
            "High wind with precipitation.",
            "Light intermittent rain.",
            "Chance of intermittent rain.",
            "Intermittent rain.",
            "Showers are considered to be rainfall that has a shorter duration than rain, and is characterized by suddenness in terms of start and stop times, and rapid changes in intensity.",
            "Intense showers.",
            "Rain (light to moderate in quantity).",
            "Rain (moderate to heavy in quantity).",
            "Moderate rain.",
            "Light rain.",
            "Heavy rain.",
            "Rain periodically heavy.",
            "Light snow that is falling at varying intensities for brief periods of time.",
            "Chance of snow showers.",
            "Snow that is falling at varying intensities for brief periods of time.",
            "Snow showers.",
            "Heavy snow showers.",
            "Light to moderate snow.",
            "Moderate to heavy snow.",
            "Moderate snow.",
            "Light snow.",
            "Heavy snow.",
            "Snow with possible thunder and lightning.",
            "Snow, at times heavy.",
            "Heavy snow with possible thunder and lightning.",
            "Snow with intense wind.",
            "Rain and snow mix.",
            "Hail.",
            "Hail that is falling at varying intensities for brief periods of time.",
            "Thunderstorm.",
            "A shower of rain accompanied by thunder and lightning.",
            "Light thunderstorm rain.",
            "Thunderstorms that has rain in various intensities for brief periods of time.",
            "Heavy thunderstorm."
          ],
          "enum": [
            "TYPE_UNSPECIFIED",
            "CLEAR",
            "MOSTLY_CLEAR",
            "PARTLY_CLOUDY",
            "MOSTLY_CLOUDY",
            "CLOUDY",
            "WINDY",
            "WIND_AND_RAIN",
            "LIGHT_RAIN_SHOWERS",
            "CHANCE_OF_SHOWERS",
            "SCATTERED_SHOWERS",
            "RAIN_SHOWERS",
            "HEAVY_RAIN_SHOWERS",
            "LIGHT_TO_MODERATE_RAIN",
            "MODERATE_TO_HEAVY_RAIN",
            "RAIN",
            "LIGHT_RAIN",
            "HEAVY_RAIN",
            "RAIN_PERIODICALLY_HEAVY",
            "LIGHT_SNOW_SHOWERS",
            "CHANCE_OF_SNOW_SHOWERS",
            "SCATTERED_SNOW_SHOWERS",
            "SNOW_SHOWERS",
            "HEAVY_SNOW_SHOWERS",
            "LIGHT_TO_MODERATE_SNOW",
            "MODERATE_TO_HEAVY_SNOW",
            "SNOW",
            "LIGHT_SNOW",
            "HEAVY_SNOW",
            "SNOWSTORM",
            "SNOW_PERIODICALLY_HEAVY",
            "HEAVY_SNOW_STORM",
            "BLOWING_SNOW",
            "RAIN_AND_SNOW",
            "HAIL",
            "HAIL_SHOWERS",
            "THUNDERSTORM",
            "THUNDERSHOWER",
            "LIGHT_THUNDERSTORM_RAIN",
            "SCATTERED_THUNDERSTORMS",
            "HEAVY_THUNDERSTORM"
          ]
        }
      }
    },
    "LookupForecastHoursResponse": {
      "id": "LookupForecastHoursResponse",
      "description": "Response for the LookupForecastHours RPC.",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "The token to retrieve the next page.",
          "type": "string"
        },
        "forecastHours": {
          "description": "The hourly forecast records, according to the number of hours and page size specified in the request.",
          "type": "array",
          "items": {
            "$ref": "ForecastHour"
          }
        },
        "timeZone": {
          "$ref": "TimeZone",
          "description": "The time zone at the requested location."
        }
      }
    }
  },
  "resources": {
    "mapTypes": {
      "resources": {
        "mapTiles": {
          "methods": {
            "lookupMapTile": {
              "response": {
                "$ref": "HttpBody"
              },
              "parameters": {
                "x": {
                  "description": "Required. Defines the east-west point in the requested tile. Must be non-negative.",
                  "type": "integer",
                  "format": "int32",
                  "location": "path",
                  "required": true
                },
                "mapType": {
                  "location": "path",
                  "required": true,
                  "description": "Required. The type of the weather map. Defines the weather event that the map will graphically represent. Allowed values: - US_PRECIPITATION_CURRENT - US precipitation current map. - EU_PRECIPITATION_CURRENT - EU precipitation current map.",
                  "type": "string",
                  "enumDescriptions": [
                    "The default value. Ignores the value if passed as a parameter.",
                    "Represents a US precipitation current map.",
                    "Represents an EU precipitation current map."
                  ],
                  "enum": [
                    "MAP_TYPE_UNSPECIFIED",
                    "US_PRECIPITATION_CURRENT",
                    "EU_PRECIPITATION_CURRENT"
                  ]
                },
                "zoom": {
                  "description": "Required. The map's zoom level. Defines how large or small the contents of a map appear in a map view. Zoom level 0 is the entire world in a single tile. Zoom level 1 is the entire world in 4 tiles. Zoom level 2 is the entire world in 16 tiles. Zoom level 16 is the entire world in 65,536 tiles. Allowed values: 0-16",
                  "type": "integer",
                  "location": "path",
                  "required": true,
                  "format": "int32"
                },
                "y": {
                  "description": "Required. Defines the north-south point in the requested tile. Must be non-negative.",
                  "type": "integer",
                  "format": "int32",
                  "location": "path",
                  "required": true
                }
              },
              "id": "weather.mapTypes.mapTiles.lookupMapTile",
              "flatPath": "v1/mapTypes/{mapType}/mapTiles/{zoom}/{x}/{y}",
              "httpMethod": "GET",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/mapTypes/{mapType}/mapTiles/{zoom}/{x}/{y}",
              "parameterOrder": [
                "mapType",
                "zoom",
                "x",
                "y"
              ],
              "description": "Returns weather maps for a given location."
            }
          }
        }
      }
    },
    "history": {
      "resources": {
        "hours": {
          "methods": {
            "lookup": {
              "response": {
                "$ref": "LookupHistoryHoursResponse"
              },
              "id": "weather.history.hours.lookup",
              "flatPath": "v1/history/hours:lookup",
              "httpMethod": "GET",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameters": {
                "location.longitude": {
                  "format": "double",
                  "location": "query",
                  "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
                  "type": "number"
                },
                "location.latitude": {
                  "format": "double",
                  "location": "query",
                  "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
                  "type": "number"
                },
                "unitsSystem": {
                  "location": "query",
                  "description": "Optional. The units system to use for the returned weather conditions. If not provided, the returned weather conditions will be in the metric system (default = METRIC).",
                  "type": "string",
                  "enumDescriptions": [
                    "The units system is unspecified.",
                    "The imperial units system (e.g. Fahrenheit, miles, etc).",
                    "The metric units system (e.g. Celsius, kilometers, etc)."
                  ],
                  "enum": [
                    "UNITS_SYSTEM_UNSPECIFIED",
                    "IMPERIAL",
                    "METRIC"
                  ]
                },
                "hours": {
                  "description": "Optional. Limits the amount of total hours to fetch starting from the last hour - a from 1 to 24 (inclusive). The default is the maximum allowed value of 24.",
                  "type": "integer",
                  "format": "int32",
                  "location": "query"
                },
                "pageToken": {
                  "location": "query",
                  "description": "Optional. A page token received from a previous request. It is used to retrieve the subsequent page.",
                  "type": "string"
                },
                "pageSize": {
                  "location": "query",
                  "format": "int32",
                  "description": "Optional. The maximum number of hourly historical records to return per page - a value from 1 to 24 (inclusive). The default is the maximum allowed value of 24.",
                  "type": "integer"
                },
                "languageCode": {
                  "location": "query",
                  "description": "Optional. Allows the client to choose the language for the response. If data cannot be provided for that language, the API uses the closest match. Allowed values rely on the IETF BCP-47 standard. The default value is \"en\".",
                  "type": "string"
                }
              },
              "path": "v1/history/hours:lookup",
              "parameterOrder": [],
              "description": "Returns up to 24 hours of hourly historical weather data at a given location, starting from the last hour."
            }
          }
        }
      }
    },
    "publicAlerts": {
      "methods": {
        "lookup": {
          "path": "v1/publicAlerts:lookup",
          "parameterOrder": [],
          "description": "Returns public weather alerts for a given location.",
          "response": {
            "$ref": "LookupPublicAlertsResponse"
          },
          "parameters": {
            "location.longitude": {
              "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
              "type": "number",
              "format": "double",
              "location": "query"
            },
            "location.latitude": {
              "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
              "type": "number",
              "location": "query",
              "format": "double"
            },
            "pageToken": {
              "description": "Optional. A page token received from a previous `LookupPublicAlerts` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `LookupPublicAlerts` must match the call that provided the page token.",
              "type": "string",
              "location": "query"
            },
            "pageSize": {
              "format": "int32",
              "location": "query",
              "description": "Optional. The maximum number of public weather alert records to return per page.",
              "type": "integer"
            },
            "languageCode": {
              "description": "Optional. Allows the client to choose the language for the response. If data cannot be provided for that language, the API uses the closest match. Allowed values rely on the IETF BCP-47 standard. The default value is \"en\".",
              "type": "string",
              "location": "query"
            }
          },
          "id": "weather.publicAlerts.lookup",
          "flatPath": "v1/publicAlerts:lookup",
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ]
        }
      }
    },
    "currentConditions": {
      "methods": {
        "lookup": {
          "path": "v1/currentConditions:lookup",
          "parameterOrder": [],
          "description": "Returns the current weather conditions at a given location.",
          "response": {
            "$ref": "LookupCurrentConditionsResponse"
          },
          "id": "weather.currentConditions.lookup",
          "flatPath": "v1/currentConditions:lookup",
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "parameters": {
            "location.longitude": {
              "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
              "type": "number",
              "format": "double",
              "location": "query"
            },
            "location.latitude": {
              "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
              "type": "number",
              "location": "query",
              "format": "double"
            },
            "languageCode": {
              "description": "Optional. Allows the client to choose the language for the response. If data cannot be provided for that language, the API uses the closest match. Allowed values rely on the IETF BCP-47 standard. The default value is \"en\".",
              "type": "string",
              "location": "query"
            },
            "unitsSystem": {
              "enum": [
                "UNITS_SYSTEM_UNSPECIFIED",
                "IMPERIAL",
                "METRIC"
              ],
              "location": "query",
              "description": "Optional. The units system to use for the returned weather conditions. If not provided, the returned weather conditions will be in the metric system (default = METRIC).",
              "type": "string",
              "enumDescriptions": [
                "The units system is unspecified.",
                "The imperial units system (e.g. Fahrenheit, miles, etc).",
                "The metric units system (e.g. Celsius, kilometers, etc)."
              ]
            }
          }
        }
      }
    },
    "forecast": {
      "resources": {
        "minutes": {
          "methods": {
            "lookup": {
              "path": "v1/forecast/minutes:lookup",
              "parameterOrder": [],
              "description": "Returns minute-level precipitation nowcast events for up to 6 hours.",
              "response": {
                "$ref": "LookupForecastMinutesResponse"
              },
              "id": "weather.forecast.minutes.lookup",
              "flatPath": "v1/forecast/minutes:lookup",
              "httpMethod": "GET",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameters": {
                "pageToken": {
                  "location": "query",
                  "description": "Optional. A page token received from a previous request. It is used to retrieve the subsequent page.",
                  "type": "string"
                },
                "pageSize": {
                  "location": "query",
                  "format": "int32",
                  "description": "Optional. The maximum number of forecast records to return per page.",
                  "type": "integer"
                },
                "location.latitude": {
                  "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
                  "type": "number",
                  "location": "query",
                  "format": "double"
                },
                "unitsSystem": {
                  "enum": [
                    "UNITS_SYSTEM_UNSPECIFIED",
                    "IMPERIAL",
                    "METRIC"
                  ],
                  "location": "query",
                  "description": "Optional. The units system to use for the returned weather conditions. If not provided, the returned weather conditions will be in the metric system (default = METRIC).",
                  "type": "string",
                  "enumDescriptions": [
                    "The units system is unspecified.",
                    "The imperial units system (e.g. Fahrenheit, miles, etc).",
                    "The metric units system (e.g. Celsius, kilometers, etc)."
                  ]
                },
                "location.longitude": {
                  "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
                  "type": "number",
                  "location": "query",
                  "format": "double"
                }
              }
            }
          }
        },
        "hours": {
          "methods": {
            "lookup": {
              "path": "v1/forecast/hours:lookup",
              "parameterOrder": [],
              "description": "Returns up to 240 hours of hourly forecasts at a given location, starting from the current hour.",
              "response": {
                "$ref": "LookupForecastHoursResponse"
              },
              "parameters": {
                "location.latitude": {
                  "format": "double",
                  "location": "query",
                  "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
                  "type": "number"
                },
                "unitsSystem": {
                  "description": "Optional. The units system to use for the returned weather conditions. If not provided, the returned weather conditions will be in the metric system (default = METRIC).",
                  "type": "string",
                  "enumDescriptions": [
                    "The units system is unspecified.",
                    "The imperial units system (e.g. Fahrenheit, miles, etc).",
                    "The metric units system (e.g. Celsius, kilometers, etc)."
                  ],
                  "location": "query",
                  "enum": [
                    "UNITS_SYSTEM_UNSPECIFIED",
                    "IMPERIAL",
                    "METRIC"
                  ]
                },
                "location.longitude": {
                  "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
                  "type": "number",
                  "location": "query",
                  "format": "double"
                },
                "languageCode": {
                  "location": "query",
                  "description": "Optional. Allows the client to choose the language for the response. If data cannot be provided for that language, the API uses the closest match. Allowed values rely on the IETF BCP-47 standard. The default value is \"en\".",
                  "type": "string"
                },
                "hours": {
                  "format": "int32",
                  "location": "query",
                  "description": "Optional. Limits the amount of total hours to fetch starting from the current hour - a value from 1 to 240 (inclusive). The default is the maximum allowed value of 240.",
                  "type": "integer"
                },
                "pageToken": {
                  "description": "Optional. A page token received from a previous request. It is used to retrieve the subsequent page.",
                  "type": "string",
                  "location": "query"
                },
                "pageSize": {
                  "description": "Optional. The maximum number of hourly forecast records to return per page - a value from 1 to 24 (inclusive). The default is the maximum allowed value of 24.",
                  "type": "integer",
                  "format": "int32",
                  "location": "query"
                }
              },
              "id": "weather.forecast.hours.lookup",
              "flatPath": "v1/forecast/hours:lookup",
              "httpMethod": "GET",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            }
          }
        },
        "days": {
          "methods": {
            "lookup": {
              "response": {
                "$ref": "LookupForecastDaysResponse"
              },
              "id": "weather.forecast.days.lookup",
              "flatPath": "v1/forecast/days:lookup",
              "httpMethod": "GET",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameters": {
                "location.longitude": {
                  "format": "double",
                  "location": "query",
                  "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
                  "type": "number"
                },
                "days": {
                  "description": "Optional. Limits the amount of total days to fetch starting from the current day - a value from 1 to 10 (inclusive). The default value is the maximum allowed value of 10.",
                  "type": "integer",
                  "location": "query",
                  "format": "int32"
                },
                "location.latitude": {
                  "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
                  "type": "number",
                  "format": "double",
                  "location": "query"
                },
                "unitsSystem": {
                  "enum": [
                    "UNITS_SYSTEM_UNSPECIFIED",
                    "IMPERIAL",
                    "METRIC"
                  ],
                  "description": "Optional. The units system to use for the returned weather conditions. If not provided, the returned weather conditions will be in the metric system (default = METRIC).",
                  "type": "string",
                  "enumDescriptions": [
                    "The units system is unspecified.",
                    "The imperial units system (e.g. Fahrenheit, miles, etc).",
                    "The metric units system (e.g. Celsius, kilometers, etc)."
                  ],
                  "location": "query"
                },
                "pageToken": {
                  "location": "query",
                  "description": "Optional. A page token received from a previous request. It is used to retrieve the subsequent page.",
                  "type": "string"
                },
                "pageSize": {
                  "description": "Optional. The maximum number of daily forecast records to return per page - a value from 1 to 10 (inclusive). The default value is 5.",
                  "type": "integer",
                  "location": "query",
                  "format": "int32"
                },
                "languageCode": {
                  "location": "query",
                  "description": "Optional. Allows the client to choose the language for the response. If data cannot be provided for that language, the API uses the closest match. Allowed values rely on the IETF BCP-47 standard. The default value is \"en\".",
                  "type": "string"
                }
              },
              "path": "v1/forecast/days:lookup",
              "parameterOrder": [],
              "description": "Returns up to 10 days of daily forecasts at a given location, starting from the current day."
            }
          }
        }
      }
    }
  },
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        }
      }
    }
  },
  "baseUrl": "https://weather.googleapis.com/",
  "batchPath": "batch",
  "fullyEncodeReservedExpansion": true,
  "id": "weather:v1",
  "version": "v1",
  "basePath": "",
  "mtlsRootUrl": "https://weather.mtls.googleapis.com/",
  "protocol": "rest",
  "servicePath": "",
  "version_module": true,
  "name": "weather",
  "revision": "20260623",
  "ownerDomain": "google.com",
  "kind": "discovery#restDescription",
  "title": "Weather API",
  "documentationLink": "https://developers.google.com/maps/documentation/weather",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "canonicalName": "Weather",
  "description": "weather.googleapis.com API.",
  "rootUrl": "https://weather.googleapis.com/",
  "discoveryVersion": "v1",
  "ownerName": "Google"
}
