All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.kubernetes.apiextensions.v1.inputs.JSONSchemaPropsArgs Maven / Gradle / Ivy

There is a newer version: 4.19.0-alpha.1730750641
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.kubernetes.apiextensions.v1.inputs;

import com.google.gson.JsonElement;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.kubernetes.apiextensions.v1.inputs.ExternalDocumentationArgs;
import com.pulumi.kubernetes.apiextensions.v1.inputs.ValidationRuleArgs;
import java.lang.Boolean;
import java.lang.Double;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


/**
 * JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).
 * 
 */
public final class JSONSchemaPropsArgs extends com.pulumi.resources.ResourceArgs {

    public static final JSONSchemaPropsArgs Empty = new JSONSchemaPropsArgs();

    @Import(name="$ref")
    private @Nullable Output $ref;

    public Optional> $ref() {
        return Optional.ofNullable(this.$ref);
    }

    @Import(name="$schema")
    private @Nullable Output $schema;

    public Optional> $schema() {
        return Optional.ofNullable(this.$schema);
    }

    @Import(name="additionalItems")
    private @Nullable Output> additionalItems;

    public Optional>> additionalItems() {
        return Optional.ofNullable(this.additionalItems);
    }

    @Import(name="additionalProperties")
    private @Nullable Output> additionalProperties;

    public Optional>> additionalProperties() {
        return Optional.ofNullable(this.additionalProperties);
    }

    @Import(name="allOf")
    private @Nullable Output> allOf;

    public Optional>> allOf() {
        return Optional.ofNullable(this.allOf);
    }

    @Import(name="anyOf")
    private @Nullable Output> anyOf;

    public Optional>> anyOf() {
        return Optional.ofNullable(this.anyOf);
    }

    /**
     * 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.
     * 
     */
    @Import(name="default")
    private @Nullable Output default_;

    /**
     * @return 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.
     * 
     */
    public Optional> default_() {
        return Optional.ofNullable(this.default_);
    }

    @Import(name="definitions")
    private @Nullable Output> definitions;

    public Optional>> definitions() {
        return Optional.ofNullable(this.definitions);
    }

    @Import(name="dependencies")
    private @Nullable Output>>> dependencies;

    public Optional>>>> dependencies() {
        return Optional.ofNullable(this.dependencies);
    }

    @Import(name="description")
    private @Nullable Output description;

    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    @Import(name="enum")
    private @Nullable Output> enum_;

    public Optional>> enum_() {
        return Optional.ofNullable(this.enum_);
    }

    @Import(name="example")
    private @Nullable Output example;

    public Optional> example() {
        return Optional.ofNullable(this.example);
    }

    @Import(name="exclusiveMaximum")
    private @Nullable Output exclusiveMaximum;

    public Optional> exclusiveMaximum() {
        return Optional.ofNullable(this.exclusiveMaximum);
    }

    @Import(name="exclusiveMinimum")
    private @Nullable Output exclusiveMinimum;

    public Optional> exclusiveMinimum() {
        return Optional.ofNullable(this.exclusiveMinimum);
    }

    @Import(name="externalDocs")
    private @Nullable Output externalDocs;

    public Optional> externalDocs() {
        return Optional.ofNullable(this.externalDocs);
    }

    /**
     * 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.
     * 
     */
    @Import(name="format")
    private @Nullable Output format;

    /**
     * @return 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.
     * 
     */
    public Optional> format() {
        return Optional.ofNullable(this.format);
    }

    @Import(name="id")
    private @Nullable Output id;

    public Optional> id() {
        return Optional.ofNullable(this.id);
    }

    @Import(name="items")
    private @Nullable Output>> items;

    public Optional>>> items() {
        return Optional.ofNullable(this.items);
    }

    @Import(name="maxItems")
    private @Nullable Output maxItems;

    public Optional> maxItems() {
        return Optional.ofNullable(this.maxItems);
    }

    @Import(name="maxLength")
    private @Nullable Output maxLength;

    public Optional> maxLength() {
        return Optional.ofNullable(this.maxLength);
    }

