xds_api/generated/
validate.rs

1// This file is @generated by prost-build.
2/// FieldRules encapsulates the rules for each type of field. Depending on the
3/// field, the correct set should be used to ensure proper validations.
4#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct FieldRules {
6    #[prost(message, optional, tag = "17")]
7    pub message: ::core::option::Option<MessageRules>,
8    #[prost(
9        oneof = "field_rules::Type",
10        tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22"
11    )]
12    pub r#type: ::core::option::Option<field_rules::Type>,
13}
14/// Nested message and enum types in `FieldRules`.
15pub mod field_rules {
16    #[derive(Clone, PartialEq, ::prost::Oneof)]
17    pub enum Type {
18        /// Scalar Field Types
19        #[prost(message, tag = "1")]
20        Float(super::FloatRules),
21        #[prost(message, tag = "2")]
22        Double(super::DoubleRules),
23        #[prost(message, tag = "3")]
24        Int32(super::Int32Rules),
25        #[prost(message, tag = "4")]
26        Int64(super::Int64Rules),
27        #[prost(message, tag = "5")]
28        Uint32(super::UInt32Rules),
29        #[prost(message, tag = "6")]
30        Uint64(super::UInt64Rules),
31        #[prost(message, tag = "7")]
32        Sint32(super::SInt32Rules),
33        #[prost(message, tag = "8")]
34        Sint64(super::SInt64Rules),
35        #[prost(message, tag = "9")]
36        Fixed32(super::Fixed32Rules),
37        #[prost(message, tag = "10")]
38        Fixed64(super::Fixed64Rules),
39        #[prost(message, tag = "11")]
40        Sfixed32(super::SFixed32Rules),
41        #[prost(message, tag = "12")]
42        Sfixed64(super::SFixed64Rules),
43        #[prost(message, tag = "13")]
44        Bool(super::BoolRules),
45        #[prost(message, tag = "14")]
46        String(super::StringRules),
47        #[prost(message, tag = "15")]
48        Bytes(super::BytesRules),
49        /// Complex Field Types
50        #[prost(message, tag = "16")]
51        Enum(super::EnumRules),
52        #[prost(message, tag = "18")]
53        Repeated(::prost::alloc::boxed::Box<super::RepeatedRules>),
54        #[prost(message, tag = "19")]
55        Map(::prost::alloc::boxed::Box<super::MapRules>),
56        /// Well-Known Field Types
57        #[prost(message, tag = "20")]
58        Any(super::AnyRules),
59        #[prost(message, tag = "21")]
60        Duration(super::DurationRules),
61        #[prost(message, tag = "22")]
62        Timestamp(super::TimestampRules),
63    }
64}
65impl ::prost::Name for FieldRules {
66    const NAME: &'static str = "FieldRules";
67    const PACKAGE: &'static str = "validate";
68    fn full_name() -> ::prost::alloc::string::String {
69        "validate.FieldRules".into()
70    }
71    fn type_url() -> ::prost::alloc::string::String {
72        "/validate.FieldRules".into()
73    }
74}
75/// FloatRules describes the constraints applied to `float` values
76#[derive(Clone, PartialEq, ::prost::Message)]
77pub struct FloatRules {
78    /// Const specifies that this field must be exactly the specified value
79    #[prost(float, optional, tag = "1")]
80    pub r#const: ::core::option::Option<f32>,
81    /// Lt specifies that this field must be less than the specified value,
82    /// exclusive
83    #[prost(float, optional, tag = "2")]
84    pub lt: ::core::option::Option<f32>,
85    /// Lte specifies that this field must be less than or equal to the
86    /// specified value, inclusive
87    #[prost(float, optional, tag = "3")]
88    pub lte: ::core::option::Option<f32>,
89    /// Gt specifies that this field must be greater than the specified value,
90    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
91    /// range is reversed.
92    #[prost(float, optional, tag = "4")]
93    pub gt: ::core::option::Option<f32>,
94    /// Gte specifies that this field must be greater than or equal to the
95    /// specified value, inclusive. If the value of Gte is larger than a
96    /// specified Lt or Lte, the range is reversed.
97    #[prost(float, optional, tag = "5")]
98    pub gte: ::core::option::Option<f32>,
99    /// In specifies that this field must be equal to one of the specified
100    /// values
101    #[prost(float, repeated, packed = "false", tag = "6")]
102    pub r#in: ::prost::alloc::vec::Vec<f32>,
103    /// NotIn specifies that this field cannot be equal to one of the specified
104    /// values
105    #[prost(float, repeated, packed = "false", tag = "7")]
106    pub not_in: ::prost::alloc::vec::Vec<f32>,
107    /// IgnoreEmpty specifies that the validation rules of this field should be
108    /// evaluated only if the field is not empty
109    #[prost(bool, optional, tag = "8")]
110    pub ignore_empty: ::core::option::Option<bool>,
111}
112impl ::prost::Name for FloatRules {
113    const NAME: &'static str = "FloatRules";
114    const PACKAGE: &'static str = "validate";
115    fn full_name() -> ::prost::alloc::string::String {
116        "validate.FloatRules".into()
117    }
118    fn type_url() -> ::prost::alloc::string::String {
119        "/validate.FloatRules".into()
120    }
121}
122/// DoubleRules describes the constraints applied to `double` values
123#[derive(Clone, PartialEq, ::prost::Message)]
124pub struct DoubleRules {
125    /// Const specifies that this field must be exactly the specified value
126    #[prost(double, optional, tag = "1")]
127    pub r#const: ::core::option::Option<f64>,
128    /// Lt specifies that this field must be less than the specified value,
129    /// exclusive
130    #[prost(double, optional, tag = "2")]
131    pub lt: ::core::option::Option<f64>,
132    /// Lte specifies that this field must be less than or equal to the
133    /// specified value, inclusive
134    #[prost(double, optional, tag = "3")]
135    pub lte: ::core::option::Option<f64>,
136    /// Gt specifies that this field must be greater than the specified value,
137    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
138    /// range is reversed.
139    #[prost(double, optional, tag = "4")]
140    pub gt: ::core::option::Option<f64>,
141    /// Gte specifies that this field must be greater than or equal to the
142    /// specified value, inclusive. If the value of Gte is larger than a
143    /// specified Lt or Lte, the range is reversed.
144    #[prost(double, optional, tag = "5")]
145    pub gte: ::core::option::Option<f64>,
146    /// In specifies that this field must be equal to one of the specified
147    /// values
148    #[prost(double, repeated, packed = "false", tag = "6")]
149    pub r#in: ::prost::alloc::vec::Vec<f64>,
150    /// NotIn specifies that this field cannot be equal to one of the specified
151    /// values
152    #[prost(double, repeated, packed = "false", tag = "7")]
153    pub not_in: ::prost::alloc::vec::Vec<f64>,
154    /// IgnoreEmpty specifies that the validation rules of this field should be
155    /// evaluated only if the field is not empty
156    #[prost(bool, optional, tag = "8")]
157    pub ignore_empty: ::core::option::Option<bool>,
158}
159impl ::prost::Name for DoubleRules {
160    const NAME: &'static str = "DoubleRules";
161    const PACKAGE: &'static str = "validate";
162    fn full_name() -> ::prost::alloc::string::String {
163        "validate.DoubleRules".into()
164    }
165    fn type_url() -> ::prost::alloc::string::String {
166        "/validate.DoubleRules".into()
167    }
168}
169/// Int32Rules describes the constraints applied to `int32` values
170#[derive(Clone, PartialEq, ::prost::Message)]
171pub struct Int32Rules {
172    /// Const specifies that this field must be exactly the specified value
173    #[prost(int32, optional, tag = "1")]
174    pub r#const: ::core::option::Option<i32>,
175    /// Lt specifies that this field must be less than the specified value,
176    /// exclusive
177    #[prost(int32, optional, tag = "2")]
178    pub lt: ::core::option::Option<i32>,
179    /// Lte specifies that this field must be less than or equal to the
180    /// specified value, inclusive
181    #[prost(int32, optional, tag = "3")]
182    pub lte: ::core::option::Option<i32>,
183    /// Gt specifies that this field must be greater than the specified value,
184    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
185    /// range is reversed.
186    #[prost(int32, optional, tag = "4")]
187    pub gt: ::core::option::Option<i32>,
188    /// Gte specifies that this field must be greater than or equal to the
189    /// specified value, inclusive. If the value of Gte is larger than a
190    /// specified Lt or Lte, the range is reversed.
191    #[prost(int32, optional, tag = "5")]
192    pub gte: ::core::option::Option<i32>,
193    /// In specifies that this field must be equal to one of the specified
194    /// values
195    #[prost(int32, repeated, packed = "false", tag = "6")]
196    pub r#in: ::prost::alloc::vec::Vec<i32>,
197    /// NotIn specifies that this field cannot be equal to one of the specified
198    /// values
199    #[prost(int32, repeated, packed = "false", tag = "7")]
200    pub not_in: ::prost::alloc::vec::Vec<i32>,
201    /// IgnoreEmpty specifies that the validation rules of this field should be
202    /// evaluated only if the field is not empty
203    #[prost(bool, optional, tag = "8")]
204    pub ignore_empty: ::core::option::Option<bool>,
205}
206impl ::prost::Name for Int32Rules {
207    const NAME: &'static str = "Int32Rules";
208    const PACKAGE: &'static str = "validate";
209    fn full_name() -> ::prost::alloc::string::String {
210        "validate.Int32Rules".into()
211    }
212    fn type_url() -> ::prost::alloc::string::String {
213        "/validate.Int32Rules".into()
214    }
215}
216/// Int64Rules describes the constraints applied to `int64` values
217#[derive(Clone, PartialEq, ::prost::Message)]
218pub struct Int64Rules {
219    /// Const specifies that this field must be exactly the specified value
220    #[prost(int64, optional, tag = "1")]
221    pub r#const: ::core::option::Option<i64>,
222    /// Lt specifies that this field must be less than the specified value,
223    /// exclusive
224    #[prost(int64, optional, tag = "2")]
225    pub lt: ::core::option::Option<i64>,
226    /// Lte specifies that this field must be less than or equal to the
227    /// specified value, inclusive
228    #[prost(int64, optional, tag = "3")]
229    pub lte: ::core::option::Option<i64>,
230    /// Gt specifies that this field must be greater than the specified value,
231    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
232    /// range is reversed.
233    #[prost(int64, optional, tag = "4")]
234    pub gt: ::core::option::Option<i64>,
235    /// Gte specifies that this field must be greater than or equal to the
236    /// specified value, inclusive. If the value of Gte is larger than a
237    /// specified Lt or Lte, the range is reversed.
238    #[prost(int64, optional, tag = "5")]
239    pub gte: ::core::option::Option<i64>,
240    /// In specifies that this field must be equal to one of the specified
241    /// values
242    #[prost(int64, repeated, packed = "false", tag = "6")]
243    pub r#in: ::prost::alloc::vec::Vec<i64>,
244    /// NotIn specifies that this field cannot be equal to one of the specified
245    /// values
246    #[prost(int64, repeated, packed = "false", tag = "7")]
247    pub not_in: ::prost::alloc::vec::Vec<i64>,
248    /// IgnoreEmpty specifies that the validation rules of this field should be
249    /// evaluated only if the field is not empty
250    #[prost(bool, optional, tag = "8")]
251    pub ignore_empty: ::core::option::Option<bool>,
252}
253impl ::prost::Name for Int64Rules {
254    const NAME: &'static str = "Int64Rules";
255    const PACKAGE: &'static str = "validate";
256    fn full_name() -> ::prost::alloc::string::String {
257        "validate.Int64Rules".into()
258    }
259    fn type_url() -> ::prost::alloc::string::String {
260        "/validate.Int64Rules".into()
261    }
262}
263/// UInt32Rules describes the constraints applied to `uint32` values
264#[derive(Clone, PartialEq, ::prost::Message)]
265pub struct UInt32Rules {
266    /// Const specifies that this field must be exactly the specified value
267    #[prost(uint32, optional, tag = "1")]
268    pub r#const: ::core::option::Option<u32>,
269    /// Lt specifies that this field must be less than the specified value,
270    /// exclusive
271    #[prost(uint32, optional, tag = "2")]
272    pub lt: ::core::option::Option<u32>,
273    /// Lte specifies that this field must be less than or equal to the
274    /// specified value, inclusive
275    #[prost(uint32, optional, tag = "3")]
276    pub lte: ::core::option::Option<u32>,
277    /// Gt specifies that this field must be greater than the specified value,
278    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
279    /// range is reversed.
280    #[prost(uint32, optional, tag = "4")]
281    pub gt: ::core::option::Option<u32>,
282    /// Gte specifies that this field must be greater than or equal to the
283    /// specified value, inclusive. If the value of Gte is larger than a
284    /// specified Lt or Lte, the range is reversed.
285    #[prost(uint32, optional, tag = "5")]
286    pub gte: ::core::option::Option<u32>,
287    /// In specifies that this field must be equal to one of the specified
288    /// values
289    #[prost(uint32, repeated, packed = "false", tag = "6")]
290    pub r#in: ::prost::alloc::vec::Vec<u32>,
291    /// NotIn specifies that this field cannot be equal to one of the specified
292    /// values
293    #[prost(uint32, repeated, packed = "false", tag = "7")]
294    pub not_in: ::prost::alloc::vec::Vec<u32>,
295    /// IgnoreEmpty specifies that the validation rules of this field should be
296    /// evaluated only if the field is not empty
297    #[prost(bool, optional, tag = "8")]
298    pub ignore_empty: ::core::option::Option<bool>,
299}
300impl ::prost::Name for UInt32Rules {
301    const NAME: &'static str = "UInt32Rules";
302    const PACKAGE: &'static str = "validate";
303    fn full_name() -> ::prost::alloc::string::String {
304        "validate.UInt32Rules".into()
305    }
306    fn type_url() -> ::prost::alloc::string::String {
307        "/validate.UInt32Rules".into()
308    }
309}
310/// UInt64Rules describes the constraints applied to `uint64` values
311#[derive(Clone, PartialEq, ::prost::Message)]
312pub struct UInt64Rules {
313    /// Const specifies that this field must be exactly the specified value
314    #[prost(uint64, optional, tag = "1")]
315    pub r#const: ::core::option::Option<u64>,
316    /// Lt specifies that this field must be less than the specified value,
317    /// exclusive
318    #[prost(uint64, optional, tag = "2")]
319    pub lt: ::core::option::Option<u64>,
320    /// Lte specifies that this field must be less than or equal to the
321    /// specified value, inclusive
322    #[prost(uint64, optional, tag = "3")]
323    pub lte: ::core::option::Option<u64>,
324    /// Gt specifies that this field must be greater than the specified value,
325    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
326    /// range is reversed.
327    #[prost(uint64, optional, tag = "4")]
328    pub gt: ::core::option::Option<u64>,
329    /// Gte specifies that this field must be greater than or equal to the
330    /// specified value, inclusive. If the value of Gte is larger than a
331    /// specified Lt or Lte, the range is reversed.
332    #[prost(uint64, optional, tag = "5")]
333    pub gte: ::core::option::Option<u64>,
334    /// In specifies that this field must be equal to one of the specified
335    /// values
336    #[prost(uint64, repeated, packed = "false", tag = "6")]
337    pub r#in: ::prost::alloc::vec::Vec<u64>,
338    /// NotIn specifies that this field cannot be equal to one of the specified
339    /// values
340    #[prost(uint64, repeated, packed = "false", tag = "7")]
341    pub not_in: ::prost::alloc::vec::Vec<u64>,
342    /// IgnoreEmpty specifies that the validation rules of this field should be
343    /// evaluated only if the field is not empty
344    #[prost(bool, optional, tag = "8")]
345    pub ignore_empty: ::core::option::Option<bool>,
346}
347impl ::prost::Name for UInt64Rules {
348    const NAME: &'static str = "UInt64Rules";
349    const PACKAGE: &'static str = "validate";
350    fn full_name() -> ::prost::alloc::string::String {
351        "validate.UInt64Rules".into()
352    }
353    fn type_url() -> ::prost::alloc::string::String {
354        "/validate.UInt64Rules".into()
355    }
356}
357/// SInt32Rules describes the constraints applied to `sint32` values
358#[derive(Clone, PartialEq, ::prost::Message)]
359pub struct SInt32Rules {
360    /// Const specifies that this field must be exactly the specified value
361    #[prost(sint32, optional, tag = "1")]
362    pub r#const: ::core::option::Option<i32>,
363    /// Lt specifies that this field must be less than the specified value,
364    /// exclusive
365    #[prost(sint32, optional, tag = "2")]
366    pub lt: ::core::option::Option<i32>,
367    /// Lte specifies that this field must be less than or equal to the
368    /// specified value, inclusive
369    #[prost(sint32, optional, tag = "3")]
370    pub lte: ::core::option::Option<i32>,
371    /// Gt specifies that this field must be greater than the specified value,
372    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
373    /// range is reversed.
374    #[prost(sint32, optional, tag = "4")]
375    pub gt: ::core::option::Option<i32>,
376    /// Gte specifies that this field must be greater than or equal to the
377    /// specified value, inclusive. If the value of Gte is larger than a
378    /// specified Lt or Lte, the range is reversed.
379    #[prost(sint32, optional, tag = "5")]
380    pub gte: ::core::option::Option<i32>,
381    /// In specifies that this field must be equal to one of the specified
382    /// values
383    #[prost(sint32, repeated, packed = "false", tag = "6")]
384    pub r#in: ::prost::alloc::vec::Vec<i32>,
385    /// NotIn specifies that this field cannot be equal to one of the specified
386    /// values
387    #[prost(sint32, repeated, packed = "false", tag = "7")]
388    pub not_in: ::prost::alloc::vec::Vec<i32>,
389    /// IgnoreEmpty specifies that the validation rules of this field should be
390    /// evaluated only if the field is not empty
391    #[prost(bool, optional, tag = "8")]
392    pub ignore_empty: ::core::option::Option<bool>,
393}
394impl ::prost::Name for SInt32Rules {
395    const NAME: &'static str = "SInt32Rules";
396    const PACKAGE: &'static str = "validate";
397    fn full_name() -> ::prost::alloc::string::String {
398        "validate.SInt32Rules".into()
399    }
400    fn type_url() -> ::prost::alloc::string::String {
401        "/validate.SInt32Rules".into()
402    }
403}
404/// SInt64Rules describes the constraints applied to `sint64` values
405#[derive(Clone, PartialEq, ::prost::Message)]
406pub struct SInt64Rules {
407    /// Const specifies that this field must be exactly the specified value
408    #[prost(sint64, optional, tag = "1")]
409    pub r#const: ::core::option::Option<i64>,
410    /// Lt specifies that this field must be less than the specified value,
411    /// exclusive
412    #[prost(sint64, optional, tag = "2")]
413    pub lt: ::core::option::Option<i64>,
414    /// Lte specifies that this field must be less than or equal to the
415    /// specified value, inclusive
416    #[prost(sint64, optional, tag = "3")]
417    pub lte: ::core::option::Option<i64>,
418    /// Gt specifies that this field must be greater than the specified value,
419    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
420    /// range is reversed.
421    #[prost(sint64, optional, tag = "4")]
422    pub gt: ::core::option::Option<i64>,
423    /// Gte specifies that this field must be greater than or equal to the
424    /// specified value, inclusive. If the value of Gte is larger than a
425    /// specified Lt or Lte, the range is reversed.
426    #[prost(sint64, optional, tag = "5")]
427    pub gte: ::core::option::Option<i64>,
428    /// In specifies that this field must be equal to one of the specified
429    /// values
430    #[prost(sint64, repeated, packed = "false", tag = "6")]
431    pub r#in: ::prost::alloc::vec::Vec<i64>,
432    /// NotIn specifies that this field cannot be equal to one of the specified
433    /// values
434    #[prost(sint64, repeated, packed = "false", tag = "7")]
435    pub not_in: ::prost::alloc::vec::Vec<i64>,
436    /// IgnoreEmpty specifies that the validation rules of this field should be
437    /// evaluated only if the field is not empty
438    #[prost(bool, optional, tag = "8")]
439    pub ignore_empty: ::core::option::Option<bool>,
440}
441impl ::prost::Name for SInt64Rules {
442    const NAME: &'static str = "SInt64Rules";
443    const PACKAGE: &'static str = "validate";
444    fn full_name() -> ::prost::alloc::string::String {
445        "validate.SInt64Rules".into()
446    }
447    fn type_url() -> ::prost::alloc::string::String {
448        "/validate.SInt64Rules".into()
449    }
450}
451/// Fixed32Rules describes the constraints applied to `fixed32` values
452#[derive(Clone, PartialEq, ::prost::Message)]
453pub struct Fixed32Rules {
454    /// Const specifies that this field must be exactly the specified value
455    #[prost(fixed32, optional, tag = "1")]
456    pub r#const: ::core::option::Option<u32>,
457    /// Lt specifies that this field must be less than the specified value,
458    /// exclusive
459    #[prost(fixed32, optional, tag = "2")]
460    pub lt: ::core::option::Option<u32>,
461    /// Lte specifies that this field must be less than or equal to the
462    /// specified value, inclusive
463    #[prost(fixed32, optional, tag = "3")]
464    pub lte: ::core::option::Option<u32>,
465    /// Gt specifies that this field must be greater than the specified value,
466    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
467    /// range is reversed.
468    #[prost(fixed32, optional, tag = "4")]
469    pub gt: ::core::option::Option<u32>,
470    /// Gte specifies that this field must be greater than or equal to the
471    /// specified value, inclusive. If the value of Gte is larger than a
472    /// specified Lt or Lte, the range is reversed.
473    #[prost(fixed32, optional, tag = "5")]
474    pub gte: ::core::option::Option<u32>,
475    /// In specifies that this field must be equal to one of the specified
476    /// values
477    #[prost(fixed32, repeated, packed = "false", tag = "6")]
478    pub r#in: ::prost::alloc::vec::Vec<u32>,
479    /// NotIn specifies that this field cannot be equal to one of the specified
480    /// values
481    #[prost(fixed32, repeated, packed = "false", tag = "7")]
482    pub not_in: ::prost::alloc::vec::Vec<u32>,
483    /// IgnoreEmpty specifies that the validation rules of this field should be
484    /// evaluated only if the field is not empty
485    #[prost(bool, optional, tag = "8")]
486    pub ignore_empty: ::core::option::Option<bool>,
487}
488impl ::prost::Name for Fixed32Rules {
489    const NAME: &'static str = "Fixed32Rules";
490    const PACKAGE: &'static str = "validate";
491    fn full_name() -> ::prost::alloc::string::String {
492        "validate.Fixed32Rules".into()
493    }
494    fn type_url() -> ::prost::alloc::string::String {
495        "/validate.Fixed32Rules".into()
496    }
497}
498/// Fixed64Rules describes the constraints applied to `fixed64` values
499#[derive(Clone, PartialEq, ::prost::Message)]
500pub struct Fixed64Rules {
501    /// Const specifies that this field must be exactly the specified value
502    #[prost(fixed64, optional, tag = "1")]
503    pub r#const: ::core::option::Option<u64>,
504    /// Lt specifies that this field must be less than the specified value,
505    /// exclusive
506    #[prost(fixed64, optional, tag = "2")]
507    pub lt: ::core::option::Option<u64>,
508    /// Lte specifies that this field must be less than or equal to the
509    /// specified value, inclusive
510    #[prost(fixed64, optional, tag = "3")]
511    pub lte: ::core::option::Option<u64>,
512    /// Gt specifies that this field must be greater than the specified value,
513    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
514    /// range is reversed.
515    #[prost(fixed64, optional, tag = "4")]
516    pub gt: ::core::option::Option<u64>,
517    /// Gte specifies that this field must be greater than or equal to the
518    /// specified value, inclusive. If the value of Gte is larger than a
519    /// specified Lt or Lte, the range is reversed.
520    #[prost(fixed64, optional, tag = "5")]
521    pub gte: ::core::option::Option<u64>,
522    /// In specifies that this field must be equal to one of the specified
523    /// values
524    #[prost(fixed64, repeated, packed = "false", tag = "6")]
525    pub r#in: ::prost::alloc::vec::Vec<u64>,
526    /// NotIn specifies that this field cannot be equal to one of the specified
527    /// values
528    #[prost(fixed64, repeated, packed = "false", tag = "7")]
529    pub not_in: ::prost::alloc::vec::Vec<u64>,
530    /// IgnoreEmpty specifies that the validation rules of this field should be
531    /// evaluated only if the field is not empty
532    #[prost(bool, optional, tag = "8")]
533    pub ignore_empty: ::core::option::Option<bool>,
534}
535impl ::prost::Name for Fixed64Rules {
536    const NAME: &'static str = "Fixed64Rules";
537    const PACKAGE: &'static str = "validate";
538    fn full_name() -> ::prost::alloc::string::String {
539        "validate.Fixed64Rules".into()
540    }
541    fn type_url() -> ::prost::alloc::string::String {
542        "/validate.Fixed64Rules".into()
543    }
544}
545/// SFixed32Rules describes the constraints applied to `sfixed32` values
546#[derive(Clone, PartialEq, ::prost::Message)]
547pub struct SFixed32Rules {
548    /// Const specifies that this field must be exactly the specified value
549    #[prost(sfixed32, optional, tag = "1")]
550    pub r#const: ::core::option::Option<i32>,
551    /// Lt specifies that this field must be less than the specified value,
552    /// exclusive
553    #[prost(sfixed32, optional, tag = "2")]
554    pub lt: ::core::option::Option<i32>,
555    /// Lte specifies that this field must be less than or equal to the
556    /// specified value, inclusive
557    #[prost(sfixed32, optional, tag = "3")]
558    pub lte: ::core::option::Option<i32>,
559    /// Gt specifies that this field must be greater than the specified value,
560    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
561    /// range is reversed.
562    #[prost(sfixed32, optional, tag = "4")]
563    pub gt: ::core::option::Option<i32>,
564    /// Gte specifies that this field must be greater than or equal to the
565    /// specified value, inclusive. If the value of Gte is larger than a
566    /// specified Lt or Lte, the range is reversed.
567    #[prost(sfixed32, optional, tag = "5")]
568    pub gte: ::core::option::Option<i32>,
569    /// In specifies that this field must be equal to one of the specified
570    /// values
571    #[prost(sfixed32, repeated, packed = "false", tag = "6")]
572    pub r#in: ::prost::alloc::vec::Vec<i32>,
573    /// NotIn specifies that this field cannot be equal to one of the specified
574    /// values
575    #[prost(sfixed32, repeated, packed = "false", tag = "7")]
576    pub not_in: ::prost::alloc::vec::Vec<i32>,
577    /// IgnoreEmpty specifies that the validation rules of this field should be
578    /// evaluated only if the field is not empty
579    #[prost(bool, optional, tag = "8")]
580    pub ignore_empty: ::core::option::Option<bool>,
581}
582impl ::prost::Name for SFixed32Rules {
583    const NAME: &'static str = "SFixed32Rules";
584    const PACKAGE: &'static str = "validate";
585    fn full_name() -> ::prost::alloc::string::String {
586        "validate.SFixed32Rules".into()
587    }
588    fn type_url() -> ::prost::alloc::string::String {
589        "/validate.SFixed32Rules".into()
590    }
591}
592/// SFixed64Rules describes the constraints applied to `sfixed64` values
593#[derive(Clone, PartialEq, ::prost::Message)]
594pub struct SFixed64Rules {
595    /// Const specifies that this field must be exactly the specified value
596    #[prost(sfixed64, optional, tag = "1")]
597    pub r#const: ::core::option::Option<i64>,
598    /// Lt specifies that this field must be less than the specified value,
599    /// exclusive
600    #[prost(sfixed64, optional, tag = "2")]
601    pub lt: ::core::option::Option<i64>,
602    /// Lte specifies that this field must be less than or equal to the
603    /// specified value, inclusive
604    #[prost(sfixed64, optional, tag = "3")]
605    pub lte: ::core::option::Option<i64>,
606    /// Gt specifies that this field must be greater than the specified value,
607    /// exclusive. If the value of Gt is larger than a specified Lt or Lte, the
608    /// range is reversed.
609    #[prost(sfixed64, optional, tag = "4")]
610    pub gt: ::core::option::Option<i64>,
611    /// Gte specifies that this field must be greater than or equal to the
612    /// specified value, inclusive. If the value of Gte is larger than a
613    /// specified Lt or Lte, the range is reversed.
614    #[prost(sfixed64, optional, tag = "5")]
615    pub gte: ::core::option::Option<i64>,
616    /// In specifies that this field must be equal to one of the specified
617    /// values
618    #[prost(sfixed64, repeated, packed = "false", tag = "6")]
619    pub r#in: ::prost::alloc::vec::Vec<i64>,
620    /// NotIn specifies that this field cannot be equal to one of the specified
621    /// values
622    #[prost(sfixed64, repeated, packed = "false", tag = "7")]
623    pub not_in: ::prost::alloc::vec::Vec<i64>,
624    /// IgnoreEmpty specifies that the validation rules of this field should be
625    /// evaluated only if the field is not empty
626    #[prost(bool, optional, tag = "8")]
627    pub ignore_empty: ::core::option::Option<bool>,
628}
629impl ::prost::Name for SFixed64Rules {
630    const NAME: &'static str = "SFixed64Rules";
631    const PACKAGE: &'static str = "validate";
632    fn full_name() -> ::prost::alloc::string::String {
633        "validate.SFixed64Rules".into()
634    }
635    fn type_url() -> ::prost::alloc::string::String {
636        "/validate.SFixed64Rules".into()
637    }
638}
639/// BoolRules describes the constraints applied to `bool` values
640#[derive(Clone, Copy, PartialEq, ::prost::Message)]
641pub struct BoolRules {
642    /// Const specifies that this field must be exactly the specified value
643    #[prost(bool, optional, tag = "1")]
644    pub r#const: ::core::option::Option<bool>,
645}
646impl ::prost::Name for BoolRules {
647    const NAME: &'static str = "BoolRules";
648    const PACKAGE: &'static str = "validate";
649    fn full_name() -> ::prost::alloc::string::String {
650        "validate.BoolRules".into()
651    }
652    fn type_url() -> ::prost::alloc::string::String {
653        "/validate.BoolRules".into()
654    }
655}
656/// StringRules describe the constraints applied to `string` values
657#[derive(Clone, PartialEq, ::prost::Message)]
658pub struct StringRules {
659    /// Const specifies that this field must be exactly the specified value
660    #[prost(string, optional, tag = "1")]
661    pub r#const: ::core::option::Option<::prost::alloc::string::String>,
662    /// Len specifies that this field must be the specified number of
663    /// characters (Unicode code points). Note that the number of
664    /// characters may differ from the number of bytes in the string.
665    #[prost(uint64, optional, tag = "19")]
666    pub len: ::core::option::Option<u64>,
667    /// MinLen specifies that this field must be the specified number of
668    /// characters (Unicode code points) at a minimum. Note that the number of
669    /// characters may differ from the number of bytes in the string.
670    #[prost(uint64, optional, tag = "2")]
671    pub min_len: ::core::option::Option<u64>,
672    /// MaxLen specifies that this field must be the specified number of
673    /// characters (Unicode code points) at a maximum. Note that the number of
674    /// characters may differ from the number of bytes in the string.
675    #[prost(uint64, optional, tag = "3")]
676    pub max_len: ::core::option::Option<u64>,
677    /// LenBytes specifies that this field must be the specified number of bytes
678    #[prost(uint64, optional, tag = "20")]
679    pub len_bytes: ::core::option::Option<u64>,
680    /// MinBytes specifies that this field must be the specified number of bytes
681    /// at a minimum
682    #[prost(uint64, optional, tag = "4")]
683    pub min_bytes: ::core::option::Option<u64>,
684    /// MaxBytes specifies that this field must be the specified number of bytes
685    /// at a maximum
686    #[prost(uint64, optional, tag = "5")]
687    pub max_bytes: ::core::option::Option<u64>,
688    /// Pattern specifies that this field must match against the specified
689    /// regular expression (RE2 syntax). The included expression should elide
690    /// any delimiters.
691    #[prost(string, optional, tag = "6")]
692    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
693    /// Prefix specifies that this field must have the specified substring at
694    /// the beginning of the string.
695    #[prost(string, optional, tag = "7")]
696    pub prefix: ::core::option::Option<::prost::alloc::string::String>,
697    /// Suffix specifies that this field must have the specified substring at
698    /// the end of the string.
699    #[prost(string, optional, tag = "8")]
700    pub suffix: ::core::option::Option<::prost::alloc::string::String>,
701    /// Contains specifies that this field must have the specified substring
702    /// anywhere in the string.
703    #[prost(string, optional, tag = "9")]
704    pub contains: ::core::option::Option<::prost::alloc::string::String>,
705    /// NotContains specifies that this field cannot have the specified substring
706    /// anywhere in the string.
707    #[prost(string, optional, tag = "23")]
708    pub not_contains: ::core::option::Option<::prost::alloc::string::String>,
709    /// In specifies that this field must be equal to one of the specified
710    /// values
711    #[prost(string, repeated, tag = "10")]
712    pub r#in: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
713    /// NotIn specifies that this field cannot be equal to one of the specified
714    /// values
715    #[prost(string, repeated, tag = "11")]
716    pub not_in: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
717    /// This applies to regexes HTTP_HEADER_NAME and HTTP_HEADER_VALUE to enable
718    /// strict header validation.
719    /// By default, this is true, and HTTP header validations are RFC-compliant.
720    /// Setting to false will enable a looser validations that only disallows
721    /// \r\n\0 characters, which can be used to bypass header matching rules.
722    #[prost(bool, optional, tag = "25", default = "true")]
723    pub strict: ::core::option::Option<bool>,
724    /// IgnoreEmpty specifies that the validation rules of this field should be
725    /// evaluated only if the field is not empty
726    #[prost(bool, optional, tag = "26")]
727    pub ignore_empty: ::core::option::Option<bool>,
728    /// WellKnown rules provide advanced constraints against common string
729    /// patterns
730    #[prost(
731        oneof = "string_rules::WellKnown",
732        tags = "12, 13, 14, 15, 16, 17, 18, 21, 22, 24"
733    )]
734    pub well_known: ::core::option::Option<string_rules::WellKnown>,
735}
736/// Nested message and enum types in `StringRules`.
737pub mod string_rules {
738    /// WellKnown rules provide advanced constraints against common string
739    /// patterns
740    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
741    pub enum WellKnown {
742        /// Email specifies that the field must be a valid email address as
743        /// defined by RFC 5322
744        #[prost(bool, tag = "12")]
745        Email(bool),
746        /// Hostname specifies that the field must be a valid hostname as
747        /// defined by RFC 1034. This constraint does not support
748        /// internationalized domain names (IDNs).
749        #[prost(bool, tag = "13")]
750        Hostname(bool),
751        /// Ip specifies that the field must be a valid IP (v4 or v6) address.
752        /// Valid IPv6 addresses should not include surrounding square brackets.
753        #[prost(bool, tag = "14")]
754        Ip(bool),
755        /// Ipv4 specifies that the field must be a valid IPv4 address.
756        #[prost(bool, tag = "15")]
757        Ipv4(bool),
758        /// Ipv6 specifies that the field must be a valid IPv6 address. Valid
759        /// IPv6 addresses should not include surrounding square brackets.
760        #[prost(bool, tag = "16")]
761        Ipv6(bool),
762        /// Uri specifies that the field must be a valid, absolute URI as defined
763        /// by RFC 3986
764        #[prost(bool, tag = "17")]
765        Uri(bool),
766        /// UriRef specifies that the field must be a valid URI as defined by RFC
767        /// 3986 and may be relative or absolute.
768        #[prost(bool, tag = "18")]
769        UriRef(bool),
770        /// Address specifies that the field must be either a valid hostname as
771        /// defined by RFC 1034 (which does not support internationalized domain
772        /// names or IDNs), or it can be a valid IP (v4 or v6).
773        #[prost(bool, tag = "21")]
774        Address(bool),
775        /// Uuid specifies that the field must be a valid UUID as defined by
776        /// RFC 4122
777        #[prost(bool, tag = "22")]
778        Uuid(bool),
779        /// WellKnownRegex specifies a common well known pattern defined as a regex.
780        #[prost(enumeration = "super::KnownRegex", tag = "24")]
781        WellKnownRegex(i32),
782    }
783}
784impl ::prost::Name for StringRules {
785    const NAME: &'static str = "StringRules";
786    const PACKAGE: &'static str = "validate";
787    fn full_name() -> ::prost::alloc::string::String {
788        "validate.StringRules".into()
789    }
790    fn type_url() -> ::prost::alloc::string::String {
791        "/validate.StringRules".into()
792    }
793}
794/// BytesRules describe the constraints applied to `bytes` values
795#[derive(Clone, PartialEq, ::prost::Message)]
796pub struct BytesRules {
797    /// Const specifies that this field must be exactly the specified value
798    #[prost(bytes = "vec", optional, tag = "1")]
799    pub r#const: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
800    /// Len specifies that this field must be the specified number of bytes
801    #[prost(uint64, optional, tag = "13")]
802    pub len: ::core::option::Option<u64>,
803    /// MinLen specifies that this field must be the specified number of bytes
804    /// at a minimum
805    #[prost(uint64, optional, tag = "2")]
806    pub min_len: ::core::option::Option<u64>,
807    /// MaxLen specifies that this field must be the specified number of bytes
808    /// at a maximum
809    #[prost(uint64, optional, tag = "3")]
810    pub max_len: ::core::option::Option<u64>,
811    /// Pattern specifies that this field must match against the specified
812    /// regular expression (RE2 syntax). The included expression should elide
813    /// any delimiters.
814    #[prost(string, optional, tag = "4")]
815    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
816    /// Prefix specifies that this field must have the specified bytes at the
817    /// beginning of the string.
818    #[prost(bytes = "vec", optional, tag = "5")]
819    pub prefix: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
820    /// Suffix specifies that this field must have the specified bytes at the
821    /// end of the string.
822    #[prost(bytes = "vec", optional, tag = "6")]
823    pub suffix: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
824    /// Contains specifies that this field must have the specified bytes
825    /// anywhere in the string.
826    #[prost(bytes = "vec", optional, tag = "7")]
827    pub contains: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
828    /// In specifies that this field must be equal to one of the specified
829    /// values
830    #[prost(bytes = "vec", repeated, tag = "8")]
831    pub r#in: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
832    /// NotIn specifies that this field cannot be equal to one of the specified
833    /// values
834    #[prost(bytes = "vec", repeated, tag = "9")]
835    pub not_in: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
836    /// IgnoreEmpty specifies that the validation rules of this field should be
837    /// evaluated only if the field is not empty
838    #[prost(bool, optional, tag = "14")]
839    pub ignore_empty: ::core::option::Option<bool>,
840    /// WellKnown rules provide advanced constraints against common byte
841    /// patterns
842    #[prost(oneof = "bytes_rules::WellKnown", tags = "10, 11, 12")]
843    pub well_known: ::core::option::Option<bytes_rules::WellKnown>,
844}
845/// Nested message and enum types in `BytesRules`.
846pub mod bytes_rules {
847    /// WellKnown rules provide advanced constraints against common byte
848    /// patterns
849    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
850    pub enum WellKnown {
851        /// Ip specifies that the field must be a valid IP (v4 or v6) address in
852        /// byte format
853        #[prost(bool, tag = "10")]
854        Ip(bool),
855        /// Ipv4 specifies that the field must be a valid IPv4 address in byte
856        /// format
857        #[prost(bool, tag = "11")]
858        Ipv4(bool),
859        /// Ipv6 specifies that the field must be a valid IPv6 address in byte
860        /// format
861        #[prost(bool, tag = "12")]
862        Ipv6(bool),
863    }
864}
865impl ::prost::Name for BytesRules {
866    const NAME: &'static str = "BytesRules";
867    const PACKAGE: &'static str = "validate";
868    fn full_name() -> ::prost::alloc::string::String {
869        "validate.BytesRules".into()
870    }
871    fn type_url() -> ::prost::alloc::string::String {
872        "/validate.BytesRules".into()
873    }
874}
875/// EnumRules describe the constraints applied to enum values
876#[derive(Clone, PartialEq, ::prost::Message)]
877pub struct EnumRules {
878    /// Const specifies that this field must be exactly the specified value
879    #[prost(int32, optional, tag = "1")]
880    pub r#const: ::core::option::Option<i32>,
881    /// DefinedOnly specifies that this field must be only one of the defined
882    /// values for this enum, failing on any undefined value.
883    #[prost(bool, optional, tag = "2")]
884    pub defined_only: ::core::option::Option<bool>,
885    /// In specifies that this field must be equal to one of the specified
886    /// values
887    #[prost(int32, repeated, packed = "false", tag = "3")]
888    pub r#in: ::prost::alloc::vec::Vec<i32>,
889    /// NotIn specifies that this field cannot be equal to one of the specified
890    /// values
891    #[prost(int32, repeated, packed = "false", tag = "4")]
892    pub not_in: ::prost::alloc::vec::Vec<i32>,
893}
894impl ::prost::Name for EnumRules {
895    const NAME: &'static str = "EnumRules";
896    const PACKAGE: &'static str = "validate";
897    fn full_name() -> ::prost::alloc::string::String {
898        "validate.EnumRules".into()
899    }
900    fn type_url() -> ::prost::alloc::string::String {
901        "/validate.EnumRules".into()
902    }
903}
904/// MessageRules describe the constraints applied to embedded message values.
905/// For message-type fields, validation is performed recursively.
906#[derive(Clone, Copy, PartialEq, ::prost::Message)]
907pub struct MessageRules {
908    /// Skip specifies that the validation rules of this field should not be
909    /// evaluated
910    #[prost(bool, optional, tag = "1")]
911    pub skip: ::core::option::Option<bool>,
912    /// Required specifies that this field must be set
913    #[prost(bool, optional, tag = "2")]
914    pub required: ::core::option::Option<bool>,
915}
916impl ::prost::Name for MessageRules {
917    const NAME: &'static str = "MessageRules";
918    const PACKAGE: &'static str = "validate";
919    fn full_name() -> ::prost::alloc::string::String {
920        "validate.MessageRules".into()
921    }
922    fn type_url() -> ::prost::alloc::string::String {
923        "/validate.MessageRules".into()
924    }
925}
926/// RepeatedRules describe the constraints applied to `repeated` values
927#[derive(Clone, PartialEq, ::prost::Message)]
928pub struct RepeatedRules {
929    /// MinItems specifies that this field must have the specified number of
930    /// items at a minimum
931    #[prost(uint64, optional, tag = "1")]
932    pub min_items: ::core::option::Option<u64>,
933    /// MaxItems specifies that this field must have the specified number of
934    /// items at a maximum
935    #[prost(uint64, optional, tag = "2")]
936    pub max_items: ::core::option::Option<u64>,
937    /// Unique specifies that all elements in this field must be unique. This
938    /// constraint is only applicable to scalar and enum types (messages are not
939    /// supported).
940    #[prost(bool, optional, tag = "3")]
941    pub unique: ::core::option::Option<bool>,
942    /// Items specifies the constraints to be applied to each item in the field.
943    /// Repeated message fields will still execute validation against each item
944    /// unless skip is specified here.
945    #[prost(message, optional, boxed, tag = "4")]
946    pub items: ::core::option::Option<::prost::alloc::boxed::Box<FieldRules>>,
947    /// IgnoreEmpty specifies that the validation rules of this field should be
948    /// evaluated only if the field is not empty
949    #[prost(bool, optional, tag = "5")]
950    pub ignore_empty: ::core::option::Option<bool>,
951}
952impl ::prost::Name for RepeatedRules {
953    const NAME: &'static str = "RepeatedRules";
954    const PACKAGE: &'static str = "validate";
955    fn full_name() -> ::prost::alloc::string::String {
956        "validate.RepeatedRules".into()
957    }
958    fn type_url() -> ::prost::alloc::string::String {
959        "/validate.RepeatedRules".into()
960    }
961}
962/// MapRules describe the constraints applied to `map` values
963#[derive(Clone, PartialEq, ::prost::Message)]
964pub struct MapRules {
965    /// MinPairs specifies that this field must have the specified number of
966    /// KVs at a minimum
967    #[prost(uint64, optional, tag = "1")]
968    pub min_pairs: ::core::option::Option<u64>,
969    /// MaxPairs specifies that this field must have the specified number of
970    /// KVs at a maximum
971    #[prost(uint64, optional, tag = "2")]
972    pub max_pairs: ::core::option::Option<u64>,
973    /// NoSparse specifies values in this field cannot be unset. This only
974    /// applies to map's with message value types.
975    #[prost(bool, optional, tag = "3")]
976    pub no_sparse: ::core::option::Option<bool>,
977    /// Keys specifies the constraints to be applied to each key in the field.
978    #[prost(message, optional, boxed, tag = "4")]
979    pub keys: ::core::option::Option<::prost::alloc::boxed::Box<FieldRules>>,
980    /// Values specifies the constraints to be applied to the value of each key
981    /// in the field. Message values will still have their validations evaluated
982    /// unless skip is specified here.
983    #[prost(message, optional, boxed, tag = "5")]
984    pub values: ::core::option::Option<::prost::alloc::boxed::Box<FieldRules>>,
985    /// IgnoreEmpty specifies that the validation rules of this field should be
986    /// evaluated only if the field is not empty
987    #[prost(bool, optional, tag = "6")]
988    pub ignore_empty: ::core::option::Option<bool>,
989}
990impl ::prost::Name for MapRules {
991    const NAME: &'static str = "MapRules";
992    const PACKAGE: &'static str = "validate";
993    fn full_name() -> ::prost::alloc::string::String {
994        "validate.MapRules".into()
995    }
996    fn type_url() -> ::prost::alloc::string::String {
997        "/validate.MapRules".into()
998    }
999}
1000/// AnyRules describe constraints applied exclusively to the
1001/// `google.protobuf.Any` well-known type
1002#[derive(Clone, PartialEq, ::prost::Message)]
1003pub struct AnyRules {
1004    /// Required specifies that this field must be set
1005    #[prost(bool, optional, tag = "1")]
1006    pub required: ::core::option::Option<bool>,
1007    /// In specifies that this field's `type_url` must be equal to one of the
1008    /// specified values.
1009    #[prost(string, repeated, tag = "2")]
1010    pub r#in: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1011    /// NotIn specifies that this field's `type_url` must not be equal to any of
1012    /// the specified values.
1013    #[prost(string, repeated, tag = "3")]
1014    pub not_in: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1015}
1016impl ::prost::Name for AnyRules {
1017    const NAME: &'static str = "AnyRules";
1018    const PACKAGE: &'static str = "validate";
1019    fn full_name() -> ::prost::alloc::string::String {
1020        "validate.AnyRules".into()
1021    }
1022    fn type_url() -> ::prost::alloc::string::String {
1023        "/validate.AnyRules".into()
1024    }
1025}
1026/// DurationRules describe the constraints applied exclusively to the
1027/// `google.protobuf.Duration` well-known type
1028#[derive(Clone, PartialEq, ::prost::Message)]
1029pub struct DurationRules {
1030    /// Required specifies that this field must be set
1031    #[prost(bool, optional, tag = "1")]
1032    pub required: ::core::option::Option<bool>,
1033    /// Const specifies that this field must be exactly the specified value
1034    #[prost(message, optional, tag = "2")]
1035    pub r#const: ::core::option::Option<super::google::protobuf::Duration>,
1036    /// Lt specifies that this field must be less than the specified value,
1037    /// exclusive
1038    #[prost(message, optional, tag = "3")]
1039    pub lt: ::core::option::Option<super::google::protobuf::Duration>,
1040    /// Lt specifies that this field must be less than the specified value,
1041    /// inclusive
1042    #[prost(message, optional, tag = "4")]
1043    pub lte: ::core::option::Option<super::google::protobuf::Duration>,
1044    /// Gt specifies that this field must be greater than the specified value,
1045    /// exclusive
1046    #[prost(message, optional, tag = "5")]
1047    pub gt: ::core::option::Option<super::google::protobuf::Duration>,
1048    /// Gte specifies that this field must be greater than the specified value,
1049    /// inclusive
1050    #[prost(message, optional, tag = "6")]
1051    pub gte: ::core::option::Option<super::google::protobuf::Duration>,
1052    /// In specifies that this field must be equal to one of the specified
1053    /// values
1054    #[prost(message, repeated, tag = "7")]
1055    pub r#in: ::prost::alloc::vec::Vec<super::google::protobuf::Duration>,
1056    /// NotIn specifies that this field cannot be equal to one of the specified
1057    /// values
1058    #[prost(message, repeated, tag = "8")]
1059    pub not_in: ::prost::alloc::vec::Vec<super::google::protobuf::Duration>,
1060}
1061impl ::prost::Name for DurationRules {
1062    const NAME: &'static str = "DurationRules";
1063    const PACKAGE: &'static str = "validate";
1064    fn full_name() -> ::prost::alloc::string::String {
1065        "validate.DurationRules".into()
1066    }
1067    fn type_url() -> ::prost::alloc::string::String {
1068        "/validate.DurationRules".into()
1069    }
1070}
1071/// TimestampRules describe the constraints applied exclusively to the
1072/// `google.protobuf.Timestamp` well-known type
1073#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1074pub struct TimestampRules {
1075    /// Required specifies that this field must be set
1076    #[prost(bool, optional, tag = "1")]
1077    pub required: ::core::option::Option<bool>,
1078    /// Const specifies that this field must be exactly the specified value
1079    #[prost(message, optional, tag = "2")]
1080    pub r#const: ::core::option::Option<super::google::protobuf::Timestamp>,
1081    /// Lt specifies that this field must be less than the specified value,
1082    /// exclusive
1083    #[prost(message, optional, tag = "3")]
1084    pub lt: ::core::option::Option<super::google::protobuf::Timestamp>,
1085    /// Lte specifies that this field must be less than the specified value,
1086    /// inclusive
1087    #[prost(message, optional, tag = "4")]
1088    pub lte: ::core::option::Option<super::google::protobuf::Timestamp>,
1089    /// Gt specifies that this field must be greater than the specified value,
1090    /// exclusive
1091    #[prost(message, optional, tag = "5")]
1092    pub gt: ::core::option::Option<super::google::protobuf::Timestamp>,
1093    /// Gte specifies that this field must be greater than the specified value,
1094    /// inclusive
1095    #[prost(message, optional, tag = "6")]
1096    pub gte: ::core::option::Option<super::google::protobuf::Timestamp>,
1097    /// LtNow specifies that this must be less than the current time. LtNow
1098    /// can only be used with the Within rule.
1099    #[prost(bool, optional, tag = "7")]
1100    pub lt_now: ::core::option::Option<bool>,
1101    /// GtNow specifies that this must be greater than the current time. GtNow
1102    /// can only be used with the Within rule.
1103    #[prost(bool, optional, tag = "8")]
1104    pub gt_now: ::core::option::Option<bool>,
1105    /// Within specifies that this field must be within this duration of the
1106    /// current time. This constraint can be used alone or with the LtNow and
1107    /// GtNow rules.
1108    #[prost(message, optional, tag = "9")]
1109    pub within: ::core::option::Option<super::google::protobuf::Duration>,
1110}
1111impl ::prost::Name for TimestampRules {
1112    const NAME: &'static str = "TimestampRules";
1113    const PACKAGE: &'static str = "validate";
1114    fn full_name() -> ::prost::alloc::string::String {
1115        "validate.TimestampRules".into()
1116    }
1117    fn type_url() -> ::prost::alloc::string::String {
1118        "/validate.TimestampRules".into()
1119    }
1120}
1121/// WellKnownRegex contain some well-known patterns.
1122#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1123#[repr(i32)]
1124pub enum KnownRegex {
1125    Unknown = 0,
1126    /// HTTP header name as defined by RFC 7230.
1127    HttpHeaderName = 1,
1128    /// HTTP header value as defined by RFC 7230.
1129    HttpHeaderValue = 2,
1130}
1131impl KnownRegex {
1132    /// String value of the enum field names used in the ProtoBuf definition.
1133    ///
1134    /// The values are not transformed in any way and thus are considered stable
1135    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1136    pub fn as_str_name(&self) -> &'static str {
1137        match self {
1138            Self::Unknown => "UNKNOWN",
1139            Self::HttpHeaderName => "HTTP_HEADER_NAME",
1140            Self::HttpHeaderValue => "HTTP_HEADER_VALUE",
1141        }
1142    }
1143    /// Creates an enum from field names used in the ProtoBuf definition.
1144    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1145        match value {
1146            "UNKNOWN" => Some(Self::Unknown),
1147            "HTTP_HEADER_NAME" => Some(Self::HttpHeaderName),
1148            "HTTP_HEADER_VALUE" => Some(Self::HttpHeaderValue),
1149            _ => None,
1150        }
1151    }
1152}