// <auto-generated>
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
// </auto-generated>

namespace k8s.Models
{
    using Newtonsoft.Json;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;

    /// <summary>
    /// JSONSchemaProps is a JSON-Schema following Specification Draft 4
    /// (http://json-schema.org/).
    /// </summary>
    public partial class V1beta1JSONSchemaProps
    {
        /// <summary>
        /// Initializes a new instance of the V1beta1JSONSchemaProps class.
        /// </summary>
        public V1beta1JSONSchemaProps()
        {
            CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the V1beta1JSONSchemaProps class.
        /// </summary>
        /// <param name="additionalItems">JSONSchemaPropsOrBool represents
        /// JSONSchemaProps or a boolean value. Defaults to true for the
        /// boolean property.</param>
        /// <param name="additionalProperties">JSONSchemaPropsOrBool represents
        /// JSONSchemaProps or a boolean value. Defaults to true for the
        /// boolean property.</param>
        /// <param name="defaultProperty">default is a default value for
        /// undefined object fields. Defaulting is a beta feature under the
        /// CustomResourceDefaulting feature gate. CustomResourceDefinitions
        /// with defaults must be created using the v1 (or newer)
        /// CustomResourceDefinition API.</param>
        /// <param name="example">JSON represents any valid JSON value. These
        /// types are supported: bool, int64, float64, string, []interface{},
        /// map[string]interface{} and nil.</param>
        /// <param name="format">format is an OpenAPI v3 format string. Unknown
        /// formats are ignored. The following formats are validated:
        ///
        /// - 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.</param>
        /// <param name="items">JSONSchemaPropsOrArray represents a value that
        /// can either be a JSONSchemaProps or an array of JSONSchemaProps.
        /// Mainly here for serialization purposes.</param>
        /// <param
        /// name="xKubernetesEmbeddedResource">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).</param>
        /// <param name="xKubernetesIntOrString">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:
        ///
        /// 1) anyOf:
        /// - type: integer
        /// - type: string
        /// 2) allOf:
        /// - anyOf:
        /// - type: integer
        /// - type: string
        /// - ... zero or more</param>
        /// <param name="xKubernetesListMapKeys">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.
        ///
        /// 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).
        ///
        /// The properties specified must either be required or have a default
        /// value, to ensure those properties are present for all list
        /// items.</param>
        /// <param name="xKubernetesListType">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:
        ///
        /// 1) `atomic`: the list is treated as a single entity, like a scalar.
        /// Atomic lists will be entirely replaced when updated. This extension
        /// may be used on any type of list (struct, scalar, ...).
        /// 2) `set`:
        /// Sets are lists that must not have multiple items with the same
        /// value. Each
        /// value must be a scalar, an object with x-kubernetes-map-type
        /// `atomic` or an
        /// array with x-kubernetes-list-type `atomic`.
        /// 3) `map`:
        /// These lists are like maps in that their elements have a non-index
        /// key
        /// used to identify them. Order is preserved upon merge. The map tag
        /// must only be used on a list with elements of type object.
        /// Defaults to atomic for arrays.</param>
        /// <param name="xKubernetesMapType">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:
        ///
        /// 1) `granular`:
        /// These maps are actual maps (key-value pairs) and each fields are
        /// independent
        /// from each other (they can each be manipulated by separate actors).
        /// This is
        /// the default behaviour for all maps.
        /// 2) `atomic`: the list is treated as a single entity, like a scalar.
        /// Atomic maps will be entirely replaced when updated.</param>
        /// <param
        /// name="xKubernetesPreserveUnknownFields">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.</param>
        public V1beta1JSONSchemaProps(string refProperty = default(string), string schema = default(string), object additionalItems = default(object), object additionalProperties = default(object), IList<V1beta1JSONSchemaProps> allOf = default(IList<V1beta1JSONSchemaProps>), IList<V1beta1JSONSchemaProps> anyOf = default(IList<V1beta1JSONSchemaProps>), object defaultProperty = default(object), IDictionary<string, V1beta1JSONSchemaProps> definitions = default(IDictionary<string, V1beta1JSONSchemaProps>), IDictionary<string, object> dependencies = default(IDictionary<string, object>), string description = default(string), IList<object> enumProperty = default(IList<object>), object example = default(object), bool? exclusiveMaximum = default(bool?), bool? exclusiveMinimum = default(bool?), V1beta1ExternalDocumentation externalDocs = default(V1beta1ExternalDocumentation), string format = default(string), string id = default(string), object items = default(object), long? maxItems = default(long?), long? maxLength = default(long?), long? maxProperties = default(long?), double? maximum = default(double?), long? minItems = default(long?), long? minLength = default(long?), long? minProperties = default(long?), double? minimum = default(double?), double? multipleOf = default(double?), V1beta1JSONSchemaProps not = default(V1beta1JSONSchemaProps), bool? nullable = default(bool?), IList<V1beta1JSONSchemaProps> oneOf = default(IList<V1beta1JSONSchemaProps>), string pattern = default(string), IDictionary<string, V1beta1JSONSchemaProps> patternProperties = default(IDictionary<string, V1beta1JSONSchemaProps>), IDictionary<string, V1beta1JSONSchemaProps> properties = default(IDictionary<string, V1beta1JSONSchemaProps>), IList<string> required = default(IList<string>), string title = default(string), string type = default(string), bool? uniqueItems = default(bool?), bool? xKubernetesEmbeddedResource = default(bool?), bool? xKubernetesIntOrString = default(bool?), IList<string> xKubernetesListMapKeys = default(IList<string>), string xKubernetesListType = default(string), string xKubernetesMapType = default(string), bool? xKubernetesPreserveUnknownFields = default(bool?))
        {
            RefProperty = refProperty;
            Schema = schema;
            AdditionalItems = additionalItems;
            AdditionalProperties = additionalProperties;
            AllOf = allOf;
            AnyOf = anyOf;
            DefaultProperty = defaultProperty;
            Definitions = definitions;
            Dependencies = dependencies;
            Description = description;
            EnumProperty = enumProperty;
            Example = example;
            ExclusiveMaximum = exclusiveMaximum;
            ExclusiveMinimum = exclusiveMinimum;
            ExternalDocs = externalDocs;
            Format = format;
            Id = id;
            Items = items;
            MaxItems = maxItems;
            MaxLength = maxLength;
            MaxProperties = maxProperties;
            Maximum = maximum;
            MinItems = minItems;
            MinLength = minLength;
            MinProperties = minProperties;
            Minimum = minimum;
            MultipleOf = multipleOf;
            Not = not;
            Nullable = nullable;
            OneOf = oneOf;
            Pattern = pattern;
            PatternProperties = patternProperties;
            Properties = properties;
            Required = required;
            Title = title;
            Type = type;
            UniqueItems = uniqueItems;
            XKubernetesEmbeddedResource = xKubernetesEmbeddedResource;
            XKubernetesIntOrString = xKubernetesIntOrString;
            XKubernetesListMapKeys = xKubernetesListMapKeys;
            XKubernetesListType = xKubernetesListType;
            XKubernetesMapType = xKubernetesMapType;
            XKubernetesPreserveUnknownFields = xKubernetesPreserveUnknownFields;
            CustomInit();
        }

        /// <summary>
        /// An initialization method that performs custom operations like setting defaults
        /// </summary>
        partial void CustomInit();

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "$ref")]
        public string RefProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "$schema")]
        public string Schema { get; set; }

        /// <summary>
        /// Gets or sets jSONSchemaPropsOrBool represents JSONSchemaProps or a
        /// boolean value. Defaults to true for the boolean property.
        /// </summary>
        [JsonProperty(PropertyName = "additionalItems")]
        public object AdditionalItems { get; set; }

        /// <summary>
        /// Gets or sets jSONSchemaPropsOrBool represents JSONSchemaProps or a
        /// boolean value. Defaults to true for the boolean property.
        /// </summary>
        [JsonProperty(PropertyName = "additionalProperties")]
        public object AdditionalProperties { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "allOf")]
        public IList<V1beta1JSONSchemaProps> AllOf { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "anyOf")]
        public IList<V1beta1JSONSchemaProps> AnyOf { get; set; }

        /// <summary>
        /// Gets or sets default is a default value for undefined object
        /// fields. Defaulting is a beta feature under the
        /// CustomResourceDefaulting feature gate. CustomResourceDefinitions
        /// with defaults must be created using the v1 (or newer)
        /// CustomResourceDefinition API.
        /// </summary>
        [JsonProperty(PropertyName = "default")]
        public object DefaultProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "definitions")]
        public IDictionary<string, V1beta1JSONSchemaProps> Definitions { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "dependencies")]
        public IDictionary<string, object> Dependencies { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "description")]
        public string Description { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "enum")]
        public IList<object> EnumProperty { get; set; }

        /// <summary>
        /// Gets or sets JSON represents any valid JSON value. These types are
        /// supported: bool, int64, float64, string, []interface{},
        /// map[string]interface{} and nil.
        /// </summary>
        [JsonProperty(PropertyName = "example")]
        public object Example { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "exclusiveMaximum")]
        public bool? ExclusiveMaximum { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "exclusiveMinimum")]
        public bool? ExclusiveMinimum { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "externalDocs")]
        public V1beta1ExternalDocumentation ExternalDocs { get; set; }

        /// <summary>
        /// Gets or sets format is an OpenAPI v3 format string. Unknown formats
        /// are ignored. The following formats are validated:
        ///
        /// - 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.
        /// </summary>
        [JsonProperty(PropertyName = "format")]
        public string Format { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "id")]
        public string Id { get; set; }

        /// <summary>
        /// Gets or sets jSONSchemaPropsOrArray represents a value that can
        /// either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly
        /// here for serialization purposes.
        /// </summary>
        [JsonProperty(PropertyName = "items")]
        public object Items { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "maxItems")]
        public long? MaxItems { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "maxLength")]
        public long? MaxLength { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "maxProperties")]
        public long? MaxProperties { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "maximum")]
        public double? Maximum { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "minItems")]
        public long? MinItems { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "minLength")]
        public long? MinLength { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "minProperties")]
        public long? MinProperties { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "minimum")]
        public double? Minimum { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "multipleOf")]
        public double? MultipleOf { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "not")]
        public V1beta1JSONSchemaProps Not { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "nullable")]
        public bool? Nullable { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "oneOf")]
        public IList<V1beta1JSONSchemaProps> OneOf { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "pattern")]
        public string Pattern { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "patternProperties")]
        public IDictionary<string, V1beta1JSONSchemaProps> PatternProperties { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "properties")]
        public IDictionary<string, V1beta1JSONSchemaProps> Properties { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "required")]
        public IList<string> Required { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "title")]
        public string Title { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "type")]
        public string Type { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "uniqueItems")]
        public bool? UniqueItems { get; set; }

        /// <summary>
        /// Gets or sets 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).
        /// </summary>
        [JsonProperty(PropertyName = "x-kubernetes-embedded-resource")]
        public bool? XKubernetesEmbeddedResource { get; set; }

        /// <summary>
        /// Gets or sets 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:
        ///
        /// 1) anyOf:
        /// - type: integer
        /// - type: string
        /// 2) allOf:
        /// - anyOf:
        /// - type: integer
        /// - type: string
        /// - ... zero or more
        /// </summary>
        [JsonProperty(PropertyName = "x-kubernetes-int-or-string")]
        public bool? XKubernetesIntOrString { get; set; }

        /// <summary>
        /// Gets or sets 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.
        ///
        /// 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).
        ///
        /// The properties specified must either be required or have a default
        /// value, to ensure those properties are present for all list items.
        /// </summary>
        [JsonProperty(PropertyName = "x-kubernetes-list-map-keys")]
        public IList<string> XKubernetesListMapKeys { get; set; }

        /// <summary>
        /// Gets or sets 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:
        ///
        /// 1) `atomic`: the list is treated as a single entity, like a scalar.
        /// Atomic lists will be entirely replaced when updated. This extension
        /// may be used on any type of list (struct, scalar, ...).
        /// 2) `set`:
        /// Sets are lists that must not have multiple items with the same
        /// value. Each
        /// value must be a scalar, an object with x-kubernetes-map-type
        /// `atomic` or an
        /// array with x-kubernetes-list-type `atomic`.
        /// 3) `map`:
        /// These lists are like maps in that their elements have a non-index
        /// key
        /// used to identify them. Order is preserved upon merge. The map tag
        /// must only be used on a list with elements of type object.
        /// Defaults to atomic for arrays.
        /// </summary>
        [JsonProperty(PropertyName = "x-kubernetes-list-type")]
        public string XKubernetesListType { get; set; }

        /// <summary>
        /// Gets or sets 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:
        ///
        /// 1) `granular`:
        /// These maps are actual maps (key-value pairs) and each fields are
        /// independent
        /// from each other (they can each be manipulated by separate actors).
        /// This is
        /// the default behaviour for all maps.
        /// 2) `atomic`: the list is treated as a single entity, like a scalar.
        /// Atomic maps will be entirely replaced when updated.
        /// </summary>
        [JsonProperty(PropertyName = "x-kubernetes-map-type")]
        public string XKubernetesMapType { get; set; }

        /// <summary>
        /// Gets or sets 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.
        /// </summary>
        [JsonProperty(PropertyName = "x-kubernetes-preserve-unknown-fields")]
        public bool? XKubernetesPreserveUnknownFields { get; set; }

    }
}
