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

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


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

    public static final ServiceCustomCertificateState Empty = new ServiceCustomCertificateState();

    /**
     * The certificate version of the SignalR Custom Certificate service.
     * 
     */
    @Import(name="certificateVersion")
    private @Nullable Output<String> certificateVersion;

    /**
     * @return The certificate version of the SignalR Custom Certificate service.
     * 
     */
    public Optional<Output<String>> certificateVersion() {
        return Optional.ofNullable(this.certificateVersion);
    }

    /**
     * The certificate id of the SignalR Custom Certificate service. Changing this forces a new resource to be created.
     * 
     * &gt; **Note:** Self assigned certificate is not supported and the provisioning status will fail.
     * 
     */
    @Import(name="customCertificateId")
    private @Nullable Output<String> customCertificateId;

    /**
     * @return The certificate id of the SignalR Custom Certificate service. Changing this forces a new resource to be created.
     * 
     * &gt; **Note:** Self assigned certificate is not supported and the provisioning status will fail.
     * 
     */
    public Optional<Output<String>> customCertificateId() {
        return Optional.ofNullable(this.customCertificateId);
    }

    /**
     * The name of the SignalR Custom Certificate. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="name")
    private @Nullable Output<String> name;

    /**
     * @return The name of the SignalR Custom Certificate. Changing this forces a new resource to be created.
     * 
     */
    public Optional<Output<String>> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * The SignalR ID of the SignalR Custom Certificate. Changing this forces a new resource to be created.
     * 
     * &gt; **Note:** Custom Certificate is only available for SignalR Premium tier. Please enable managed identity in the corresponding SignalR Service and give the managed identity access to the key vault, the required permission is Get Certificate and Secret.
     * 
     */
    @Import(name="signalrServiceId")
    private @Nullable Output<String> signalrServiceId;

    /**
     * @return The SignalR ID of the SignalR Custom Certificate. Changing this forces a new resource to be created.
     * 
     * &gt; **Note:** Custom Certificate is only available for SignalR Premium tier. Please enable managed identity in the corresponding SignalR Service and give the managed identity access to the key vault, the required permission is Get Certificate and Secret.
     * 
     */
    public Optional<Output<String>> signalrServiceId() {
        return Optional.ofNullable(this.signalrServiceId);
    }

    private ServiceCustomCertificateState() {}

    private ServiceCustomCertificateState(ServiceCustomCertificateState $) {
        this.certificateVersion = $.certificateVersion;
        this.customCertificateId = $.customCertificateId;
        this.name = $.name;
        this.signalrServiceId = $.signalrServiceId;
    }

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

    public static final class Builder {
        private ServiceCustomCertificateState $;

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

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

        /**
         * @param certificateVersion The certificate version of the SignalR Custom Certificate service.
         * 
         * @return builder
         * 
         */
        public Builder certificateVersion(@Nullable Output<String> certificateVersion) {
            $.certificateVersion = certificateVersion;
            return this;
        }

        /**
         * @param certificateVersion The certificate version of the SignalR Custom Certificate service.
         * 
         * @return builder
         * 
         */
        public Builder certificateVersion(String certificateVersion) {
            return certificateVersion(Output.of(certificateVersion));
        }

        /**
         * @param customCertificateId The certificate id of the SignalR Custom Certificate service. Changing this forces a new resource to be created.
         * 
         * &gt; **Note:** Self assigned certificate is not supported and the provisioning status will fail.
         * 
         * @return builder
         * 
         */
        public Builder customCertificateId(@Nullable Output<String> customCertificateId) {
            $.customCertificateId = customCertificateId;
            return this;
        }

        /**
         * @param customCertificateId The certificate id of the SignalR Custom Certificate service. Changing this forces a new resource to be created.
         * 
         * &gt; **Note:** Self assigned certificate is not supported and the provisioning status will fail.
         * 
         * @return builder
         * 
         */
        public Builder customCertificateId(String customCertificateId) {
            return customCertificateId(Output.of(customCertificateId));
        }

        /**
         * @param name The name of the SignalR Custom Certificate. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output<String> name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name of the SignalR Custom Certificate. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param signalrServiceId The SignalR ID of the SignalR Custom Certificate. Changing this forces a new resource to be created.
         * 
         * &gt; **Note:** Custom Certificate is only available for SignalR Premium tier. Please enable managed identity in the corresponding SignalR Service and give the managed identity access to the key vault, the required permission is Get Certificate and Secret.
         * 
         * @return builder
         * 
         */
        public Builder signalrServiceId(@Nullable Output<String> signalrServiceId) {
            $.signalrServiceId = signalrServiceId;
            return this;
        }

        /**
         * @param signalrServiceId The SignalR ID of the SignalR Custom Certificate. Changing this forces a new resource to be created.
         * 
         * &gt; **Note:** Custom Certificate is only available for SignalR Premium tier. Please enable managed identity in the corresponding SignalR Service and give the managed identity access to the key vault, the required permission is Get Certificate and Secret.
         * 
         * @return builder
         * 
         */
        public Builder signalrServiceId(String signalrServiceId) {
            return signalrServiceId(Output.of(signalrServiceId));
        }

        public ServiceCustomCertificateState build() {
            return $;
        }
    }

}
