| syntax = "proto2"; | |
| package validate; | |
| option go_package = "github.com/envoyproxy/protoc-gen-validate/validate"; | |
| option java_package = "io.envoyproxy.pgv.validate"; | |
| import "google/protobuf/descriptor.proto"; | |
| import "google/protobuf/duration.proto"; | |
| import "google/protobuf/timestamp.proto"; | |
| // Validation rules applied at the message level | |
| extend google.protobuf.MessageOptions { | |
| // Disabled nullifies any validation rules for this message, including any | |
| // message fields associated with it that do support validation. | |
| optional bool disabled = 1071; | |
| // Ignore skips generation of validation methods for this message. | |
| optional bool ignored = 1072; | |
| } | |
| // Validation rules applied at the oneof level | |
| extend google.protobuf.OneofOptions { | |
| // Required ensures that exactly one the field options in a oneof is set; | |
| // validation fails if no fields in the oneof are set. | |
| optional bool required = 1071; | |
| } | |
| // Validation rules applied at the field level | |
| extend google.protobuf.FieldOptions { | |
| // Rules specify the validations to be performed on this field. By default, | |
| // no validation is performed against a field. | |
| optional FieldRules rules = 1071; | |
| } | |
| // FieldRules encapsulates the rules for each type of field. Depending on the | |
| // field, the correct set should be used to ensure proper validations. | |
| message FieldRules { | |
| optional MessageRules message = 17; | |
| oneof type { | |
| // Scalar Field Types | |
| FloatRules float = 1; | |
| DoubleRules double = 2; | |
| Int32Rules int32 = 3; | |
| Int64Rules int64 = 4; | |
| UInt32Rules uint32 = 5; | |
| UInt64Rules uint64 = 6; | |
| SInt32Rules sint32 = 7; | |
| SInt64Rules sint64 = 8; | |
| Fixed32Rules fixed32 = 9; | |
| Fixed64Rules fixed64 = 10; | |
| SFixed32Rules sfixed32 = 11; | |
| SFixed64Rules sfixed64 = 12; | |
| BoolRules bool = 13; | |
| StringRules string = 14; | |
| BytesRules bytes = 15; | |
| // Complex Field Types | |
| EnumRules enum = 16; | |
| RepeatedRules repeated = 18; | |
| MapRules map = 19; | |
| // Well-Known Field Types | |
| AnyRules any = 20; | |
| DurationRules duration = 21; | |
| TimestampRules timestamp = 22; | |
| } | |
| } | |
| // FloatRules describes the constraints applied to `float` values | |
| message FloatRules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional float const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional float lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional float lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional float gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional float gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated float in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated float not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // DoubleRules describes the constraints applied to `double` values | |
| message DoubleRules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional double const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional double lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional double lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional double gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional double gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated double in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated double not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // Int32Rules describes the constraints applied to `int32` values | |
| message Int32Rules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional int32 const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional int32 lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional int32 lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional int32 gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional int32 gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated int32 in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated int32 not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // Int64Rules describes the constraints applied to `int64` values | |
| message Int64Rules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional int64 const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional int64 lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional int64 lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional int64 gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional int64 gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated int64 in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated int64 not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // UInt32Rules describes the constraints applied to `uint32` values | |
| message UInt32Rules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional uint32 const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional uint32 lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional uint32 lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional uint32 gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional uint32 gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated uint32 in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated uint32 not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // UInt64Rules describes the constraints applied to `uint64` values | |
| message UInt64Rules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional uint64 const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional uint64 lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional uint64 lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional uint64 gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional uint64 gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated uint64 in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated uint64 not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // SInt32Rules describes the constraints applied to `sint32` values | |
| message SInt32Rules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional sint32 const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional sint32 lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional sint32 lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional sint32 gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional sint32 gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated sint32 in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated sint32 not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // SInt64Rules describes the constraints applied to `sint64` values | |
| message SInt64Rules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional sint64 const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional sint64 lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional sint64 lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional sint64 gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional sint64 gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated sint64 in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated sint64 not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // Fixed32Rules describes the constraints applied to `fixed32` values | |
| message Fixed32Rules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional fixed32 const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional fixed32 lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional fixed32 lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional fixed32 gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional fixed32 gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated fixed32 in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated fixed32 not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // Fixed64Rules describes the constraints applied to `fixed64` values | |
| message Fixed64Rules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional fixed64 const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional fixed64 lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional fixed64 lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional fixed64 gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional fixed64 gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated fixed64 in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated fixed64 not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // SFixed32Rules describes the constraints applied to `sfixed32` values | |
| message SFixed32Rules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional sfixed32 const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional sfixed32 lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional sfixed32 lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional sfixed32 gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional sfixed32 gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated sfixed32 in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated sfixed32 not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // SFixed64Rules describes the constraints applied to `sfixed64` values | |
| message SFixed64Rules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional sfixed64 const = 1; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional sfixed64 lt = 2; | |
| // Lte specifies that this field must be less than or equal to the | |
| // specified value, inclusive | |
| optional sfixed64 lte = 3; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive. If the value of Gt is larger than a specified Lt or Lte, the | |
| // range is reversed. | |
| optional sfixed64 gt = 4; | |
| // Gte specifies that this field must be greater than or equal to the | |
| // specified value, inclusive. If the value of Gte is larger than a | |
| // specified Lt or Lte, the range is reversed. | |
| optional sfixed64 gte = 5; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated sfixed64 in = 6; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated sfixed64 not_in = 7; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 8; | |
| } | |
| // BoolRules describes the constraints applied to `bool` values | |
| message BoolRules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional bool const = 1; | |
| } | |
| // StringRules describe the constraints applied to `string` values | |
| message StringRules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional string const = 1; | |
| // Len specifies that this field must be the specified number of | |
| // characters (Unicode code points). Note that the number of | |
| // characters may differ from the number of bytes in the string. | |
| optional uint64 len = 19; | |
| // MinLen specifies that this field must be the specified number of | |
| // characters (Unicode code points) at a minimum. Note that the number of | |
| // characters may differ from the number of bytes in the string. | |
| optional uint64 min_len = 2; | |
| // MaxLen specifies that this field must be the specified number of | |
| // characters (Unicode code points) at a maximum. Note that the number of | |
| // characters may differ from the number of bytes in the string. | |
| optional uint64 max_len = 3; | |
| // LenBytes specifies that this field must be the specified number of bytes | |
| optional uint64 len_bytes = 20; | |
| // MinBytes specifies that this field must be the specified number of bytes | |
| // at a minimum | |
| optional uint64 min_bytes = 4; | |
| // MaxBytes specifies that this field must be the specified number of bytes | |
| // at a maximum | |
| optional uint64 max_bytes = 5; | |
| // Pattern specifies that this field must match against the specified | |
| // regular expression (RE2 syntax). The included expression should elide | |
| // any delimiters. | |
| optional string pattern = 6; | |
| // Prefix specifies that this field must have the specified substring at | |
| // the beginning of the string. | |
| optional string prefix = 7; | |
| // Suffix specifies that this field must have the specified substring at | |
| // the end of the string. | |
| optional string suffix = 8; | |
| // Contains specifies that this field must have the specified substring | |
| // anywhere in the string. | |
| optional string contains = 9; | |
| // NotContains specifies that this field cannot have the specified substring | |
| // anywhere in the string. | |
| optional string not_contains = 23; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated string in = 10; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated string not_in = 11; | |
| // WellKnown rules provide advanced constraints against common string | |
| // patterns | |
| oneof well_known { | |
| // Email specifies that the field must be a valid email address as | |
| // defined by RFC 5322 | |
| bool email = 12; | |
| // Hostname specifies that the field must be a valid hostname as | |
| // defined by RFC 1034. This constraint does not support | |
| // internationalized domain names (IDNs). | |
| bool hostname = 13; | |
| // Ip specifies that the field must be a valid IP (v4 or v6) address. | |
| // Valid IPv6 addresses should not include surrounding square brackets. | |
| bool ip = 14; | |
| // Ipv4 specifies that the field must be a valid IPv4 address. | |
| bool ipv4 = 15; | |
| // Ipv6 specifies that the field must be a valid IPv6 address. Valid | |
| // IPv6 addresses should not include surrounding square brackets. | |
| bool ipv6 = 16; | |
| // Uri specifies that the field must be a valid, absolute URI as defined | |
| // by RFC 3986 | |
| bool uri = 17; | |
| // UriRef specifies that the field must be a valid URI as defined by RFC | |
| // 3986 and may be relative or absolute. | |
| bool uri_ref = 18; | |
| // Address specifies that the field must be either a valid hostname as | |
| // defined by RFC 1034 (which does not support internationalized domain | |
| // names or IDNs), or it can be a valid IP (v4 or v6). | |
| bool address = 21; | |
| // Uuid specifies that the field must be a valid UUID as defined by | |
| // RFC 4122 | |
| bool uuid = 22; | |
| // WellKnownRegex specifies a common well known pattern defined as a regex. | |
| KnownRegex well_known_regex = 24; | |
| } | |
| // This applies to regexes HTTP_HEADER_NAME and HTTP_HEADER_VALUE to enable | |
| // strict header validation. | |
| // By default, this is true, and HTTP header validations are RFC-compliant. | |
| // Setting to false will enable a looser validations that only disallows | |
| // \r\n\0 characters, which can be used to bypass header matching rules. | |
| optional bool strict = 25 [default = true]; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 26; | |
| } | |
| // WellKnownRegex contain some well-known patterns. | |
| enum KnownRegex { | |
| UNKNOWN = 0; | |
| // HTTP header name as defined by RFC 7230. | |
| HTTP_HEADER_NAME = 1; | |
| // HTTP header value as defined by RFC 7230. | |
| HTTP_HEADER_VALUE = 2; | |
| } | |
| // BytesRules describe the constraints applied to `bytes` values | |
| message BytesRules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional bytes const = 1; | |
| // Len specifies that this field must be the specified number of bytes | |
| optional uint64 len = 13; | |
| // MinLen specifies that this field must be the specified number of bytes | |
| // at a minimum | |
| optional uint64 min_len = 2; | |
| // MaxLen specifies that this field must be the specified number of bytes | |
| // at a maximum | |
| optional uint64 max_len = 3; | |
| // Pattern specifies that this field must match against the specified | |
| // regular expression (RE2 syntax). The included expression should elide | |
| // any delimiters. | |
| optional string pattern = 4; | |
| // Prefix specifies that this field must have the specified bytes at the | |
| // beginning of the string. | |
| optional bytes prefix = 5; | |
| // Suffix specifies that this field must have the specified bytes at the | |
| // end of the string. | |
| optional bytes suffix = 6; | |
| // Contains specifies that this field must have the specified bytes | |
| // anywhere in the string. | |
| optional bytes contains = 7; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated bytes in = 8; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated bytes not_in = 9; | |
| // WellKnown rules provide advanced constraints against common byte | |
| // patterns | |
| oneof well_known { | |
| // Ip specifies that the field must be a valid IP (v4 or v6) address in | |
| // byte format | |
| bool ip = 10; | |
| // Ipv4 specifies that the field must be a valid IPv4 address in byte | |
| // format | |
| bool ipv4 = 11; | |
| // Ipv6 specifies that the field must be a valid IPv6 address in byte | |
| // format | |
| bool ipv6 = 12; | |
| } | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 14; | |
| } | |
| // EnumRules describe the constraints applied to enum values | |
| message EnumRules { | |
| // Const specifies that this field must be exactly the specified value | |
| optional int32 const = 1; | |
| // DefinedOnly specifies that this field must be only one of the defined | |
| // values for this enum, failing on any undefined value. | |
| optional bool defined_only = 2; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated int32 in = 3; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated int32 not_in = 4; | |
| } | |
| // MessageRules describe the constraints applied to embedded message values. | |
| // For message-type fields, validation is performed recursively. | |
| message MessageRules { | |
| // Skip specifies that the validation rules of this field should not be | |
| // evaluated | |
| optional bool skip = 1; | |
| // Required specifies that this field must be set | |
| optional bool required = 2; | |
| } | |
| // RepeatedRules describe the constraints applied to `repeated` values | |
| message RepeatedRules { | |
| // MinItems specifies that this field must have the specified number of | |
| // items at a minimum | |
| optional uint64 min_items = 1; | |
| // MaxItems specifies that this field must have the specified number of | |
| // items at a maximum | |
| optional uint64 max_items = 2; | |
| // Unique specifies that all elements in this field must be unique. This | |
| // constraint is only applicable to scalar and enum types (messages are not | |
| // supported). | |
| optional bool unique = 3; | |
| // Items specifies the constraints to be applied to each item in the field. | |
| // Repeated message fields will still execute validation against each item | |
| // unless skip is specified here. | |
| optional FieldRules items = 4; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 5; | |
| } | |
| // MapRules describe the constraints applied to `map` values | |
| message MapRules { | |
| // MinPairs specifies that this field must have the specified number of | |
| // KVs at a minimum | |
| optional uint64 min_pairs = 1; | |
| // MaxPairs specifies that this field must have the specified number of | |
| // KVs at a maximum | |
| optional uint64 max_pairs = 2; | |
| // NoSparse specifies values in this field cannot be unset. This only | |
| // applies to map's with message value types. | |
| optional bool no_sparse = 3; | |
| // Keys specifies the constraints to be applied to each key in the field. | |
| optional FieldRules keys = 4; | |
| // Values specifies the constraints to be applied to the value of each key | |
| // in the field. Message values will still have their validations evaluated | |
| // unless skip is specified here. | |
| optional FieldRules values = 5; | |
| // IgnoreEmpty specifies that the validation rules of this field should be | |
| // evaluated only if the field is not empty | |
| optional bool ignore_empty = 6; | |
| } | |
| // AnyRules describe constraints applied exclusively to the | |
| // `google.protobuf.Any` well-known type | |
| message AnyRules { | |
| // Required specifies that this field must be set | |
| optional bool required = 1; | |
| // In specifies that this field's `type_url` must be equal to one of the | |
| // specified values. | |
| repeated string in = 2; | |
| // NotIn specifies that this field's `type_url` must not be equal to any of | |
| // the specified values. | |
| repeated string not_in = 3; | |
| } | |
| // DurationRules describe the constraints applied exclusively to the | |
| // `google.protobuf.Duration` well-known type | |
| message DurationRules { | |
| // Required specifies that this field must be set | |
| optional bool required = 1; | |
| // Const specifies that this field must be exactly the specified value | |
| optional google.protobuf.Duration const = 2; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional google.protobuf.Duration lt = 3; | |
| // Lt specifies that this field must be less than the specified value, | |
| // inclusive | |
| optional google.protobuf.Duration lte = 4; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive | |
| optional google.protobuf.Duration gt = 5; | |
| // Gte specifies that this field must be greater than the specified value, | |
| // inclusive | |
| optional google.protobuf.Duration gte = 6; | |
| // In specifies that this field must be equal to one of the specified | |
| // values | |
| repeated google.protobuf.Duration in = 7; | |
| // NotIn specifies that this field cannot be equal to one of the specified | |
| // values | |
| repeated google.protobuf.Duration not_in = 8; | |
| } | |
| // TimestampRules describe the constraints applied exclusively to the | |
| // `google.protobuf.Timestamp` well-known type | |
| message TimestampRules { | |
| // Required specifies that this field must be set | |
| optional bool required = 1; | |
| // Const specifies that this field must be exactly the specified value | |
| optional google.protobuf.Timestamp const = 2; | |
| // Lt specifies that this field must be less than the specified value, | |
| // exclusive | |
| optional google.protobuf.Timestamp lt = 3; | |
| // Lte specifies that this field must be less than the specified value, | |
| // inclusive | |
| optional google.protobuf.Timestamp lte = 4; | |
| // Gt specifies that this field must be greater than the specified value, | |
| // exclusive | |
| optional google.protobuf.Timestamp gt = 5; | |
| // Gte specifies that this field must be greater than the specified value, | |
| // inclusive | |
| optional google.protobuf.Timestamp gte = 6; | |
| // LtNow specifies that this must be less than the current time. LtNow | |
| // can only be used with the Within rule. | |
| optional bool lt_now = 7; | |
| // GtNow specifies that this must be greater than the current time. GtNow | |
| // can only be used with the Within rule. | |
| optional bool gt_now = 8; | |
| // Within specifies that this field must be within this duration of the | |
| // current time. This constraint can be used alone or with the LtNow and | |
| // GtNow rules. | |
| optional google.protobuf.Duration within = 9; | |
| } |