k8s_openapi/v1_35/apiextensions_apiserver/pkg/apis/apiextensions/v1/
json_schema_props.rs

1// Generated from definition io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps
2
3/// JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct JSONSchemaProps {
6    pub ref_path: Option<std::string::String>,
7
8    pub schema: Option<std::string::String>,
9
10    pub additional_items: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrBool>,
11
12    pub additional_properties: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrBool>,
13
14    pub all_of: Option<std::vec::Vec<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>>,
15
16    pub any_of: Option<std::vec::Vec<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>>,
17
18    /// default is a default value for undefined object fields. Defaulting is a beta feature under the CustomResourceDefaulting feature gate. Defaulting requires spec.preserveUnknownFields to be false.
19    pub default: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSON>,
20
21    pub definitions: Option<std::collections::BTreeMap<std::string::String, crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>>,
22
23    pub dependencies: Option<std::collections::BTreeMap<std::string::String, crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrStringArray>>,
24
25    pub description: Option<std::string::String>,
26
27    pub enum_: Option<std::vec::Vec<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSON>>,
28
29    pub example: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSON>,
30
31    pub exclusive_maximum: Option<bool>,
32
33    pub exclusive_minimum: Option<bool>,
34
35    pub external_docs: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::ExternalDocumentation>,
36
37    /// format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
38    ///
39    /// - bsonobjectid: a bson object ID, i.e. a 24 characters hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI - email: an email address as parsed by Golang net/mail.ParseAddress - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 \[RFC1034\]. - ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC address as parsed by Golang net.ParseMAC - uuid: an UUID that allows uppercase defined by the regex (?i)^\[0-9a-f\]{8}-?\[0-9a-f\]{4}-?\[0-9a-f\]{4}-?\[0-9a-f\]{4}-?\[0-9a-f\]{12}$ - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^\[0-9a-f\]{8}-?\[0-9a-f\]{4}-?3\[0-9a-f\]{3}-?\[0-9a-f\]{4}-?\[0-9a-f\]{12}$ - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^\[0-9a-f\]{8}-?\[0-9a-f\]{4}-?4\[0-9a-f\]{3}-?\[89ab\]\[0-9a-f\]{3}-?\[0-9a-f\]{12}$ - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^\[0-9a-f\]{8}-?\[0-9a-f\]{4}-?5\[0-9a-f\]{3}-?\[89ab\]\[0-9a-f\]{3}-?\[0-9a-f\]{12}$ - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041" - isbn10: an ISBN10 number string like "0321751043" - isbn13: an ISBN13 number string like "978-0321751041" - creditcard: a credit card number defined by the regex ^(?:4\[0-9\]{12}(?:\[0-9\]{3})?|5\[1-5\]\[0-9\]{14}|6(?:011|5\[0-9\]\[0-9\])\[0-9\]{12}|3\[47\]\[0-9\]{13}|3(?:0\[0-5\]|\[68\]\[0-9\])\[0-9\]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$ with any non digit characters mixed in - ssn: a U.S. social security number following the regex ^\\\\d{3}\[- \]?\\\\d{2}\[- \]?\\\\d{4}$ - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?(\[0-9a-fA-F\]{3}|\[0-9a-fA-F\]{6})$ - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559" - byte: base64 encoded binary data - password: any kind of string - date: a date string like "2006-01-02" as defined by full-date in RFC3339 - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
40    pub format: Option<std::string::String>,
41
42    pub id: Option<std::string::String>,
43
44    pub items: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrArray>,
45
46    pub max_items: Option<i64>,
47
48    pub max_length: Option<i64>,
49
50    pub max_properties: Option<i64>,
51
52    pub maximum: Option<f64>,
53
54    pub min_items: Option<i64>,
55
56    pub min_length: Option<i64>,
57
58    pub min_properties: Option<i64>,
59
60    pub minimum: Option<f64>,
61
62    pub multiple_of: Option<f64>,
63
64    pub not: Option<std::boxed::Box<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>>,
65
66    pub nullable: Option<bool>,
67
68    pub one_of: Option<std::vec::Vec<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>>,
69
70    pub pattern: Option<std::string::String>,
71
72    pub pattern_properties: Option<std::collections::BTreeMap<std::string::String, crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>>,
73
74    pub properties: Option<std::collections::BTreeMap<std::string::String, crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>>,
75
76    pub required: Option<std::vec::Vec<std::string::String>>,
77
78    pub title: Option<std::string::String>,
79
80    pub type_: Option<std::string::String>,
81
82    pub unique_items: Option<bool>,
83
84    /// x-kubernetes-embedded-resource defines that the value is an embedded Kubernetes runtime.Object, with TypeMeta and ObjectMeta. The type must be object. It is allowed to further restrict the embedded object. kind, apiVersion and metadata are validated automatically. x-kubernetes-preserve-unknown-fields is allowed to be true, but does not have to be if the object is fully specified (up to kind, apiVersion, metadata).
85    pub x_kubernetes_embedded_resource: Option<bool>,
86
87    /// x-kubernetes-int-or-string specifies that this value is either an integer or a string. If this is true, an empty type is allowed and type as child of anyOf is permitted if following one of the following patterns:
88    ///
89    /// 1) anyOf:
90    ///    - type: integer
91    ///    - type: string
92    /// 2) allOf:
93    ///    - anyOf:
94    ///      - type: integer
95    ///      - type: string
96    ///    - ... zero or more
97    pub x_kubernetes_int_or_string: Option<bool>,
98
99    /// x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used as the index of the map.
100    ///
101    /// This tag MUST only be used on lists that have the "x-kubernetes-list-type" extension set to "map". Also, the values specified for this attribute must be a scalar typed field of the child structure (no nesting is supported).
102    ///
103    /// The properties specified must either be required or have a default value, to ensure those properties are present for all list items.
104    pub x_kubernetes_list_map_keys: Option<std::vec::Vec<std::string::String>>,
105
106    /// x-kubernetes-list-type annotates an array to further describe its topology. This extension must only be used on lists and may have 3 possible values:
107    ///
108    /// 1) `atomic`: the list is treated as a single entity, like a scalar.
109    ///      Atomic lists will be entirely replaced when updated. This extension
110    ///      may be used on any type of list (struct, scalar, ...).
111    /// 2) `set`:
112    ///      Sets are lists that must not have multiple items with the same value. Each
113    ///      value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
114    ///      array with x-kubernetes-list-type `atomic`.
115    /// 3) `map`:
116    ///      These lists are like maps in that their elements have a non-index key
117    ///      used to identify them. Order is preserved upon merge. The map tag
118    ///      must only be used on a list with elements of type object.
119    /// Defaults to atomic for arrays.
120    pub x_kubernetes_list_type: Option<std::string::String>,
121
122    /// x-kubernetes-map-type annotates an object to further describe its topology. This extension must only be used when type is object and may have 2 possible values:
123    ///
124    /// 1) `granular`:
125    ///      These maps are actual maps (key-value pairs) and each fields are independent
126    ///      from each other (they can each be manipulated by separate actors). This is
127    ///      the default behaviour for all maps.
128    /// 2) `atomic`: the list is treated as a single entity, like a scalar.
129    ///      Atomic maps will be entirely replaced when updated.
130    pub x_kubernetes_map_type: Option<std::string::String>,
131
132    /// x-kubernetes-preserve-unknown-fields stops the API server decoding step from pruning fields which are not specified in the validation schema. This affects fields recursively, but switches back to normal pruning behaviour if nested properties or additionalProperties are specified in the schema. This can either be true or undefined. False is forbidden.
133    pub x_kubernetes_preserve_unknown_fields: Option<bool>,
134
135    /// x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
136    pub x_kubernetes_validations: Option<std::vec::Vec<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::ValidationRule>>,
137}
138
139impl crate::DeepMerge for JSONSchemaProps {
140    fn merge_from(&mut self, other: Self) {
141        crate::DeepMerge::merge_from(&mut self.ref_path, other.ref_path);
142        crate::DeepMerge::merge_from(&mut self.schema, other.schema);
143        crate::DeepMerge::merge_from(&mut self.additional_items, other.additional_items);
144        crate::DeepMerge::merge_from(&mut self.additional_properties, other.additional_properties);
145        crate::merge_strategies::list::atomic(&mut self.all_of, other.all_of);
146        crate::merge_strategies::list::atomic(&mut self.any_of, other.any_of);
147        crate::DeepMerge::merge_from(&mut self.default, other.default);
148        crate::merge_strategies::map::granular(&mut self.definitions, other.definitions, |current_item, other_item| {
149            crate::DeepMerge::merge_from(current_item, other_item);
150        });
151        crate::merge_strategies::map::granular(&mut self.dependencies, other.dependencies, |current_item, other_item| {
152            crate::DeepMerge::merge_from(current_item, other_item);
153        });
154        crate::DeepMerge::merge_from(&mut self.description, other.description);
155        crate::merge_strategies::list::atomic(&mut self.enum_, other.enum_);
156        crate::DeepMerge::merge_from(&mut self.example, other.example);
157        crate::DeepMerge::merge_from(&mut self.exclusive_maximum, other.exclusive_maximum);
158        crate::DeepMerge::merge_from(&mut self.exclusive_minimum, other.exclusive_minimum);
159        crate::DeepMerge::merge_from(&mut self.external_docs, other.external_docs);
160        crate::DeepMerge::merge_from(&mut self.format, other.format);
161        crate::DeepMerge::merge_from(&mut self.id, other.id);
162        crate::DeepMerge::merge_from(&mut self.items, other.items);
163        crate::DeepMerge::merge_from(&mut self.max_items, other.max_items);
164        crate::DeepMerge::merge_from(&mut self.max_length, other.max_length);
165        crate::DeepMerge::merge_from(&mut self.max_properties, other.max_properties);
166        crate::DeepMerge::merge_from(&mut self.maximum, other.maximum);
167        crate::DeepMerge::merge_from(&mut self.min_items, other.min_items);
168        crate::DeepMerge::merge_from(&mut self.min_length, other.min_length);
169        crate::DeepMerge::merge_from(&mut self.min_properties, other.min_properties);
170        crate::DeepMerge::merge_from(&mut self.minimum, other.minimum);
171        crate::DeepMerge::merge_from(&mut self.multiple_of, other.multiple_of);
172        crate::DeepMerge::merge_from(&mut self.not, other.not);
173        crate::DeepMerge::merge_from(&mut self.nullable, other.nullable);
174        crate::merge_strategies::list::atomic(&mut self.one_of, other.one_of);
175        crate::DeepMerge::merge_from(&mut self.pattern, other.pattern);
176        crate::merge_strategies::map::granular(&mut self.pattern_properties, other.pattern_properties, |current_item, other_item| {
177            crate::DeepMerge::merge_from(current_item, other_item);
178        });
179        crate::merge_strategies::map::granular(&mut self.properties, other.properties, |current_item, other_item| {
180            crate::DeepMerge::merge_from(current_item, other_item);
181        });
182        crate::merge_strategies::list::atomic(&mut self.required, other.required);
183        crate::DeepMerge::merge_from(&mut self.title, other.title);
184        crate::DeepMerge::merge_from(&mut self.type_, other.type_);
185        crate::DeepMerge::merge_from(&mut self.unique_items, other.unique_items);
186        crate::DeepMerge::merge_from(&mut self.x_kubernetes_embedded_resource, other.x_kubernetes_embedded_resource);
187        crate::DeepMerge::merge_from(&mut self.x_kubernetes_int_or_string, other.x_kubernetes_int_or_string);
188        crate::merge_strategies::list::atomic(&mut self.x_kubernetes_list_map_keys, other.x_kubernetes_list_map_keys);
189        crate::DeepMerge::merge_from(&mut self.x_kubernetes_list_type, other.x_kubernetes_list_type);
190        crate::DeepMerge::merge_from(&mut self.x_kubernetes_map_type, other.x_kubernetes_map_type);
191        crate::DeepMerge::merge_from(&mut self.x_kubernetes_preserve_unknown_fields, other.x_kubernetes_preserve_unknown_fields);
192        crate::merge_strategies::list::map(
193            &mut self.x_kubernetes_validations,
194            other.x_kubernetes_validations,
195            &[|lhs, rhs| lhs.rule == rhs.rule],
196            |current_item, other_item| {
197                crate::DeepMerge::merge_from(current_item, other_item);
198            },
199        );
200    }
201}
202
203impl<'de> crate::serde::Deserialize<'de> for JSONSchemaProps {
204    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
205        #[allow(non_camel_case_types)]
206        enum Field {
207            Key_ref_path,
208            Key_schema,
209            Key_additional_items,
210            Key_additional_properties,
211            Key_all_of,
212            Key_any_of,
213            Key_default,
214            Key_definitions,
215            Key_dependencies,
216            Key_description,
217            Key_enum_,
218            Key_example,
219            Key_exclusive_maximum,
220            Key_exclusive_minimum,
221            Key_external_docs,
222            Key_format,
223            Key_id,
224            Key_items,
225            Key_max_items,
226            Key_max_length,
227            Key_max_properties,
228            Key_maximum,
229            Key_min_items,
230            Key_min_length,
231            Key_min_properties,
232            Key_minimum,
233            Key_multiple_of,
234            Key_not,
235            Key_nullable,
236            Key_one_of,
237            Key_pattern,
238            Key_pattern_properties,
239            Key_properties,
240            Key_required,
241            Key_title,
242            Key_type_,
243            Key_unique_items,
244            Key_x_kubernetes_embedded_resource,
245            Key_x_kubernetes_int_or_string,
246            Key_x_kubernetes_list_map_keys,
247            Key_x_kubernetes_list_type,
248            Key_x_kubernetes_map_type,
249            Key_x_kubernetes_preserve_unknown_fields,
250            Key_x_kubernetes_validations,
251            Other,
252        }
253
254        impl<'de> crate::serde::Deserialize<'de> for Field {
255            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
256                struct Visitor;
257
258                impl crate::serde::de::Visitor<'_> for Visitor {
259                    type Value = Field;
260
261                    fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
262                        f.write_str("field identifier")
263                    }
264
265                    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
266                        Ok(match v {
267                            "$ref" => Field::Key_ref_path,
268                            "$schema" => Field::Key_schema,
269                            "additionalItems" => Field::Key_additional_items,
270                            "additionalProperties" => Field::Key_additional_properties,
271                            "allOf" => Field::Key_all_of,
272                            "anyOf" => Field::Key_any_of,
273                            "default" => Field::Key_default,
274                            "definitions" => Field::Key_definitions,
275                            "dependencies" => Field::Key_dependencies,
276                            "description" => Field::Key_description,
277                            "enum" => Field::Key_enum_,
278                            "example" => Field::Key_example,
279                            "exclusiveMaximum" => Field::Key_exclusive_maximum,
280                            "exclusiveMinimum" => Field::Key_exclusive_minimum,
281                            "externalDocs" => Field::Key_external_docs,
282                            "format" => Field::Key_format,
283                            "id" => Field::Key_id,
284                            "items" => Field::Key_items,
285                            "maxItems" => Field::Key_max_items,
286                            "maxLength" => Field::Key_max_length,
287                            "maxProperties" => Field::Key_max_properties,
288                            "maximum" => Field::Key_maximum,
289                            "minItems" => Field::Key_min_items,
290                            "minLength" => Field::Key_min_length,
291                            "minProperties" => Field::Key_min_properties,
292                            "minimum" => Field::Key_minimum,
293                            "multipleOf" => Field::Key_multiple_of,
294                            "not" => Field::Key_not,
295                            "nullable" => Field::Key_nullable,
296                            "oneOf" => Field::Key_one_of,
297                            "pattern" => Field::Key_pattern,
298                            "patternProperties" => Field::Key_pattern_properties,
299                            "properties" => Field::Key_properties,
300                            "required" => Field::Key_required,
301                            "title" => Field::Key_title,
302                            "type" => Field::Key_type_,
303                            "uniqueItems" => Field::Key_unique_items,
304                            "x-kubernetes-embedded-resource" => Field::Key_x_kubernetes_embedded_resource,
305                            "x-kubernetes-int-or-string" => Field::Key_x_kubernetes_int_or_string,
306                            "x-kubernetes-list-map-keys" => Field::Key_x_kubernetes_list_map_keys,
307                            "x-kubernetes-list-type" => Field::Key_x_kubernetes_list_type,
308                            "x-kubernetes-map-type" => Field::Key_x_kubernetes_map_type,
309                            "x-kubernetes-preserve-unknown-fields" => Field::Key_x_kubernetes_preserve_unknown_fields,
310                            "x-kubernetes-validations" => Field::Key_x_kubernetes_validations,
311                            _ => Field::Other,
312                        })
313                    }
314                }
315
316                deserializer.deserialize_identifier(Visitor)
317            }
318        }
319
320        struct Visitor;
321
322        impl<'de> crate::serde::de::Visitor<'de> for Visitor {
323            type Value = JSONSchemaProps;
324
325            fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
326                f.write_str("JSONSchemaProps")
327            }
328
329            fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
330                let mut value_ref_path: Option<std::string::String> = None;
331                let mut value_schema: Option<std::string::String> = None;
332                let mut value_additional_items: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrBool> = None;
333                let mut value_additional_properties: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrBool> = None;
334                let mut value_all_of: Option<std::vec::Vec<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>> = None;
335                let mut value_any_of: Option<std::vec::Vec<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>> = None;
336                let mut value_default: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSON> = None;
337                let mut value_definitions: Option<std::collections::BTreeMap<std::string::String, crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>> = None;
338                let mut value_dependencies: Option<std::collections::BTreeMap<std::string::String, crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrStringArray>> = None;
339                let mut value_description: Option<std::string::String> = None;
340                let mut value_enum_: Option<std::vec::Vec<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSON>> = None;
341                let mut value_example: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSON> = None;
342                let mut value_exclusive_maximum: Option<bool> = None;
343                let mut value_exclusive_minimum: Option<bool> = None;
344                let mut value_external_docs: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::ExternalDocumentation> = None;
345                let mut value_format: Option<std::string::String> = None;
346                let mut value_id: Option<std::string::String> = None;
347                let mut value_items: Option<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrArray> = None;
348                let mut value_max_items: Option<i64> = None;
349                let mut value_max_length: Option<i64> = None;
350                let mut value_max_properties: Option<i64> = None;
351                let mut value_maximum: Option<f64> = None;
352                let mut value_min_items: Option<i64> = None;
353                let mut value_min_length: Option<i64> = None;
354                let mut value_min_properties: Option<i64> = None;
355                let mut value_minimum: Option<f64> = None;
356                let mut value_multiple_of: Option<f64> = None;
357                let mut value_not: Option<std::boxed::Box<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>> = None;
358                let mut value_nullable: Option<bool> = None;
359                let mut value_one_of: Option<std::vec::Vec<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>> = None;
360                let mut value_pattern: Option<std::string::String> = None;
361                let mut value_pattern_properties: Option<std::collections::BTreeMap<std::string::String, crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>> = None;
362                let mut value_properties: Option<std::collections::BTreeMap<std::string::String, crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>> = None;
363                let mut value_required: Option<std::vec::Vec<std::string::String>> = None;
364                let mut value_title: Option<std::string::String> = None;
365                let mut value_type_: Option<std::string::String> = None;
366                let mut value_unique_items: Option<bool> = None;
367                let mut value_x_kubernetes_embedded_resource: Option<bool> = None;
368                let mut value_x_kubernetes_int_or_string: Option<bool> = None;
369                let mut value_x_kubernetes_list_map_keys: Option<std::vec::Vec<std::string::String>> = None;
370                let mut value_x_kubernetes_list_type: Option<std::string::String> = None;
371                let mut value_x_kubernetes_map_type: Option<std::string::String> = None;
372                let mut value_x_kubernetes_preserve_unknown_fields: Option<bool> = None;
373                let mut value_x_kubernetes_validations: Option<std::vec::Vec<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::ValidationRule>> = None;
374
375                while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
376                    match key {
377                        Field::Key_ref_path => value_ref_path = crate::serde::de::MapAccess::next_value(&mut map)?,
378                        Field::Key_schema => value_schema = crate::serde::de::MapAccess::next_value(&mut map)?,
379                        Field::Key_additional_items => value_additional_items = crate::serde::de::MapAccess::next_value(&mut map)?,
380                        Field::Key_additional_properties => value_additional_properties = crate::serde::de::MapAccess::next_value(&mut map)?,
381                        Field::Key_all_of => value_all_of = crate::serde::de::MapAccess::next_value(&mut map)?,
382                        Field::Key_any_of => value_any_of = crate::serde::de::MapAccess::next_value(&mut map)?,
383                        Field::Key_default => value_default = crate::serde::de::MapAccess::next_value(&mut map)?,
384                        Field::Key_definitions => value_definitions = crate::serde::de::MapAccess::next_value(&mut map)?,
385                        Field::Key_dependencies => value_dependencies = crate::serde::de::MapAccess::next_value(&mut map)?,
386                        Field::Key_description => value_description = crate::serde::de::MapAccess::next_value(&mut map)?,
387                        Field::Key_enum_ => value_enum_ = crate::serde::de::MapAccess::next_value(&mut map)?,
388                        Field::Key_example => value_example = crate::serde::de::MapAccess::next_value(&mut map)?,
389                        Field::Key_exclusive_maximum => value_exclusive_maximum = crate::serde::de::MapAccess::next_value(&mut map)?,
390                        Field::Key_exclusive_minimum => value_exclusive_minimum = crate::serde::de::MapAccess::next_value(&mut map)?,
391                        Field::Key_external_docs => value_external_docs = crate::serde::de::MapAccess::next_value(&mut map)?,
392                        Field::Key_format => value_format = crate::serde::de::MapAccess::next_value(&mut map)?,
393                        Field::Key_id => value_id = crate::serde::de::MapAccess::next_value(&mut map)?,
394                        Field::Key_items => value_items = crate::serde::de::MapAccess::next_value(&mut map)?,
395                        Field::Key_max_items => value_max_items = crate::serde::de::MapAccess::next_value(&mut map)?,
396                        Field::Key_max_length => value_max_length = crate::serde::de::MapAccess::next_value(&mut map)?,
397                        Field::Key_max_properties => value_max_properties = crate::serde::de::MapAccess::next_value(&mut map)?,
398                        Field::Key_maximum => value_maximum = crate::serde::de::MapAccess::next_value(&mut map)?,
399                        Field::Key_min_items => value_min_items = crate::serde::de::MapAccess::next_value(&mut map)?,
400                        Field::Key_min_length => value_min_length = crate::serde::de::MapAccess::next_value(&mut map)?,
401                        Field::Key_min_properties => value_min_properties = crate::serde::de::MapAccess::next_value(&mut map)?,
402                        Field::Key_minimum => value_minimum = crate::serde::de::MapAccess::next_value(&mut map)?,
403                        Field::Key_multiple_of => value_multiple_of = crate::serde::de::MapAccess::next_value(&mut map)?,
404                        Field::Key_not => value_not = crate::serde::de::MapAccess::next_value(&mut map)?,
405                        Field::Key_nullable => value_nullable = crate::serde::de::MapAccess::next_value(&mut map)?,
406                        Field::Key_one_of => value_one_of = crate::serde::de::MapAccess::next_value(&mut map)?,
407                        Field::Key_pattern => value_pattern = crate::serde::de::MapAccess::next_value(&mut map)?,
408                        Field::Key_pattern_properties => value_pattern_properties = crate::serde::de::MapAccess::next_value(&mut map)?,
409                        Field::Key_properties => value_properties = crate::serde::de::MapAccess::next_value(&mut map)?,
410                        Field::Key_required => value_required = crate::serde::de::MapAccess::next_value(&mut map)?,
411                        Field::Key_title => value_title = crate::serde::de::MapAccess::next_value(&mut map)?,
412                        Field::Key_type_ => value_type_ = crate::serde::de::MapAccess::next_value(&mut map)?,
413                        Field::Key_unique_items => value_unique_items = crate::serde::de::MapAccess::next_value(&mut map)?,
414                        Field::Key_x_kubernetes_embedded_resource => value_x_kubernetes_embedded_resource = crate::serde::de::MapAccess::next_value(&mut map)?,
415                        Field::Key_x_kubernetes_int_or_string => value_x_kubernetes_int_or_string = crate::serde::de::MapAccess::next_value(&mut map)?,
416                        Field::Key_x_kubernetes_list_map_keys => value_x_kubernetes_list_map_keys = crate::serde::de::MapAccess::next_value(&mut map)?,
417                        Field::Key_x_kubernetes_list_type => value_x_kubernetes_list_type = crate::serde::de::MapAccess::next_value(&mut map)?,
418                        Field::Key_x_kubernetes_map_type => value_x_kubernetes_map_type = crate::serde::de::MapAccess::next_value(&mut map)?,
419                        Field::Key_x_kubernetes_preserve_unknown_fields => value_x_kubernetes_preserve_unknown_fields = crate::serde::de::MapAccess::next_value(&mut map)?,
420                        Field::Key_x_kubernetes_validations => value_x_kubernetes_validations = crate::serde::de::MapAccess::next_value(&mut map)?,
421                        Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
422                    }
423                }
424
425                Ok(JSONSchemaProps {
426                    ref_path: value_ref_path,
427                    schema: value_schema,
428                    additional_items: value_additional_items,
429                    additional_properties: value_additional_properties,
430                    all_of: value_all_of,
431                    any_of: value_any_of,
432                    default: value_default,
433                    definitions: value_definitions,
434                    dependencies: value_dependencies,
435                    description: value_description,
436                    enum_: value_enum_,
437                    example: value_example,
438                    exclusive_maximum: value_exclusive_maximum,
439                    exclusive_minimum: value_exclusive_minimum,
440                    external_docs: value_external_docs,
441                    format: value_format,
442                    id: value_id,
443                    items: value_items,
444                    max_items: value_max_items,
445                    max_length: value_max_length,
446                    max_properties: value_max_properties,
447                    maximum: value_maximum,
448                    min_items: value_min_items,
449                    min_length: value_min_length,
450                    min_properties: value_min_properties,
451                    minimum: value_minimum,
452                    multiple_of: value_multiple_of,
453                    not: value_not,
454                    nullable: value_nullable,
455                    one_of: value_one_of,
456                    pattern: value_pattern,
457                    pattern_properties: value_pattern_properties,
458                    properties: value_properties,
459                    required: value_required,
460                    title: value_title,
461                    type_: value_type_,
462                    unique_items: value_unique_items,
463                    x_kubernetes_embedded_resource: value_x_kubernetes_embedded_resource,
464                    x_kubernetes_int_or_string: value_x_kubernetes_int_or_string,
465                    x_kubernetes_list_map_keys: value_x_kubernetes_list_map_keys,
466                    x_kubernetes_list_type: value_x_kubernetes_list_type,
467                    x_kubernetes_map_type: value_x_kubernetes_map_type,
468                    x_kubernetes_preserve_unknown_fields: value_x_kubernetes_preserve_unknown_fields,
469                    x_kubernetes_validations: value_x_kubernetes_validations,
470                })
471            }
472        }
473
474        deserializer.deserialize_struct(
475            "JSONSchemaProps",
476            &[
477                "$ref",
478                "$schema",
479                "additionalItems",
480                "additionalProperties",
481                "allOf",
482                "anyOf",
483                "default",
484                "definitions",
485                "dependencies",
486                "description",
487                "enum",
488                "example",
489                "exclusiveMaximum",
490                "exclusiveMinimum",
491                "externalDocs",
492                "format",
493                "id",
494                "items",
495                "maxItems",
496                "maxLength",
497                "maxProperties",
498                "maximum",
499                "minItems",
500                "minLength",
501                "minProperties",
502                "minimum",
503                "multipleOf",
504                "not",
505                "nullable",
506                "oneOf",
507                "pattern",
508                "patternProperties",
509                "properties",
510                "required",
511                "title",
512                "type",
513                "uniqueItems",
514                "x-kubernetes-embedded-resource",
515                "x-kubernetes-int-or-string",
516                "x-kubernetes-list-map-keys",
517                "x-kubernetes-list-type",
518                "x-kubernetes-map-type",
519                "x-kubernetes-preserve-unknown-fields",
520                "x-kubernetes-validations",
521            ],
522            Visitor,
523        )
524    }
525}
526
527impl crate::serde::Serialize for JSONSchemaProps {
528    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
529        let mut state = serializer.serialize_struct(
530            "JSONSchemaProps",
531            self.ref_path.as_ref().map_or(0, |_| 1) +
532            self.schema.as_ref().map_or(0, |_| 1) +
533            self.additional_items.as_ref().map_or(0, |_| 1) +
534            self.additional_properties.as_ref().map_or(0, |_| 1) +
535            self.all_of.as_ref().map_or(0, |_| 1) +
536            self.any_of.as_ref().map_or(0, |_| 1) +
537            self.default.as_ref().map_or(0, |_| 1) +
538            self.definitions.as_ref().map_or(0, |_| 1) +
539            self.dependencies.as_ref().map_or(0, |_| 1) +
540            self.description.as_ref().map_or(0, |_| 1) +
541            self.enum_.as_ref().map_or(0, |_| 1) +
542            self.example.as_ref().map_or(0, |_| 1) +
543            self.exclusive_maximum.as_ref().map_or(0, |_| 1) +
544            self.exclusive_minimum.as_ref().map_or(0, |_| 1) +
545            self.external_docs.as_ref().map_or(0, |_| 1) +
546            self.format.as_ref().map_or(0, |_| 1) +
547            self.id.as_ref().map_or(0, |_| 1) +
548            self.items.as_ref().map_or(0, |_| 1) +
549            self.max_items.as_ref().map_or(0, |_| 1) +
550            self.max_length.as_ref().map_or(0, |_| 1) +
551            self.max_properties.as_ref().map_or(0, |_| 1) +
552            self.maximum.as_ref().map_or(0, |_| 1) +
553            self.min_items.as_ref().map_or(0, |_| 1) +
554            self.min_length.as_ref().map_or(0, |_| 1) +
555            self.min_properties.as_ref().map_or(0, |_| 1) +
556            self.minimum.as_ref().map_or(0, |_| 1) +
557            self.multiple_of.as_ref().map_or(0, |_| 1) +
558            self.not.as_ref().map_or(0, |_| 1) +
559            self.nullable.as_ref().map_or(0, |_| 1) +
560            self.one_of.as_ref().map_or(0, |_| 1) +
561            self.pattern.as_ref().map_or(0, |_| 1) +
562            self.pattern_properties.as_ref().map_or(0, |_| 1) +
563            self.properties.as_ref().map_or(0, |_| 1) +
564            self.required.as_ref().map_or(0, |_| 1) +
565            self.title.as_ref().map_or(0, |_| 1) +
566            self.type_.as_ref().map_or(0, |_| 1) +
567            self.unique_items.as_ref().map_or(0, |_| 1) +
568            self.x_kubernetes_embedded_resource.as_ref().map_or(0, |_| 1) +
569            self.x_kubernetes_int_or_string.as_ref().map_or(0, |_| 1) +
570            self.x_kubernetes_list_map_keys.as_ref().map_or(0, |_| 1) +
571            self.x_kubernetes_list_type.as_ref().map_or(0, |_| 1) +
572            self.x_kubernetes_map_type.as_ref().map_or(0, |_| 1) +
573            self.x_kubernetes_preserve_unknown_fields.as_ref().map_or(0, |_| 1) +
574            self.x_kubernetes_validations.as_ref().map_or(0, |_| 1),
575        )?;
576        if let Some(value) = &self.ref_path {
577            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "$ref", value)?;
578        }
579        if let Some(value) = &self.schema {
580            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "$schema", value)?;
581        }
582        if let Some(value) = &self.additional_items {
583            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "additionalItems", value)?;
584        }
585        if let Some(value) = &self.additional_properties {
586            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "additionalProperties", value)?;
587        }
588        if let Some(value) = &self.all_of {
589            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "allOf", value)?;
590        }
591        if let Some(value) = &self.any_of {
592            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "anyOf", value)?;
593        }
594        if let Some(value) = &self.default {
595            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "default", value)?;
596        }
597        if let Some(value) = &self.definitions {
598            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "definitions", value)?;
599        }
600        if let Some(value) = &self.dependencies {
601            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "dependencies", value)?;
602        }
603        if let Some(value) = &self.description {
604            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "description", value)?;
605        }
606        if let Some(value) = &self.enum_ {
607            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "enum", value)?;
608        }
609        if let Some(value) = &self.example {
610            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "example", value)?;
611        }
612        if let Some(value) = &self.exclusive_maximum {
613            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "exclusiveMaximum", value)?;
614        }
615        if let Some(value) = &self.exclusive_minimum {
616            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "exclusiveMinimum", value)?;
617        }
618        if let Some(value) = &self.external_docs {
619            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "externalDocs", value)?;
620        }
621        if let Some(value) = &self.format {
622            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "format", value)?;
623        }
624        if let Some(value) = &self.id {
625            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "id", value)?;
626        }
627        if let Some(value) = &self.items {
628            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "items", value)?;
629        }
630        if let Some(value) = &self.max_items {
631            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "maxItems", value)?;
632        }
633        if let Some(value) = &self.max_length {
634            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "maxLength", value)?;
635        }
636        if let Some(value) = &self.max_properties {
637            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "maxProperties", value)?;
638        }
639        if let Some(value) = &self.maximum {
640            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "maximum", value)?;
641        }
642        if let Some(value) = &self.min_items {
643            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "minItems", value)?;
644        }
645        if let Some(value) = &self.min_length {
646            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "minLength", value)?;
647        }
648        if let Some(value) = &self.min_properties {
649            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "minProperties", value)?;
650        }
651        if let Some(value) = &self.minimum {
652            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "minimum", value)?;
653        }
654        if let Some(value) = &self.multiple_of {
655            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "multipleOf", value)?;
656        }
657        if let Some(value) = &self.not {
658            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "not", value)?;
659        }
660        if let Some(value) = &self.nullable {
661            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "nullable", value)?;
662        }
663        if let Some(value) = &self.one_of {
664            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "oneOf", value)?;
665        }
666        if let Some(value) = &self.pattern {
667            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "pattern", value)?;
668        }
669        if let Some(value) = &self.pattern_properties {
670            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "patternProperties", value)?;
671        }
672        if let Some(value) = &self.properties {
673            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "properties", value)?;
674        }
675        if let Some(value) = &self.required {
676            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "required", value)?;
677        }
678        if let Some(value) = &self.title {
679            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "title", value)?;
680        }
681        if let Some(value) = &self.type_ {
682            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "type", value)?;
683        }
684        if let Some(value) = &self.unique_items {
685            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "uniqueItems", value)?;
686        }
687        if let Some(value) = &self.x_kubernetes_embedded_resource {
688            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "x-kubernetes-embedded-resource", value)?;
689        }
690        if let Some(value) = &self.x_kubernetes_int_or_string {
691            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "x-kubernetes-int-or-string", value)?;
692        }
693        if let Some(value) = &self.x_kubernetes_list_map_keys {
694            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "x-kubernetes-list-map-keys", value)?;
695        }
696        if let Some(value) = &self.x_kubernetes_list_type {
697            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "x-kubernetes-list-type", value)?;
698        }
699        if let Some(value) = &self.x_kubernetes_map_type {
700            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "x-kubernetes-map-type", value)?;
701        }
702        if let Some(value) = &self.x_kubernetes_preserve_unknown_fields {
703            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "x-kubernetes-preserve-unknown-fields", value)?;
704        }
705        if let Some(value) = &self.x_kubernetes_validations {
706            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "x-kubernetes-validations", value)?;
707        }
708        crate::serde::ser::SerializeStruct::end(state)
709    }
710}
711
712#[cfg(feature = "schemars")]
713impl crate::schemars::JsonSchema for JSONSchemaProps {
714    fn schema_name() -> std::borrow::Cow<'static, str> {
715        "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps".into()
716    }
717
718    fn json_schema(__gen: &mut crate::schemars::SchemaGenerator) -> crate::schemars::Schema {
719        crate::schemars::json_schema!({
720            "description": "JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).",
721            "type": "object",
722            "properties": {
723                "$ref": {
724                    "type": "string",
725                },
726                "$schema": {
727                    "type": "string",
728                },
729                "additionalItems": __gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrBool>(),
730                "additionalProperties": __gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrBool>(),
731                "allOf": {
732                    "type": "array",
733                    "items": (__gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>()),
734                },
735                "anyOf": {
736                    "type": "array",
737                    "items": (__gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>()),
738                },
739                "default": ({
740                    let mut schema_obj = __gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSON>();
741                    schema_obj.ensure_object().insert("description".into(), "default is a default value for undefined object fields. Defaulting is a beta feature under the CustomResourceDefaulting feature gate. Defaulting requires spec.preserveUnknownFields to be false.".into());
742                    schema_obj
743                }),
744                "definitions": {
745                    "type": "object",
746                    "additionalProperties": (__gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>()),
747                },
748                "dependencies": {
749                    "type": "object",
750                    "additionalProperties": (__gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrStringArray>()),
751                },
752                "description": {
753                    "type": "string",
754                },
755                "enum": {
756                    "type": "array",
757                    "items": (__gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSON>()),
758                },
759                "example": __gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSON>(),
760                "exclusiveMaximum": {
761                    "type": "boolean",
762                },
763                "exclusiveMinimum": {
764                    "type": "boolean",
765                },
766                "externalDocs": __gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::ExternalDocumentation>(),
767                "format": {
768                    "description": "format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:\n\n- bsonobjectid: a bson object ID, i.e. a 24 characters hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI - email: an email address as parsed by Golang net/mail.ParseAddress - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034]. - ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC address as parsed by Golang net.ParseMAC - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - isbn: an ISBN10 or ISBN13 number string like \"0321751043\" or \"978-0321751041\" - isbn10: an ISBN10 number string like \"0321751043\" - isbn13: an ISBN13 number string like \"978-0321751041\" - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$ with any non digit characters mixed in - ssn: a U.S. social security number following the regex ^\\\\d{3}[- ]?\\\\d{2}[- ]?\\\\d{4}$ - hexcolor: an hexadecimal color code like \"#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB color code like rgb like \"rgb(255,255,2559\" - byte: base64 encoded binary data - password: any kind of string - date: a date string like \"2006-01-02\" as defined by full-date in RFC3339 - duration: a duration string like \"22 ns\" as parsed by Golang time.ParseDuration or compatible with Scala duration format - datetime: a date time string like \"2014-12-15T19:30:20.000Z\" as defined by date-time in RFC3339.",
769                    "type": "string",
770                },
771                "id": {
772                    "type": "string",
773                },
774                "items": __gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaPropsOrArray>(),
775                "maxItems": {
776                    "type": "integer",
777                    "format": "int64",
778                },
779                "maxLength": {
780                    "type": "integer",
781                    "format": "int64",
782                },
783                "maxProperties": {
784                    "type": "integer",
785                    "format": "int64",
786                },
787                "maximum": {
788                    "type": "number",
789                    "format": "double",
790                },
791                "minItems": {
792                    "type": "integer",
793                    "format": "int64",
794                },
795                "minLength": {
796                    "type": "integer",
797                    "format": "int64",
798                },
799                "minProperties": {
800                    "type": "integer",
801                    "format": "int64",
802                },
803                "minimum": {
804                    "type": "number",
805                    "format": "double",
806                },
807                "multipleOf": {
808                    "type": "number",
809                    "format": "double",
810                },
811                "not": __gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>(),
812                "nullable": {
813                    "type": "boolean",
814                },
815                "oneOf": {
816                    "type": "array",
817                    "items": (__gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>()),
818                },
819                "pattern": {
820                    "type": "string",
821                },
822                "patternProperties": {
823                    "type": "object",
824                    "additionalProperties": (__gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>()),
825                },
826                "properties": {
827                    "type": "object",
828                    "additionalProperties": (__gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::JSONSchemaProps>()),
829                },
830                "required": {
831                    "type": "array",
832                    "items": {
833                        "type": "string",
834                    },
835                },
836                "title": {
837                    "type": "string",
838                },
839                "type": {
840                    "type": "string",
841                },
842                "uniqueItems": {
843                    "type": "boolean",
844                },
845                "x-kubernetes-embedded-resource": {
846                    "description": "x-kubernetes-embedded-resource defines that the value is an embedded Kubernetes runtime.Object, with TypeMeta and ObjectMeta. The type must be object. It is allowed to further restrict the embedded object. kind, apiVersion and metadata are validated automatically. x-kubernetes-preserve-unknown-fields is allowed to be true, but does not have to be if the object is fully specified (up to kind, apiVersion, metadata).",
847                    "type": "boolean",
848                },
849                "x-kubernetes-int-or-string": {
850                    "description": "x-kubernetes-int-or-string specifies that this value is either an integer or a string. If this is true, an empty type is allowed and type as child of anyOf is permitted if following one of the following patterns:\n\n1) anyOf:\n   - type: integer\n   - type: string\n2) allOf:\n   - anyOf:\n     - type: integer\n     - type: string\n   - ... zero or more",
851                    "type": "boolean",
852                },
853                "x-kubernetes-list-map-keys": {
854                    "description": "x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used as the index of the map.\n\nThis tag MUST only be used on lists that have the \"x-kubernetes-list-type\" extension set to \"map\". Also, the values specified for this attribute must be a scalar typed field of the child structure (no nesting is supported).\n\nThe properties specified must either be required or have a default value, to ensure those properties are present for all list items.",
855                    "type": "array",
856                    "items": {
857                        "type": "string",
858                    },
859                },
860                "x-kubernetes-list-type": {
861                    "description": "x-kubernetes-list-type annotates an array to further describe its topology. This extension must only be used on lists and may have 3 possible values:\n\n1) `atomic`: the list is treated as a single entity, like a scalar.\n     Atomic lists will be entirely replaced when updated. This extension\n     may be used on any type of list (struct, scalar, ...).\n2) `set`:\n     Sets are lists that must not have multiple items with the same value. Each\n     value must be a scalar, an object with x-kubernetes-map-type `atomic` or an\n     array with x-kubernetes-list-type `atomic`.\n3) `map`:\n     These lists are like maps in that their elements have a non-index key\n     used to identify them. Order is preserved upon merge. The map tag\n     must only be used on a list with elements of type object.\nDefaults to atomic for arrays.",
862                    "type": "string",
863                },
864                "x-kubernetes-map-type": {
865                    "description": "x-kubernetes-map-type annotates an object to further describe its topology. This extension must only be used when type is object and may have 2 possible values:\n\n1) `granular`:\n     These maps are actual maps (key-value pairs) and each fields are independent\n     from each other (they can each be manipulated by separate actors). This is\n     the default behaviour for all maps.\n2) `atomic`: the list is treated as a single entity, like a scalar.\n     Atomic maps will be entirely replaced when updated.",
866                    "type": "string",
867                },
868                "x-kubernetes-preserve-unknown-fields": {
869                    "description": "x-kubernetes-preserve-unknown-fields stops the API server decoding step from pruning fields which are not specified in the validation schema. This affects fields recursively, but switches back to normal pruning behaviour if nested properties or additionalProperties are specified in the schema. This can either be true or undefined. False is forbidden.",
870                    "type": "boolean",
871                },
872                "x-kubernetes-validations": {
873                    "description": "x-kubernetes-validations describes a list of validation rules written in the CEL expression language.",
874                    "type": "array",
875                    "items": (__gen.subschema_for::<crate::apiextensions_apiserver::pkg::apis::apiextensions::v1::ValidationRule>()),
876                },
877            },
878        })
879    }
880}