// *** 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.certificatemanager.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;


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

    public static final CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs Empty = new CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs();

    /**
     * A CA pool resource used to issue a certificate.
     * The CA pool string has a relative resource path following the form
     * &#34;projects/{project}/locations/{location}/caPools/{caPool}&#34;.
     * 
     * ***
     * 
     */
    @Import(name="caPool", required=true)
    private Output<String> caPool;

    /**
     * @return A CA pool resource used to issue a certificate.
     * The CA pool string has a relative resource path following the form
     * &#34;projects/{project}/locations/{location}/caPools/{caPool}&#34;.
     * 
     * ***
     * 
     */
    public Output<String> caPool() {
        return this.caPool;
    }

    private CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs() {}

    private CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs(CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs $) {
        this.caPool = $.caPool;
    }

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

    public static final class Builder {
        private CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs $;

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

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

        /**
         * @param caPool A CA pool resource used to issue a certificate.
         * The CA pool string has a relative resource path following the form
         * &#34;projects/{project}/locations/{location}/caPools/{caPool}&#34;.
         * 
         * ***
         * 
         * @return builder
         * 
         */
        public Builder caPool(Output<String> caPool) {
            $.caPool = caPool;
            return this;
        }

        /**
         * @param caPool A CA pool resource used to issue a certificate.
         * The CA pool string has a relative resource path following the form
         * &#34;projects/{project}/locations/{location}/caPools/{caPool}&#34;.
         * 
         * ***
         * 
         * @return builder
         * 
         */
        public Builder caPool(String caPool) {
            return caPool(Output.of(caPool));
        }

        public CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs build() {
            $.caPool = Objects.requireNonNull($.caPool, "expected parameter 'caPool' to be non-null");
            return $;
        }
    }

}
