syntax = "proto3";

package holidays;

option go_package = "./proto;holidays";

service Holidays {
	rpc Countries(CountriesRequest) returns (CountriesResponse) {}
	rpc List(ListRequest) returns (ListResponse) {}
}

// Get the list of countries that are supported by this API
message CountriesRequest {
}

message CountriesResponse {
	repeated Country countries = 1;
}

message Country {
	// The 2 letter country code (as defined in ISO 3166-1 alpha-2)
	string code = 1;
	// The English name of the country
	string name = 2;
}

// List the holiday dates for a given country and year
message ListRequest {
	// The 2 letter country code (as defined in ISO 3166-1 alpha-2)
	string country_code = 1;
	// The year to list holidays for
	int64 year = 2;
}

message ListResponse {
	repeated Holiday holidays = 1;
}

message Holiday {
	// date of the holiday in yyyy-mm-dd format
	string date = 1;
	// the name of the holiday in English
	string name = 2;
	// the local name of the holiday
	string local_name = 3;
	// the country this holiday occurs in
	string country_code = 4;
	// the regions within the country that observe this holiday (if not all of them)
	repeated string regions = 5;
	// the type of holiday Public, Bank, School, Authorities, Optional, Observance
	repeated string types = 6;
}
