// *** 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.gcp.apigee;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.gcp.apigee.inputs.KeystoresAliasesKeyCertFileCertsInfoArgs;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class KeystoresAliasesKeyCertFileArgs extends com.pulumi.resources.ResourceArgs {

    public static final KeystoresAliasesKeyCertFileArgs Empty = new KeystoresAliasesKeyCertFileArgs();

    /**
     * Alias Name
     * 
     */
    @Import(name="alias", required=true)
    private Output<String> alias;

    /**
     * @return Alias Name
     * 
     */
    public Output<String> alias() {
        return this.alias;
    }

    /**
     * Cert content
     * 
     * ***
     * 
     */
    @Import(name="cert", required=true)
    private Output<String> cert;

    /**
     * @return Cert content
     * 
     * ***
     * 
     */
    public Output<String> cert() {
        return this.cert;
    }

    /**
     * Chain of certificates under this alias.
     * Structure is documented below.
     * 
     */
    @Import(name="certsInfo")
    private @Nullable Output<KeystoresAliasesKeyCertFileCertsInfoArgs> certsInfo;

    /**
     * @return Chain of certificates under this alias.
     * Structure is documented below.
     * 
     */
    public Optional<Output<KeystoresAliasesKeyCertFileCertsInfoArgs>> certsInfo() {
        return Optional.ofNullable(this.certsInfo);
    }

    /**
     * Environment associated with the alias
     * 
     */
    @Import(name="environment", required=true)
    private Output<String> environment;

    /**
     * @return Environment associated with the alias
     * 
     */
    public Output<String> environment() {
        return this.environment;
    }

    /**
     * Private Key content, omit if uploading to truststore
     * 
     */
    @Import(name="key")
    private @Nullable Output<String> key;

    /**
     * @return Private Key content, omit if uploading to truststore
     * 
     */
    public Optional<Output<String>> key() {
        return Optional.ofNullable(this.key);
    }

    /**
     * Keystore Name
     * 
     */
    @Import(name="keystore", required=true)
    private Output<String> keystore;

    /**
     * @return Keystore Name
     * 
     */
    public Output<String> keystore() {
        return this.keystore;
    }

    /**
     * Organization ID associated with the alias, without organization/ prefix
     * 
     */
    @Import(name="orgId", required=true)
    private Output<String> orgId;

    /**
     * @return Organization ID associated with the alias, without organization/ prefix
     * 
     */
    public Output<String> orgId() {
        return this.orgId;
    }

    /**
     * Password for the Private Key if it&#39;s encrypted
     * 
     */
    @Import(name="password")
    private @Nullable Output<String> password;

    /**
     * @return Password for the Private Key if it&#39;s encrypted
     * 
     */
    public Optional<Output<String>> password() {
        return Optional.ofNullable(this.password);
    }

    private KeystoresAliasesKeyCertFileArgs() {}

    private KeystoresAliasesKeyCertFileArgs(KeystoresAliasesKeyCertFileArgs $) {
        this.alias = $.alias;
        this.cert = $.cert;
        this.certsInfo = $.certsInfo;
        this.environment = $.environment;
        this.key = $.key;
        this.keystore = $.keystore;
        this.orgId = $.orgId;
        this.password = $.password;
    }

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

    public static final class Builder {
        private KeystoresAliasesKeyCertFileArgs $;

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

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

        /**
         * @param alias Alias Name
         * 
         * @return builder
         * 
         */
        public Builder alias(Output<String> alias) {
            $.alias = alias;
            return this;
        }

        /**
         * @param alias Alias Name
         * 
         * @return builder
         * 
         */
        public Builder alias(String alias) {
            return alias(Output.of(alias));
        }

        /**
         * @param cert Cert content
         * 
         * ***
         * 
         * @return builder
         * 
         */
        public Builder cert(Output<String> cert) {
            $.cert = cert;
            return this;
        }

        /**
         * @param cert Cert content
         * 
         * ***
         * 
         * @return builder
         * 
         */
        public Builder cert(String cert) {
            return cert(Output.of(cert));
        }

        /**
         * @param certsInfo Chain of certificates under this alias.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder certsInfo(@Nullable Output<KeystoresAliasesKeyCertFileCertsInfoArgs> certsInfo) {
            $.certsInfo = certsInfo;
            return this;
        }

        /**
         * @param certsInfo Chain of certificates under this alias.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder certsInfo(KeystoresAliasesKeyCertFileCertsInfoArgs certsInfo) {
            return certsInfo(Output.of(certsInfo));
        }

        /**
         * @param environment Environment associated with the alias
         * 
         * @return builder
         * 
         */
        public Builder environment(Output<String> environment) {
            $.environment = environment;
            return this;
        }

        /**
         * @param environment Environment associated with the alias
         * 
         * @return builder
         * 
         */
        public Builder environment(String environment) {
            return environment(Output.of(environment));
        }

        /**
         * @param key Private Key content, omit if uploading to truststore
         * 
         * @return builder
         * 
         */
        public Builder key(@Nullable Output<String> key) {
            $.key = key;
            return this;
        }

        /**
         * @param key Private Key content, omit if uploading to truststore
         * 
         * @return builder
         * 
         */
        public Builder key(String key) {
            return key(Output.of(key));
        }

        /**
         * @param keystore Keystore Name
         * 
         * @return builder
         * 
         */
        public Builder keystore(Output<String> keystore) {
            $.keystore = keystore;
            return this;
        }

        /**
         * @param keystore Keystore Name
         * 
         * @return builder
         * 
         */
        public Builder keystore(String keystore) {
            return keystore(Output.of(keystore));
        }

        /**
         * @param orgId Organization ID associated with the alias, without organization/ prefix
         * 
         * @return builder
         * 
         */
        public Builder orgId(Output<String> orgId) {
            $.orgId = orgId;
            return this;
        }

        /**
         * @param orgId Organization ID associated with the alias, without organization/ prefix
         * 
         * @return builder
         * 
         */
        public Builder orgId(String orgId) {
            return orgId(Output.of(orgId));
        }

        /**
         * @param password Password for the Private Key if it&#39;s encrypted
         * 
         * @return builder
         * 
         */
        public Builder password(@Nullable Output<String> password) {
            $.password = password;
            return this;
        }

        /**
         * @param password Password for the Private Key if it&#39;s encrypted
         * 
         * @return builder
         * 
         */
        public Builder password(String password) {
            return password(Output.of(password));
        }

        public KeystoresAliasesKeyCertFileArgs build() {
            $.alias = Objects.requireNonNull($.alias, "expected parameter 'alias' to be non-null");
            $.cert = Objects.requireNonNull($.cert, "expected parameter 'cert' to be non-null");
            $.environment = Objects.requireNonNull($.environment, "expected parameter 'environment' to be non-null");
            $.keystore = Objects.requireNonNull($.keystore, "expected parameter 'keystore' to be non-null");
            $.orgId = Objects.requireNonNull($.orgId, "expected parameter 'orgId' to be non-null");
            return $;
        }
    }

}
