All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azure.appservice.inputs.AppServiceSiteConfigArgs Maven / Gradle / Ivy

Go to download

A Pulumi package for creating and managing Microsoft Azure cloud resources, based on the Terraform azurerm provider. We recommend using the [Azure Native provider](https://github.com/pulumi/pulumi-azure-native) to provision Azure infrastructure. Azure Native provides complete coverage of Azure resources and same-day access to new resources and resource updates.

There is a newer version: 6.15.0
Show newest version
// *** 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.azure.appservice.inputs.AppServiceSiteConfigCorsArgs;
import com.pulumi.azure.appservice.inputs.AppServiceSiteConfigIpRestrictionArgs;
import com.pulumi.azure.appservice.inputs.AppServiceSiteConfigScmIpRestrictionArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final AppServiceSiteConfigArgs Empty = new AppServiceSiteConfigArgs();

    /**
     * Are Managed Identity Credentials used for Azure Container Registry pull
     * 
     */
    @Import(name="acrUseManagedIdentityCredentials")
    private @Nullable Output acrUseManagedIdentityCredentials;

    /**
     * @return Are Managed Identity Credentials used for Azure Container Registry pull
     * 
     */
    public Optional> acrUseManagedIdentityCredentials() {
        return Optional.ofNullable(this.acrUseManagedIdentityCredentials);
    }

    /**
     * If using User Managed Identity, the User Managed Identity Client Id
     * 
     * > **NOTE:** When using User Managed Identity with Azure Container Registry the Identity will need to have the [ACRPull role assigned](https://docs.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity#example-1-access-with-a-user-assigned-identity)
     * 
     */
    @Import(name="acrUserManagedIdentityClientId")
    private @Nullable Output acrUserManagedIdentityClientId;

    /**
     * @return If using User Managed Identity, the User Managed Identity Client Id
     * 
     * > **NOTE:** When using User Managed Identity with Azure Container Registry the Identity will need to have the [ACRPull role assigned](https://docs.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity#example-1-access-with-a-user-assigned-identity)
     * 
     */
    public Optional> acrUserManagedIdentityClientId() {
        return Optional.ofNullable(this.acrUserManagedIdentityClientId);
    }

    /**
     * Should the app be loaded at all times? Defaults to `false`.
     * 
     * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `always_on` must be set to `false`.
     * 
     */
    @Import(name="alwaysOn")
    private @Nullable Output alwaysOn;

    /**
     * @return Should the app be loaded at all times? Defaults to `false`.
     * 
     * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `always_on` must be set to `false`.
     * 
     */
    public Optional> alwaysOn() {
        return Optional.ofNullable(this.alwaysOn);
    }

    /**
     * App command line to launch, e.g. `/sbin/myserver -b 0.0.0.0`.
     * 
     */
    @Import(name="appCommandLine")
    private @Nullable Output appCommandLine;

    /**
     * @return App command line to launch, e.g. `/sbin/myserver -b 0.0.0.0`.
     * 
     */
    public Optional> appCommandLine() {
        return Optional.ofNullable(this.appCommandLine);
    }

    /**
     * The name of the slot to automatically swap to during deployment
     * 
     */
    @Import(name="autoSwapSlotName")
    private @Nullable Output autoSwapSlotName;

    /**
     * @return The name of the slot to automatically swap to during deployment
     * 
     */
    public Optional> autoSwapSlotName() {
        return Optional.ofNullable(this.autoSwapSlotName);
    }

    /**
     * A `cors` block as defined below.
     * 
     */
    @Import(name="cors")
    private @Nullable Output cors;

    /**
     * @return A `cors` block as defined below.
     * 
     */
    public Optional> cors() {
        return Optional.ofNullable(this.cors);
    }

    /**
     * The ordering of default documents to load, if an address isn't specified.
     * 
     */
    @Import(name="defaultDocuments")
    private @Nullable Output> defaultDocuments;

    /**
     * @return The ordering of default documents to load, if an address isn't specified.
     * 
     */
    public Optional>> defaultDocuments() {
        return Optional.ofNullable(this.defaultDocuments);
    }

    /**
     * The version of the .NET framework's CLR used in this App Service. Possible values are `v2.0` (which will use the latest version of the .NET framework for the .NET CLR v2 - currently `.net 3.5`), `v4.0` (which corresponds to the latest version of the .NET CLR v4 - which at the time of writing is `.net 4.7.1`), `v5.0` and `v6.0`. [For more information on which .NET CLR version to use based on the .NET framework you're targeting - please see this table](https://en.wikipedia.org/wiki/.NET_Framework_version_history#Overview). Defaults to `v4.0`.
     * 
     */
    @Import(name="dotnetFrameworkVersion")
    private @Nullable Output dotnetFrameworkVersion;

    /**
     * @return The version of the .NET framework's CLR used in this App Service. Possible values are `v2.0` (which will use the latest version of the .NET framework for the .NET CLR v2 - currently `.net 3.5`), `v4.0` (which corresponds to the latest version of the .NET CLR v4 - which at the time of writing is `.net 4.7.1`), `v5.0` and `v6.0`. [For more information on which .NET CLR version to use based on the .NET framework you're targeting - please see this table](https://en.wikipedia.org/wiki/.NET_Framework_version_history#Overview). Defaults to `v4.0`.
     * 
     */
    public Optional> dotnetFrameworkVersion() {
        return Optional.ofNullable(this.dotnetFrameworkVersion);
    }

    /**
     * State of FTP / FTPS service for this App Service. Possible values include: `AllAllowed`, `FtpsOnly` and `Disabled`.
     * 
     */
    @Import(name="ftpsState")
    private @Nullable Output ftpsState;

    /**
     * @return State of FTP / FTPS service for this App Service. Possible values include: `AllAllowed`, `FtpsOnly` and `Disabled`.
     * 
     */
    public Optional> ftpsState() {
        return Optional.ofNullable(this.ftpsState);
    }

    /**
     * The health check path to be pinged by App Service. [For more information - please see App Service health check announcement](https://azure.github.io/AppService/2020/08/24/healthcheck-on-app-service.html).
     * 
     */
    @Import(name="healthCheckPath")
    private @Nullable Output healthCheckPath;

    /**
     * @return The health check path to be pinged by App Service. [For more information - please see App Service health check announcement](https://azure.github.io/AppService/2020/08/24/healthcheck-on-app-service.html).
     * 
     */
    public Optional> healthCheckPath() {
        return Optional.ofNullable(this.healthCheckPath);
    }

    /**
     * Is HTTP2 Enabled on this App Service? Defaults to `false`.
     * 
     */
    @Import(name="http2Enabled")
    private @Nullable Output http2Enabled;

    /**
     * @return Is HTTP2 Enabled on this App Service? Defaults to `false`.
     * 
     */
    public Optional> http2Enabled() {
        return Optional.ofNullable(this.http2Enabled);
    }

    /**
     * A list of objects representing ip restrictions as defined below.
     * 
     * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
     * 
     */
    @Import(name="ipRestrictions")
    private @Nullable Output> ipRestrictions;

    /**
     * @return A list of objects representing ip restrictions as defined below.
     * 
     * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
     * 
     */
    public Optional>> ipRestrictions() {
        return Optional.ofNullable(this.ipRestrictions);
    }

    /**
     * The Java Container to use. If specified `java_version` and `java_container_version` must also be specified. Possible values are `JAVA`, `JETTY`, and `TOMCAT`.
     * 
     */
    @Import(name="javaContainer")
    private @Nullable Output javaContainer;

    /**
     * @return The Java Container to use. If specified `java_version` and `java_container_version` must also be specified. Possible values are `JAVA`, `JETTY`, and `TOMCAT`.
     * 
     */
    public Optional> javaContainer() {
        return Optional.ofNullable(this.javaContainer);
    }

    /**
     * The version of the Java Container to use. If specified `java_version` and `java_container` must also be specified.
     * 
     */
    @Import(name="javaContainerVersion")
    private @Nullable Output javaContainerVersion;

    /**
     * @return The version of the Java Container to use. If specified `java_version` and `java_container` must also be specified.
     * 
     */
    public Optional> javaContainerVersion() {
        return Optional.ofNullable(this.javaContainerVersion);
    }

    /**
     * The version of Java to use. If specified `java_container` and `java_container_version` must also be specified. Possible values are `1.7`, `1.8` and `11` and their specific versions - except for Java 11 (e.g. `1.7.0_80`, `1.8.0_181`, `11`)
     * 
     */
    @Import(name="javaVersion")
    private @Nullable Output javaVersion;

    /**
     * @return The version of Java to use. If specified `java_container` and `java_container_version` must also be specified. Possible values are `1.7`, `1.8` and `11` and their specific versions - except for Java 11 (e.g. `1.7.0_80`, `1.8.0_181`, `11`)
     * 
     */
    public Optional> javaVersion() {
        return Optional.ofNullable(this.javaVersion);
    }

    /**
     * Linux App Framework and version for the App Service. Possible options are a Docker container (`DOCKER|<user/image:tag>`), a base-64 encoded Docker Compose file (`COMPOSE|${filebase64("compose.yml")}`) or a base-64 encoded Kubernetes Manifest (`KUBE|${filebase64("kubernetes.yml")}`).
     * 
     * > **NOTE:** To set this property the App Service Plan to which the App belongs must be configured with `kind = "Linux"`, and `reserved = true` or the API will reject any value supplied.
     * 
     */
    @Import(name="linuxFxVersion")
    private @Nullable Output linuxFxVersion;

    /**
     * @return Linux App Framework and version for the App Service. Possible options are a Docker container (`DOCKER|<user/image:tag>`), a base-64 encoded Docker Compose file (`COMPOSE|${filebase64("compose.yml")}`) or a base-64 encoded Kubernetes Manifest (`KUBE|${filebase64("kubernetes.yml")}`).
     * 
     * > **NOTE:** To set this property the App Service Plan to which the App belongs must be configured with `kind = "Linux"`, and `reserved = true` or the API will reject any value supplied.
     * 
     */
    public Optional> linuxFxVersion() {
        return Optional.ofNullable(this.linuxFxVersion);
    }

    /**
     * Is "MySQL In App" Enabled? This runs a local MySQL instance with your app and shares resources from the App Service plan.
     * 
     * > **NOTE:** MySQL In App is not intended for production environments and will not scale beyond a single instance. Instead you may wish to use Azure Database for MySQL.
     * 
     */
    @Import(name="localMysqlEnabled")
    private @Nullable Output localMysqlEnabled;

    /**
     * @return Is "MySQL In App" Enabled? This runs a local MySQL instance with your app and shares resources from the App Service plan.
     * 
     * > **NOTE:** MySQL In App is not intended for production environments and will not scale beyond a single instance. Instead you may wish to use Azure Database for MySQL.
     * 
     */
    public Optional> localMysqlEnabled() {
        return Optional.ofNullable(this.localMysqlEnabled);
    }

    /**
     * The Managed Pipeline Mode. Possible values are `Integrated` and `Classic`. Defaults to `Integrated`.
     * 
     */
    @Import(name="managedPipelineMode")
    private @Nullable Output managedPipelineMode;

    /**
     * @return The Managed Pipeline Mode. Possible values are `Integrated` and `Classic`. Defaults to `Integrated`.
     * 
     */
    public Optional> managedPipelineMode() {
        return Optional.ofNullable(this.managedPipelineMode);
    }

    /**
     * The minimum supported TLS version for the app service. Possible values are `1.0`, `1.1`, and `1.2`. Defaults to `1.2` for new app services.
     * 
     */
    @Import(name="minTlsVersion")
    private @Nullable Output minTlsVersion;

    /**
     * @return The minimum supported TLS version for the app service. Possible values are `1.0`, `1.1`, and `1.2`. Defaults to `1.2` for new app services.
     * 
     */
    public Optional> minTlsVersion() {
        return Optional.ofNullable(this.minTlsVersion);
    }

    /**
     * The scaled number of workers (for per site scaling) of this App Service. Requires that `per_site_scaling` is enabled on the `azure.appservice.Plan`. [For more information - please see Microsoft documentation on high-density hosting](https://docs.microsoft.com/azure/app-service/manage-scale-per-app).
     * 
     */
    @Import(name="numberOfWorkers")
    private @Nullable Output numberOfWorkers;

    /**
     * @return The scaled number of workers (for per site scaling) of this App Service. Requires that `per_site_scaling` is enabled on the `azure.appservice.Plan`. [For more information - please see Microsoft documentation on high-density hosting](https://docs.microsoft.com/azure/app-service/manage-scale-per-app).
     * 
     */
    public Optional> numberOfWorkers() {
        return Optional.ofNullable(this.numberOfWorkers);
    }

    /**
     * The version of PHP to use in this App Service. Possible values are `5.5`, `5.6`, `7.0`, `7.1`, `7.2`, `7.3` and `7.4`.
     * 
     */
    @Import(name="phpVersion")
    private @Nullable Output phpVersion;

    /**
     * @return The version of PHP to use in this App Service. Possible values are `5.5`, `5.6`, `7.0`, `7.1`, `7.2`, `7.3` and `7.4`.
     * 
     */
    public Optional> phpVersion() {
        return Optional.ofNullable(this.phpVersion);
    }

    /**
     * The version of Python to use in this App Service. Possible values are `2.7` and `3.4`.
     * 
     */
    @Import(name="pythonVersion")
    private @Nullable Output pythonVersion;

    /**
     * @return The version of Python to use in this App Service. Possible values are `2.7` and `3.4`.
     * 
     */
    public Optional> pythonVersion() {
        return Optional.ofNullable(this.pythonVersion);
    }

    /**
     * Is Remote Debugging Enabled? Defaults to `false`.
     * 
     */
    @Import(name="remoteDebuggingEnabled")
    private @Nullable Output remoteDebuggingEnabled;

    /**
     * @return Is Remote Debugging Enabled? Defaults to `false`.
     * 
     */
    public Optional> remoteDebuggingEnabled() {
        return Optional.ofNullable(this.remoteDebuggingEnabled);
    }

    /**
     * Which version of Visual Studio should the Remote Debugger be compatible with? Possible values are `VS2017`, `VS2019`, `VS2022`.
     * 
     */
    @Import(name="remoteDebuggingVersion")
    private @Nullable Output remoteDebuggingVersion;

    /**
     * @return Which version of Visual Studio should the Remote Debugger be compatible with? Possible values are `VS2017`, `VS2019`, `VS2022`.
     * 
     */
    public Optional> remoteDebuggingVersion() {
        return Optional.ofNullable(this.remoteDebuggingVersion);
    }

    /**
     * A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
     * 
     * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
     * 
     */
    @Import(name="scmIpRestrictions")
    private @Nullable Output> scmIpRestrictions;

    /**
     * @return A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
     * 
     * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
     * 
     */
    public Optional>> scmIpRestrictions() {
        return Optional.ofNullable(this.scmIpRestrictions);
    }

    /**
     * The type of Source Control enabled for this App Service. Defaults to `None`. Possible values are: `BitbucketGit`, `BitbucketHg`, `CodePlexGit`, `CodePlexHg`, `Dropbox`, `ExternalGit`, `ExternalHg`, `GitHub`, `LocalGit`, `None`, `OneDrive`, `Tfs`, `VSO`, and `VSTSRM`
     * 
     */
    @Import(name="scmType")
    private @Nullable Output scmType;

    /**
     * @return The type of Source Control enabled for this App Service. Defaults to `None`. Possible values are: `BitbucketGit`, `BitbucketHg`, `CodePlexGit`, `CodePlexHg`, `Dropbox`, `ExternalGit`, `ExternalHg`, `GitHub`, `LocalGit`, `None`, `OneDrive`, `Tfs`, `VSO`, and `VSTSRM`
     * 
     */
    public Optional> scmType() {
        return Optional.ofNullable(this.scmType);
    }

    /**
     * IP security restrictions for scm to use main. Defaults to `false`.
     * 
     * > **NOTE** Any `scm_ip_restriction` blocks configured are ignored by the service when `scm_use_main_ip_restriction` is set to `true`. Any scm restrictions will become active if this is subsequently set to `false` or removed.
     * 
     */
    @Import(name="scmUseMainIpRestriction")
    private @Nullable Output scmUseMainIpRestriction;

    /**
     * @return IP security restrictions for scm to use main. Defaults to `false`.
     * 
     * > **NOTE** Any `scm_ip_restriction` blocks configured are ignored by the service when `scm_use_main_ip_restriction` is set to `true`. Any scm restrictions will become active if this is subsequently set to `false` or removed.
     * 
     */
    public Optional> scmUseMainIpRestriction() {
        return Optional.ofNullable(this.scmUseMainIpRestriction);
    }

    /**
     * Should the App Service run in 32 bit mode, rather than 64 bit mode?
     * 
     * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `use_32_bit_worker_process` must be set to `true`.
     * 
     */
    @Import(name="use32BitWorkerProcess")
    private @Nullable Output use32BitWorkerProcess;

    /**
     * @return Should the App Service run in 32 bit mode, rather than 64 bit mode?
     * 
     * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `use_32_bit_worker_process` must be set to `true`.
     * 
     */
    public Optional> use32BitWorkerProcess() {
        return Optional.ofNullable(this.use32BitWorkerProcess);
    }

    @Import(name="vnetRouteAllEnabled")
    private @Nullable Output vnetRouteAllEnabled;

    public Optional> vnetRouteAllEnabled() {
        return Optional.ofNullable(this.vnetRouteAllEnabled);
    }

    /**
     * Should WebSockets be enabled?
     * 
     */
    @Import(name="websocketsEnabled")
    private @Nullable Output websocketsEnabled;

    /**
     * @return Should WebSockets be enabled?
     * 
     */
    public Optional> websocketsEnabled() {
        return Optional.ofNullable(this.websocketsEnabled);
    }

    /**
     * The Windows Docker container image (`DOCKER|<user/image:tag>`)
     * 
     */
    @Import(name="windowsFxVersion")
    private @Nullable Output windowsFxVersion;

    /**
     * @return The Windows Docker container image (`DOCKER|<user/image:tag>`)
     * 
     */
    public Optional> windowsFxVersion() {
        return Optional.ofNullable(this.windowsFxVersion);
    }

    private AppServiceSiteConfigArgs() {}

    private AppServiceSiteConfigArgs(AppServiceSiteConfigArgs $) {
        this.acrUseManagedIdentityCredentials = $.acrUseManagedIdentityCredentials;
        this.acrUserManagedIdentityClientId = $.acrUserManagedIdentityClientId;
        this.alwaysOn = $.alwaysOn;
        this.appCommandLine = $.appCommandLine;
        this.autoSwapSlotName = $.autoSwapSlotName;
        this.cors = $.cors;
        this.defaultDocuments = $.defaultDocuments;
        this.dotnetFrameworkVersion = $.dotnetFrameworkVersion;
        this.ftpsState = $.ftpsState;
        this.healthCheckPath = $.healthCheckPath;
        this.http2Enabled = $.http2Enabled;
        this.ipRestrictions = $.ipRestrictions;
        this.javaContainer = $.javaContainer;
        this.javaContainerVersion = $.javaContainerVersion;
        this.javaVersion = $.javaVersion;
        this.linuxFxVersion = $.linuxFxVersion;
        this.localMysqlEnabled = $.localMysqlEnabled;
        this.managedPipelineMode = $.managedPipelineMode;
        this.minTlsVersion = $.minTlsVersion;
        this.numberOfWorkers = $.numberOfWorkers;
        this.phpVersion = $.phpVersion;
        this.pythonVersion = $.pythonVersion;
        this.remoteDebuggingEnabled = $.remoteDebuggingEnabled;
        this.remoteDebuggingVersion = $.remoteDebuggingVersion;
        this.scmIpRestrictions = $.scmIpRestrictions;
        this.scmType = $.scmType;
        this.scmUseMainIpRestriction = $.scmUseMainIpRestriction;
        this.use32BitWorkerProcess = $.use32BitWorkerProcess;
        this.vnetRouteAllEnabled = $.vnetRouteAllEnabled;
        this.websocketsEnabled = $.websocketsEnabled;
        this.windowsFxVersion = $.windowsFxVersion;
    }

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

    public static final class Builder {
        private AppServiceSiteConfigArgs $;

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

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

        /**
         * @param acrUseManagedIdentityCredentials Are Managed Identity Credentials used for Azure Container Registry pull
         * 
         * @return builder
         * 
         */
        public Builder acrUseManagedIdentityCredentials(@Nullable Output acrUseManagedIdentityCredentials) {
            $.acrUseManagedIdentityCredentials = acrUseManagedIdentityCredentials;
            return this;
        }

        /**
         * @param acrUseManagedIdentityCredentials Are Managed Identity Credentials used for Azure Container Registry pull
         * 
         * @return builder
         * 
         */
        public Builder acrUseManagedIdentityCredentials(Boolean acrUseManagedIdentityCredentials) {
            return acrUseManagedIdentityCredentials(Output.of(acrUseManagedIdentityCredentials));
        }

        /**
         * @param acrUserManagedIdentityClientId If using User Managed Identity, the User Managed Identity Client Id
         * 
         * > **NOTE:** When using User Managed Identity with Azure Container Registry the Identity will need to have the [ACRPull role assigned](https://docs.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity#example-1-access-with-a-user-assigned-identity)
         * 
         * @return builder
         * 
         */
        public Builder acrUserManagedIdentityClientId(@Nullable Output acrUserManagedIdentityClientId) {
            $.acrUserManagedIdentityClientId = acrUserManagedIdentityClientId;
            return this;
        }

        /**
         * @param acrUserManagedIdentityClientId If using User Managed Identity, the User Managed Identity Client Id
         * 
         * > **NOTE:** When using User Managed Identity with Azure Container Registry the Identity will need to have the [ACRPull role assigned](https://docs.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity#example-1-access-with-a-user-assigned-identity)
         * 
         * @return builder
         * 
         */
        public Builder acrUserManagedIdentityClientId(String acrUserManagedIdentityClientId) {
            return acrUserManagedIdentityClientId(Output.of(acrUserManagedIdentityClientId));
        }

        /**
         * @param alwaysOn Should the app be loaded at all times? Defaults to `false`.
         * 
         * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `always_on` must be set to `false`.
         * 
         * @return builder
         * 
         */
        public Builder alwaysOn(@Nullable Output alwaysOn) {
            $.alwaysOn = alwaysOn;
            return this;
        }

        /**
         * @param alwaysOn Should the app be loaded at all times? Defaults to `false`.
         * 
         * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `always_on` must be set to `false`.
         * 
         * @return builder
         * 
         */
        public Builder alwaysOn(Boolean alwaysOn) {
            return alwaysOn(Output.of(alwaysOn));
        }

        /**
         * @param appCommandLine App command line to launch, e.g. `/sbin/myserver -b 0.0.0.0`.
         * 
         * @return builder
         * 
         */
        public Builder appCommandLine(@Nullable Output appCommandLine) {
            $.appCommandLine = appCommandLine;
            return this;
        }

        /**
         * @param appCommandLine App command line to launch, e.g. `/sbin/myserver -b 0.0.0.0`.
         * 
         * @return builder
         * 
         */
        public Builder appCommandLine(String appCommandLine) {
            return appCommandLine(Output.of(appCommandLine));
        }

        /**
         * @param autoSwapSlotName The name of the slot to automatically swap to during deployment
         * 
         * @return builder
         * 
         */
        public Builder autoSwapSlotName(@Nullable Output autoSwapSlotName) {
            $.autoSwapSlotName = autoSwapSlotName;
            return this;
        }

        /**
         * @param autoSwapSlotName The name of the slot to automatically swap to during deployment
         * 
         * @return builder
         * 
         */
        public Builder autoSwapSlotName(String autoSwapSlotName) {
            return autoSwapSlotName(Output.of(autoSwapSlotName));
        }

        /**
         * @param cors A `cors` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder cors(@Nullable Output cors) {
            $.cors = cors;
            return this;
        }

        /**
         * @param cors A `cors` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder cors(AppServiceSiteConfigCorsArgs cors) {
            return cors(Output.of(cors));
        }

        /**
         * @param defaultDocuments The ordering of default documents to load, if an address isn't specified.
         * 
         * @return builder
         * 
         */
        public Builder defaultDocuments(@Nullable Output> defaultDocuments) {
            $.defaultDocuments = defaultDocuments;
            return this;
        }

        /**
         * @param defaultDocuments The ordering of default documents to load, if an address isn't specified.
         * 
         * @return builder
         * 
         */
        public Builder defaultDocuments(List defaultDocuments) {
            return defaultDocuments(Output.of(defaultDocuments));
        }

        /**
         * @param defaultDocuments The ordering of default documents to load, if an address isn't specified.
         * 
         * @return builder
         * 
         */
        public Builder defaultDocuments(String... defaultDocuments) {
            return defaultDocuments(List.of(defaultDocuments));
        }

        /**
         * @param dotnetFrameworkVersion The version of the .NET framework's CLR used in this App Service. Possible values are `v2.0` (which will use the latest version of the .NET framework for the .NET CLR v2 - currently `.net 3.5`), `v4.0` (which corresponds to the latest version of the .NET CLR v4 - which at the time of writing is `.net 4.7.1`), `v5.0` and `v6.0`. [For more information on which .NET CLR version to use based on the .NET framework you're targeting - please see this table](https://en.wikipedia.org/wiki/.NET_Framework_version_history#Overview). Defaults to `v4.0`.
         * 
         * @return builder
         * 
         */
        public Builder dotnetFrameworkVersion(@Nullable Output dotnetFrameworkVersion) {
            $.dotnetFrameworkVersion = dotnetFrameworkVersion;
            return this;
        }

        /**
         * @param dotnetFrameworkVersion The version of the .NET framework's CLR used in this App Service. Possible values are `v2.0` (which will use the latest version of the .NET framework for the .NET CLR v2 - currently `.net 3.5`), `v4.0` (which corresponds to the latest version of the .NET CLR v4 - which at the time of writing is `.net 4.7.1`), `v5.0` and `v6.0`. [For more information on which .NET CLR version to use based on the .NET framework you're targeting - please see this table](https://en.wikipedia.org/wiki/.NET_Framework_version_history#Overview). Defaults to `v4.0`.
         * 
         * @return builder
         * 
         */
        public Builder dotnetFrameworkVersion(String dotnetFrameworkVersion) {
            return dotnetFrameworkVersion(Output.of(dotnetFrameworkVersion));
        }

        /**
         * @param ftpsState State of FTP / FTPS service for this App Service. Possible values include: `AllAllowed`, `FtpsOnly` and `Disabled`.
         * 
         * @return builder
         * 
         */
        public Builder ftpsState(@Nullable Output ftpsState) {
            $.ftpsState = ftpsState;
            return this;
        }

        /**
         * @param ftpsState State of FTP / FTPS service for this App Service. Possible values include: `AllAllowed`, `FtpsOnly` and `Disabled`.
         * 
         * @return builder
         * 
         */
        public Builder ftpsState(String ftpsState) {
            return ftpsState(Output.of(ftpsState));
        }

        /**
         * @param healthCheckPath The health check path to be pinged by App Service. [For more information - please see App Service health check announcement](https://azure.github.io/AppService/2020/08/24/healthcheck-on-app-service.html).
         * 
         * @return builder
         * 
         */
        public Builder healthCheckPath(@Nullable Output healthCheckPath) {
            $.healthCheckPath = healthCheckPath;
            return this;
        }

        /**
         * @param healthCheckPath The health check path to be pinged by App Service. [For more information - please see App Service health check announcement](https://azure.github.io/AppService/2020/08/24/healthcheck-on-app-service.html).
         * 
         * @return builder
         * 
         */
        public Builder healthCheckPath(String healthCheckPath) {
            return healthCheckPath(Output.of(healthCheckPath));
        }

        /**
         * @param http2Enabled Is HTTP2 Enabled on this App Service? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder http2Enabled(@Nullable Output http2Enabled) {
            $.http2Enabled = http2Enabled;
            return this;
        }

        /**
         * @param http2Enabled Is HTTP2 Enabled on this App Service? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder http2Enabled(Boolean http2Enabled) {
            return http2Enabled(Output.of(http2Enabled));
        }

        /**
         * @param ipRestrictions A list of objects representing ip restrictions as defined below.
         * 
         * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
         * 
         * @return builder
         * 
         */
        public Builder ipRestrictions(@Nullable Output> ipRestrictions) {
            $.ipRestrictions = ipRestrictions;
            return this;
        }

        /**
         * @param ipRestrictions A list of objects representing ip restrictions as defined below.
         * 
         * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
         * 
         * @return builder
         * 
         */
        public Builder ipRestrictions(List ipRestrictions) {
            return ipRestrictions(Output.of(ipRestrictions));
        }

        /**
         * @param ipRestrictions A list of objects representing ip restrictions as defined below.
         * 
         * > **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.
         * 
         * @return builder
         * 
         */
        public Builder ipRestrictions(AppServiceSiteConfigIpRestrictionArgs... ipRestrictions) {
            return ipRestrictions(List.of(ipRestrictions));
        }

        /**
         * @param javaContainer The Java Container to use. If specified `java_version` and `java_container_version` must also be specified. Possible values are `JAVA`, `JETTY`, and `TOMCAT`.
         * 
         * @return builder
         * 
         */
        public Builder javaContainer(@Nullable Output javaContainer) {
            $.javaContainer = javaContainer;
            return this;
        }

        /**
         * @param javaContainer The Java Container to use. If specified `java_version` and `java_container_version` must also be specified. Possible values are `JAVA`, `JETTY`, and `TOMCAT`.
         * 
         * @return builder
         * 
         */
        public Builder javaContainer(String javaContainer) {
            return javaContainer(Output.of(javaContainer));
        }

        /**
         * @param javaContainerVersion The version of the Java Container to use. If specified `java_version` and `java_container` must also be specified.
         * 
         * @return builder
         * 
         */
        public Builder javaContainerVersion(@Nullable Output javaContainerVersion) {
            $.javaContainerVersion = javaContainerVersion;
            return this;
        }

        /**
         * @param javaContainerVersion The version of the Java Container to use. If specified `java_version` and `java_container` must also be specified.
         * 
         * @return builder
         * 
         */
        public Builder javaContainerVersion(String javaContainerVersion) {
            return javaContainerVersion(Output.of(javaContainerVersion));
        }

        /**
         * @param javaVersion The version of Java to use. If specified `java_container` and `java_container_version` must also be specified. Possible values are `1.7`, `1.8` and `11` and their specific versions - except for Java 11 (e.g. `1.7.0_80`, `1.8.0_181`, `11`)
         * 
         * @return builder
         * 
         */
        public Builder javaVersion(@Nullable Output javaVersion) {
            $.javaVersion = javaVersion;
            return this;
        }

        /**
         * @param javaVersion The version of Java to use. If specified `java_container` and `java_container_version` must also be specified. Possible values are `1.7`, `1.8` and `11` and their specific versions - except for Java 11 (e.g. `1.7.0_80`, `1.8.0_181`, `11`)
         * 
         * @return builder
         * 
         */
        public Builder javaVersion(String javaVersion) {
            return javaVersion(Output.of(javaVersion));
        }

        /**
         * @param linuxFxVersion Linux App Framework and version for the App Service. Possible options are a Docker container (`DOCKER|<user/image:tag>`), a base-64 encoded Docker Compose file (`COMPOSE|${filebase64("compose.yml")}`) or a base-64 encoded Kubernetes Manifest (`KUBE|${filebase64("kubernetes.yml")}`).
         * 
         * > **NOTE:** To set this property the App Service Plan to which the App belongs must be configured with `kind = "Linux"`, and `reserved = true` or the API will reject any value supplied.
         * 
         * @return builder
         * 
         */
        public Builder linuxFxVersion(@Nullable Output linuxFxVersion) {
            $.linuxFxVersion = linuxFxVersion;
            return this;
        }

        /**
         * @param linuxFxVersion Linux App Framework and version for the App Service. Possible options are a Docker container (`DOCKER|<user/image:tag>`), a base-64 encoded Docker Compose file (`COMPOSE|${filebase64("compose.yml")}`) or a base-64 encoded Kubernetes Manifest (`KUBE|${filebase64("kubernetes.yml")}`).
         * 
         * > **NOTE:** To set this property the App Service Plan to which the App belongs must be configured with `kind = "Linux"`, and `reserved = true` or the API will reject any value supplied.
         * 
         * @return builder
         * 
         */
        public Builder linuxFxVersion(String linuxFxVersion) {
            return linuxFxVersion(Output.of(linuxFxVersion));
        }

        /**
         * @param localMysqlEnabled Is "MySQL In App" Enabled? This runs a local MySQL instance with your app and shares resources from the App Service plan.
         * 
         * > **NOTE:** MySQL In App is not intended for production environments and will not scale beyond a single instance. Instead you may wish to use Azure Database for MySQL.
         * 
         * @return builder
         * 
         */
        public Builder localMysqlEnabled(@Nullable Output localMysqlEnabled) {
            $.localMysqlEnabled = localMysqlEnabled;
            return this;
        }

        /**
         * @param localMysqlEnabled Is "MySQL In App" Enabled? This runs a local MySQL instance with your app and shares resources from the App Service plan.
         * 
         * > **NOTE:** MySQL In App is not intended for production environments and will not scale beyond a single instance. Instead you may wish to use Azure Database for MySQL.
         * 
         * @return builder
         * 
         */
        public Builder localMysqlEnabled(Boolean localMysqlEnabled) {
            return localMysqlEnabled(Output.of(localMysqlEnabled));
        }

        /**
         * @param managedPipelineMode The Managed Pipeline Mode. Possible values are `Integrated` and `Classic`. Defaults to `Integrated`.
         * 
         * @return builder
         * 
         */
        public Builder managedPipelineMode(@Nullable Output managedPipelineMode) {
            $.managedPipelineMode = managedPipelineMode;
            return this;
        }

        /**
         * @param managedPipelineMode The Managed Pipeline Mode. Possible values are `Integrated` and `Classic`. Defaults to `Integrated`.
         * 
         * @return builder
         * 
         */
        public Builder managedPipelineMode(String managedPipelineMode) {
            return managedPipelineMode(Output.of(managedPipelineMode));
        }

        /**
         * @param minTlsVersion The minimum supported TLS version for the app service. Possible values are `1.0`, `1.1`, and `1.2`. Defaults to `1.2` for new app services.
         * 
         * @return builder
         * 
         */
        public Builder minTlsVersion(@Nullable Output minTlsVersion) {
            $.minTlsVersion = minTlsVersion;
            return this;
        }

        /**
         * @param minTlsVersion The minimum supported TLS version for the app service. Possible values are `1.0`, `1.1`, and `1.2`. Defaults to `1.2` for new app services.
         * 
         * @return builder
         * 
         */
        public Builder minTlsVersion(String minTlsVersion) {
            return minTlsVersion(Output.of(minTlsVersion));
        }

        /**
         * @param numberOfWorkers The scaled number of workers (for per site scaling) of this App Service. Requires that `per_site_scaling` is enabled on the `azure.appservice.Plan`. [For more information - please see Microsoft documentation on high-density hosting](https://docs.microsoft.com/azure/app-service/manage-scale-per-app).
         * 
         * @return builder
         * 
         */
        public Builder numberOfWorkers(@Nullable Output numberOfWorkers) {
            $.numberOfWorkers = numberOfWorkers;
            return this;
        }

        /**
         * @param numberOfWorkers The scaled number of workers (for per site scaling) of this App Service. Requires that `per_site_scaling` is enabled on the `azure.appservice.Plan`. [For more information - please see Microsoft documentation on high-density hosting](https://docs.microsoft.com/azure/app-service/manage-scale-per-app).
         * 
         * @return builder
         * 
         */
        public Builder numberOfWorkers(Integer numberOfWorkers) {
            return numberOfWorkers(Output.of(numberOfWorkers));
        }

        /**
         * @param phpVersion The version of PHP to use in this App Service. Possible values are `5.5`, `5.6`, `7.0`, `7.1`, `7.2`, `7.3` and `7.4`.
         * 
         * @return builder
         * 
         */
        public Builder phpVersion(@Nullable Output phpVersion) {
            $.phpVersion = phpVersion;
            return this;
        }

        /**
         * @param phpVersion The version of PHP to use in this App Service. Possible values are `5.5`, `5.6`, `7.0`, `7.1`, `7.2`, `7.3` and `7.4`.
         * 
         * @return builder
         * 
         */
        public Builder phpVersion(String phpVersion) {
            return phpVersion(Output.of(phpVersion));
        }

        /**
         * @param pythonVersion The version of Python to use in this App Service. Possible values are `2.7` and `3.4`.
         * 
         * @return builder
         * 
         */
        public Builder pythonVersion(@Nullable Output pythonVersion) {
            $.pythonVersion = pythonVersion;
            return this;
        }

        /**
         * @param pythonVersion The version of Python to use in this App Service. Possible values are `2.7` and `3.4`.
         * 
         * @return builder
         * 
         */
        public Builder pythonVersion(String pythonVersion) {
            return pythonVersion(Output.of(pythonVersion));
        }

        /**
         * @param remoteDebuggingEnabled Is Remote Debugging Enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder remoteDebuggingEnabled(@Nullable Output remoteDebuggingEnabled) {
            $.remoteDebuggingEnabled = remoteDebuggingEnabled;
            return this;
        }

        /**
         * @param remoteDebuggingEnabled Is Remote Debugging Enabled? Defaults to `false`.
         * 
         * @return builder
         * 
         */
        public Builder remoteDebuggingEnabled(Boolean remoteDebuggingEnabled) {
            return remoteDebuggingEnabled(Output.of(remoteDebuggingEnabled));
        }

        /**
         * @param remoteDebuggingVersion Which version of Visual Studio should the Remote Debugger be compatible with? Possible values are `VS2017`, `VS2019`, `VS2022`.
         * 
         * @return builder
         * 
         */
        public Builder remoteDebuggingVersion(@Nullable Output remoteDebuggingVersion) {
            $.remoteDebuggingVersion = remoteDebuggingVersion;
            return this;
        }

        /**
         * @param remoteDebuggingVersion Which version of Visual Studio should the Remote Debugger be compatible with? Possible values are `VS2017`, `VS2019`, `VS2022`.
         * 
         * @return builder
         * 
         */
        public Builder remoteDebuggingVersion(String remoteDebuggingVersion) {
            return remoteDebuggingVersion(Output.of(remoteDebuggingVersion));
        }

        /**
         * @param scmIpRestrictions A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
         * 
         * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
         * 
         * @return builder
         * 
         */
        public Builder scmIpRestrictions(@Nullable Output> scmIpRestrictions) {
            $.scmIpRestrictions = scmIpRestrictions;
            return this;
        }

        /**
         * @param scmIpRestrictions A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
         * 
         * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
         * 
         * @return builder
         * 
         */
        public Builder scmIpRestrictions(List scmIpRestrictions) {
            return scmIpRestrictions(Output.of(scmIpRestrictions));
        }

        /**
         * @param scmIpRestrictions A list of `scm_ip_restriction` objects representing IP restrictions as defined below.
         * 
         * > **NOTE** User has to explicitly set `scm_ip_restriction` to empty slice (`[]`) to remove it.
         * 
         * @return builder
         * 
         */
        public Builder scmIpRestrictions(AppServiceSiteConfigScmIpRestrictionArgs... scmIpRestrictions) {
            return scmIpRestrictions(List.of(scmIpRestrictions));
        }

        /**
         * @param scmType The type of Source Control enabled for this App Service. Defaults to `None`. Possible values are: `BitbucketGit`, `BitbucketHg`, `CodePlexGit`, `CodePlexHg`, `Dropbox`, `ExternalGit`, `ExternalHg`, `GitHub`, `LocalGit`, `None`, `OneDrive`, `Tfs`, `VSO`, and `VSTSRM`
         * 
         * @return builder
         * 
         */
        public Builder scmType(@Nullable Output scmType) {
            $.scmType = scmType;
            return this;
        }

        /**
         * @param scmType The type of Source Control enabled for this App Service. Defaults to `None`. Possible values are: `BitbucketGit`, `BitbucketHg`, `CodePlexGit`, `CodePlexHg`, `Dropbox`, `ExternalGit`, `ExternalHg`, `GitHub`, `LocalGit`, `None`, `OneDrive`, `Tfs`, `VSO`, and `VSTSRM`
         * 
         * @return builder
         * 
         */
        public Builder scmType(String scmType) {
            return scmType(Output.of(scmType));
        }

        /**
         * @param scmUseMainIpRestriction IP security restrictions for scm to use main. Defaults to `false`.
         * 
         * > **NOTE** Any `scm_ip_restriction` blocks configured are ignored by the service when `scm_use_main_ip_restriction` is set to `true`. Any scm restrictions will become active if this is subsequently set to `false` or removed.
         * 
         * @return builder
         * 
         */
        public Builder scmUseMainIpRestriction(@Nullable Output scmUseMainIpRestriction) {
            $.scmUseMainIpRestriction = scmUseMainIpRestriction;
            return this;
        }

        /**
         * @param scmUseMainIpRestriction IP security restrictions for scm to use main. Defaults to `false`.
         * 
         * > **NOTE** Any `scm_ip_restriction` blocks configured are ignored by the service when `scm_use_main_ip_restriction` is set to `true`. Any scm restrictions will become active if this is subsequently set to `false` or removed.
         * 
         * @return builder
         * 
         */
        public Builder scmUseMainIpRestriction(Boolean scmUseMainIpRestriction) {
            return scmUseMainIpRestriction(Output.of(scmUseMainIpRestriction));
        }

        /**
         * @param use32BitWorkerProcess Should the App Service run in 32 bit mode, rather than 64 bit mode?
         * 
         * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `use_32_bit_worker_process` must be set to `true`.
         * 
         * @return builder
         * 
         */
        public Builder use32BitWorkerProcess(@Nullable Output use32BitWorkerProcess) {
            $.use32BitWorkerProcess = use32BitWorkerProcess;
            return this;
        }

        /**
         * @param use32BitWorkerProcess Should the App Service run in 32 bit mode, rather than 64 bit mode?
         * 
         * > **NOTE:** when using an App Service Plan in the `Free` or `Shared` Tiers `use_32_bit_worker_process` must be set to `true`.
         * 
         * @return builder
         * 
         */
        public Builder use32BitWorkerProcess(Boolean use32BitWorkerProcess) {
            return use32BitWorkerProcess(Output.of(use32BitWorkerProcess));
        }

        public Builder vnetRouteAllEnabled(@Nullable Output vnetRouteAllEnabled) {
            $.vnetRouteAllEnabled = vnetRouteAllEnabled;
            return this;
        }

        public Builder vnetRouteAllEnabled(Boolean vnetRouteAllEnabled) {
            return vnetRouteAllEnabled(Output.of(vnetRouteAllEnabled));
        }

        /**
         * @param websocketsEnabled Should WebSockets be enabled?
         * 
         * @return builder
         * 
         */
        public Builder websocketsEnabled(@Nullable Output websocketsEnabled) {
            $.websocketsEnabled = websocketsEnabled;
            return this;
        }

        /**
         * @param websocketsEnabled Should WebSockets be enabled?
         * 
         * @return builder
         * 
         */
        public Builder websocketsEnabled(Boolean websocketsEnabled) {
            return websocketsEnabled(Output.of(websocketsEnabled));
        }

        /**
         * @param windowsFxVersion The Windows Docker container image (`DOCKER|<user/image:tag>`)
         * 
         * @return builder
         * 
         */
        public Builder windowsFxVersion(@Nullable Output windowsFxVersion) {
            $.windowsFxVersion = windowsFxVersion;
            return this;
        }

        /**
         * @param windowsFxVersion The Windows Docker container image (`DOCKER|<user/image:tag>`)
         * 
         * @return builder
         * 
         */
        public Builder windowsFxVersion(String windowsFxVersion) {
            return windowsFxVersion(Output.of(windowsFxVersion));
        }

        public AppServiceSiteConfigArgs build() {
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy