123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863 |
- 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
- // at a minimum
- 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 specifes 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 specifes 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
- // contraint is only applicable to scalar and enum types (messages are not
- // supported).
- optional bool unique = 3;
- // Items specifies the contraints 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;
- }
|