    @Import(name="maxProperties")
    private @Nullable Output maxProperties;

    public Optional> maxProperties() {
        return Optional.ofNullable(this.maxProperties);
    }

    @Import(name="maximum")
    private @Nullable Output maximum;

    public Optional> maximum() {
        return Optional.ofNullable(this.maximum);
    }

    @Import(name="minItems")
    private @Nullable Output minItems;

    public Optional> minItems() {
        return Optional.ofNullable(this.minItems);
    }

    @Import(name="minLength")
    private @Nullable Output minLength;

    public Optional> minLength() {
        return Optional.ofNullable(this.minLength);
    }

    @Import(name="minProperties")
    private @Nullable Output minProperties;

    public Optional> minProperties() {
        return Optional.ofNullable(this.minProperties);
    }

    @Import(name="minimum")
    private @Nullable Output minimum;

    public Optional> minimum() {
        return Optional.ofNullable(this.minimum);
    }

    @Import(name="multipleOf")
    private @Nullable Output multipleOf;

    public Optional> multipleOf() {
        return Optional.ofNullable(this.multipleOf);
    }

    @Import(name="not")
    private @Nullable Output not;

    public Optional> not() {
        return Optional.ofNullable(this.not);
    }

    @Import(name="nullable")
    private @Nullable Output nullable;

    public Optional> nullable() {
        return Optional.ofNullable(this.nullable);
    }

    @Import(name="oneOf")
    private @Nullable Output> oneOf;

    public Optional>> oneOf() {
        return Optional.ofNullable(this.oneOf);
    }

    @Import(name="pattern")
    private @Nullable Output pattern;

    public Optional> pattern() {
        return Optional.ofNullable(this.pattern);
    }

    @Import(name="patternProperties")
    private @Nullable Output> patternProperties;

    public Optional>> patternProperties() {
        return Optional.ofNullable(this.patternProperties);
    }

    @Import(name="properties")
    private @Nullable Output> properties;

    public Optional>> properties() {
        return Optional.ofNullable(this.properties);
    }

    @Import(name="required")
    private @Nullable Output> required;

    public Optional>> required() {
        return Optional.ofNullable(this.required);
    }

    @Import(name="title")
    private @Nullable Output title;

    public Optional> title() {
        return Optional.ofNullable(this.title);
    }

    @Import(name="type")
    private @Nullable Output type;

    public Optional> type() {
        return Optional.ofNullable(this.type);
    }

    @Import(name="uniqueItems")
    private @Nullable Output uniqueItems;

    public Optional> uniqueItems() {
        return Optional.ofNullable(this.uniqueItems);
    }

    /**
     * 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).
     * 
     */
    @Import(name="x_kubernetes_embedded_resource")
    private @Nullable Output x_kubernetes_embedded_resource;

    /**
     * @return 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).
     * 
     */
    public Optional> x_kubernetes_embedded_resource() {
        return Optional.ofNullable(this.x_kubernetes_embedded_resource);
    }

    /**
     * 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
     * 
     */
    @Import(name="x_kubernetes_int_or_string")
    private @Nullable Output x_kubernetes_int_or_string;

    /**
     * @return 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
     * 
     */
    public Optional> x_kubernetes_int_or_string() {
        return Optional.ofNullable(this.x_kubernetes_int_or_string);
    }

    /**
     * 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.
     * 
     */
    @Import(name="x_kubernetes_list_map_keys")
    private @Nullable Output> x_kubernetes_list_map_keys;

    /**
     * @return 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.
     * 
     */
    public Optional>> x_kubernetes_list_map_keys() {
        return Optional.ofNullable(this.x_kubernetes_list_map_keys);
    }

    /**
     * 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.
     * 
     */
    @Import(name="x_kubernetes_list_type")
    private @Nullable Output x_kubernetes_list_type;

    /**
     * @return 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.
     * 
     */
    public Optional> x_kubernetes_list_type() {
        return Optional.ofNullable(this.x_kubernetes_list_type);
    }

