I'll be able to answer this question myself once I get this service running but I was surprised I couldn't find an answer on SO, at least by the keywords I was searching. The problem is if you search anything about protobufs and requiredness / optionality, you get flooded with answers about proto3 making all fields optional. I could not find an answer specifically about validation rules.
Considering the use of validate/validate.proto...
message Batch {
string name = 1 [(validate.rules).string = { min_len:1, max_len:64}];
int64 minimum_spend_micro = 2 [(validate.rules).int64.gte = 1];
google.protobuf.Timestamp start_time = 3 [(validate.rules).timestamp.required = true];
PromoCodeType code_type = 4 [(validate.rules).enum.defined_only = true];
int32 limit = 5 [(validate.rules).int32.gte = 1];
}
...do the example validations above all effectively enforce requiredness? Or does it depend on the type? (e.g. I can imagine a string being defaulted to null which still passes, but integers and enums defaulting to 0 which fails.)