syntax = "proto3";

package google.maps.weather.v1;

import "google/api/field_behavior.proto";

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

// Represents a set of wind properties.
// (-- Next available tag: 4 --)
message Wind {
  // The direction of the wind, the angle it is coming from.
  WindDirection direction = 1;

  // The speed of the wind.
  WindSpeed speed = 2;

  // The wind gust (sudden increase in the wind speed).
  WindSpeed gust = 3;
}

// Represents the direction from which the wind originates.
// (-- This is a generic (shared) definition because it might be used as a
// standalone field for other endpoints/new features in the future. --)
// (-- Next available tag: 3 --)
message WindDirection {
  // The direction of the wind in degrees (values from 0 to 360).
  optional int32 degrees = 1;

  // Represents a cardinal direction (including ordinal directions).
  enum Cardinal {
    // The cardinal direction is unspecified.
    CARDINAL_UNSPECIFIED = 0;

    // The north cardinal direction.
    NORTH = 1;

    // The north-northeast secondary intercardinal direction.
    NORTH_NORTHEAST = 2;

    // The northeast intercardinal direction.
    NORTHEAST = 3;

    // The east-northeast secondary intercardinal direction.
    EAST_NORTHEAST = 4;

    // The east cardinal direction.
    EAST = 5;

    // The east-southeast secondary intercardinal direction.
    EAST_SOUTHEAST = 6;

    // The southeast intercardinal direction.
    SOUTHEAST = 7;

    // The south-southeast secondary intercardinal direction.
    SOUTH_SOUTHEAST = 8;

    // The south cardinal direction.
    SOUTH = 9;

    // The south-southwest secondary intercardinal direction.
    SOUTH_SOUTHWEST = 10;

    // The southwest intercardinal direction.
    SOUTHWEST = 11;

    // The west-southwest secondary intercardinal direction.
    WEST_SOUTHWEST = 12;

    // The west cardinal direction.
    WEST = 13;

    // The west-northwest secondary intercardinal direction.
    WEST_NORTHWEST = 14;

    // The northwest intercardinal direction.
    NORTHWEST = 15;

    // The north-northwest secondary intercardinal direction.
    NORTH_NORTHWEST = 16;
  }
  // The code that represents the cardinal direction from which the wind is
  // blowing.
  // (-- aip.dev/not-precedent: Field type changed to nested enum per atomic
  //     transition strategy. Wire-compatible; external consumers
  //     rely exclusively on HTTP REST/JSON where enum strings remain identical.
  //     --)
  Cardinal cardinal = 2 [(google.api.field_behavior) = OPTIONAL];
}

// Represents the speed of the wind.
// (-- This is a generic (shared) definition because it might be used as a
// standalone field for other endpoints/new features in the future. --)
// (-- Next available tag: 3 --)
message WindSpeed {
  // The value of the wind speed.
  optional float value = 1;

  // Represents the unit used to measure speed.
  enum Unit {
    // The speed unit is unspecified.
    UNIT_UNSPECIFIED = 0;

    // The speed is measured in kilometers per hour.
    KILOMETERS_PER_HOUR = 1;

    // The speed is measured in miles per hour.
    MILES_PER_HOUR = 2;
  }
  // The code that represents the unit used to measure the wind speed.
  // (-- aip.dev/not-precedent: Field type changed to nested enum per atomic
  //     transition strategy. Wire-compatible; external consumers
  //     rely exclusively on HTTP REST/JSON where enum strings remain identical.
  //     --)
  Unit unit = 2 [(google.api.field_behavior) = OPTIONAL];
}

// Represents a cardinal direction (including ordinal directions).
// (-- This is a generic (shared) definition because it maybe used as a
// standalone field for other endpoints/new features in the future and it
// already contains all the possible cardinal directions. --)
// (-- Next available tag: 17 --)
enum CardinalDirection {
  // The cardinal direction is unspecified.
  CARDINAL_DIRECTION_UNSPECIFIED = 0;

  // The north cardinal direction.
  NORTH = 1;

  // The north-northeast secondary intercardinal direction.
  NORTH_NORTHEAST = 2;

  // The northeast intercardinal direction.
  NORTHEAST = 3;

  // The east-northeast secondary intercardinal direction.
  EAST_NORTHEAST = 4;

  // The east cardinal direction.
  EAST = 5;

  // The east-southeast secondary intercardinal direction.
  EAST_SOUTHEAST = 6;

  // The southeast intercardinal direction.
  SOUTHEAST = 7;

  // The south-southeast secondary intercardinal direction.
  SOUTH_SOUTHEAST = 8;

  // The south cardinal direction.
  SOUTH = 9;

  // The south-southwest secondary intercardinal direction.
  SOUTH_SOUTHWEST = 10;

  // The southwest intercardinal direction.
  SOUTHWEST = 11;

  // The west-southwest secondary intercardinal direction.
  WEST_SOUTHWEST = 12;

  // The west cardinal direction.
  WEST = 13;

  // The west-northwest secondary intercardinal direction.
  WEST_NORTHWEST = 14;

  // The northwest intercardinal direction.
  NORTHWEST = 15;

  // The north-northwest secondary intercardinal direction.
  NORTH_NORTHWEST = 16;
}

// Represents the unit used to measure speed.
// (-- This is a generic (shared) definition because it maybe used as a
// standalone field for other endpoints/new features in the future and it
// already contains all the possible speed units. --)
// (-- Next available tag: 3 --)
enum SpeedUnit {
  // The speed unit is unspecified.
  SPEED_UNIT_UNSPECIFIED = 0;

  // The speed is measured in kilometers per hour.
  KILOMETERS_PER_HOUR = 1;

  // The speed is measured in miles per hour.
  MILES_PER_HOUR = 2;
}