    /**
     * 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.
     * 
     */
    @Import(name="x_kubernetes_map_type")
    private @Nullable Output x_kubernetes_map_type;

    /**
     * @return 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.
     * 
     */
    public Optional> x_kubernetes_map_type() {
        return Optional.ofNullable(this.x_kubernetes_map_type);
    }

    /**
     * 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.
     * 
     */
    @Import(name="x_kubernetes_preserve_unknown_fields")
    private @Nullable Output x_kubernetes_preserve_unknown_fields;

    /**
     * @return 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.
     * 
     */
    public Optional> x_kubernetes_preserve_unknown_fields() {
        return Optional.ofNullable(this.x_kubernetes_preserve_unknown_fields);
    }

    /**
     * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * 
     */
    @Import(name="x_kubernetes_validations")
    private @Nullable Output> x_kubernetes_validations;

    /**
     * @return x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * 
     */
    public Optional>> x_kubernetes_validations() {
        return Optional.ofNullable(this.x_kubernetes_validations);
    }

    private JSONSchemaPropsArgs() {}

    private JSONSchemaPropsArgs(JSONSchemaPropsArgs $) {
        this.$ref = $.$ref;
        this.$schema = $.$schema;
        this.additionalItems = $.additionalItems;
        this.additionalProperties = $.additionalProperties;
        this.allOf = $.allOf;
        this.anyOf = $.anyOf;
        this.default_ = $.default_;
        this.definitions = $.definitions;
        this.dependencies = $.dependencies;
        this.description = $.description;
        this.enum_ = $.enum_;
        this.example = $.example;
        this.exclusiveMaximum = $.exclusiveMaximum;
        this.exclusiveMinimum = $.exclusiveMinimum;
        this.externalDocs = $.externalDocs;
        this.format = $.format;
        this.id = $.id;
        this.items = $.items;
        this.maxItems = $.maxItems;
        this.maxLength = $.maxLength;
        this.maxProperties = $.maxProperties;
        this.maximum = $.maximum;
        this.minItems = $.minItems;
        this.minLength = $.minLength;
        this.minProperties = $.minProperties;
        this.minimum = $.minimum;
        this.multipleOf = $.multipleOf;
        this.not = $.not;
        this.nullable = $.nullable;
        this.oneOf = $.oneOf;
        this.pattern = $.pattern;
        this.patternProperties = $.patternProperties;
        this.properties = $.properties;
        this.required = $.required;
        this.title = $.title;
        this.type = $.type;
        this.uniqueItems = $.uniqueItems;
        this.x_kubernetes_embedded_resource = $.x_kubernetes_embedded_resource;
        this.x_kubernetes_int_or_string = $.x_kubernetes_int_or_string;
        this.x_kubernetes_list_map_keys = $.x_kubernetes_list_map_keys;
        this.x_kubernetes_list_type = $.x_kubernetes_list_type;
        this.x_kubernetes_map_type = $.x_kubernetes_map_type;
        this.x_kubernetes_preserve_unknown_fields = $.x_kubernetes_preserve_unknown_fields;
        this.x_kubernetes_validations = $.x_kubernetes_validations;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(JSONSchemaPropsArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private JSONSchemaPropsArgs $;

        public Builder() {
            $ = new JSONSchemaPropsArgs();
        }

        public Builder(JSONSchemaPropsArgs defaults) {
            $ = new JSONSchemaPropsArgs(Objects.requireNonNull(defaults));
        }

        public Builder $ref(@Nullable Output $ref) {
            $.$ref = $ref;
            return this;
        }

        public Builder $ref(String $ref) {
            return $ref(Output.of($ref));
        }

        public Builder $schema(@Nullable Output $schema) {
            $.$schema = $schema;
            return this;
        }

        public Builder $schema(String $schema) {
            return $schema(Output.of($schema));
        }

        public Builder additionalItems(@Nullable Output> additionalItems) {
            $.additionalItems = additionalItems;
            return this;
        }

        public Builder additionalItems(Either additionalItems) {
            return additionalItems(Output.of(additionalItems));
        }

        public Builder additionalItems(JSONSchemaPropsArgs additionalItems) {
            return additionalItems(Either.ofLeft(additionalItems));
        }

        public Builder additionalItems(Boolean additionalItems) {
            return additionalItems(Either.ofRight(additionalItems));
        }

        public Builder additionalProperties(@Nullable Output> additionalProperties) {
            $.additionalProperties = additionalProperties;
            return this;
        }

        public Builder additionalProperties(Either additionalProperties) {
            return additionalProperties(Output.of(additionalProperties));
        }

        public Builder additionalProperties(JSONSchemaPropsArgs additionalProperties) {
            return additionalProperties(Either.ofLeft(additionalProperties));
        }

        public Builder additionalProperties(Boolean additionalProperties) {
            return additionalProperties(Either.ofRight(additionalProperties));
        }

        public Builder allOf(@Nullable Output> allOf) {
            $.allOf = allOf;
            return this;
        }

        public Builder allOf(List allOf) {
            return allOf(Output.of(allOf));
        }

        public Builder allOf(JSONSchemaPropsArgs... allOf) {
            return allOf(List.of(allOf));
        }

        public Builder anyOf(@Nullable Output> anyOf) {
            $.anyOf = anyOf;
            return this;
        }

        public Builder anyOf(List anyOf) {
            return anyOf(Output.of(anyOf));
        }

        public Builder anyOf(JSONSchemaPropsArgs... anyOf) {
            return anyOf(List.of(anyOf));
        }

        /**
         * @param default_ 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.
         * 
         * @return builder
         * 
         */
        public Builder default_(@Nullable Output default_) {
            $.default_ = default_;
            return this;
        }

        /**
         * @param default_ 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.
         * 
         * @return builder
         * 
         */
        public Builder default_(JsonElement default_) {
            return default_(Output.of(default_));
        }

        public Builder definitions(@Nullable Output> definitions) {
            $.definitions = definitions;
            return this;
        }

        public Builder definitions(Map definitions) {
            return definitions(Output.of(definitions));
        }

        public Builder dependencies(@Nullable Output>>> dependencies) {
            $.dependencies = dependencies;
            return this;
        }

        public Builder dependencies(Map>> dependencies) {
            return dependencies(Output.of(dependencies));
        }

        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        public Builder description(String description) {
            return description(Output.of(description));
        }

        public Builder enum_(@Nullable Output> enum_) {
            $.enum_ = enum_;
            return this;
        }

        public Builder enum_(List enum_) {
            return enum_(Output.of(enum_));
        }

        public Builder enum_(JsonElement... enum_) {
            return enum_(List.of(enum_));
        }

        public Builder example(@Nullable Output example) {
            $.example = example;
            return this;
        }

        public Builder example(JsonElement example) {
            return example(Output.of(example));
        }

        public Builder exclusiveMaximum(@Nullable Output exclusiveMaximum) {
            $.exclusiveMaximum = exclusiveMaximum;
            return this;
        }

        public Builder exclusiveMaximum(Boolean exclusiveMaximum) {
            return exclusiveMaximum(Output.of(exclusiveMaximum));
        }

        public Builder exclusiveMinimum(@Nullable Output exclusiveMinimum) {
            $.exclusiveMinimum = exclusiveMinimum;
            return this;
        }

        public Builder exclusiveMinimum(Boolean exclusiveMinimum) {
            return exclusiveMinimum(Output.of(exclusiveMinimum));
        }

        public Builder externalDocs(@Nullable Output externalDocs) {
            $.externalDocs = externalDocs;
            return this;
        }

        public Builder externalDocs(ExternalDocumentationArgs externalDocs) {
            return externalDocs(Output.of(externalDocs));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder format(@Nullable Output format) {
            $.format = format;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder format(String format) {
            return format(Output.of(format));
        }

        public Builder id(@Nullable Output id) {
            $.id = id;
            return this;
        }

        public Builder id(String id) {
            return id(Output.of(id));
        }

        public Builder items(@Nullable Output>> items) {
            $.items = items;
            return this;
        }

        public Builder items(Either> items) {
            return items(Output.of(items));
        }

        public Builder items(JSONSchemaPropsArgs items) {
            return items(Either.ofLeft(items));
        }

        public Builder items(List items) {
            return items(Either.ofRight(items));
        }

        public Builder maxItems(@Nullable Output maxItems) {
            $.maxItems = maxItems;
            return this;
        }

        public Builder maxItems(Integer maxItems) {
            return maxItems(Output.of(maxItems));
        }

        public Builder maxLength(@Nullable Output maxLength) {
            $.maxLength = maxLength;
            return this;
        }

        public Builder maxLength(Integer maxLength) {
            return maxLength(Output.of(maxLength));
        }

        public Builder maxProperties(@Nullable Output maxProperties) {
            $.maxProperties = maxProperties;
            return this;
        }

        public Builder maxProperties(Integer maxProperties) {
            return maxProperties(Output.of(maxProperties));
        }

        public Builder maximum(@Nullable Output maximum) {
            $.maximum = maximum;
            return this;
        }

        public Builder maximum(Double maximum) {
            return maximum(Output.of(maximum));
        }

        public Builder minItems(@Nullable Output minItems) {
            $.minItems = minItems;
            return this;
        }

        public Builder minItems(Integer minItems) {
            return minItems(Output.of(minItems));
        }

        public Builder minLength(@Nullable Output minLength) {
            $.minLength = minLength;
            return this;
        }

        public Builder minLength(Integer minLength) {
            return minLength(Output.of(minLength));
        }

        public Builder minProperties(@Nullable Output minProperties) {
            $.minProperties = minProperties;
            return this;
        }

        public Builder minProperties(Integer minProperties) {
            return minProperties(Output.of(minProperties));
        }

        public Builder minimum(@Nullable Output minimum) {
            $.minimum = minimum;
            return this;
        }

        public Builder minimum(Double minimum) {
            return minimum(Output.of(minimum));
        }

        public Builder multipleOf(@Nullable Output multipleOf) {
            $.multipleOf = multipleOf;
            return this;
        }

        public Builder multipleOf(Double multipleOf) {
            return multipleOf(Output.of(multipleOf));
        }

        public Builder not(@Nullable Output not) {
            $.not = not;
            return this;
        }

        public Builder not(JSONSchemaPropsArgs not) {
            return not(Output.of(not));
        }

        public Builder nullable(@Nullable Output nullable) {
            $.nullable = nullable;
            return this;
        }

        public Builder nullable(Boolean nullable) {
            return nullable(Output.of(nullable));
        }

        public Builder oneOf(@Nullable Output> oneOf) {
            $.oneOf = oneOf;
            return this;
        }

        public Builder oneOf(List oneOf) {
            return oneOf(Output.of(oneOf));
        }

        public Builder oneOf(JSONSchemaPropsArgs... oneOf) {
            return oneOf(List.of(oneOf));
        }

        public Builder pattern(@Nullable Output pattern) {
            $.pattern = pattern;
            return this;
        }

        public Builder pattern(String pattern) {
            return pattern(Output.of(pattern));
        }

        public Builder patternProperties(@Nullable Output> patternProperties) {
            $.patternProperties = patternProperties;
            return this;
        }

        public Builder patternProperties(Map patternProperties) {
            return patternProperties(Output.of(patternProperties));
        }

        public Builder properties(@Nullable Output> properties) {
            $.properties = properties;
            return this;
        }

        public Builder properties(Map properties) {
            return properties(Output.of(properties));
        }

        public Builder required(@Nullable Output> required) {
            $.required = required;
            return this;
        }

        public Builder required(List required) {
            return required(Output.of(required));
        }

        public Builder required(String... required) {
            return required(List.of(required));
        }

        public Builder title(@Nullable Output title) {
            $.title = title;
            return this;
        }

        public Builder title(String title) {
            return title(Output.of(title));
        }

        public Builder type(@Nullable Output type) {
            $.type = type;
            return this;
        }

        public Builder type(String type) {
            return type(Output.of(type));
        }

        public Builder uniqueItems(@Nullable Output uniqueItems) {
            $.uniqueItems = uniqueItems;
            return this;
        }

        public Builder uniqueItems(Boolean uniqueItems) {
            return uniqueItems(Output.of(uniqueItems));
        }

        /**
         * @param x_kubernetes_embedded_resource 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).
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_embedded_resource(@Nullable Output x_kubernetes_embedded_resource) {
            $.x_kubernetes_embedded_resource = x_kubernetes_embedded_resource;
            return this;
        }

        /**
         * @param x_kubernetes_embedded_resource 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).
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_embedded_resource(Boolean x_kubernetes_embedded_resource) {
            return x_kubernetes_embedded_resource(Output.of(x_kubernetes_embedded_resource));
        }

        /**
         * @param x_kubernetes_int_or_string 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
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_int_or_string(@Nullable Output x_kubernetes_int_or_string) {
            $.x_kubernetes_int_or_string = x_kubernetes_int_or_string;
            return this;
        }

        /**
         * @param x_kubernetes_int_or_string 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
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_int_or_string(Boolean x_kubernetes_int_or_string) {
            return x_kubernetes_int_or_string(Output.of(x_kubernetes_int_or_string));
        }

        /**
         * @param x_kubernetes_list_map_keys 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.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_list_map_keys(@Nullable Output> x_kubernetes_list_map_keys) {
            $.x_kubernetes_list_map_keys = x_kubernetes_list_map_keys;
            return this;
        }

        /**
         * @param x_kubernetes_list_map_keys 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.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_list_map_keys(List x_kubernetes_list_map_keys) {
            return x_kubernetes_list_map_keys(Output.of(x_kubernetes_list_map_keys));
        }

        /**
         * @param x_kubernetes_list_map_keys 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.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_list_map_keys(String... x_kubernetes_list_map_keys) {
            return x_kubernetes_list_map_keys(List.of(x_kubernetes_list_map_keys));
        }

        /**
         * @param x_kubernetes_list_type 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.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_list_type(@Nullable Output x_kubernetes_list_type) {
            $.x_kubernetes_list_type = x_kubernetes_list_type;
            return this;
        }

        /**
         * @param x_kubernetes_list_type 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.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_list_type(String x_kubernetes_list_type) {
            return x_kubernetes_list_type(Output.of(x_kubernetes_list_type));
        }

        /**
         * @param x_kubernetes_map_type 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.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_map_type(@Nullable Output x_kubernetes_map_type) {
            $.x_kubernetes_map_type = x_kubernetes_map_type;
            return this;
        }

        /**
         * @param x_kubernetes_map_type 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.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_map_type(String x_kubernetes_map_type) {
            return x_kubernetes_map_type(Output.of(x_kubernetes_map_type));
        }

        /**
         * @param x_kubernetes_preserve_unknown_fields 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.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_preserve_unknown_fields(@Nullable Output x_kubernetes_preserve_unknown_fields) {
            $.x_kubernetes_preserve_unknown_fields = x_kubernetes_preserve_unknown_fields;
            return this;
        }

        /**
         * @param x_kubernetes_preserve_unknown_fields 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.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_preserve_unknown_fields(Boolean x_kubernetes_preserve_unknown_fields) {
            return x_kubernetes_preserve_unknown_fields(Output.of(x_kubernetes_preserve_unknown_fields));
        }

        /**
         * @param x_kubernetes_validations x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_validations(@Nullable Output> x_kubernetes_validations) {
            $.x_kubernetes_validations = x_kubernetes_validations;
            return this;
        }

        /**
         * @param x_kubernetes_validations x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_validations(List x_kubernetes_validations) {
            return x_kubernetes_validations(Output.of(x_kubernetes_validations));
        }

        /**
         * @param x_kubernetes_validations x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
         * 
         * @return builder
         * 
         */
        public Builder x_kubernetes_validations(ValidationRuleArgs... x_kubernetes_validations) {
            return x_kubernetes_validations(List.of(x_kubernetes_validations));
        }

        public JSONSchemaPropsArgs build() {
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy