// *** 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.appservice.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 StaticSiteCustomDomainState extends com.pulumi.resources.ResourceArgs {

    public static final StaticSiteCustomDomainState Empty = new StaticSiteCustomDomainState();

    /**
     * The Domain Name which should be associated with this Static Site. Changing this forces a new Static Site Custom Domain to be created.
     * 
     */
    @Import(name="domainName")
    private @Nullable Output<String> domainName;

    /**
     * @return The Domain Name which should be associated with this Static Site. Changing this forces a new Static Site Custom Domain to be created.
     * 
     */
    public Optional<Output<String>> domainName() {
        return Optional.ofNullable(this.domainName);
    }

    /**
     * The ID of the Static Site. Changing this forces a new Static Site Custom Domain to be created.
     * 
     */
    @Import(name="staticSiteId")
    private @Nullable Output<String> staticSiteId;

    /**
     * @return The ID of the Static Site. Changing this forces a new Static Site Custom Domain to be created.
     * 
     */
    public Optional<Output<String>> staticSiteId() {
        return Optional.ofNullable(this.staticSiteId);
    }

    /**
     * Token to be used with `dns-txt-token` validation.
     * 
     */
    @Import(name="validationToken")
    private @Nullable Output<String> validationToken;

    /**
     * @return Token to be used with `dns-txt-token` validation.
     * 
     */
    public Optional<Output<String>> validationToken() {
        return Optional.ofNullable(this.validationToken);
    }

    /**
     * One of `cname-delegation` or `dns-txt-token`. Changing this forces a new Static Site Custom Domain to be created.
     * 
     */
    @Import(name="validationType")
    private @Nullable Output<String> validationType;

    /**
     * @return One of `cname-delegation` or `dns-txt-token`. Changing this forces a new Static Site Custom Domain to be created.
     * 
     */
    public Optional<Output<String>> validationType() {
        return Optional.ofNullable(this.validationType);
    }

    private StaticSiteCustomDomainState() {}

    private StaticSiteCustomDomainState(StaticSiteCustomDomainState $) {
        this.domainName = $.domainName;
        this.staticSiteId = $.staticSiteId;
        this.validationToken = $.validationToken;
        this.validationType = $.validationType;
    }

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

    public static final class Builder {
        private StaticSiteCustomDomainState $;

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

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

        /**
         * @param domainName The Domain Name which should be associated with this Static Site. Changing this forces a new Static Site Custom Domain to be created.
         * 
         * @return builder
         * 
         */
        public Builder domainName(@Nullable Output<String> domainName) {
            $.domainName = domainName;
            return this;
        }

        /**
         * @param domainName The Domain Name which should be associated with this Static Site. Changing this forces a new Static Site Custom Domain to be created.
         * 
         * @return builder
         * 
         */
        public Builder domainName(String domainName) {
            return domainName(Output.of(domainName));
        }

        /**
         * @param staticSiteId The ID of the Static Site. Changing this forces a new Static Site Custom Domain to be created.
         * 
         * @return builder
         * 
         */
        public Builder staticSiteId(@Nullable Output<String> staticSiteId) {
            $.staticSiteId = staticSiteId;
            return this;
        }

        /**
         * @param staticSiteId The ID of the Static Site. Changing this forces a new Static Site Custom Domain to be created.
         * 
         * @return builder
         * 
         */
        public Builder staticSiteId(String staticSiteId) {
            return staticSiteId(Output.of(staticSiteId));
        }

        /**
         * @param validationToken Token to be used with `dns-txt-token` validation.
         * 
         * @return builder
         * 
         */
        public Builder validationToken(@Nullable Output<String> validationToken) {
            $.validationToken = validationToken;
            return this;
        }

        /**
         * @param validationToken Token to be used with `dns-txt-token` validation.
         * 
         * @return builder
         * 
         */
        public Builder validationToken(String validationToken) {
            return validationToken(Output.of(validationToken));
        }

        /**
         * @param validationType One of `cname-delegation` or `dns-txt-token`. Changing this forces a new Static Site Custom Domain to be created.
         * 
         * @return builder
         * 
         */
        public Builder validationType(@Nullable Output<String> validationType) {
            $.validationType = validationType;
            return this;
        }

        /**
         * @param validationType One of `cname-delegation` or `dns-txt-token`. Changing this forces a new Static Site Custom Domain to be created.
         * 
         * @return builder
         * 
         */
        public Builder validationType(String validationType) {
            return validationType(Output.of(validationType));
        }

        public StaticSiteCustomDomainState build() {
            return $;
        }
    }

}
