Protorip
30.5 KB · v1.2.0
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 levelextend 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 levelextend 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 levelextend 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` valuesmessage 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` valuesmessage 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` valuesmessage 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` valuesmessage 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` valuesmessage 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` valuesmessage 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` valuesmessage 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` valuesmessage 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` valuesmessage 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` valuesmessage 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` valuesmessage 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` valuesmessage 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` valuesmessage BoolRules {    // Const specifies that this field must be exactly the specified value    optional bool const = 1;}// StringRules describe the constraints applied to `string` valuesmessage 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` valuesmessage 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 valuesmessage 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` valuesmessage 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` valuesmessage 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 typemessage 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 typemessage 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 typemessage 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;}