// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.maps.weather.v1;

import "google/type/localized_text.proto";

option csharp_namespace = "Google.Geo.Weather.V1";
option go_package = "cloud.google.com/go/maps/weather/apiv1/weatherpb;weatherpb";
option java_multiple_files = true;
option java_outer_classname = "WeatherConditionProto";
option java_package = "com.google.maps.weather.v1";
option objc_class_prefix = "GMWV1";
option php_namespace = "Google\\Geo\\Weather\\V1";

// 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.
message WeatherCondition {
  // Marks the weather condition type in a forecast element's context.
  enum Type {
    // The weather condition is unspecified.
    TYPE_UNSPECIFIED = 0;

    // No clouds.
    CLEAR = 1;

    // Periodic clouds.
    MOSTLY_CLEAR = 2;

    // Party cloudy (some clouds).
    PARTLY_CLOUDY = 3;

    // Mostly cloudy (more clouds than sun).
    MOSTLY_CLOUDY = 4;

    // Cloudy (all clouds, no sun).
    CLOUDY = 5;

    // High wind.
    WINDY = 6;

    // High wind with precipitation.
    WIND_AND_RAIN = 7;

    // Light intermittent rain.
    LIGHT_RAIN_SHOWERS = 8;

    // Chance of intermittent rain.
    CHANCE_OF_SHOWERS = 9;

    // Intermittent rain.
    SCATTERED_SHOWERS = 10;

    // 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.
    RAIN_SHOWERS = 12;

    // Intense showers.
    HEAVY_RAIN_SHOWERS = 13;

    // Rain (light to moderate in quantity).
    LIGHT_TO_MODERATE_RAIN = 14;

    // Rain (moderate to heavy in quantity).
    MODERATE_TO_HEAVY_RAIN = 15;

    // Moderate rain.
    RAIN = 16;

    // Light rain.
    LIGHT_RAIN = 17;

    // Heavy rain.
    HEAVY_RAIN = 18;

    // Rain periodically heavy.
    RAIN_PERIODICALLY_HEAVY = 19;

    // Light snow that is falling at varying intensities for brief periods of
    // time.
    LIGHT_SNOW_SHOWERS = 20;

    // Chance of snow showers.
    CHANCE_OF_SNOW_SHOWERS = 21;

    // Snow that is falling at varying intensities for brief periods of time.
    SCATTERED_SNOW_SHOWERS = 22;

    // Snow showers.
    SNOW_SHOWERS = 23;

    // Heavy snow showers.
    HEAVY_SNOW_SHOWERS = 24;

    // Light to moderate snow.
    LIGHT_TO_MODERATE_SNOW = 25;

    // Moderate to heavy snow.
    MODERATE_TO_HEAVY_SNOW = 26;

    // Moderate snow.
    SNOW = 27;

    // Light snow.
    LIGHT_SNOW = 28;

    // Heavy snow.
    HEAVY_SNOW = 29;

    // Snow with possible thunder and lightning.
    SNOWSTORM = 30;

    // Snow, at times heavy.
    SNOW_PERIODICALLY_HEAVY = 31;

    // Heavy snow with possible thunder and lightning.
    HEAVY_SNOW_STORM = 32;

    // Snow with intense wind.
    BLOWING_SNOW = 33;

    // Rain and snow mix.
    RAIN_AND_SNOW = 34;

    // Hail.
    HAIL = 35;

    // Hail that is falling at varying intensities for brief periods of time.
    HAIL_SHOWERS = 36;

    // Thunderstorm.
    THUNDERSTORM = 37;

    // A shower of rain accompanied by thunder and lightning.
    THUNDERSHOWER = 38;

    // Light thunderstorm rain.
    LIGHT_THUNDERSTORM_RAIN = 39;

    // Thunderstorms that has rain in various intensities for brief periods of
    // time.
    SCATTERED_THUNDERSTORMS = 40;

    // Heavy thunderstorm.
    HEAVY_THUNDERSTORM = 41;
  }

  // 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".
  string icon_base_uri = 1;

  // The textual description for this weather condition (localized).
  google.type.LocalizedText description = 2;

  // The type of weather condition.
  Type type = 3;
}