Files
services/weather/proto/weather.proto
Dominic Wong 3b7bafbd00 Weather API fixes (#386)
* add wind to forecast

* missing
2022-02-21 16:49:50 +00:00

121 lines
2.8 KiB
Protocol Buffer

syntax = "proto3";
package weather;
option go_package = "./proto;weather";
service Weather {
rpc Now(NowRequest) returns (NowResponse) {}
rpc Forecast(ForecastRequest) returns (ForecastResponse) {}
}
message Forecast {
// date of the forecast
string date = 1;
// max temp in celsius
double max_temp_c = 2;
// max temp in fahrenheit
double max_temp_f = 3;
// minimum temp in celsius
double min_temp_c = 4;
// minimum temp in fahrenheit
double min_temp_f = 5;
// the average temp in celsius
double avg_temp_c = 6;
// the average temp in fahrenheit
double avg_temp_f = 7;
// will it rain
bool will_it_rain = 8;
// chance of rain (percentage)
int32 chance_of_rain = 9;
// forecast condition
string condition = 10;
// the URL of forecast condition icon. Simply prefix with either http or https to use it
string icon_url = 11;
// time of sunrise
string sunrise = 12;
// time of sunset
string sunset = 13;
// max wind speed mph
double max_wind_mph = 14;
// max wind speed kph
double max_wind_kph = 15;
}
// Get the weather forecast for the next 1-10 days
message ForecastRequest {
// location of the forecase
string location = 1;
// number of days. default 1, max 10
int32 days = 2;
}
message ForecastResponse {
// location of the request
string location = 1;
// region related to the location
string region = 2;
// country of the request
string country = 3;
// e.g 37.55
double latitude = 4;
// e.g -77.46
double longitude = 5;
// timezone of the location
string timezone = 6;
// the local time
string local_time = 7;
// forecast for the next number of days
repeated Forecast forecast = 8;
}
// Get the current weather report for a location by postcode, city, zip code, ip address
message NowRequest {
// location to get weather e.g postcode, city
string location = 1;
}
message NowResponse {
// location of the request
string location = 1;
// region related to the location
string region = 2;
// country of the request
string country = 3;
// e.g 37.55
double latitude = 4;
// e.g -77.46
double longitude = 5;
// timezone of the location
string timezone = 6;
// the local time
string local_time = 7;
// temperature in celsius
double temp_c = 8;
// temperature in fahrenheit
double temp_f = 9;
// feels like in celsius
double feels_like_c = 10;
// feels like in fahrenheit
double feels_like_f = 11;
// the humidity percentage
int32 humidity = 12;
// cloud cover percentage
int32 cloud = 13;
// whether its daytime
bool daytime = 14;
// the weather condition
string condition = 15;
// the URL of the related icon. Simply prefix with either http or https to use it
string icon_url = 16;
// wind in mph
double wind_mph = 17;
// wind in kph
double wind_kph = 18;
// wind direction
string wind_direction = 19;
// wind degree
int32 wind_degree = 20;
}