// *** 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;

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 ServiceCustomCertificateArgs extends com.pulumi.resources.ResourceArgs {

    public static final ServiceCustomCertificateArgs Empty = new ServiceCustomCertificateArgs();

    /**
     * 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", required=true)
    private 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 Output<String> customCertificateId() {
        return 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", required=true)
    private 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 Output<String> signalrServiceId() {
        return this.signalrServiceId;
    }

    private ServiceCustomCertificateArgs() {}

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

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

    public static final class Builder {
        private ServiceCustomCertificateArgs $;

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

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

        /**
         * @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(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(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 ServiceCustomCertificateArgs build() {
            $.customCertificateId = Objects.requireNonNull($.customCertificateId, "expected parameter 'customCertificateId' to be non-null");
            $.signalrServiceId = Objects.requireNonNull($.signalrServiceId, "expected parameter 'signalrServiceId' to be non-null");
            return $;
        }
    }

}
