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

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


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

    public static final FrontdoorProfileState Empty = new FrontdoorProfileState();

    /**
     * Specifies the name of the Front Door Profile. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="name")
    private @Nullable Output<String> name;

    /**
     * @return Specifies the name of the Front Door Profile. Changing this forces a new resource to be created.
     * 
     */
    public Optional<Output<String>> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * The name of the Resource Group where this Front Door Profile should exist. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="resourceGroupName")
    private @Nullable Output<String> resourceGroupName;

    /**
     * @return The name of the Resource Group where this Front Door Profile should exist. Changing this forces a new resource to be created.
     * 
     */
    public Optional<Output<String>> resourceGroupName() {
        return Optional.ofNullable(this.resourceGroupName);
    }

    /**
     * The UUID of this Front Door Profile which will be sent in the HTTP Header as the `X-Azure-FDID` attribute.
     * 
     */
    @Import(name="resourceGuid")
    private @Nullable Output<String> resourceGuid;

    /**
     * @return The UUID of this Front Door Profile which will be sent in the HTTP Header as the `X-Azure-FDID` attribute.
     * 
     */
    public Optional<Output<String>> resourceGuid() {
        return Optional.ofNullable(this.resourceGuid);
    }

    /**
     * Specifies the maximum response timeout in seconds. Possible values are between `16` and `240` seconds (inclusive). Defaults to `120` seconds.
     * 
     */
    @Import(name="responseTimeoutSeconds")
    private @Nullable Output<Integer> responseTimeoutSeconds;

    /**
     * @return Specifies the maximum response timeout in seconds. Possible values are between `16` and `240` seconds (inclusive). Defaults to `120` seconds.
     * 
     */
    public Optional<Output<Integer>> responseTimeoutSeconds() {
        return Optional.ofNullable(this.responseTimeoutSeconds);
    }

    /**
     * Specifies the SKU for this Front Door Profile. Possible values include `Standard_AzureFrontDoor` and `Premium_AzureFrontDoor`. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="skuName")
    private @Nullable Output<String> skuName;

    /**
     * @return Specifies the SKU for this Front Door Profile. Possible values include `Standard_AzureFrontDoor` and `Premium_AzureFrontDoor`. Changing this forces a new resource to be created.
     * 
     */
    public Optional<Output<String>> skuName() {
        return Optional.ofNullable(this.skuName);
    }

    /**
     * Specifies a mapping of tags to assign to the resource.
     * 
     */
    @Import(name="tags")
    private @Nullable Output<Map<String,String>> tags;

    /**
     * @return Specifies a mapping of tags to assign to the resource.
     * 
     */
    public Optional<Output<Map<String,String>>> tags() {
        return Optional.ofNullable(this.tags);
    }

    private FrontdoorProfileState() {}

    private FrontdoorProfileState(FrontdoorProfileState $) {
        this.name = $.name;
        this.resourceGroupName = $.resourceGroupName;
        this.resourceGuid = $.resourceGuid;
        this.responseTimeoutSeconds = $.responseTimeoutSeconds;
        this.skuName = $.skuName;
        this.tags = $.tags;
    }

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

    public static final class Builder {
        private FrontdoorProfileState $;

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

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

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

        /**
         * @param name Specifies the name of the Front Door Profile. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param resourceGroupName The name of the Resource Group where this Front Door Profile should exist. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(@Nullable Output<String> resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the Resource Group where this Front Door Profile should exist. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param resourceGuid The UUID of this Front Door Profile which will be sent in the HTTP Header as the `X-Azure-FDID` attribute.
         * 
         * @return builder
         * 
         */
        public Builder resourceGuid(@Nullable Output<String> resourceGuid) {
            $.resourceGuid = resourceGuid;
            return this;
        }

        /**
         * @param resourceGuid The UUID of this Front Door Profile which will be sent in the HTTP Header as the `X-Azure-FDID` attribute.
         * 
         * @return builder
         * 
         */
        public Builder resourceGuid(String resourceGuid) {
            return resourceGuid(Output.of(resourceGuid));
        }

        /**
         * @param responseTimeoutSeconds Specifies the maximum response timeout in seconds. Possible values are between `16` and `240` seconds (inclusive). Defaults to `120` seconds.
         * 
         * @return builder
         * 
         */
        public Builder responseTimeoutSeconds(@Nullable Output<Integer> responseTimeoutSeconds) {
            $.responseTimeoutSeconds = responseTimeoutSeconds;
            return this;
        }

        /**
         * @param responseTimeoutSeconds Specifies the maximum response timeout in seconds. Possible values are between `16` and `240` seconds (inclusive). Defaults to `120` seconds.
         * 
         * @return builder
         * 
         */
        public Builder responseTimeoutSeconds(Integer responseTimeoutSeconds) {
            return responseTimeoutSeconds(Output.of(responseTimeoutSeconds));
        }

        /**
         * @param skuName Specifies the SKU for this Front Door Profile. Possible values include `Standard_AzureFrontDoor` and `Premium_AzureFrontDoor`. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder skuName(@Nullable Output<String> skuName) {
            $.skuName = skuName;
            return this;
        }

        /**
         * @param skuName Specifies the SKU for this Front Door Profile. Possible values include `Standard_AzureFrontDoor` and `Premium_AzureFrontDoor`. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder skuName(String skuName) {
            return skuName(Output.of(skuName));
        }

        /**
         * @param tags Specifies a mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output<Map<String,String>> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags Specifies a mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map<String,String> tags) {
            return tags(Output.of(tags));
        }

        public FrontdoorProfileState build() {
            return $;
        }
    }

}
