# pylint: disable=line-too-long,useless-suppression,too-many-lines
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# Code generated by Microsoft (R) Python Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from typing import Any, Literal, Optional, TYPE_CHECKING, Union
from typing_extensions import Required, TypedDict

if TYPE_CHECKING:
    from .models import (
        AuthType,
        AuthenticationType,
        AutoGeneratedDomainNameLabelScope,
        AutoHealActionType,
        AzureResourceType,
        AzureStorageProtocol,
        AzureStorageState,
        AzureStorageType,
        BackupRestoreOperationType,
        BuiltInAuthenticationProvider,
        CheckNameResourceTypes,
        ClientCertMode,
        ComputeModeOptions,
        ConnectionStringType,
        CookieExpirationConvention,
        CreatedByType,
        CustomDnsSuffixProvisioningState,
        CustomHostNameDnsRecordType,
        DaprLogLevel,
        DatabaseType,
        DefaultAction,
        EnterpriseGradeCdnStatus,
        ForwardProxyConvention,
        FrequencyUnit,
        FrontEndServiceType,
        FtpsState,
        FunctionsDeploymentStorageType,
        HostNameType,
        HostType,
        HostingEnvironmentStatus,
        IPMode,
        InstallScriptType,
        IpFilterTag,
        KeyType,
        KeyVaultSecretStatus,
        Kind,
        KubeEnvironmentProvisioningState,
        LoadBalancingMode,
        LogLevel,
        ManagedPipelineMode,
        ManagedServiceIdentityType,
        MySqlMigrationType,
        OpenAuthenticationProviderType,
        ParameterType,
        ProvisioningState,
        PublicCertificateLocation,
        PublishingProfileFormat,
        RedundancyMode,
        RegistryAdapterType,
        RouteType,
        RuntimeName,
        ScmType,
        SiteAvailabilityState,
        SiteLoadBalancing,
        SiteUpdateStrategyType,
        SslState,
        StagingEnvironmentPolicy,
        StatusOptions,
        StorageMountType,
        StorageType,
        SupportedTlsVersions,
        TlsCipherSuites,
        UnauthenticatedClientAction,
        UnauthenticatedClientActionV2,
        UpgradeAvailability,
        UpgradePreference,
        UsageState,
        ValidateResourceTypes,
        WorkflowProvisioningState,
        WorkflowSkuName,
        WorkflowState,
    )


class Resource(TypedDict, total=False):
    """Resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    """

    id: str
    """Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}."""
    name: str
    """The name of the resource."""
    type: str
    """The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\" or
     \"Microsoft.Storage/storageAccounts\"."""
    systemData: "SystemData"
    """Azure Resource Manager metadata containing createdBy and modifiedBy information."""


class ProxyResource(Resource):
    """Proxy Resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    """


class AllowedAudiencesValidation(TypedDict, total=False):
    """The configuration settings of the Allowed Audiences validation flow.

    :ivar allowed_audiences: The configuration settings of the allowed list of audiences from which
     to validate the JWT token.
    :vartype allowed_audiences: list[str]
    """

    allowedAudiences: list[str]
    """The configuration settings of the allowed list of audiences from which to validate the JWT
     token."""


class AllowedPrincipals(TypedDict, total=False):
    """The configuration settings of the Azure Active Directory allowed principals.

    :ivar groups: The list of the allowed groups.
    :vartype groups: list[str]
    :ivar identities: The list of the allowed identities.
    :vartype identities: list[str]
    """

    groups: list[str]
    """The list of the allowed groups."""
    identities: list[str]
    """The list of the allowed identities."""


class ApiDefinitionInfo(TypedDict, total=False):
    """Information about the formal API definition for the app.

    :ivar url: The URL of the API definition.
    :vartype url: str
    """

    url: str
    """The URL of the API definition."""


class ApiManagementConfig(TypedDict, total=False):
    """Azure API management (APIM) configuration linked to the app.

    :ivar id: APIM-Api Identifier.
    :vartype id: str
    """

    id: str
    """APIM-Api Identifier."""


class Apple(TypedDict, total=False):
    """The configuration settings of the Apple provider.

    :ivar enabled: <code>false</code> if the Apple provider should not be enabled despite the set
     registration; otherwise, <code>true</code>.
    :vartype enabled: bool
    :ivar registration: The configuration settings of the Apple registration.
    :vartype registration: "AppleRegistration"
    :ivar login: The configuration settings of the login flow.
    :vartype login: "LoginScopes"
    """

    enabled: bool
    """<code>false</code> if the Apple provider should not be enabled despite the set registration;
     otherwise, <code>true</code>."""
    registration: "AppleRegistration"
    """The configuration settings of the Apple registration."""
    login: "LoginScopes"
    """The configuration settings of the login flow."""


class AppleRegistration(TypedDict, total=False):
    """The configuration settings of the registration for the Apple provider.

    :ivar client_id: The Client ID of the app used for login.
    :vartype client_id: str
    :ivar client_secret_setting_name: The app setting name that contains the client secret.
    :vartype client_secret_setting_name: str
    """

    clientId: str
    """The Client ID of the app used for login."""
    clientSecretSettingName: str
    """The app setting name that contains the client secret."""


class ApplicationLogsConfig(TypedDict, total=False):
    """Application logs configuration.

    :ivar file_system: Application logs to file system configuration.
    :vartype file_system: "FileSystemApplicationLogsConfig"
    :ivar azure_table_storage: Application logs to azure table storage configuration.
    :vartype azure_table_storage: "AzureTableStorageApplicationLogsConfig"
    :ivar azure_blob_storage: Application logs to blob storage configuration.
    :vartype azure_blob_storage: "AzureBlobStorageApplicationLogsConfig"
    """

    fileSystem: "FileSystemApplicationLogsConfig"
    """Application logs to file system configuration."""
    azureTableStorage: "AzureTableStorageApplicationLogsConfig"
    """Application logs to azure table storage configuration."""
    azureBlobStorage: "AzureBlobStorageApplicationLogsConfig"
    """Application logs to blob storage configuration."""


class ProxyOnlyResource(TypedDict, total=False):
    """Azure proxy only resource. This resource is not tracked by Azure Resource Manager.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    """

    id: str
    """Resource Id."""
    name: str
    """Resource Name."""
    kind: str
    """Kind of resource."""
    type: str
    """Resource type."""


class AppLogsConfiguration(TypedDict, total=False):
    """AppLogsConfiguration.

    :ivar destination:
    :vartype destination: str
    :ivar log_analytics_configuration:
    :vartype log_analytics_configuration: "LogAnalyticsConfiguration"
    """

    destination: str
    logAnalyticsConfiguration: "LogAnalyticsConfiguration"


class AppRegistration(TypedDict, total=False):
    """The configuration settings of the app registration for providers that have app ids and app
    secrets.

    :ivar app_id: The App ID of the app used for login.
    :vartype app_id: str
    :ivar app_secret_setting_name: The app setting name that contains the app secret.
    :vartype app_secret_setting_name: str
    """

    appId: str
    """The App ID of the app used for login."""
    appSecretSettingName: str
    """The app setting name that contains the app secret."""


class AppServiceEnvironment(TypedDict, total=False):
    """Description of an App Service Environment.

    :ivar provisioning_state: Provisioning state of the App Service Environment. Known values are:
     "Succeeded", "Failed", "Canceled", "InProgress", and "Deleting".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    :ivar status: Current status of the App Service Environment. Known values are: "Preparing",
     "Ready", "Scaling", and "Deleting".
    :vartype status: Union[str, "HostingEnvironmentStatus"]
    :ivar virtual_network: Description of the Virtual Network. Required.
    :vartype virtual_network: "VirtualNetworkProfile"
    :ivar internal_load_balancing_mode: Specifies which endpoints to serve internally in the
     Virtual Network for the App Service Environment. Known values are: "None", "Web", "Publishing",
     and "Web, Publishing".
    :vartype internal_load_balancing_mode: Union[str, "LoadBalancingMode"]
    :ivar multi_size: Front-end VM size, e.g. "Medium", "Large".
    :vartype multi_size: str
    :ivar multi_role_count: Number of front-end instances.
    :vartype multi_role_count: int
    :ivar ipssl_address_count: Number of IP SSL addresses reserved for the App Service Environment.
    :vartype ipssl_address_count: int
    :ivar dns_suffix: DNS suffix of the App Service Environment.
    :vartype dns_suffix: str
    :ivar maximum_number_of_machines: Maximum number of VMs in the App Service Environment.
    :vartype maximum_number_of_machines: int
    :ivar front_end_scale_factor: Scale factor for front-ends.
    :vartype front_end_scale_factor: int
    :ivar suspended: <code>true</code> if the App Service Environment is suspended; otherwise,
     <code>false</code>. The environment can be suspended, e.g. when the management endpoint is no
     longer available (most likely because NSG blocked the incoming traffic).
    :vartype suspended: bool
    :ivar cluster_settings: Custom settings for changing the behavior of the App Service
     Environment.
    :vartype cluster_settings: list["NameValuePair"]
    :ivar user_whitelisted_ip_ranges: User added ip ranges to whitelist on ASE db.
    :vartype user_whitelisted_ip_ranges: list[str]
    :ivar has_linux_workers: Flag that displays whether an ASE has linux workers or not.
    :vartype has_linux_workers: bool
    :ivar upgrade_preference: Upgrade Preference. Known values are: "None", "Early", "Late", and
     "Manual".
    :vartype upgrade_preference: Union[str, "UpgradePreference"]
    :ivar dedicated_host_count: Dedicated Host Count.
    :vartype dedicated_host_count: int
    :ivar zone_redundant: Whether or not this App Service Environment is zone-redundant.
    :vartype zone_redundant: bool
    :ivar custom_dns_suffix_configuration: Full view of the custom domain suffix configuration for
     ASEv3.
    :vartype custom_dns_suffix_configuration: "CustomDnsSuffixConfiguration"
    :ivar networking_configuration: Full view of networking configuration for an ASE.
    :vartype networking_configuration: "AseV3NetworkingConfiguration"
    :ivar upgrade_availability: Whether an upgrade is available for this App Service Environment.
     Known values are: "None" and "Ready".
    :vartype upgrade_availability: Union[str, "UpgradeAvailability"]
    """

    provisioningState: Union[str, "ProvisioningState"]
    """Provisioning state of the App Service Environment. Known values are: \"Succeeded\", \"Failed\",
     \"Canceled\", \"InProgress\", and \"Deleting\"."""
    status: Union[str, "HostingEnvironmentStatus"]
    """Current status of the App Service Environment. Known values are: \"Preparing\", \"Ready\",
     \"Scaling\", and \"Deleting\"."""
    virtualNetwork: Required["VirtualNetworkProfile"]
    """Description of the Virtual Network. Required."""
    internalLoadBalancingMode: Union[str, "LoadBalancingMode"]
    """Specifies which endpoints to serve internally in the Virtual Network for the App Service
     Environment. Known values are: \"None\", \"Web\", \"Publishing\", and \"Web, Publishing\"."""
    multiSize: str
    """Front-end VM size, e.g. \"Medium\", \"Large\"."""
    multiRoleCount: int
    """Number of front-end instances."""
    ipsslAddressCount: int
    """Number of IP SSL addresses reserved for the App Service Environment."""
    dnsSuffix: str
    """DNS suffix of the App Service Environment."""
    maximumNumberOfMachines: int
    """Maximum number of VMs in the App Service Environment."""
    frontEndScaleFactor: int
    """Scale factor for front-ends."""
    suspended: bool
    """<code>true</code> if the App Service Environment is suspended; otherwise, <code>false</code>.
     The environment can be suspended, e.g. when the management endpoint is no longer available
     (most likely because NSG blocked the incoming traffic)."""
    clusterSettings: list["NameValuePair"]
    """Custom settings for changing the behavior of the App Service Environment."""
    userWhitelistedIpRanges: list[str]
    """User added ip ranges to whitelist on ASE db."""
    hasLinuxWorkers: bool
    """Flag that displays whether an ASE has linux workers or not."""
    upgradePreference: Union[str, "UpgradePreference"]
    """Upgrade Preference. Known values are: \"None\", \"Early\", \"Late\", and \"Manual\"."""
    dedicatedHostCount: int
    """Dedicated Host Count."""
    zoneRedundant: bool
    """Whether or not this App Service Environment is zone-redundant."""
    customDnsSuffixConfiguration: "CustomDnsSuffixConfiguration"
    """Full view of the custom domain suffix configuration for ASEv3."""
    networkingConfiguration: "AseV3NetworkingConfiguration"
    """Full view of networking configuration for an ASE."""
    upgradeAvailability: Union[str, "UpgradeAvailability"]
    """Whether an upgrade is available for this App Service Environment. Known values are: \"None\"
     and \"Ready\"."""


class AppServiceEnvironmentPatchResource(ProxyOnlyResource):
    """ARM resource for a app service environment.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: Core resource properties.
    :vartype properties: "AppServiceEnvironment"
    """

    properties: "AppServiceEnvironment"
    """Core resource properties."""


class TrackedResource(Resource):
    """Tracked Resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: The geo-location where the resource lives. Required.
    :vartype location: str
    """

    tags: dict[str, str]
    """Resource tags."""
    location: Required[str]
    """The geo-location where the resource lives. Required."""


class AppServiceEnvironmentResource(TrackedResource):
    """App Service Environment ARM resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: The geo-location where the resource lives. Required.
    :vartype location: str
    :ivar properties: Core resource properties.
    :vartype properties: "AppServiceEnvironment"
    :ivar kind: Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind.
    :vartype kind: str
    """

    properties: "AppServiceEnvironment"
    """Core resource properties."""
    kind: str
    """Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind."""


class AppServicePlan(TrackedResource):
    """App Service plan.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: The geo-location where the resource lives. Required.
    :vartype location: str
    :ivar properties: AppServicePlan resource specific properties.
    :vartype properties: "AppServicePlanProperties"
    :ivar sku: Description of a SKU for a scalable resource.
    :vartype sku: "SkuDescription"
    :ivar extended_location: Extended Location.
    :vartype extended_location: "ExtendedLocation"
    :ivar kind: Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind.
    :vartype kind: str
    :ivar identity: Managed service identity.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "AppServicePlanProperties"
    """AppServicePlan resource specific properties."""
    sku: "SkuDescription"
    """Description of a SKU for a scalable resource."""
    extendedLocation: "ExtendedLocation"
    """Extended Location."""
    kind: str
    """Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind."""
    identity: "ManagedServiceIdentity"
    """Managed service identity."""


class AppServicePlanPatchResource(ProxyOnlyResource):
    """ARM resource for a app service plan.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: AppServicePlanPatchResource resource specific properties.
    :vartype properties: "AppServicePlanPatchResourceProperties"
    :ivar identity: Managed service identity.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "AppServicePlanPatchResourceProperties"
    """AppServicePlanPatchResource resource specific properties."""
    identity: "ManagedServiceIdentity"
    """Managed service identity."""


class AppServicePlanPatchResourceProperties(TypedDict, total=False):
    """AppServicePlanPatchResource resource specific properties.

    :ivar worker_tier_name: Target worker tier assigned to the App Service plan.
    :vartype worker_tier_name: str
    :ivar status: App Service plan status. Known values are: "Ready", "Pending", and "Creating".
    :vartype status: Union[str, "StatusOptions"]
    :ivar subscription: App Service plan subscription.
    :vartype subscription: str
    :ivar hosting_environment_profile: Specification for the App Service Environment to use for the
     App Service plan.
    :vartype hosting_environment_profile: "HostingEnvironmentProfile"
    :ivar maximum_number_of_workers: Maximum number of instances that can be assigned to this App
     Service plan.
    :vartype maximum_number_of_workers: int
    :ivar number_of_workers: The number of instances that are assigned to this App Service plan.
    :vartype number_of_workers: int
    :ivar geo_region: Geographical location for the App Service plan.
    :vartype geo_region: str
    :ivar per_site_scaling: If <code>true</code>, apps assigned to this App Service plan can be
     scaled independently. If <code>false</code>, apps assigned to this App Service plan will scale
     to all instances of the plan.
    :vartype per_site_scaling: bool
    :ivar elastic_scale_enabled: ServerFarm supports ElasticScale. Apps in this plan will scale as
     if the ServerFarm was ElasticPremium sku.
    :vartype elastic_scale_enabled: bool
    :ivar maximum_elastic_worker_count: Maximum number of total workers allowed for this
     ElasticScaleEnabled App Service Plan.
    :vartype maximum_elastic_worker_count: int
    :ivar number_of_sites: Number of apps assigned to this App Service plan.
    :vartype number_of_sites: int
    :ivar is_spot: If <code>true</code>, this App Service Plan owns spot instances.
    :vartype is_spot: bool
    :ivar spot_expiration_time: The time when the server farm expires. Valid only if it is a spot
     server farm.
    :vartype spot_expiration_time: str
    :ivar free_offer_expiration_time: The time when the server farm free offer expires.
    :vartype free_offer_expiration_time: str
    :ivar resource_group: Resource group of the App Service plan.
    :vartype resource_group: str
    :ivar reserved: If Linux app service plan <code>true</code>, <code>false</code> otherwise.
    :vartype reserved: bool
    :ivar is_xenon: Obsolete: If Hyper-V container app service plan <code>true</code>,
     <code>false</code> otherwise.
    :vartype is_xenon: bool
    :ivar hyper_v: If Hyper-V container app service plan <code>true</code>, <code>false</code>
     otherwise.
    :vartype hyper_v: bool
    :ivar target_worker_count: Scaling worker count.
    :vartype target_worker_count: int
    :ivar target_worker_size_id: Scaling worker size ID.
    :vartype target_worker_size_id: int
    :ivar provisioning_state: Provisioning state of the App Service Plan. Known values are:
     "Succeeded", "Failed", "Canceled", "InProgress", and "Deleting".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    :ivar kube_environment_profile: Specification for the Kubernetes Environment to use for the App
     Service plan.
    :vartype kube_environment_profile: "KubeEnvironmentProfile"
    :ivar zone_redundant: If <code>true</code>, this App Service Plan will perform availability
     zone balancing. If <code>false</code>, this App Service Plan will not perform availability zone
     balancing.
    :vartype zone_redundant: bool
    """

    workerTierName: str
    """Target worker tier assigned to the App Service plan."""
    status: Union[str, "StatusOptions"]
    """App Service plan status. Known values are: \"Ready\", \"Pending\", and \"Creating\"."""
    subscription: str
    """App Service plan subscription."""
    hostingEnvironmentProfile: "HostingEnvironmentProfile"
    """Specification for the App Service Environment to use for the App Service plan."""
    maximumNumberOfWorkers: int
    """Maximum number of instances that can be assigned to this App Service plan."""
    numberOfWorkers: int
    """The number of instances that are assigned to this App Service plan."""
    geoRegion: str
    """Geographical location for the App Service plan."""
    perSiteScaling: bool
    """If <code>true</code>, apps assigned to this App Service plan can be scaled independently. If
     <code>false</code>, apps assigned to this App Service plan will scale to all instances of the
     plan."""
    elasticScaleEnabled: bool
    """ServerFarm supports ElasticScale. Apps in this plan will scale as if the ServerFarm was
     ElasticPremium sku."""
    maximumElasticWorkerCount: int
    """Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan."""
    numberOfSites: int
    """Number of apps assigned to this App Service plan."""
    isSpot: bool
    """If <code>true</code>, this App Service Plan owns spot instances."""
    spotExpirationTime: str
    """The time when the server farm expires. Valid only if it is a spot server farm."""
    freeOfferExpirationTime: str
    """The time when the server farm free offer expires."""
    resourceGroup: str
    """Resource group of the App Service plan."""
    reserved: bool
    """If Linux app service plan <code>true</code>, <code>false</code> otherwise."""
    isXenon: bool
    """Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code>
     otherwise."""
    hyperV: bool
    """If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise."""
    targetWorkerCount: int
    """Scaling worker count."""
    targetWorkerSizeId: int
    """Scaling worker size ID."""
    provisioningState: Union[str, "ProvisioningState"]
    """Provisioning state of the App Service Plan. Known values are: \"Succeeded\", \"Failed\",
     \"Canceled\", \"InProgress\", and \"Deleting\"."""
    kubeEnvironmentProfile: "KubeEnvironmentProfile"
    """Specification for the Kubernetes Environment to use for the App Service plan."""
    zoneRedundant: bool
    """If <code>true</code>, this App Service Plan will perform availability zone balancing. If
     <code>false</code>, this App Service Plan will not perform availability zone balancing."""


class AppServicePlanProperties(TypedDict, total=False):
    """AppServicePlan resource specific properties.

    :ivar worker_tier_name: Target worker tier assigned to the App Service plan.
    :vartype worker_tier_name: str
    :ivar status: App Service plan status. Known values are: "Ready", "Pending", and "Creating".
    :vartype status: Union[str, "StatusOptions"]
    :ivar subscription: App Service plan subscription.
    :vartype subscription: str
    :ivar hosting_environment_profile: Specification for the App Service Environment to use for the
     App Service plan.
    :vartype hosting_environment_profile: "HostingEnvironmentProfile"
    :ivar maximum_number_of_workers: Maximum number of instances that can be assigned to this App
     Service plan.
    :vartype maximum_number_of_workers: int
    :ivar number_of_workers: The number of instances that are assigned to this App Service plan.
    :vartype number_of_workers: int
    :ivar geo_region: Geographical location for the App Service plan.
    :vartype geo_region: str
    :ivar per_site_scaling: If <code>true</code>, apps assigned to this App Service plan can be
     scaled independently. If <code>false</code>, apps assigned to this App Service plan will scale
     to all instances of the plan.
    :vartype per_site_scaling: bool
    :ivar elastic_scale_enabled: ServerFarm supports ElasticScale. Apps in this plan will scale as
     if the ServerFarm was ElasticPremium sku.
    :vartype elastic_scale_enabled: bool
    :ivar maximum_elastic_worker_count: Maximum number of total workers allowed for this
     ElasticScaleEnabled App Service Plan.
    :vartype maximum_elastic_worker_count: int
    :ivar number_of_sites: Number of apps assigned to this App Service plan.
    :vartype number_of_sites: int
    :ivar is_spot: If <code>true</code>, this App Service Plan owns spot instances.
    :vartype is_spot: bool
    :ivar spot_expiration_time: The time when the server farm expires. Valid only if it is a spot
     server farm.
    :vartype spot_expiration_time: str
    :ivar free_offer_expiration_time: The time when the server farm free offer expires.
    :vartype free_offer_expiration_time: str
    :ivar resource_group: Resource group of the App Service plan.
    :vartype resource_group: str
    :ivar reserved: If Linux app service plan <code>true</code>, <code>false</code> otherwise.
    :vartype reserved: bool
    :ivar is_xenon: Obsolete: If Hyper-V container app service plan <code>true</code>,
     <code>false</code> otherwise.
    :vartype is_xenon: bool
    :ivar hyper_v: If Hyper-V container app service plan <code>true</code>, <code>false</code>
     otherwise.
    :vartype hyper_v: bool
    :ivar target_worker_count: Scaling worker count.
    :vartype target_worker_count: int
    :ivar target_worker_size_id: Scaling worker size ID.
    :vartype target_worker_size_id: int
    :ivar provisioning_state: Provisioning state of the App Service Plan. Known values are:
     "Succeeded", "Failed", "Canceled", "InProgress", and "Deleting".
    :vartype provisioning_state: Union[str, "ProvisioningState"]
    :ivar kube_environment_profile: Specification for the Kubernetes Environment to use for the App
     Service plan.
    :vartype kube_environment_profile: "KubeEnvironmentProfile"
    :ivar zone_redundant: If <code>true</code>, this App Service Plan will perform availability
     zone balancing. If <code>false</code>, this App Service Plan will not perform availability zone
     balancing.
    :vartype zone_redundant: bool
    :ivar async_scaling_enabled: If <code>true</code>, this App Service Plan will attempt to scale
     asynchronously if there are insufficient workers to scale synchronously. If <code>false</code>,
     this App Service Plan will only attempt sync scaling.
    :vartype async_scaling_enabled: bool
    :ivar plan_default_identity: Identity to use by platform for various features and integrations
     using managed identity.
    :vartype plan_default_identity: "DefaultIdentity"
    :ivar is_custom_mode: Whether this server farm is in custom mode.
    :vartype is_custom_mode: bool
    :ivar registry_adapters: Registry adapters associated with this App Service plan.
    :vartype registry_adapters: list["RegistryAdapter"]
    :ivar install_scripts: Install scripts associated with this App Service plan.
    :vartype install_scripts: list["InstallScript"]
    :ivar network: All network settings for the server farm.
    :vartype network: "ServerFarmNetworkSettings"
    :ivar storage_mounts: Storage mounts associated with this App Service plan.
    :vartype storage_mounts: list["StorageMount"]
    :ivar rdp_enabled: If <code>true</code>, RDP access is enabled for this App Service plan. Only
     applicable for IsCustomMode ASPs. If <code>false</code>, RDP access is disabled.
    :vartype rdp_enabled: bool
    """

    workerTierName: str
    """Target worker tier assigned to the App Service plan."""
    status: Union[str, "StatusOptions"]
    """App Service plan status. Known values are: \"Ready\", \"Pending\", and \"Creating\"."""
    subscription: str
    """App Service plan subscription."""
    hostingEnvironmentProfile: "HostingEnvironmentProfile"
    """Specification for the App Service Environment to use for the App Service plan."""
    maximumNumberOfWorkers: int
    """Maximum number of instances that can be assigned to this App Service plan."""
    numberOfWorkers: int
    """The number of instances that are assigned to this App Service plan."""
    geoRegion: str
    """Geographical location for the App Service plan."""
    perSiteScaling: bool
    """If <code>true</code>, apps assigned to this App Service plan can be scaled independently. If
     <code>false</code>, apps assigned to this App Service plan will scale to all instances of the
     plan."""
    elasticScaleEnabled: bool
    """ServerFarm supports ElasticScale. Apps in this plan will scale as if the ServerFarm was
     ElasticPremium sku."""
    maximumElasticWorkerCount: int
    """Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan."""
    numberOfSites: int
    """Number of apps assigned to this App Service plan."""
    isSpot: bool
    """If <code>true</code>, this App Service Plan owns spot instances."""
    spotExpirationTime: str
    """The time when the server farm expires. Valid only if it is a spot server farm."""
    freeOfferExpirationTime: str
    """The time when the server farm free offer expires."""
    resourceGroup: str
    """Resource group of the App Service plan."""
    reserved: bool
    """If Linux app service plan <code>true</code>, <code>false</code> otherwise."""
    isXenon: bool
    """Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code>
     otherwise."""
    hyperV: bool
    """If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise."""
    targetWorkerCount: int
    """Scaling worker count."""
    targetWorkerSizeId: int
    """Scaling worker size ID."""
    provisioningState: Union[str, "ProvisioningState"]
    """Provisioning state of the App Service Plan. Known values are: \"Succeeded\", \"Failed\",
     \"Canceled\", \"InProgress\", and \"Deleting\"."""
    kubeEnvironmentProfile: "KubeEnvironmentProfile"
    """Specification for the Kubernetes Environment to use for the App Service plan."""
    zoneRedundant: bool
    """If <code>true</code>, this App Service Plan will perform availability zone balancing. If
     <code>false</code>, this App Service Plan will not perform availability zone balancing."""
    asyncScalingEnabled: bool
    """If <code>true</code>, this App Service Plan will attempt to scale asynchronously if there are
     insufficient workers to scale synchronously. If <code>false</code>, this App Service Plan will
     only attempt sync scaling."""
    planDefaultIdentity: "DefaultIdentity"
    """Identity to use by platform for various features and integrations using managed identity."""
    isCustomMode: bool
    """Whether this server farm is in custom mode."""
    registryAdapters: list["RegistryAdapter"]
    """Registry adapters associated with this App Service plan."""
    installScripts: list["InstallScript"]
    """Install scripts associated with this App Service plan."""
    network: "ServerFarmNetworkSettings"
    """All network settings for the server farm."""
    storageMounts: list["StorageMount"]
    """Storage mounts associated with this App Service plan."""
    rdpEnabled: bool
    """If <code>true</code>, RDP access is enabled for this App Service plan. Only applicable for
     IsCustomMode ASPs. If <code>false</code>, RDP access is disabled."""


class ArcConfiguration(TypedDict, total=False):
    """ArcConfiguration.

    :ivar artifacts_storage_type: Known values are: "LocalNode" and "NetworkFileSystem".
    :vartype artifacts_storage_type: Union[str, "StorageType"]
    :ivar artifact_storage_class_name:
    :vartype artifact_storage_class_name: str
    :ivar artifact_storage_mount_path:
    :vartype artifact_storage_mount_path: str
    :ivar artifact_storage_node_name:
    :vartype artifact_storage_node_name: str
    :ivar artifact_storage_access_mode:
    :vartype artifact_storage_access_mode: str
    :ivar front_end_service_configuration:
    :vartype front_end_service_configuration: "FrontEndConfiguration"
    :ivar kube_config:
    :vartype kube_config: str
    """

    artifactsStorageType: Union[str, "StorageType"]
    """Known values are: \"LocalNode\" and \"NetworkFileSystem\"."""
    artifactStorageClassName: str
    artifactStorageMountPath: str
    artifactStorageNodeName: str
    artifactStorageAccessMode: str
    frontEndServiceConfiguration: "FrontEndConfiguration"
    kubeConfig: str


class ArmIdWrapper(TypedDict, total=False):
    """A wrapper for an ARM resource id.

    :ivar id:
    :vartype id: str
    """

    id: str


class ArmPlan(TypedDict, total=False):
    """The plan object in Azure Resource Manager, represents a marketplace plan.

    :ivar name: The name.
    :vartype name: str
    :ivar publisher: The publisher.
    :vartype publisher: str
    :ivar product: The product.
    :vartype product: str
    :ivar promotion_code: The promotion code.
    :vartype promotion_code: str
    :ivar version: Version of product.
    :vartype version: str
    """

    name: str
    """The name."""
    publisher: str
    """The publisher."""
    product: str
    """The product."""
    promotionCode: str
    """The promotion code."""
    version: str
    """Version of product."""


class AseV3NetworkingConfiguration(ProxyResource):
    """Full view of networking configuration for an ASE.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: AseV3NetworkingConfiguration resource specific properties.
    :vartype properties: "AseV3NetworkingConfigurationProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "AseV3NetworkingConfigurationProperties"
    """AseV3NetworkingConfiguration resource specific properties."""
    kind: str
    """Kind of resource."""


class AseV3NetworkingConfigurationProperties(TypedDict, total=False):
    """AseV3NetworkingConfiguration resource specific properties.

    :ivar windows_outbound_ip_addresses:
    :vartype windows_outbound_ip_addresses: list[str]
    :ivar linux_outbound_ip_addresses:
    :vartype linux_outbound_ip_addresses: list[str]
    :ivar external_inbound_ip_addresses:
    :vartype external_inbound_ip_addresses: list[str]
    :ivar internal_inbound_ip_addresses:
    :vartype internal_inbound_ip_addresses: list[str]
    :ivar allow_new_private_endpoint_connections: Property to enable and disable new private
     endpoint connection creation on ASE.
    :vartype allow_new_private_endpoint_connections: bool
    :ivar ftp_enabled: Property to enable and disable FTP on ASEV3.
    :vartype ftp_enabled: bool
    :ivar remote_debug_enabled: Property to enable and disable Remote Debug on ASEV3.
    :vartype remote_debug_enabled: bool
    :ivar inbound_ip_address_override: Customer provided Inbound IP Address. Only able to be set on
     Ase create.
    :vartype inbound_ip_address_override: str
    """

    windowsOutboundIpAddresses: list[str]
    linuxOutboundIpAddresses: list[str]
    externalInboundIpAddresses: list[str]
    internalInboundIpAddresses: list[str]
    allowNewPrivateEndpointConnections: bool
    """Property to enable and disable new private endpoint connection creation on ASE."""
    ftpEnabled: bool
    """Property to enable and disable FTP on ASEV3."""
    remoteDebugEnabled: bool
    """Property to enable and disable Remote Debug on ASEV3."""
    inboundIpAddressOverride: str
    """Customer provided Inbound IP Address. Only able to be set on Ase create."""


class AuthPlatform(TypedDict, total=False):
    """The configuration settings of the platform of App Service Authentication/Authorization.

    :ivar enabled: <code>true</code> if the Authentication / Authorization feature is enabled for
     the current app; otherwise, <code>false</code>.
    :vartype enabled: bool
    :ivar runtime_version: The RuntimeVersion of the Authentication / Authorization feature in use
     for the current app. The setting in this value can control the behavior of certain features in
     the Authentication / Authorization module.
    :vartype runtime_version: str
    :ivar config_file_path: The path of the config file containing auth settings if they come from
     a file. If the path is relative, base will the site's root directory.
    :vartype config_file_path: str
    """

    enabled: bool
    """<code>true</code> if the Authentication / Authorization feature is enabled for the current app;
     otherwise, <code>false</code>."""
    runtimeVersion: str
    """The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
     The setting in this value can control the behavior of certain features in the Authentication /
     Authorization module."""
    configFilePath: str
    """The path of the config file containing auth settings if they come from a file. If the path is
     relative, base will the site's root directory."""


class AutoHealActions(TypedDict, total=False):
    """Actions which to take by the auto-heal module when a rule is triggered.

    :ivar action_type: Predefined action to be taken. Known values are: "Recycle", "LogEvent", and
     "CustomAction".
    :vartype action_type: Union[str, "AutoHealActionType"]
    :ivar custom_action: Custom action to be taken.
    :vartype custom_action: "AutoHealCustomAction"
    :ivar min_process_execution_time: Minimum time the process must execute before taking the
     action.
    :vartype min_process_execution_time: str
    """

    actionType: Union[str, "AutoHealActionType"]
    """Predefined action to be taken. Known values are: \"Recycle\", \"LogEvent\", and
     \"CustomAction\"."""
    customAction: "AutoHealCustomAction"
    """Custom action to be taken."""
    minProcessExecutionTime: str
    """Minimum time the process must execute before taking the action."""


class AutoHealCustomAction(TypedDict, total=False):
    """Custom action to be executed when an auto heal rule is triggered.

    :ivar exe: Executable to be run.
    :vartype exe: str
    :ivar parameters: Parameters for the executable.
    :vartype parameters: str
    """

    exe: str
    """Executable to be run."""
    parameters: str
    """Parameters for the executable."""


class AutoHealRules(TypedDict, total=False):
    """Rules that can be defined for auto-heal.

    :ivar triggers: Conditions that describe when to execute the auto-heal actions.
    :vartype triggers: "AutoHealTriggers"
    :ivar actions: Actions to be executed when a rule is triggered.
    :vartype actions: "AutoHealActions"
    """

    triggers: "AutoHealTriggers"
    """Conditions that describe when to execute the auto-heal actions."""
    actions: "AutoHealActions"
    """Actions to be executed when a rule is triggered."""


class AutoHealTriggers(TypedDict, total=False):
    """Triggers for auto-heal.

    :ivar requests: A rule based on total requests.
    :vartype requests: "RequestsBasedTrigger"
    :ivar private_bytes_in_kb: A rule based on private bytes.
    :vartype private_bytes_in_kb: int
    :ivar status_codes: A rule based on status codes.
    :vartype status_codes: list["StatusCodesBasedTrigger"]
    :ivar slow_requests: A rule based on request execution time.
    :vartype slow_requests: "SlowRequestsBasedTrigger"
    :ivar slow_requests_with_path: A rule based on multiple Slow Requests Rule with path.
    :vartype slow_requests_with_path: list["SlowRequestsBasedTrigger"]
    :ivar status_codes_range: A rule based on status codes ranges.
    :vartype status_codes_range: list["StatusCodesRangeBasedTrigger"]
    """

    requests: "RequestsBasedTrigger"
    """A rule based on total requests."""
    privateBytesInKB: int
    """A rule based on private bytes."""
    statusCodes: list["StatusCodesBasedTrigger"]
    """A rule based on status codes."""
    slowRequests: "SlowRequestsBasedTrigger"
    """A rule based on request execution time."""
    slowRequestsWithPath: list["SlowRequestsBasedTrigger"]
    """A rule based on multiple Slow Requests Rule with path."""
    statusCodesRange: list["StatusCodesRangeBasedTrigger"]
    """A rule based on status codes ranges."""


class AzureActiveDirectory(TypedDict, total=False):
    """The configuration settings of the Azure Active directory provider.

    :ivar enabled: <code>false</code> if the Azure Active Directory provider should not be enabled
     despite the set registration; otherwise, <code>true</code>.
    :vartype enabled: bool
    :ivar registration: The configuration settings of the Azure Active Directory app registration.
    :vartype registration: "AzureActiveDirectoryRegistration"
    :ivar login: The configuration settings of the Azure Active Directory login flow.
    :vartype login: "AzureActiveDirectoryLogin"
    :ivar validation: The configuration settings of the Azure Active Directory token validation
     flow.
    :vartype validation: "AzureActiveDirectoryValidation"
    :ivar is_auto_provisioned: Gets a value indicating whether the Azure AD configuration was
     auto-provisioned using 1st party tooling. This is an internal flag primarily intended to
     support the Azure Management Portal. Users should not read or write to this property.
    :vartype is_auto_provisioned: bool
    """

    enabled: bool
    """<code>false</code> if the Azure Active Directory provider should not be enabled despite the set
     registration; otherwise, <code>true</code>."""
    registration: "AzureActiveDirectoryRegistration"
    """The configuration settings of the Azure Active Directory app registration."""
    login: "AzureActiveDirectoryLogin"
    """The configuration settings of the Azure Active Directory login flow."""
    validation: "AzureActiveDirectoryValidation"
    """The configuration settings of the Azure Active Directory token validation flow."""
    isAutoProvisioned: bool
    """Gets a value indicating whether the Azure AD configuration was auto-provisioned using 1st party
     tooling. This is an internal flag primarily intended to support the Azure Management Portal.
     Users should not read or write to this property."""


class AzureActiveDirectoryLogin(TypedDict, total=False):
    """The configuration settings of the Azure Active Directory login flow.

    :ivar login_parameters: Login parameters to send to the OpenID Connect authorization endpoint
     when a user logs in. Each parameter must be in the form "key=value".
    :vartype login_parameters: list[str]
    :ivar disable_www_authenticate: <code>true</code> if the www-authenticate provider should be
     omitted from the request; otherwise, <code>false</code>.
    :vartype disable_www_authenticate: bool
    """

    loginParameters: list[str]
    """Login parameters to send to the OpenID Connect authorization endpoint when a user logs in. Each
     parameter must be in the form \"key=value\"."""
    disableWWWAuthenticate: bool
    """<code>true</code> if the www-authenticate provider should be omitted from the request;
     otherwise, <code>false</code>."""


class AzureActiveDirectoryRegistration(TypedDict, total=False):
    """The configuration settings of the Azure Active Directory app registration.

    :ivar open_id_issuer: The OpenID Connect Issuer URI that represents the entity which issues
     access tokens for this application. When using Azure Active Directory, this value is the URI of
     the directory tenant, e.g. ``https://login.microsoftonline.com/v2.0/{tenant-guid}/``. This URI
     is a case-sensitive identifier for the token issuer. More information on OpenID Connect
     Discovery: `http://openid.net/specs/openid-connect-discovery-1_0.html
     <http://openid.net/specs/openid-connect-discovery-1_0.html>`_.
    :vartype open_id_issuer: str
    :ivar client_id: The Client ID of this relying party application, known as the client_id. This
     setting is required for enabling OpenID Connection authentication with Azure Active Directory
     or other 3rd party OpenID Connect providers. More information on OpenID Connect:
     `http://openid.net/specs/openid-connect-core-1_0.html
     <http://openid.net/specs/openid-connect-core-1_0.html>`_.
    :vartype client_id: str
    :ivar client_secret_setting_name: The app setting name that contains the client secret of the
     relying party application.
    :vartype client_secret_setting_name: str
    :ivar client_secret_certificate_thumbprint: An alternative to the client secret, that is the
     thumbprint of a certificate used for signing purposes. This property acts as a replacement for
     the Client Secret. It is also optional.
    :vartype client_secret_certificate_thumbprint: str
    :ivar client_secret_certificate_subject_alternative_name: An alternative to the client secret
     thumbprint, that is the subject alternative name of a certificate used for signing purposes.
     This property acts as a replacement for the Client Secret Certificate Thumbprint. It is also
     optional.
    :vartype client_secret_certificate_subject_alternative_name: str
    :ivar client_secret_certificate_issuer: An alternative to the client secret thumbprint, that is
     the issuer of a certificate used for signing purposes. This property acts as a replacement for
     the Client Secret Certificate Thumbprint. It is also optional.
    :vartype client_secret_certificate_issuer: str
    """

    openIdIssuer: str
    """The OpenID Connect Issuer URI that represents the entity which issues access tokens for this
     application. When using Azure Active Directory, this value is the URI of the directory tenant,
     e.g. ``https://login.microsoftonline.com/v2.0/{tenant-guid}/``. This URI is a case-sensitive
     identifier for the token issuer. More information on OpenID Connect Discovery:
     `http://openid.net/specs/openid-connect-discovery-1_0.html
     <http://openid.net/specs/openid-connect-discovery-1_0.html>`_."""
    clientId: str
    """The Client ID of this relying party application, known as the client_id. This setting is
     required for enabling OpenID Connection authentication with Azure Active Directory or other 3rd
     party OpenID Connect providers. More information on OpenID Connect:
     `http://openid.net/specs/openid-connect-core-1_0.html
     <http://openid.net/specs/openid-connect-core-1_0.html>`_."""
    clientSecretSettingName: str
    """The app setting name that contains the client secret of the relying party application."""
    clientSecretCertificateThumbprint: str
    """An alternative to the client secret, that is the thumbprint of a certificate used for signing
     purposes. This property acts as a replacement for the Client Secret. It is also optional."""
    clientSecretCertificateSubjectAlternativeName: str
    """An alternative to the client secret thumbprint, that is the subject alternative name of a
     certificate used for signing purposes. This property acts as a replacement for the Client
     Secret Certificate Thumbprint. It is also optional."""
    clientSecretCertificateIssuer: str
    """An alternative to the client secret thumbprint, that is the issuer of a certificate used for
     signing purposes. This property acts as a replacement for the Client Secret Certificate
     Thumbprint. It is also optional."""


class AzureActiveDirectoryValidation(TypedDict, total=False):
    """The configuration settings of the Azure Active Directory token validation flow.

    :ivar jwt_claim_checks: The configuration settings of the checks that should be made while
     validating the JWT Claims.
    :vartype jwt_claim_checks: "JwtClaimChecks"
    :ivar allowed_audiences: The list of audiences that can make successful
     authentication/authorization requests.
    :vartype allowed_audiences: list[str]
    :ivar default_authorization_policy: The configuration settings of the default authorization
     policy.
    :vartype default_authorization_policy: "DefaultAuthorizationPolicy"
    """

    jwtClaimChecks: "JwtClaimChecks"
    """The configuration settings of the checks that should be made while validating the JWT Claims."""
    allowedAudiences: list[str]
    """The list of audiences that can make successful authentication/authorization requests."""
    defaultAuthorizationPolicy: "DefaultAuthorizationPolicy"
    """The configuration settings of the default authorization policy."""


class AzureBlobStorageApplicationLogsConfig(TypedDict, total=False):
    """Application logs azure blob storage configuration.

    :ivar level: Log level. Known values are: "Off", "Verbose", "Information", "Warning", and
     "Error".
    :vartype level: Union[str, "LogLevel"]
    :ivar sas_url: SAS url to a azure blob container with read/write/list/delete permissions.
    :vartype sas_url: str
    :ivar retention_in_days: Retention in days. Remove blobs older than X days. 0 or lower means no
     retention.
    :vartype retention_in_days: int
    """

    level: Union[str, "LogLevel"]
    """Log level. Known values are: \"Off\", \"Verbose\", \"Information\", \"Warning\", and \"Error\"."""
    sasUrl: str
    """SAS url to a azure blob container with read/write/list/delete permissions."""
    retentionInDays: int
    """Retention in days. Remove blobs older than X days. 0 or lower means no retention."""


class AzureBlobStorageHttpLogsConfig(TypedDict, total=False):
    """Http logs to azure blob storage configuration.

    :ivar sas_url: SAS url to a azure blob container with read/write/list/delete permissions.
    :vartype sas_url: str
    :ivar retention_in_days: Retention in days. Remove blobs older than X days. 0 or lower means no
     retention.
    :vartype retention_in_days: int
    :ivar enabled: True if configuration is enabled, false if it is disabled and null if
     configuration is not set.
    :vartype enabled: bool
    """

    sasUrl: str
    """SAS url to a azure blob container with read/write/list/delete permissions."""
    retentionInDays: int
    """Retention in days. Remove blobs older than X days. 0 or lower means no retention."""
    enabled: bool
    """True if configuration is enabled, false if it is disabled and null if configuration is not set."""


class AzureStaticWebApps(TypedDict, total=False):
    """The configuration settings of the Azure Static Web Apps provider.

    :ivar enabled: <code>false</code> if the Azure Static Web Apps provider should not be enabled
     despite the set registration; otherwise, <code>true</code>.
    :vartype enabled: bool
    :ivar registration: The configuration settings of the Azure Static Web Apps registration.
    :vartype registration: "AzureStaticWebAppsRegistration"
    """

    enabled: bool
    """<code>false</code> if the Azure Static Web Apps provider should not be enabled despite the set
     registration; otherwise, <code>true</code>."""
    registration: "AzureStaticWebAppsRegistration"
    """The configuration settings of the Azure Static Web Apps registration."""


class AzureStaticWebAppsRegistration(TypedDict, total=False):
    """The configuration settings of the registration for the Azure Static Web Apps provider.

    :ivar client_id: The Client ID of the app used for login.
    :vartype client_id: str
    """

    clientId: str
    """The Client ID of the app used for login."""


class AzureStorageInfoValue(TypedDict, total=False):
    """Azure Files or Blob Storage access information value for dictionary storage.

    :ivar type: Type of storage. Known values are: "AzureFiles" and "AzureBlob".
    :vartype type: Union[str, "AzureStorageType"]
    :ivar account_name: Name of the storage account.
    :vartype account_name: str
    :ivar share_name: Name of the file share (container name, for Blob storage).
    :vartype share_name: str
    :ivar access_key: Access key for the storage account.
    :vartype access_key: str
    :ivar mount_path: Path to mount the storage within the site's runtime environment.
    :vartype mount_path: str
    :ivar state: State of the storage account. Known values are: "Ok", "InvalidCredentials",
     "InvalidShare", and "NotValidated".
    :vartype state: Union[str, "AzureStorageState"]
    :ivar protocol: Mounting protocol to use for the storage account. Known values are: "Smb",
     "Http", and "Nfs".
    :vartype protocol: Union[str, "AzureStorageProtocol"]
    """

    type: Union[str, "AzureStorageType"]
    """Type of storage. Known values are: \"AzureFiles\" and \"AzureBlob\"."""
    accountName: str
    """Name of the storage account."""
    shareName: str
    """Name of the file share (container name, for Blob storage)."""
    accessKey: str
    """Access key for the storage account."""
    mountPath: str
    """Path to mount the storage within the site's runtime environment."""
    state: Union[str, "AzureStorageState"]
    """State of the storage account. Known values are: \"Ok\", \"InvalidCredentials\",
     \"InvalidShare\", and \"NotValidated\"."""
    protocol: Union[str, "AzureStorageProtocol"]
    """Mounting protocol to use for the storage account. Known values are: \"Smb\", \"Http\", and
     \"Nfs\"."""


class AzureStoragePropertyDictionaryResource(ProxyOnlyResource):
    """AzureStorageInfo dictionary resource.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: Azure storage accounts.
    :vartype properties: dict[str, "AzureStorageInfoValue"]
    """

    properties: dict[str, "AzureStorageInfoValue"]
    """Azure storage accounts."""


class AzureTableStorageApplicationLogsConfig(TypedDict, total=False):
    """Application logs to Azure table storage configuration.

    :ivar level: Log level. Known values are: "Off", "Verbose", "Information", "Warning", and
     "Error".
    :vartype level: Union[str, "LogLevel"]
    :ivar sas_url: SAS URL to an Azure table with add/query/delete permissions. Required.
    :vartype sas_url: str
    """

    level: Union[str, "LogLevel"]
    """Log level. Known values are: \"Off\", \"Verbose\", \"Information\", \"Warning\", and \"Error\"."""
    sasUrl: Required[str]
    """SAS URL to an Azure table with add/query/delete permissions. Required."""


class BackupRequest(ProxyOnlyResource):
    """Description of a backup which will be performed.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: BackupRequest resource specific properties.
    :vartype properties: "BackupRequestProperties"
    """

    properties: "BackupRequestProperties"
    """BackupRequest resource specific properties."""


class BackupRequestProperties(TypedDict, total=False):
    """BackupRequest resource specific properties.

    :ivar backup_name: Name of the backup.
    :vartype backup_name: str
    :ivar enabled: True if the backup schedule is enabled (must be included in that case), false if
     the backup schedule should be disabled.
    :vartype enabled: bool
    :ivar storage_account_url: SAS URL to the container. Required.
    :vartype storage_account_url: str
    :ivar backup_schedule: Schedule for the backup if it is executed periodically.
    :vartype backup_schedule: "BackupSchedule"
    :ivar databases: Databases included in the backup.
    :vartype databases: list["DatabaseBackupSetting"]
    """

    backupName: str
    """Name of the backup."""
    enabled: bool
    """True if the backup schedule is enabled (must be included in that case), false if the backup
     schedule should be disabled."""
    storageAccountUrl: Required[str]
    """SAS URL to the container. Required."""
    backupSchedule: "BackupSchedule"
    """Schedule for the backup if it is executed periodically."""
    databases: list["DatabaseBackupSetting"]
    """Databases included in the backup."""


class BackupSchedule(TypedDict, total=False):
    """Description of a backup schedule. Describes how often should be the backup performed and what
    should be the retention policy.

    :ivar frequency_interval: How often the backup should be executed (e.g. for weekly backup, this
     should be set to 7 and FrequencyUnit should be set to Day). Required.
    :vartype frequency_interval: int
    :ivar frequency_unit: The unit of time for how often the backup should be executed (e.g. for
     weekly backup, this should be set to Day and FrequencyInterval should be set to 7). Required.
     Known values are: "Day" and "Hour".
    :vartype frequency_unit: Union[str, "FrequencyUnit"]
    :ivar keep_at_least_one_backup: True if the retention policy should always keep at least one
     backup in the storage account, regardless how old it is; false otherwise. Required.
    :vartype keep_at_least_one_backup: bool
    :ivar retention_period_in_days: After how many days backups should be deleted. Required.
    :vartype retention_period_in_days: int
    :ivar start_time: When the schedule should start working.
    :vartype start_time: str
    :ivar last_execution_time: Last time when this schedule was triggered.
    :vartype last_execution_time: str
    """

    frequencyInterval: Required[int]
    """How often the backup should be executed (e.g. for weekly backup, this should be set to 7 and
     FrequencyUnit should be set to Day). Required."""
    frequencyUnit: Required[Union[str, "FrequencyUnit"]]
    """The unit of time for how often the backup should be executed (e.g. for weekly backup, this
     should be set to Day and FrequencyInterval should be set to 7). Required. Known values are:
     \"Day\" and \"Hour\"."""
    keepAtLeastOneBackup: Required[bool]
    """True if the retention policy should always keep at least one backup in the storage account,
     regardless how old it is; false otherwise. Required."""
    retentionPeriodInDays: Required[int]
    """After how many days backups should be deleted. Required."""
    startTime: str
    """When the schedule should start working."""
    lastExecutionTime: str
    """Last time when this schedule was triggered."""


class BlobStorageTokenStore(TypedDict, total=False):
    """The configuration settings of the storage of the tokens if blob storage is used.

    :ivar sas_url_setting_name: The name of the app setting containing the SAS URL of the blob
     storage containing the tokens.
    :vartype sas_url_setting_name: str
    """

    sasUrlSettingName: str
    """The name of the app setting containing the SAS URL of the blob storage containing the tokens."""


class Capability(TypedDict, total=False):
    """Describes the capabilities/features allowed for a specific SKU.

    :ivar name: Name of the SKU capability.
    :vartype name: str
    :ivar value: Value of the SKU capability.
    :vartype value: str
    :ivar reason: Reason of the SKU capability.
    :vartype reason: str
    """

    name: str
    """Name of the SKU capability."""
    value: str
    """Value of the SKU capability."""
    reason: str
    """Reason of the SKU capability."""


class Certificate(TrackedResource):
    """SSL certificate for an app.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: The geo-location where the resource lives. Required.
    :vartype location: str
    :ivar properties: Certificate resource specific properties.
    :vartype properties: "CertificateProperties"
    :ivar kind: Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind.
    :vartype kind: str
    """

    properties: "CertificateProperties"
    """Certificate resource specific properties."""
    kind: str
    """Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind."""


class CertificatePatchResource(ProxyOnlyResource):
    """ARM resource for a certificate.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: CertificatePatchResource resource specific properties.
    :vartype properties: "CertificatePatchResourceProperties"
    """

    properties: "CertificatePatchResourceProperties"
    """CertificatePatchResource resource specific properties."""


class CertificatePatchResourceProperties(TypedDict, total=False):
    """CertificatePatchResource resource specific properties.

    :ivar password: Certificate password.
    :vartype password: str
    :ivar friendly_name: Friendly name of the certificate.
    :vartype friendly_name: str
    :ivar subject_name: Subject name of the certificate.
    :vartype subject_name: str
    :ivar host_names: Host names the certificate applies to.
    :vartype host_names: list[str]
    :ivar pfx_blob: Pfx blob.
    :vartype pfx_blob: str
    :ivar site_name: App name.
    :vartype site_name: str
    :ivar self_link: Self link.
    :vartype self_link: str
    :ivar issuer: Certificate issuer.
    :vartype issuer: str
    :ivar issue_date: Certificate issue Date.
    :vartype issue_date: str
    :ivar expiration_date: Certificate expiration date.
    :vartype expiration_date: str
    :ivar thumbprint: Certificate thumbprint.
    :vartype thumbprint: str
    :ivar valid: Is the certificate valid?.
    :vartype valid: bool
    :ivar cer_blob: Raw bytes of .cer file.
    :vartype cer_blob: str
    :ivar public_key_hash: Public key hash.
    :vartype public_key_hash: str
    :ivar hosting_environment_profile: Specification for the App Service Environment to use for the
     certificate.
    :vartype hosting_environment_profile: "HostingEnvironmentProfile"
    :ivar key_vault_id: Key Vault Csm resource Id.
    :vartype key_vault_id: str
    :ivar key_vault_secret_name: Key Vault secret name.
    :vartype key_vault_secret_name: str
    :ivar key_vault_secret_status: Status of the Key Vault secret. Known values are: "Initialized",
     "WaitingOnCertificateOrder", "Succeeded", "CertificateOrderFailed",
     "OperationNotPermittedOnKeyVault", "AzureServiceUnauthorizedToAccessKeyVault",
     "KeyVaultDoesNotExist", "KeyVaultSecretDoesNotExist", "UnknownError", "ExternalPrivateKey", and
     "Unknown".
    :vartype key_vault_secret_status: Union[str, "KeyVaultSecretStatus"]
    :ivar server_farm_id: Resource ID of the associated App Service plan, formatted as:
     "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
    :vartype server_farm_id: str
    :ivar canonical_name: CNAME of the certificate to be issued via free certificate.
    :vartype canonical_name: str
    :ivar domain_validation_method: Method of domain validation for free cert.
    :vartype domain_validation_method: str
    """

    password: str
    """Certificate password."""
    friendlyName: str
    """Friendly name of the certificate."""
    subjectName: str
    """Subject name of the certificate."""
    hostNames: list[str]
    """Host names the certificate applies to."""
    pfxBlob: str
    """Pfx blob."""
    siteName: str
    """App name."""
    selfLink: str
    """Self link."""
    issuer: str
    """Certificate issuer."""
    issueDate: str
    """Certificate issue Date."""
    expirationDate: str
    """Certificate expiration date."""
    thumbprint: str
    """Certificate thumbprint."""
    valid: bool
    """Is the certificate valid?."""
    cerBlob: str
    """Raw bytes of .cer file."""
    publicKeyHash: str
    """Public key hash."""
    hostingEnvironmentProfile: "HostingEnvironmentProfile"
    """Specification for the App Service Environment to use for the certificate."""
    keyVaultId: str
    """Key Vault Csm resource Id."""
    keyVaultSecretName: str
    """Key Vault secret name."""
    keyVaultSecretStatus: Union[str, "KeyVaultSecretStatus"]
    """Status of the Key Vault secret. Known values are: \"Initialized\",
     \"WaitingOnCertificateOrder\", \"Succeeded\", \"CertificateOrderFailed\",
     \"OperationNotPermittedOnKeyVault\", \"AzureServiceUnauthorizedToAccessKeyVault\",
     \"KeyVaultDoesNotExist\", \"KeyVaultSecretDoesNotExist\", \"UnknownError\",
     \"ExternalPrivateKey\", and \"Unknown\"."""
    serverFarmId: str
    """Resource ID of the associated App Service plan, formatted as:
     \"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}\"."""
    canonicalName: str
    """CNAME of the certificate to be issued via free certificate."""
    domainValidationMethod: str
    """Method of domain validation for free cert."""


class CertificateProperties(TypedDict, total=False):
    """Certificate resource specific properties.

    :ivar password: Certificate password.
    :vartype password: str
    :ivar friendly_name: Friendly name of the certificate.
    :vartype friendly_name: str
    :ivar subject_name: Subject name of the certificate.
    :vartype subject_name: str
    :ivar host_names: Host names the certificate applies to.
    :vartype host_names: list[str]
    :ivar pfx_blob: Pfx blob.
    :vartype pfx_blob: str
    :ivar site_name: App name.
    :vartype site_name: str
    :ivar self_link: Self link.
    :vartype self_link: str
    :ivar issuer: Certificate issuer.
    :vartype issuer: str
    :ivar issue_date: Certificate issue Date.
    :vartype issue_date: str
    :ivar expiration_date: Certificate expiration date.
    :vartype expiration_date: str
    :ivar thumbprint: Certificate thumbprint.
    :vartype thumbprint: str
    :ivar valid: Is the certificate valid?.
    :vartype valid: bool
    :ivar cer_blob: Raw bytes of .cer file.
    :vartype cer_blob: str
    :ivar public_key_hash: Public key hash.
    :vartype public_key_hash: str
    :ivar hosting_environment_profile: Specification for the App Service Environment to use for the
     certificate.
    :vartype hosting_environment_profile: "HostingEnvironmentProfile"
    :ivar key_vault_id: Azure Key Vault Csm resource Id.
    :vartype key_vault_id: str
    :ivar key_vault_secret_name: Azure Key Vault secret name.
    :vartype key_vault_secret_name: str
    :ivar key_vault_secret_status: Status of the Key Vault secret. Known values are: "Initialized",
     "WaitingOnCertificateOrder", "Succeeded", "CertificateOrderFailed",
     "OperationNotPermittedOnKeyVault", "AzureServiceUnauthorizedToAccessKeyVault",
     "KeyVaultDoesNotExist", "KeyVaultSecretDoesNotExist", "UnknownError", "ExternalPrivateKey", and
     "Unknown".
    :vartype key_vault_secret_status: Union[str, "KeyVaultSecretStatus"]
    :ivar server_farm_id: Resource ID of the associated App Service plan.
    :vartype server_farm_id: str
    :ivar canonical_name: CNAME of the certificate to be issued via free certificate.
    :vartype canonical_name: str
    :ivar domain_validation_method: Method of domain validation for free cert.
    :vartype domain_validation_method: str
    """

    password: str
    """Certificate password."""
    friendlyName: str
    """Friendly name of the certificate."""
    subjectName: str
    """Subject name of the certificate."""
    hostNames: list[str]
    """Host names the certificate applies to."""
    pfxBlob: str
    """Pfx blob."""
    siteName: str
    """App name."""
    selfLink: str
    """Self link."""
    issuer: str
    """Certificate issuer."""
    issueDate: str
    """Certificate issue Date."""
    expirationDate: str
    """Certificate expiration date."""
    thumbprint: str
    """Certificate thumbprint."""
    valid: bool
    """Is the certificate valid?."""
    cerBlob: str
    """Raw bytes of .cer file."""
    publicKeyHash: str
    """Public key hash."""
    hostingEnvironmentProfile: "HostingEnvironmentProfile"
    """Specification for the App Service Environment to use for the certificate."""
    keyVaultId: str
    """Azure Key Vault Csm resource Id."""
    keyVaultSecretName: str
    """Azure Key Vault secret name."""
    keyVaultSecretStatus: Union[str, "KeyVaultSecretStatus"]
    """Status of the Key Vault secret. Known values are: \"Initialized\",
     \"WaitingOnCertificateOrder\", \"Succeeded\", \"CertificateOrderFailed\",
     \"OperationNotPermittedOnKeyVault\", \"AzureServiceUnauthorizedToAccessKeyVault\",
     \"KeyVaultDoesNotExist\", \"KeyVaultSecretDoesNotExist\", \"UnknownError\",
     \"ExternalPrivateKey\", and \"Unknown\"."""
    serverFarmId: str
    """Resource ID of the associated App Service plan."""
    canonicalName: str
    """CNAME of the certificate to be issued via free certificate."""
    domainValidationMethod: str
    """Method of domain validation for free cert."""


class ClientRegistration(TypedDict, total=False):
    """The configuration settings of the app registration for providers that have client ids and
    client secrets.

    :ivar client_id: The Client ID of the app used for login.
    :vartype client_id: str
    :ivar client_secret_setting_name: The app setting name that contains the client secret.
    :vartype client_secret_setting_name: str
    """

    clientId: str
    """The Client ID of the app used for login."""
    clientSecretSettingName: str
    """The app setting name that contains the client secret."""


class CloningInfo(TypedDict, total=False):
    """Information needed for cloning operation.

    :ivar correlation_id: Correlation ID of cloning operation. This ID ties multiple cloning
     operations together to use the same snapshot.
    :vartype correlation_id: str
    :ivar overwrite: <code>true</code> to overwrite destination app; otherwise, <code>false</code>.
    :vartype overwrite: bool
    :ivar clone_custom_host_names: <code>true</code> to clone custom hostnames from source app;
     otherwise, <code>false</code>.
    :vartype clone_custom_host_names: bool
    :ivar clone_source_control: <code>true</code> to clone source control from source app;
     otherwise, <code>false</code>.
    :vartype clone_source_control: bool
    :ivar source_web_app_id: ARM resource ID of the source app. App resource ID is of the form
     /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}
     for production slots and
     /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName}
     for other slots. Required.
    :vartype source_web_app_id: str
    :ivar source_web_app_location: Location of source app ex: West US or North Europe.
    :vartype source_web_app_location: str
    :ivar hosting_environment: App Service Environment.
    :vartype hosting_environment: str
    :ivar app_settings_overrides: Application setting overrides for cloned app. If specified, these
     settings override the settings cloned from source app. Otherwise, application settings from
     source app are retained.
    :vartype app_settings_overrides: dict[str, str]
    :ivar configure_load_balancing: <code>true</code> to configure load balancing for source and
     destination app.
    :vartype configure_load_balancing: bool
    :ivar traffic_manager_profile_id: ARM resource ID of the Traffic Manager profile to use, if it
     exists. Traffic Manager resource ID is of the form
     /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
    :vartype traffic_manager_profile_id: str
    :ivar traffic_manager_profile_name: Name of Traffic Manager profile to create. This is only
     needed if Traffic Manager profile does not already exist.
    :vartype traffic_manager_profile_name: str
    """

    correlationId: str
    """Correlation ID of cloning operation. This ID ties multiple cloning operations together to use
     the same snapshot."""
    overwrite: bool
    """<code>true</code> to overwrite destination app; otherwise, <code>false</code>."""
    cloneCustomHostNames: bool
    """<code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>."""
    cloneSourceControl: bool
    """<code>true</code> to clone source control from source app; otherwise, <code>false</code>."""
    sourceWebAppId: Required[str]
    """ARM resource ID of the source app. App resource ID is of the form
     /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}
     for production slots and
     /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName}
     for other slots. Required."""
    sourceWebAppLocation: str
    """Location of source app ex: West US or North Europe."""
    hostingEnvironment: str
    """App Service Environment."""
    appSettingsOverrides: dict[str, str]
    """Application setting overrides for cloned app. If specified, these settings override the
     settings cloned from source app. Otherwise, application settings from source app are retained."""
    configureLoadBalancing: bool
    """<code>true</code> to configure load balancing for source and destination app."""
    trafficManagerProfileId: str
    """ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource
     ID is of the form
     /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}."""
    trafficManagerProfileName: str
    """Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does
     not already exist."""


class ConnectionStringDictionary(ProxyOnlyResource):
    """String dictionary resource.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: Connection strings.
    :vartype properties: dict[str, "ConnStringValueTypePair"]
    """

    properties: dict[str, "ConnStringValueTypePair"]
    """Connection strings."""


class ConnStringInfo(TypedDict, total=False):
    """Database connection string information.

    :ivar name: Name of connection string.
    :vartype name: str
    :ivar connection_string: Connection string value.
    :vartype connection_string: str
    :ivar type: Type of database. Known values are: "MySql", "SQLServer", "SQLAzure", "Custom",
     "NotificationHub", "ServiceBus", "EventHub", "ApiHub", "DocDb", "RedisCache", and "PostgreSQL".
    :vartype type: Union[str, "ConnectionStringType"]
    """

    name: str
    """Name of connection string."""
    connectionString: str
    """Connection string value."""
    type: Union[str, "ConnectionStringType"]
    """Type of database. Known values are: \"MySql\", \"SQLServer\", \"SQLAzure\", \"Custom\",
     \"NotificationHub\", \"ServiceBus\", \"EventHub\", \"ApiHub\", \"DocDb\", \"RedisCache\", and
     \"PostgreSQL\"."""


class ConnStringValueTypePair(TypedDict, total=False):
    """Database connection string value to type pair.

    :ivar value: Value of pair. Required.
    :vartype value: str
    :ivar type: Type of database. Required. Known values are: "MySql", "SQLServer", "SQLAzure",
     "Custom", "NotificationHub", "ServiceBus", "EventHub", "ApiHub", "DocDb", "RedisCache", and
     "PostgreSQL".
    :vartype type: Union[str, "ConnectionStringType"]
    """

    value: Required[str]
    """Value of pair. Required."""
    type: Required[Union[str, "ConnectionStringType"]]
    """Type of database. Required. Known values are: \"MySql\", \"SQLServer\", \"SQLAzure\",
     \"Custom\", \"NotificationHub\", \"ServiceBus\", \"EventHub\", \"ApiHub\", \"DocDb\",
     \"RedisCache\", and \"PostgreSQL\"."""


class ContainerAppsConfiguration(TypedDict, total=False):
    """ContainerAppsConfiguration.

    :ivar dapr_ai_instrumentation_key: Azure Monitor instrumentation key used by Dapr to export
     Service to Service communication telemetry.
    :vartype dapr_ai_instrumentation_key: str
    :ivar platform_reserved_cidr: IP range in CIDR notation that can be reserved for environment
     infrastructure IP addresses. It must not overlap with any other Subnet IP ranges.
    :vartype platform_reserved_cidr: str
    :ivar platform_reserved_dns_ip: An IP address from the IP range defined by platformReservedCidr
     that will be reserved for the internal DNS server.
    :vartype platform_reserved_dns_ip: str
    :ivar control_plane_subnet_resource_id: Resource ID of a subnet for control plane
     infrastructure components. This subnet must be in the same VNET as the subnet defined in
     appSubnetResourceId. Must not overlap with the IP range defined in platformReservedCidr, if
     defined.
    :vartype control_plane_subnet_resource_id: str
    :ivar app_subnet_resource_id: Resource ID of a subnet for control plane infrastructure
     components. This subnet must be in the same VNET as the subnet defined in appSubnetResourceId.
     Must not overlap with the IP range defined in platformReservedCidr, if defined.
    :vartype app_subnet_resource_id: str
    :ivar docker_bridge_cidr: CIDR notation IP range assigned to the Docker bridge network. It must
     not overlap with any Subnet IP ranges or the IP range defined in platformReservedCidr, if
     defined.
    :vartype docker_bridge_cidr: str
    """

    daprAIInstrumentationKey: str
    """Azure Monitor instrumentation key used by Dapr to export Service to Service communication
     telemetry."""
    platformReservedCidr: str
    """IP range in CIDR notation that can be reserved for environment infrastructure IP addresses. It
     must not overlap with any other Subnet IP ranges."""
    platformReservedDnsIP: str
    """An IP address from the IP range defined by platformReservedCidr that will be reserved for the
     internal DNS server."""
    controlPlaneSubnetResourceId: str
    """Resource ID of a subnet for control plane infrastructure components. This subnet must be in the
     same VNET as the subnet defined in appSubnetResourceId. Must not overlap with the IP range
     defined in platformReservedCidr, if defined."""
    appSubnetResourceId: str
    """Resource ID of a subnet for control plane infrastructure components. This subnet must be in the
     same VNET as the subnet defined in appSubnetResourceId. Must not overlap with the IP range
     defined in platformReservedCidr, if defined."""
    dockerBridgeCidr: str
    """CIDR notation IP range assigned to the Docker bridge network. It must not overlap with any
     Subnet IP ranges or the IP range defined in platformReservedCidr, if defined."""


class CookieExpiration(TypedDict, total=False):
    """The configuration settings of the session cookie's expiration.

    :ivar convention: The convention used when determining the session cookie's expiration. Known
     values are: "FixedTime" and "IdentityProviderDerived".
    :vartype convention: Union[str, "CookieExpirationConvention"]
    :ivar time_to_expiration: The time after the request is made when the session cookie should
     expire.
    :vartype time_to_expiration: str
    """

    convention: Union[str, "CookieExpirationConvention"]
    """The convention used when determining the session cookie's expiration. Known values are:
     \"FixedTime\" and \"IdentityProviderDerived\"."""
    timeToExpiration: str
    """The time after the request is made when the session cookie should expire."""


class CorsSettings(TypedDict, total=False):
    """Cross-Origin Resource Sharing (CORS) settings for the app.

    :ivar allowed_origins: Gets or sets the list of origins that should be allowed to make
     cross-origin calls (for example: `http://example.com:12345 <http://example.com:12345>`_). Use
     "*" to allow all.
    :vartype allowed_origins: list[str]
    :ivar support_credentials: Gets or sets whether CORS requests with credentials are allowed. See
     `https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
     <https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials>`_ for more
     details.
    :vartype support_credentials: bool
    """

    allowedOrigins: list[str]
    """Gets or sets the list of origins that should be allowed to make cross-origin calls (for
     example: `http://example.com:12345 <http://example.com:12345>`_). Use \"*\" to allow all."""
    supportCredentials: bool
    """Gets or sets whether CORS requests with credentials are allowed. See
     `https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
     <https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials>`_ for more
     details."""


class CsmMoveResourceEnvelope(TypedDict, total=False):
    """Object with a list of the resources that need to be moved and the resource group they should be
    moved to.

    :ivar target_resource_group:
    :vartype target_resource_group: str
    :ivar resources:
    :vartype resources: list[str]
    """

    targetResourceGroup: str
    resources: list[str]


class CsmPublishingCredentialsPoliciesEntity(ProxyResource):
    """Publishing Credentials Policies parameters.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: CsmPublishingCredentialsPoliciesEntity resource specific properties.
    :vartype properties: "CsmPublishingCredentialsPoliciesEntityProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "CsmPublishingCredentialsPoliciesEntityProperties"
    """CsmPublishingCredentialsPoliciesEntity resource specific properties."""
    kind: str
    """Kind of resource."""


class CsmPublishingCredentialsPoliciesEntityProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """CsmPublishingCredentialsPoliciesEntity resource specific properties.

    :ivar allow: <code>true</code> to allow access to a publishing method; otherwise,
     <code>false</code>. Required.
    :vartype allow: bool
    """

    allow: Required[bool]
    """<code>true</code> to allow access to a publishing method; otherwise, <code>false</code>.
     Required."""


class CsmPublishingProfileOptions(TypedDict, total=False):
    """Publishing options for requested profile.

    :ivar format: Name of the format. Valid values are: FileZilla3 WebDeploy -- default Ftp. Known
     values are: "FileZilla3", "WebDeploy", and "Ftp".
    :vartype format: Union[str, "PublishingProfileFormat"]
    :ivar include_disaster_recovery_endpoints: Include the DisasterRecover endpoint if true.
    :vartype include_disaster_recovery_endpoints: bool
    """

    format: Union[str, "PublishingProfileFormat"]
    """Name of the format. Valid values are: FileZilla3 WebDeploy -- default Ftp. Known values are:
     \"FileZilla3\", \"WebDeploy\", and \"Ftp\"."""
    includeDisasterRecoveryEndpoints: bool
    """Include the DisasterRecover endpoint if true."""


class CsmSlotEntity(TypedDict, total=False):
    """Deployment slot parameters.

    :ivar target_slot: Destination deployment slot during swap operation. Required.
    :vartype target_slot: str
    :ivar preserve_vnet: <code>true</code> to preserve Virtual Network to the slot during swap;
     otherwise, <code>false</code>. Required.
    :vartype preserve_vnet: bool
    """

    targetSlot: Required[str]
    """Destination deployment slot during swap operation. Required."""
    preserveVnet: Required[bool]
    """<code>true</code> to preserve Virtual Network to the slot during swap; otherwise,
     <code>false</code>. Required."""


class CustomDnsSuffixConfiguration(ProxyResource):
    """Full view of the custom domain suffix configuration for ASEv3.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: CustomDnsSuffixConfiguration resource specific properties.
    :vartype properties: "CustomDnsSuffixConfigurationProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "CustomDnsSuffixConfigurationProperties"
    """CustomDnsSuffixConfiguration resource specific properties."""
    kind: str
    """Kind of resource."""


class CustomDnsSuffixConfigurationProperties(TypedDict, total=False):
    """CustomDnsSuffixConfiguration resource specific properties.

    :ivar provisioning_state: Known values are: "Succeeded", "Failed", "Degraded", and
     "InProgress".
    :vartype provisioning_state: Union[str, "CustomDnsSuffixProvisioningState"]
    :ivar provisioning_details:
    :vartype provisioning_details: str
    :ivar dns_suffix: The default custom domain suffix to use for all sites deployed on the ASE.
    :vartype dns_suffix: str
    :ivar certificate_url: The URL referencing the Azure Key Vault certificate secret that should
     be used as the default SSL/TLS certificate for sites with the custom domain suffix.
    :vartype certificate_url: str
    :ivar key_vault_reference_identity: The user-assigned identity to use for resolving the key
     vault certificate reference. If not specified, the system-assigned ASE identity will be used if
     available.
    :vartype key_vault_reference_identity: str
    """

    provisioningState: Union[str, "CustomDnsSuffixProvisioningState"]
    """Known values are: \"Succeeded\", \"Failed\", \"Degraded\", and \"InProgress\"."""
    provisioningDetails: str
    dnsSuffix: str
    """The default custom domain suffix to use for all sites deployed on the ASE."""
    certificateUrl: str
    """The URL referencing the Azure Key Vault certificate secret that should be used as the default
     SSL/TLS certificate for sites with the custom domain suffix."""
    keyVaultReferenceIdentity: str
    """The user-assigned identity to use for resolving the key vault certificate reference. If not
     specified, the system-assigned ASE identity will be used if available."""


class CustomOpenIdConnectProvider(TypedDict, total=False):
    """The configuration settings of the custom Open ID Connect provider.

    :ivar enabled: <code>false</code> if the custom Open ID provider provider should not be
     enabled; otherwise, <code>true</code>.
    :vartype enabled: bool
    :ivar registration: The configuration settings of the app registration for the custom Open ID
     Connect provider.
    :vartype registration: "OpenIdConnectRegistration"
    :ivar login: The configuration settings of the login flow of the custom Open ID Connect
     provider.
    :vartype login: "OpenIdConnectLogin"
    """

    enabled: bool
    """<code>false</code> if the custom Open ID provider provider should not be enabled; otherwise,
     <code>true</code>."""
    registration: "OpenIdConnectRegistration"
    """The configuration settings of the app registration for the custom Open ID Connect provider."""
    login: "OpenIdConnectLogin"
    """The configuration settings of the login flow of the custom Open ID Connect provider."""


class DaprConfig(TypedDict, total=False):
    """App Dapr configuration.

    :ivar enabled: Boolean indicating if the Dapr side car is enabled.
    :vartype enabled: bool
    :ivar app_id: Dapr application identifier.
    :vartype app_id: str
    :ivar app_port: Tells Dapr which port your application is listening on.
    :vartype app_port: int
    :ivar http_read_buffer_size: Dapr max size of http header read buffer in KB to handle when
     sending multi-KB headers. Default is 65KB.
    :vartype http_read_buffer_size: int
    :ivar http_max_request_size: Increasing max size of request body http servers parameter in MB
     to handle uploading of big files. Default is 4 MB.
    :vartype http_max_request_size: int
    :ivar log_level: Sets the log level for the Dapr sidecar. Allowed values are debug, info, warn,
     error. Default is info. Known values are: "info", "debug", "warn", and "error".
    :vartype log_level: Union[str, "DaprLogLevel"]
    :ivar enable_api_logging: Enables API logging for the Dapr sidecar.
    :vartype enable_api_logging: bool
    """

    enabled: bool
    """Boolean indicating if the Dapr side car is enabled."""
    appId: str
    """Dapr application identifier."""
    appPort: int
    """Tells Dapr which port your application is listening on."""
    httpReadBufferSize: int
    """Dapr max size of http header read buffer in KB to handle when sending multi-KB headers. Default
     is 65KB."""
    httpMaxRequestSize: int
    """Increasing max size of request body http servers parameter in MB to handle uploading of big
     files. Default is 4 MB."""
    logLevel: Union[str, "DaprLogLevel"]
    """Sets the log level for the Dapr sidecar. Allowed values are debug, info, warn, error. Default
     is info. Known values are: \"info\", \"debug\", \"warn\", and \"error\"."""
    enableApiLogging: bool
    """Enables API logging for the Dapr sidecar."""


class DatabaseBackupSetting(TypedDict, total=False):
    """Database backup settings.

    :ivar database_type: Database type (e.g. SqlAzure / MySql). Required. Known values are:
     "SqlAzure", "MySql", "LocalMySql", and "PostgreSql".
    :vartype database_type: Union[str, "DatabaseType"]
    :ivar name:
    :vartype name: str
    :ivar connection_string_name: Contains a connection string name that is linked to the
     SiteConfig.ConnectionStrings. This is used during restore with overwrite connection strings
     options.
    :vartype connection_string_name: str
    :ivar connection_string: Contains a connection string to a database which is being backed up or
     restored. If the restore should happen to a new database, the database name inside is the new
     one.
    :vartype connection_string: str
    """

    databaseType: Required[Union[str, "DatabaseType"]]
    """Database type (e.g. SqlAzure / MySql). Required. Known values are: \"SqlAzure\", \"MySql\",
     \"LocalMySql\", and \"PostgreSql\"."""
    name: str
    connectionStringName: str
    """Contains a connection string name that is linked to the SiteConfig.ConnectionStrings. This is
     used during restore with overwrite connection strings options."""
    connectionString: str
    """Contains a connection string to a database which is being backed up or restored. If the restore
     should happen to a new database, the database name inside is the new one."""


class DatabaseConnection(ProxyResource):
    """Static Site Database Connection resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: DatabaseConnection resource specific properties.
    :vartype properties: "DatabaseConnectionProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "DatabaseConnectionProperties"
    """DatabaseConnection resource specific properties."""
    kind: str
    """Kind of resource."""


class DatabaseConnectionOverview(TypedDict, total=False):
    """Static Site Database Connection overview.

    :ivar resource_id: The resource id of the database.
    :vartype resource_id: str
    :ivar connection_identity: If present, the identity is used in conjunction with connection
     string to connect to the database. Use of the system-assigned managed identity is indicated
     with the string 'SystemAssigned', while use of a user-assigned managed identity is indicated
     with the resource id of the managed identity resource.
    :vartype connection_identity: str
    :ivar region: The region of the database resource.
    :vartype region: str
    :ivar configuration_files: A list of configuration files associated with this database
     connection.
    :vartype configuration_files: list["StaticSiteDatabaseConnectionConfigurationFileOverview"]
    :ivar name: If present, the name of this database connection resource.
    :vartype name: str
    """

    resourceId: str
    """The resource id of the database."""
    connectionIdentity: str
    """If present, the identity is used in conjunction with connection string to connect to the
     database. Use of the system-assigned managed identity is indicated with the string
     'SystemAssigned', while use of a user-assigned managed identity is indicated with the resource
     id of the managed identity resource."""
    region: str
    """The region of the database resource."""
    configurationFiles: list["StaticSiteDatabaseConnectionConfigurationFileOverview"]
    """A list of configuration files associated with this database connection."""
    name: str
    """If present, the name of this database connection resource."""


class DatabaseConnectionPatchRequest(TypedDict, total=False):
    """Static Site Database Connection Request Properties resource when patching.

    :ivar properties: DatabaseConnectionPatchRequest resource specific properties.
    :vartype properties: "DatabaseConnectionPatchRequestProperties"
    """

    properties: "DatabaseConnectionPatchRequestProperties"
    """DatabaseConnectionPatchRequest resource specific properties."""


class DatabaseConnectionPatchRequestProperties(TypedDict, total=False):
    """DatabaseConnectionPatchRequest resource specific properties.

    :ivar resource_id: The resource id of the database.
    :vartype resource_id: str
    :ivar connection_identity: If present, the identity is used in conjunction with connection
     string to connect to the database. Use of the system-assigned managed identity is indicated
     with the string 'SystemAssigned', while use of a user-assigned managed identity is indicated
     with the resource id of the managed identity resource.
    :vartype connection_identity: str
    :ivar connection_string: The connection string to use to connect to the database.
    :vartype connection_string: str
    :ivar region: The region of the database resource.
    :vartype region: str
    """

    resourceId: str
    """The resource id of the database."""
    connectionIdentity: str
    """If present, the identity is used in conjunction with connection string to connect to the
     database. Use of the system-assigned managed identity is indicated with the string
     'SystemAssigned', while use of a user-assigned managed identity is indicated with the resource
     id of the managed identity resource."""
    connectionString: str
    """The connection string to use to connect to the database."""
    region: str
    """The region of the database resource."""


class DatabaseConnectionProperties(TypedDict, total=False):
    """DatabaseConnection resource specific properties.

    :ivar resource_id: The resource id of the database. Required.
    :vartype resource_id: str
    :ivar connection_identity: If present, the identity is used in conjunction with connection
     string to connect to the database. Use of the system-assigned managed identity is indicated
     with the string 'SystemAssigned', while use of a user-assigned managed identity is indicated
     with the resource id of the managed identity resource.
    :vartype connection_identity: str
    :ivar connection_string: The connection string to use to connect to the database.
    :vartype connection_string: str
    :ivar region: The region of the database resource. Required.
    :vartype region: str
    :ivar configuration_files: A list of configuration files associated with this database
     connection.
    :vartype configuration_files: list["StaticSiteDatabaseConnectionConfigurationFileOverview"]
    """

    resourceId: Required[str]
    """The resource id of the database. Required."""
    connectionIdentity: str
    """If present, the identity is used in conjunction with connection string to connect to the
     database. Use of the system-assigned managed identity is indicated with the string
     'SystemAssigned', while use of a user-assigned managed identity is indicated with the resource
     id of the managed identity resource."""
    connectionString: str
    """The connection string to use to connect to the database."""
    region: Required[str]
    """The region of the database resource. Required."""
    configurationFiles: list["StaticSiteDatabaseConnectionConfigurationFileOverview"]
    """A list of configuration files associated with this database connection."""


class DefaultAuthorizationPolicy(TypedDict, total=False):
    """The configuration settings of the Azure Active Directory default authorization policy.

    :ivar allowed_principals: The configuration settings of the Azure Active Directory allowed
     principals.
    :vartype allowed_principals: "AllowedPrincipals"
    :ivar allowed_applications: The configuration settings of the Azure Active Directory allowed
     applications.
    :vartype allowed_applications: list[str]
    """

    allowedPrincipals: "AllowedPrincipals"
    """The configuration settings of the Azure Active Directory allowed principals."""
    allowedApplications: list[str]
    """The configuration settings of the Azure Active Directory allowed applications."""


class DefaultIdentity(TypedDict, total=False):
    """DefaultIdentity.

    :ivar identity_type: Known values are: "SystemAssigned", "UserAssigned", "SystemAssigned,
     UserAssigned", and "None".
    :vartype identity_type: Union[str, "ManagedServiceIdentityType"]
    :ivar user_assigned_identity_resource_id:
    :vartype user_assigned_identity_resource_id: str
    """

    identityType: Union[str, "ManagedServiceIdentityType"]
    """Known values are: \"SystemAssigned\", \"UserAssigned\", \"SystemAssigned, UserAssigned\", and
     \"None\"."""
    userAssignedIdentityResourceId: str


class DeletedAppRestoreRequest(ProxyOnlyResource):
    """Details about restoring a deleted app.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: DeletedAppRestoreRequest resource specific properties.
    :vartype properties: "DeletedAppRestoreRequestProperties"
    """

    properties: "DeletedAppRestoreRequestProperties"
    """DeletedAppRestoreRequest resource specific properties."""


class DeletedAppRestoreRequestProperties(TypedDict, total=False):
    """DeletedAppRestoreRequest resource specific properties.

    :ivar deleted_site_id: ARM resource ID of the deleted app. Example:
     /subscriptions/{subId}/providers/Microsoft.Web/deletedSites/{deletedSiteId}.
    :vartype deleted_site_id: str
    :ivar recover_configuration: If true, deleted site configuration, in addition to content, will
     be restored.
    :vartype recover_configuration: bool
    :ivar snapshot_time: Point in time to restore the deleted app from, formatted as a DateTime
     string. If unspecified, default value is the time that the app was deleted.
    :vartype snapshot_time: str
    :ivar use_dr_secondary: If true, the snapshot is retrieved from DRSecondary endpoint.
    :vartype use_dr_secondary: bool
    """

    deletedSiteId: str
    """ARM resource ID of the deleted app. Example:
     /subscriptions/{subId}/providers/Microsoft.Web/deletedSites/{deletedSiteId}."""
    recoverConfiguration: bool
    """If true, deleted site configuration, in addition to content, will be restored."""
    snapshotTime: str
    """Point in time to restore the deleted app from, formatted as a DateTime string. If unspecified,
     default value is the time that the app was deleted."""
    useDRSecondary: bool
    """If true, the snapshot is retrieved from DRSecondary endpoint."""


class Deployment(ProxyResource):
    """User credentials used for publishing activity.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Deployment resource specific properties.
    :vartype properties: "DeploymentProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "DeploymentProperties"
    """Deployment resource specific properties."""
    kind: str
    """Kind of resource."""


class DeploymentProperties(TypedDict, total=False):
    """Deployment resource specific properties.

    :ivar status: Deployment status.
    :vartype status: int
    :ivar message: Details about deployment status.
    :vartype message: str
    :ivar author: Who authored the deployment.
    :vartype author: str
    :ivar deployer: Who performed the deployment.
    :vartype deployer: str
    :ivar author_email: Author email.
    :vartype author_email: str
    :ivar start_time: Start time.
    :vartype start_time: str
    :ivar end_time: End time.
    :vartype end_time: str
    :ivar active: True if deployment is currently active, false if completed and null if not
     started.
    :vartype active: bool
    :ivar details: Details on deployment.
    :vartype details: str
    """

    status: int
    """Deployment status."""
    message: str
    """Details about deployment status."""
    author: str
    """Who authored the deployment."""
    deployer: str
    """Who performed the deployment."""
    author_email: str
    """Author email."""
    start_time: str
    """Start time."""
    end_time: str
    """End time."""
    active: bool
    """True if deployment is currently active, false if completed and null if not started."""
    details: str
    """Details on deployment."""


class DnlResourceNameAvailabilityRequest(TypedDict, total=False):
    """DnlResourceNameAvailabilityRequest.

    :ivar resource_group_name: Resource group name.
    :vartype resource_group_name: str
    :ivar auto_generated_domain_name_label_scope: Indicates the endpoint name reuse scope.The
     default value is TenantReuse. Supported values are TenantReuse, SubscriptionReuse,
     ResourceGroupReuse, NoReuse.
    :vartype auto_generated_domain_name_label_scope: str
    :ivar name: Resource name to verify. Required.
    :vartype name: str
    :ivar type: Resource type used for verification. Required. Known values are: "Site", "Slot",
     "HostingEnvironment", "PublishingUser", "Microsoft.Web/sites", "Microsoft.Web/sites/slots",
     "Microsoft.Web/hostingEnvironments", and "Microsoft.Web/publishingUsers".
    :vartype type: Union[str, "CheckNameResourceTypes"]
    """

    resourceGroupName: str
    """Resource group name."""
    autoGeneratedDomainNameLabelScope: str
    """Indicates the endpoint name reuse scope.The default value is TenantReuse. Supported values are
     TenantReuse, SubscriptionReuse, ResourceGroupReuse, NoReuse."""
    name: Required[str]
    """Resource name to verify. Required."""
    type: Required[Union[str, "CheckNameResourceTypes"]]
    """Resource type used for verification. Required. Known values are: \"Site\", \"Slot\",
     \"HostingEnvironment\", \"PublishingUser\", \"Microsoft.Web/sites\",
     \"Microsoft.Web/sites/slots\", \"Microsoft.Web/hostingEnvironments\", and
     \"Microsoft.Web/publishingUsers\"."""


class EnabledConfig(TypedDict, total=False):
    """Enabled configuration.

    :ivar enabled: True if configuration is enabled, false if it is disabled and null if
     configuration is not set.
    :vartype enabled: bool
    """

    enabled: bool
    """True if configuration is enabled, false if it is disabled and null if configuration is not set."""


class EnvironmentVariable(TypedDict, total=False):
    """EnvironmentVariable.

    :ivar name: Environment variable name. Required.
    :vartype name: str
    :ivar value: The value of this environment variable must be the name of an AppSetting. The
     actual value of the environment variable in container will be retrieved from the specified
     AppSetting at runtime. If the AppSetting is not found, the value will be set to an empty string
     in the container at runtime. Required.
    :vartype value: str
    """

    name: Required[str]
    """Environment variable name. Required."""
    value: Required[str]
    """The value of this environment variable must be the name of an AppSetting. The actual value of
     the environment variable in container will be retrieved from the specified AppSetting at
     runtime. If the AppSetting is not found, the value will be set to an empty string in the
     container at runtime. Required."""


class ErrorEntity(TypedDict, total=False):
    """Body of the error response returned from the API.

    :ivar extended_code: Type of error.
    :vartype extended_code: str
    :ivar message_template: Message template.
    :vartype message_template: str
    :ivar parameters: Parameters for the template.
    :vartype parameters: list[str]
    :ivar inner_errors: Inner errors.
    :vartype inner_errors: list["ErrorEntity"]
    :ivar details: Error Details.
    :vartype details: list["ErrorEntity"]
    :ivar target: The error target.
    :vartype target: str
    :ivar code: Basic error code.
    :vartype code: str
    :ivar message: Any details of the error.
    :vartype message: str
    """

    extendedCode: str
    """Type of error."""
    messageTemplate: str
    """Message template."""
    parameters: list[str]
    """Parameters for the template."""
    innerErrors: list["ErrorEntity"]
    """Inner errors."""
    details: list["ErrorEntity"]
    """Error Details."""
    target: str
    """The error target."""
    code: str
    """Basic error code."""
    message: str
    """Any details of the error."""


class Experiments(TypedDict, total=False):
    """Routing rules in production experiments.

    :ivar ramp_up_rules: List of ramp-up rules.
    :vartype ramp_up_rules: list["RampUpRule"]
    """

    rampUpRules: list["RampUpRule"]
    """List of ramp-up rules."""


class ExtendedLocation(TypedDict, total=False):
    """Extended Location.

    :ivar name: Name of extended location.
    :vartype name: str
    :ivar type: Type of extended location.
    :vartype type: str
    """

    name: str
    """Name of extended location."""
    type: str
    """Type of extended location."""


class Facebook(TypedDict, total=False):
    """The configuration settings of the Facebook provider.

    :ivar enabled: <code>false</code> if the Facebook provider should not be enabled despite the
     set registration; otherwise, <code>true</code>.
    :vartype enabled: bool
    :ivar registration: The configuration settings of the app registration for the Facebook
     provider.
    :vartype registration: "AppRegistration"
    :ivar graph_api_version: The version of the Facebook api to be used while logging in.
    :vartype graph_api_version: str
    :ivar login: The configuration settings of the login flow.
    :vartype login: "LoginScopes"
    """

    enabled: bool
    """<code>false</code> if the Facebook provider should not be enabled despite the set registration;
     otherwise, <code>true</code>."""
    registration: "AppRegistration"
    """The configuration settings of the app registration for the Facebook provider."""
    graphApiVersion: str
    """The version of the Facebook api to be used while logging in."""
    login: "LoginScopes"
    """The configuration settings of the login flow."""


class FileSystemApplicationLogsConfig(TypedDict, total=False):
    """Application logs to file system configuration.

    :ivar level: Log level. Known values are: "Off", "Verbose", "Information", "Warning", and
     "Error".
    :vartype level: Union[str, "LogLevel"]
    """

    level: Union[str, "LogLevel"]
    """Log level. Known values are: \"Off\", \"Verbose\", \"Information\", \"Warning\", and \"Error\"."""


class FileSystemHttpLogsConfig(TypedDict, total=False):
    """Http logs to file system configuration.

    :ivar retention_in_mb: Maximum size in megabytes that http log files can use. When reached old
     log files will be removed to make space for new ones. Value can range between 25 and 100.
    :vartype retention_in_mb: int
    :ivar retention_in_days: Retention in days. Remove files older than X days. 0 or lower means no
     retention.
    :vartype retention_in_days: int
    :ivar enabled: True if configuration is enabled, false if it is disabled and null if
     configuration is not set.
    :vartype enabled: bool
    """

    retentionInMb: int
    """Maximum size in megabytes that http log files can use. When reached old log files will be
     removed to make space for new ones. Value can range between 25 and 100."""
    retentionInDays: int
    """Retention in days. Remove files older than X days. 0 or lower means no retention."""
    enabled: bool
    """True if configuration is enabled, false if it is disabled and null if configuration is not set."""


class FileSystemTokenStore(TypedDict, total=False):
    """The configuration settings of the storage of the tokens if a file system is used.

    :ivar directory: The directory in which the tokens will be stored.
    :vartype directory: str
    """

    directory: str
    """The directory in which the tokens will be stored."""


class FlowAccessControlConfiguration(TypedDict, total=False):
    """The access control configuration.

    :ivar triggers: The access control configuration for invoking workflow triggers.
    :vartype triggers: "FlowAccessControlConfigurationPolicy"
    :ivar contents: The access control configuration for accessing workflow run contents.
    :vartype contents: "FlowAccessControlConfigurationPolicy"
    :ivar actions: The access control configuration for workflow actions.
    :vartype actions: "FlowAccessControlConfigurationPolicy"
    :ivar workflow_management: The access control configuration for workflow management.
    :vartype workflow_management: "FlowAccessControlConfigurationPolicy"
    """

    triggers: "FlowAccessControlConfigurationPolicy"
    """The access control configuration for invoking workflow triggers."""
    contents: "FlowAccessControlConfigurationPolicy"
    """The access control configuration for accessing workflow run contents."""
    actions: "FlowAccessControlConfigurationPolicy"
    """The access control configuration for workflow actions."""
    workflowManagement: "FlowAccessControlConfigurationPolicy"
    """The access control configuration for workflow management."""


class FlowAccessControlConfigurationPolicy(TypedDict, total=False):
    """The access control configuration policy.

    :ivar allowed_caller_ip_addresses: The allowed caller IP address ranges.
    :vartype allowed_caller_ip_addresses: list["IpAddressRange"]
    :ivar open_authentication_policies: The authentication policies for workflow.
    :vartype open_authentication_policies: "OpenAuthenticationAccessPolicies"
    """

    allowedCallerIpAddresses: list["IpAddressRange"]
    """The allowed caller IP address ranges."""
    openAuthenticationPolicies: "OpenAuthenticationAccessPolicies"
    """The authentication policies for workflow."""


class FlowEndpoints(TypedDict, total=False):
    """The flow endpoints configuration.

    :ivar outgoing_ip_addresses: The outgoing ip address.
    :vartype outgoing_ip_addresses: list["IpAddress"]
    :ivar access_endpoint_ip_addresses: The access endpoint ip address.
    :vartype access_endpoint_ip_addresses: list["IpAddress"]
    """

    outgoingIpAddresses: list["IpAddress"]
    """The outgoing ip address."""
    accessEndpointIpAddresses: list["IpAddress"]
    """The access endpoint ip address."""


class FlowEndpointsConfiguration(TypedDict, total=False):
    """The endpoints configuration.

    :ivar workflow: The workflow endpoints.
    :vartype workflow: "FlowEndpoints"
    :ivar connector: The connector endpoints.
    :vartype connector: "FlowEndpoints"
    """

    workflow: "FlowEndpoints"
    """The workflow endpoints."""
    connector: "FlowEndpoints"
    """The connector endpoints."""


class ForwardProxy(TypedDict, total=False):
    """The configuration settings of a forward proxy used to make the requests.

    :ivar convention: The convention used to determine the url of the request made. Known values
     are: "NoProxy", "Standard", and "Custom".
    :vartype convention: Union[str, "ForwardProxyConvention"]
    :ivar custom_host_header_name: The name of the header containing the host of the request.
    :vartype custom_host_header_name: str
    :ivar custom_proto_header_name: The name of the header containing the scheme of the request.
    :vartype custom_proto_header_name: str
    """

    convention: Union[str, "ForwardProxyConvention"]
    """The convention used to determine the url of the request made. Known values are: \"NoProxy\",
     \"Standard\", and \"Custom\"."""
    customHostHeaderName: str
    """The name of the header containing the host of the request."""
    customProtoHeaderName: str
    """The name of the header containing the scheme of the request."""


class FrontEndConfiguration(TypedDict, total=False):
    """FrontEndConfiguration.

    :ivar kind: Known values are: "NodePort" and "LoadBalancer".
    :vartype kind: Union[str, "FrontEndServiceType"]
    """

    kind: Union[str, "FrontEndServiceType"]
    """Known values are: \"NodePort\" and \"LoadBalancer\"."""


class FunctionAppConfig(TypedDict, total=False):
    """Function app configuration.

    :ivar deployment: Function app deployment configuration.
    :vartype deployment: "FunctionsDeployment"
    :ivar runtime: Function app runtime settings.
    :vartype runtime: "FunctionsRuntime"
    :ivar scale_and_concurrency: Function app scale and concurrency settings.
    :vartype scale_and_concurrency: "FunctionsScaleAndConcurrency"
    :ivar site_update_strategy: Function app site update strategy configuration.
    :vartype site_update_strategy: "FunctionsSiteUpdateStrategy"
    """

    deployment: "FunctionsDeployment"
    """Function app deployment configuration."""
    runtime: "FunctionsRuntime"
    """Function app runtime settings."""
    scaleAndConcurrency: "FunctionsScaleAndConcurrency"
    """Function app scale and concurrency settings."""
    siteUpdateStrategy: "FunctionsSiteUpdateStrategy"
    """Function app site update strategy configuration."""


class FunctionEnvelope(ProxyResource):
    """Function information.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: FunctionEnvelope resource specific properties.
    :vartype properties: "FunctionEnvelopeProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "FunctionEnvelopeProperties"
    """FunctionEnvelope resource specific properties."""
    kind: str
    """Kind of resource."""


class FunctionEnvelopeProperties(TypedDict, total=False):
    """FunctionEnvelope resource specific properties.

    :ivar function_app_id: Function App ID.
    :vartype function_app_id: str
    :ivar script_root_path_href: Script root path URI.
    :vartype script_root_path_href: str
    :ivar script_href: Script URI.
    :vartype script_href: str
    :ivar config_href: Config URI.
    :vartype config_href: str
    :ivar test_data_href: Test data URI.
    :vartype test_data_href: str
    :ivar secrets_file_href: Secrets file URI.
    :vartype secrets_file_href: str
    :ivar href: Function URI.
    :vartype href: str
    :ivar config: Config information.
    :vartype config: Any
    :ivar files: File list.
    :vartype files: dict[str, str]
    :ivar test_data: Test data used when testing via the Azure Portal.
    :vartype test_data: str
    :ivar invoke_url_template: The invocation URL.
    :vartype invoke_url_template: str
    :ivar language: The function language.
    :vartype language: str
    :ivar is_disabled: Gets or sets a value indicating whether the function is disabled.
    :vartype is_disabled: bool
    """

    function_app_id: str
    """Function App ID."""
    script_root_path_href: str
    """Script root path URI."""
    script_href: str
    """Script URI."""
    config_href: str
    """Config URI."""
    test_data_href: str
    """Test data URI."""
    secrets_file_href: str
    """Secrets file URI."""
    href: str
    """Function URI."""
    config: Any
    """Config information."""
    files: dict[str, str]
    """File list."""
    test_data: str
    """Test data used when testing via the Azure Portal."""
    invoke_url_template: str
    """The invocation URL."""
    language: str
    """The function language."""
    isDisabled: bool
    """Gets or sets a value indicating whether the function is disabled."""


class FunctionsAlwaysReadyConfig(TypedDict, total=False):
    """Sets the number of 'Always Ready' instances for a function group or a specific function.

    :ivar name: Either a function group or a function name is required. For additional information
     see `https://aka.ms/flexconsumption/alwaysready <https://aka.ms/flexconsumption/alwaysready>`_.
    :vartype name: str
    :ivar instance_count: Sets the number of 'Always Ready' instances for a given function group or
     a specific function. For additional information see `https://aka.ms/flexconsumption/alwaysready
     <https://aka.ms/flexconsumption/alwaysready>`_.
    :vartype instance_count: int
    """

    name: str
    """Either a function group or a function name is required. For additional information see
     `https://aka.ms/flexconsumption/alwaysready <https://aka.ms/flexconsumption/alwaysready>`_."""
    instanceCount: int
    """Sets the number of 'Always Ready' instances for a given function group or a specific function.
     For additional information see `https://aka.ms/flexconsumption/alwaysready
     <https://aka.ms/flexconsumption/alwaysready>`_."""


class FunctionsDeployment(TypedDict, total=False):
    """Configuration section for the function app deployment.

    :ivar storage: Storage for deployed package used by the function app.
    :vartype storage: "FunctionsDeploymentStorage"
    """

    storage: "FunctionsDeploymentStorage"
    """Storage for deployed package used by the function app."""


class FunctionsDeploymentStorage(TypedDict, total=False):
    """Storage for deployed package used by the function app.

    :ivar type: Property to select Azure Storage type. Available options: blobContainer.
     "blobContainer"
    :vartype type: Union[str, "FunctionsDeploymentStorageType"]
    :ivar value: Property to set the URL for the selected Azure Storage type. Example: For
     blobContainer, the value could be
     https://<storageAccountName>.blob.core.windows.net/<containerName>.
    :vartype value: str
    :ivar authentication: Authentication method to access the storage account for deployment.
    :vartype authentication: "FunctionsDeploymentStorageAuthentication"
    """

    type: Union[str, "FunctionsDeploymentStorageType"]
    """Property to select Azure Storage type. Available options: blobContainer. \"blobContainer\""""
    value: str
    """Property to set the URL for the selected Azure Storage type. Example: For blobContainer, the
     value could be https://<storageAccountName>.blob.core.windows.net/<containerName>."""
    authentication: "FunctionsDeploymentStorageAuthentication"
    """Authentication method to access the storage account for deployment."""


class FunctionsDeploymentStorageAuthentication(TypedDict, total=False):
    """Authentication method to access the storage account for deployment.

    :ivar type: Property to select authentication type to access the selected storage account.
     Available options: SystemAssignedIdentity, UserAssignedIdentity,
     StorageAccountConnectionString. Known values are: "SystemAssignedIdentity",
     "UserAssignedIdentity", and "StorageAccountConnectionString".
    :vartype type: Union[str, "AuthenticationType"]
    :ivar user_assigned_identity_resource_id: Use this property for UserAssignedIdentity. Set the
     resource ID of the identity. Do not set a value for this property when using other
     authentication type.
    :vartype user_assigned_identity_resource_id: str
    :ivar storage_account_connection_string_name: Use this property for
     StorageAccountConnectionString. Set the name of the app setting that has the storage account
     connection string. Do not set a value for this property when using other authentication type.
    :vartype storage_account_connection_string_name: str
    """

    type: Union[str, "AuthenticationType"]
    """Property to select authentication type to access the selected storage account. Available
     options: SystemAssignedIdentity, UserAssignedIdentity, StorageAccountConnectionString. Known
     values are: \"SystemAssignedIdentity\", \"UserAssignedIdentity\", and
     \"StorageAccountConnectionString\"."""
    userAssignedIdentityResourceId: str
    """Use this property for UserAssignedIdentity. Set the resource ID of the identity. Do not set a
     value for this property when using other authentication type."""
    storageAccountConnectionStringName: str
    """Use this property for StorageAccountConnectionString. Set the name of the app setting that has
     the storage account connection string. Do not set a value for this property when using other
     authentication type."""


class FunctionsRuntime(TypedDict, total=False):
    """Function app runtime name and version.

    :ivar name: Function app runtime name. Available options: dotnet-isolated, node, java,
     powershell, python, custom. Known values are: "dotnet-isolated", "node", "java", "powershell",
     "python", and "custom".
    :vartype name: Union[str, "RuntimeName"]
    :ivar version: Function app runtime version. Example: 8 (for dotnet-isolated).
    :vartype version: str
    """

    name: Union[str, "RuntimeName"]
    """Function app runtime name. Available options: dotnet-isolated, node, java, powershell, python,
     custom. Known values are: \"dotnet-isolated\", \"node\", \"java\", \"powershell\", \"python\",
     and \"custom\"."""
    version: Optional[str]
    """Function app runtime version. Example: 8 (for dotnet-isolated)."""


class FunctionsScaleAndConcurrency(TypedDict, total=False):
    """Scale and concurrency settings for the function app.

    :ivar always_ready: 'Always Ready' configuration for the function app.
    :vartype always_ready: list["FunctionsAlwaysReadyConfig"]
    :ivar maximum_instance_count: The maximum number of instances for the function app.
    :vartype maximum_instance_count: int
    :ivar instance_memory_mb: Set the amount of memory allocated to each instance of the function
     app in MB. CPU and network bandwidth are allocated proportionally.
    :vartype instance_memory_mb: int
    :ivar triggers: Scale and concurrency settings for the function app triggers.
    :vartype triggers: "FunctionsScaleAndConcurrencyTriggers"
    """

    alwaysReady: list["FunctionsAlwaysReadyConfig"]
    """'Always Ready' configuration for the function app."""
    maximumInstanceCount: int
    """The maximum number of instances for the function app."""
    instanceMemoryMB: int
    """Set the amount of memory allocated to each instance of the function app in MB. CPU and network
     bandwidth are allocated proportionally."""
    triggers: "FunctionsScaleAndConcurrencyTriggers"
    """Scale and concurrency settings for the function app triggers."""


class FunctionsScaleAndConcurrencyTriggers(TypedDict, total=False):
    """Scale and concurrency settings for the function app triggers.

    :ivar http: Scale and concurrency settings for the HTTP trigger.
    :vartype http: "FunctionsScaleAndConcurrencyTriggersHttp"
    """

    http: "FunctionsScaleAndConcurrencyTriggersHttp"
    """Scale and concurrency settings for the HTTP trigger."""


class FunctionsScaleAndConcurrencyTriggersHttp(TypedDict, total=False):
    """Scale and concurrency settings for the HTTP trigger.

    :ivar per_instance_concurrency: The maximum number of concurrent HTTP trigger invocations per
     instance.
    :vartype per_instance_concurrency: int
    """

    perInstanceConcurrency: int
    """The maximum number of concurrent HTTP trigger invocations per instance."""


class FunctionsSiteUpdateStrategy(TypedDict, total=False):
    """Function app site update strategy configuration for deployments and site config updates.

    :ivar type: Function app site update strategy type. Available options: Recreate, RollingUpdate.
     Known values are: "Recreate" and "RollingUpdate".
    :vartype type: Union[str, "SiteUpdateStrategyType"]
    """

    type: Union[str, "SiteUpdateStrategyType"]
    """Function app site update strategy type. Available options: Recreate, RollingUpdate. Known
     values are: \"Recreate\" and \"RollingUpdate\"."""


class GitHub(TypedDict, total=False):
    """The configuration settings of the GitHub provider.

    :ivar enabled: <code>false</code> if the GitHub provider should not be enabled despite the set
     registration; otherwise, <code>true</code>.
    :vartype enabled: bool
    :ivar registration: The configuration settings of the app registration for the GitHub provider.
    :vartype registration: "ClientRegistration"
    :ivar login: The configuration settings of the login flow.
    :vartype login: "LoginScopes"
    """

    enabled: bool
    """<code>false</code> if the GitHub provider should not be enabled despite the set registration;
     otherwise, <code>true</code>."""
    registration: "ClientRegistration"
    """The configuration settings of the app registration for the GitHub provider."""
    login: "LoginScopes"
    """The configuration settings of the login flow."""


class GitHubActionCodeConfiguration(TypedDict, total=False):
    """The GitHub action code configuration.

    :ivar runtime_stack: Runtime stack is used to determine the workflow file content for code base
     apps.
    :vartype runtime_stack: str
    :ivar runtime_version: Runtime version is used to determine what build version to set in the
     workflow file.
    :vartype runtime_version: str
    """

    runtimeStack: str
    """Runtime stack is used to determine the workflow file content for code base apps."""
    runtimeVersion: str
    """Runtime version is used to determine what build version to set in the workflow file."""


class GitHubActionConfiguration(TypedDict, total=False):
    """The GitHub action configuration.

    :ivar code_configuration: GitHub Action code configuration.
    :vartype code_configuration: "GitHubActionCodeConfiguration"
    :ivar container_configuration: GitHub Action container configuration.
    :vartype container_configuration: "GitHubActionContainerConfiguration"
    :ivar is_linux: This will help determine the workflow configuration to select.
    :vartype is_linux: bool
    :ivar generate_workflow_file: Workflow option to determine whether the workflow file should be
     generated and written to the repository.
    :vartype generate_workflow_file: bool
    """

    codeConfiguration: "GitHubActionCodeConfiguration"
    """GitHub Action code configuration."""
    containerConfiguration: "GitHubActionContainerConfiguration"
    """GitHub Action container configuration."""
    isLinux: bool
    """This will help determine the workflow configuration to select."""
    generateWorkflowFile: bool
    """Workflow option to determine whether the workflow file should be generated and written to the
     repository."""


class GitHubActionContainerConfiguration(TypedDict, total=False):
    """The GitHub action container configuration.

    :ivar server_url: The server URL for the container registry where the build will be hosted.
    :vartype server_url: str
    :ivar image_name: The image name for the build.
    :vartype image_name: str
    :ivar username: The username used to upload the image to the container registry.
    :vartype username: str
    :ivar password: The password used to upload the image to the container registry.
    :vartype password: str
    """

    serverUrl: str
    """The server URL for the container registry where the build will be hosted."""
    imageName: str
    """The image name for the build."""
    username: str
    """The username used to upload the image to the container registry."""
    password: str
    """The password used to upload the image to the container registry."""


class GlobalValidation(TypedDict, total=False):
    """The configuration settings that determines the validation flow of users using App Service
    Authentication/Authorization.

    :ivar require_authentication: <code>true</code> if the authentication flow is required any
     request is made; otherwise, <code>false</code>.
    :vartype require_authentication: bool
    :ivar unauthenticated_client_action: The action to take when an unauthenticated client attempts
     to access the app. Known values are: "RedirectToLoginPage", "AllowAnonymous", "Return401", and
     "Return403".
    :vartype unauthenticated_client_action: Union[str, "UnauthenticatedClientActionV2"]
    :ivar redirect_to_provider: The default authentication provider to use when multiple providers
     are configured. This setting is only needed if multiple providers are configured and the
     unauthenticated client action is set to "RedirectToLoginPage".
    :vartype redirect_to_provider: str
    :ivar excluded_paths: The paths for which unauthenticated flow would not be redirected to the
     login page.
    :vartype excluded_paths: list[str]
    """

    requireAuthentication: bool
    """<code>true</code> if the authentication flow is required any request is made; otherwise,
     <code>false</code>."""
    unauthenticatedClientAction: Union[str, "UnauthenticatedClientActionV2"]
    """The action to take when an unauthenticated client attempts to access the app. Known values are:
     \"RedirectToLoginPage\", \"AllowAnonymous\", \"Return401\", and \"Return403\"."""
    redirectToProvider: str
    """The default authentication provider to use when multiple providers are configured. This setting
     is only needed if multiple providers are configured and the unauthenticated client action is
     set to \"RedirectToLoginPage\"."""
    excludedPaths: list[str]
    """The paths for which unauthenticated flow would not be redirected to the login page."""


class Google(TypedDict, total=False):
    """The configuration settings of the Google provider.

    :ivar enabled: <code>false</code> if the Google provider should not be enabled despite the set
     registration; otherwise, <code>true</code>.
    :vartype enabled: bool
    :ivar registration: The configuration settings of the app registration for the Google provider.
    :vartype registration: "ClientRegistration"
    :ivar login: The configuration settings of the login flow.
    :vartype login: "LoginScopes"
    :ivar validation: The configuration settings of the Azure Active Directory token validation
     flow.
    :vartype validation: "AllowedAudiencesValidation"
    """

    enabled: bool
    """<code>false</code> if the Google provider should not be enabled despite the set registration;
     otherwise, <code>true</code>."""
    registration: "ClientRegistration"
    """The configuration settings of the app registration for the Google provider."""
    login: "LoginScopes"
    """The configuration settings of the login flow."""
    validation: "AllowedAudiencesValidation"
    """The configuration settings of the Azure Active Directory token validation flow."""


class HandlerMapping(TypedDict, total=False):
    """The IIS handler mappings used to define which handler processes HTTP requests with certain
    extension. For example, it is used to configure php-cgi.exe process to handle all HTTP requests
    with *.php extension.

    :ivar extension: Requests with this extension will be handled using the specified FastCGI
     application.
    :vartype extension: str
    :ivar script_processor: The absolute path to the FastCGI application.
    :vartype script_processor: str
    :ivar arguments: Command-line arguments to be passed to the script processor.
    :vartype arguments: str
    """

    extension: str
    """Requests with this extension will be handled using the specified FastCGI application."""
    scriptProcessor: str
    """The absolute path to the FastCGI application."""
    arguments: str
    """Command-line arguments to be passed to the script processor."""


class HostingEnvironmentProfile(TypedDict, total=False):
    """Specification for an App Service Environment to use for this resource.

    :ivar id: Resource ID of the App Service Environment.
    :vartype id: str
    :ivar name: Name of the App Service Environment.
    :vartype name: str
    :ivar type: Resource type of the App Service Environment.
    :vartype type: str
    """

    id: str
    """Resource ID of the App Service Environment."""
    name: str
    """Name of the App Service Environment."""
    type: str
    """Resource type of the App Service Environment."""


class HostNameBinding(ProxyResource):
    """A hostname binding object.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: HostNameBinding resource specific properties.
    :vartype properties: "HostNameBindingProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "HostNameBindingProperties"
    """HostNameBinding resource specific properties."""
    kind: str
    """Kind of resource."""


class HostNameBindingProperties(TypedDict, total=False):
    """HostNameBinding resource specific properties.

    :ivar site_name: App Service app name.
    :vartype site_name: str
    :ivar domain_id: Fully qualified ARM domain resource URI.
    :vartype domain_id: str
    :ivar azure_resource_name: Azure resource name.
    :vartype azure_resource_name: str
    :ivar azure_resource_type: Azure resource type. Known values are: "Website" and
     "TrafficManager".
    :vartype azure_resource_type: Union[str, "AzureResourceType"]
    :ivar custom_host_name_dns_record_type: Custom DNS record type. Known values are: "CName" and
     "A".
    :vartype custom_host_name_dns_record_type: Union[str, "CustomHostNameDnsRecordType"]
    :ivar host_name_type: Hostname type. Known values are: "Verified" and "Managed".
    :vartype host_name_type: Union[str, "HostNameType"]
    :ivar ssl_state: SSL type. Known values are: "Disabled", "SniEnabled", and "IpBasedEnabled".
    :vartype ssl_state: Union[str, "SslState"]
    :ivar thumbprint: SSL certificate thumbprint.
    :vartype thumbprint: str
    :ivar virtual_ip: Virtual IP address assigned to the hostname if IP based SSL is enabled.
    :vartype virtual_ip: str
    """

    siteName: str
    """App Service app name."""
    domainId: str
    """Fully qualified ARM domain resource URI."""
    azureResourceName: str
    """Azure resource name."""
    azureResourceType: Union[str, "AzureResourceType"]
    """Azure resource type. Known values are: \"Website\" and \"TrafficManager\"."""
    customHostNameDnsRecordType: Union[str, "CustomHostNameDnsRecordType"]
    """Custom DNS record type. Known values are: \"CName\" and \"A\"."""
    hostNameType: Union[str, "HostNameType"]
    """Hostname type. Known values are: \"Verified\" and \"Managed\"."""
    sslState: Union[str, "SslState"]
    """SSL type. Known values are: \"Disabled\", \"SniEnabled\", and \"IpBasedEnabled\"."""
    thumbprint: str
    """SSL certificate thumbprint."""
    virtualIP: str
    """Virtual IP address assigned to the hostname if IP based SSL is enabled."""


class HostNameSslState(TypedDict, total=False):
    """SSL-enabled hostname.

    :ivar name: Hostname.
    :vartype name: str
    :ivar ssl_state: SSL type. Known values are: "Disabled", "SniEnabled", and "IpBasedEnabled".
    :vartype ssl_state: Union[str, "SslState"]
    :ivar virtual_ip: Virtual IP address assigned to the hostname if IP based SSL is enabled.
    :vartype virtual_ip: str
    :ivar thumbprint: SSL certificate thumbprint.
    :vartype thumbprint: str
    :ivar to_update: Set to <code>true</code> to update existing hostname.
    :vartype to_update: bool
    :ivar host_type: Indicates whether the hostname is a standard or repository hostname. Known
     values are: "Standard" and "Repository".
    :vartype host_type: Union[str, "HostType"]
    """

    name: str
    """Hostname."""
    sslState: Union[str, "SslState"]
    """SSL type. Known values are: \"Disabled\", \"SniEnabled\", and \"IpBasedEnabled\"."""
    virtualIP: str
    """Virtual IP address assigned to the hostname if IP based SSL is enabled."""
    thumbprint: str
    """SSL certificate thumbprint."""
    toUpdate: bool
    """Set to <code>true</code> to update existing hostname."""
    hostType: Union[str, "HostType"]
    """Indicates whether the hostname is a standard or repository hostname. Known values are:
     \"Standard\" and \"Repository\"."""


class HttpLogsConfig(TypedDict, total=False):
    """Http logs configuration.

    :ivar file_system: Http logs to file system configuration.
    :vartype file_system: "FileSystemHttpLogsConfig"
    :ivar azure_blob_storage: Http logs to azure blob storage configuration.
    :vartype azure_blob_storage: "AzureBlobStorageHttpLogsConfig"
    """

    fileSystem: "FileSystemHttpLogsConfig"
    """Http logs to file system configuration."""
    azureBlobStorage: "AzureBlobStorageHttpLogsConfig"
    """Http logs to azure blob storage configuration."""


class HttpSettings(TypedDict, total=False):
    """The configuration settings of the HTTP requests for authentication and authorization requests
    made against App Service Authentication/Authorization.

    :ivar require_https: <code>false</code> if the authentication/authorization responses not
     having the HTTPS scheme are permissible; otherwise, <code>true</code>.
    :vartype require_https: bool
    :ivar routes: The configuration settings of the paths HTTP requests.
    :vartype routes: "HttpSettingsRoutes"
    :ivar forward_proxy: The configuration settings of a forward proxy used to make the requests.
    :vartype forward_proxy: "ForwardProxy"
    """

    requireHttps: bool
    """<code>false</code> if the authentication/authorization responses not having the HTTPS scheme
     are permissible; otherwise, <code>true</code>."""
    routes: "HttpSettingsRoutes"
    """The configuration settings of the paths HTTP requests."""
    forwardProxy: "ForwardProxy"
    """The configuration settings of a forward proxy used to make the requests."""


class HttpSettingsRoutes(TypedDict, total=False):
    """The configuration settings of the paths HTTP requests.

    :ivar api_prefix: The prefix that should precede all the authentication/authorization paths.
    :vartype api_prefix: str
    """

    apiPrefix: str
    """The prefix that should precede all the authentication/authorization paths."""


class HybridConnection(ProxyResource):
    """Hybrid Connection contract. This is used to configure a Hybrid Connection.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: HybridConnection resource specific properties.
    :vartype properties: "HybridConnectionProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "HybridConnectionProperties"
    """HybridConnection resource specific properties."""
    kind: str
    """Kind of resource."""


class HybridConnectionProperties(TypedDict, total=False):
    """HybridConnection resource specific properties.

    :ivar service_bus_namespace: The name of the Service Bus namespace.
    :vartype service_bus_namespace: str
    :ivar relay_name: The name of the Service Bus relay.
    :vartype relay_name: str
    :ivar relay_arm_uri: The ARM URI to the Service Bus relay.
    :vartype relay_arm_uri: str
    :ivar hostname: The hostname of the endpoint.
    :vartype hostname: str
    :ivar port: The port of the endpoint.
    :vartype port: int
    :ivar send_key_name: The name of the Service Bus key which has Send permissions. This is used
     to authenticate to Service Bus.
    :vartype send_key_name: str
    :ivar send_key_value: The value of the Service Bus key. This is used to authenticate to Service
     Bus. In ARM this key will not be returned normally, use the POST /listKeys API instead.
    :vartype send_key_value: str
    :ivar service_bus_suffix: The suffix for the service bus endpoint. By default this is
     .servicebus.windows.net.
    :vartype service_bus_suffix: str
    """

    serviceBusNamespace: str
    """The name of the Service Bus namespace."""
    relayName: str
    """The name of the Service Bus relay."""
    relayArmUri: str
    """The ARM URI to the Service Bus relay."""
    hostname: str
    """The hostname of the endpoint."""
    port: int
    """The port of the endpoint."""
    sendKeyName: str
    """The name of the Service Bus key which has Send permissions. This is used to authenticate to
     Service Bus."""
    sendKeyValue: str
    """The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key
     will not be returned normally, use the POST /listKeys API instead."""
    serviceBusSuffix: str
    """The suffix for the service bus endpoint. By default this is .servicebus.windows.net."""


class Identifier(ProxyResource):
    """A domain specific resource identifier.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Identifier resource specific properties.
    :vartype properties: "IdentifierProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "IdentifierProperties"
    """Identifier resource specific properties."""
    kind: str
    """Kind of resource."""


class IdentifierProperties(TypedDict, total=False):
    """Identifier resource specific properties.

    :ivar value: String representation of the identity.
    :vartype value: str
    """

    id: str
    """String representation of the identity."""


class IdentityProviders(TypedDict, total=False):
    """The configuration settings of each of the identity providers used to configure App Service
    Authentication/Authorization.

    :ivar azure_active_directory: The configuration settings of the Azure Active directory
     provider.
    :vartype azure_active_directory: "AzureActiveDirectory"
    :ivar facebook: The configuration settings of the Facebook provider.
    :vartype facebook: "Facebook"
    :ivar git_hub: The configuration settings of the GitHub provider.
    :vartype git_hub: "GitHub"
    :ivar google: The configuration settings of the Google provider.
    :vartype google: "Google"
    :ivar legacy_microsoft_account: The configuration settings of the legacy Microsoft Account
     provider.
    :vartype legacy_microsoft_account: "LegacyMicrosoftAccount"
    :ivar twitter: The configuration settings of the Twitter provider.
    :vartype twitter: "Twitter"
    :ivar apple: The configuration settings of the Apple provider.
    :vartype apple: "Apple"
    :ivar azure_static_web_apps: The configuration settings of the Azure Static Web Apps provider.
    :vartype azure_static_web_apps: "AzureStaticWebApps"
    :ivar custom_open_id_connect_providers: The map of the name of the alias of each custom Open ID
     Connect provider to the configuration settings of the custom Open ID Connect provider.
    :vartype custom_open_id_connect_providers: dict[str, "CustomOpenIdConnectProvider"]
    """

    azureActiveDirectory: "AzureActiveDirectory"
    """The configuration settings of the Azure Active directory provider."""
    facebook: "Facebook"
    """The configuration settings of the Facebook provider."""
    gitHub: "GitHub"
    """The configuration settings of the GitHub provider."""
    google: "Google"
    """The configuration settings of the Google provider."""
    legacyMicrosoftAccount: "LegacyMicrosoftAccount"
    """The configuration settings of the legacy Microsoft Account provider."""
    twitter: "Twitter"
    """The configuration settings of the Twitter provider."""
    apple: "Apple"
    """The configuration settings of the Apple provider."""
    azureStaticWebApps: "AzureStaticWebApps"
    """The configuration settings of the Azure Static Web Apps provider."""
    customOpenIdConnectProviders: dict[str, "CustomOpenIdConnectProvider"]
    """The map of the name of the alias of each custom Open ID Connect provider to the configuration
     settings of the custom Open ID Connect provider."""


class InstallScript(TypedDict, total=False):
    """Server farm install script configuration.

    :ivar name: Name of the install script.
    :vartype name: str
    :ivar source: Source of the install script.
    :vartype source: "InstallScriptSource"
    """

    name: str
    """Name of the install script."""
    source: "InstallScriptSource"
    """Source of the install script."""


class InstallScriptSource(TypedDict, total=False):
    """Object to hold install script reference.

    :ivar source_uri: Install script source URI where the install script file will be fetched from.
    :vartype source_uri: str
    :ivar type: Type of the install script. Known values are: "RemoteAzureBlob" and
     "PlatformStorage".
    :vartype type: Union[str, "InstallScriptType"]
    """

    sourceUri: str
    """Install script source URI where the install script file will be fetched from."""
    type: Union[str, "InstallScriptType"]
    """Type of the install script. Known values are: \"RemoteAzureBlob\" and \"PlatformStorage\"."""


class IpAddress(TypedDict, total=False):
    """The ip address.

    :ivar address: The address.
    :vartype address: str
    """

    address: str
    """The address."""


class IpAddressRange(TypedDict, total=False):
    """The ip address range.

    :ivar address_range: The IP address range.
    :vartype address_range: str
    """

    addressRange: str
    """The IP address range."""


class IpSecurityRestriction(TypedDict, total=False):
    """IP security restriction on an app.

    :ivar ip_address: IP address the security restriction is valid for. It can be in form of pure
     ipv4 address (required SubnetMask property) or CIDR notation such as ipv4/mask (leading bit
     match). For CIDR, SubnetMask property must not be specified.
    :vartype ip_address: str
    :ivar subnet_mask: Subnet mask for the range of IP addresses the restriction is valid for.
    :vartype subnet_mask: str
    :ivar vnet_subnet_resource_id: Virtual network resource id.
    :vartype vnet_subnet_resource_id: str
    :ivar vnet_traffic_tag: (internal) Vnet traffic tag.
    :vartype vnet_traffic_tag: int
    :ivar subnet_traffic_tag: (internal) Subnet traffic tag.
    :vartype subnet_traffic_tag: int
    :ivar action: Allow or Deny access for this IP range.
    :vartype action: str
    :ivar tag: Defines what this IP filter will be used for. This is to support IP filtering on
     proxies. Known values are: "Default", "XffProxy", and "ServiceTag".
    :vartype tag: Union[str, "IpFilterTag"]
    :ivar priority: Priority of IP restriction rule.
    :vartype priority: int
    :ivar name: IP restriction rule name.
    :vartype name: str
    :ivar description: IP restriction rule description.
    :vartype description: str
    :ivar headers: IP restriction rule headers. X-Forwarded-Host
     (`https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host#Examples
     <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host#Examples>`_). The
     matching logic is ..

     * If the property is null or empty (default), all hosts(or lack of) are allowed.
     * A value is compared using ordinal-ignore-case (excluding port number).
     * Subdomain wildcards are permitted but don't match the root domain. For example,
       *.contoso.com matches the subdomain foo.contoso.com
     but not the root domain contoso.com or multi-level foo.bar.contoso.com
     * Unicode host names are allowed but are converted to Punycode for matching.

     X-Forwarded-For
     (`https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#Examples
     <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#Examples>`_).
     The matching logic is ..

     * If the property is null or empty (default), any forwarded-for chains (or lack of) are
       allowed.
     * If any address (excluding port number) in the chain (comma separated) matches the CIDR
       defined by the property.

     X-Azure-FDID and X-FD-HealthProbe.
     The matching logic is exact match.
    :vartype headers: dict[str, list[str]]
    """

    ipAddress: str
    """IP address the security restriction is valid for. It can be in form of pure ipv4 address
     (required SubnetMask property) or CIDR notation such as ipv4/mask (leading bit match). For
     CIDR, SubnetMask property must not be specified."""
    subnetMask: str
    """Subnet mask for the range of IP addresses the restriction is valid for."""
    vnetSubnetResourceId: str
    """Virtual network resource id."""
    vnetTrafficTag: int
    """(internal) Vnet traffic tag."""
    subnetTrafficTag: int
    """(internal) Subnet traffic tag."""
    action: str
    """Allow or Deny access for this IP range."""
    tag: Union[str, "IpFilterTag"]
    """Defines what this IP filter will be used for. This is to support IP filtering on proxies. Known
     values are: \"Default\", \"XffProxy\", and \"ServiceTag\"."""
    priority: int
    """Priority of IP restriction rule."""
    name: str
    """IP restriction rule name."""
    description: str
    """IP restriction rule description."""
    headers: dict[str, list[str]]
    """IP restriction rule headers. X-Forwarded-Host
      (`https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host#Examples
      <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host#Examples>`_). The
      matching logic is ..
 
      * If the property is null or empty (default), all hosts(or lack of) are allowed.
      * A value is compared using ordinal-ignore-case (excluding port number).
      * Subdomain wildcards are permitted but don't match the root domain. For example,
        *.contoso.com matches the subdomain foo.contoso.com
      but not the root domain contoso.com or multi-level foo.bar.contoso.com
      * Unicode host names are allowed but are converted to Punycode for matching.
 
      X-Forwarded-For
      (`https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#Examples
      <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#Examples>`_).
      The matching logic is ..
 
      * If the property is null or empty (default), any forwarded-for chains (or lack of) are
        allowed.
      * If any address (excluding port number) in the chain (comma separated) matches the CIDR
        defined by the property.
 
      X-Azure-FDID and X-FD-HealthProbe.
      The matching logic is exact match."""


class JwtClaimChecks(TypedDict, total=False):
    """The configuration settings of the checks that should be made while validating the JWT Claims.

    :ivar allowed_groups: The list of the allowed groups.
    :vartype allowed_groups: list[str]
    :ivar allowed_client_applications: The list of the allowed client applications.
    :vartype allowed_client_applications: list[str]
    """

    allowedGroups: list[str]
    """The list of the allowed groups."""
    allowedClientApplications: list[str]
    """The list of the allowed client applications."""


class KeyInfo(TypedDict, total=False):
    """Function key info.

    :ivar name: Key name.
    :vartype name: str
    :ivar value: Key value.
    :vartype value: str
    """

    name: str
    """Key name."""
    value: str
    """Key value."""


class KeyVaultReferenceWithStatus(TypedDict, total=False):
    """Object to hold key vault reference and the resolution status.

    :ivar secret_uri: Key vault secret URI.
    :vartype secret_uri: str
    :ivar reference_status: Reference status of the key vault secret.
    :vartype reference_status: str
    """

    secretUri: str
    """Key vault secret URI."""
    referenceStatus: str
    """Reference status of the key vault secret."""


class KubeEnvironment(TrackedResource):
    """A Kubernetes cluster specialized for web workloads by Azure App Service.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: The geo-location where the resource lives. Required.
    :vartype location: str
    :ivar properties: KubeEnvironment resource specific properties.
    :vartype properties: "KubeEnvironmentProperties"
    :ivar extended_location: Extended Location.
    :vartype extended_location: "ExtendedLocation"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "KubeEnvironmentProperties"
    """KubeEnvironment resource specific properties."""
    extendedLocation: "ExtendedLocation"
    """Extended Location."""
    kind: str
    """Kind of resource."""


class KubeEnvironmentPatchResource(ProxyOnlyResource):
    """ARM resource for a KubeEnvironment when patching.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: KubeEnvironmentPatchResource resource specific properties.
    :vartype properties: "KubeEnvironmentPatchResourceProperties"
    """

    properties: "KubeEnvironmentPatchResourceProperties"
    """KubeEnvironmentPatchResource resource specific properties."""


class KubeEnvironmentPatchResourceProperties(TypedDict, total=False):
    """KubeEnvironmentPatchResource resource specific properties.

    :ivar provisioning_state: Provisioning state of the Kubernetes Environment. Known values are:
     "Succeeded", "Failed", "Canceled", "Waiting", "InitializationInProgress",
     "InfrastructureSetupInProgress", "InfrastructureSetupComplete", "ScheduledForDelete",
     "UpgradeRequested", and "UpgradeFailed".
    :vartype provisioning_state: Union[str, "KubeEnvironmentProvisioningState"]
    :ivar deployment_errors: Any errors that occurred during deployment or deployment validation.
    :vartype deployment_errors: str
    :ivar internal_load_balancer_enabled: Only visible within Vnet/Subnet.
    :vartype internal_load_balancer_enabled: bool
    :ivar default_domain: Default Domain Name for the cluster.
    :vartype default_domain: str
    :ivar static_ip: Static IP of the KubeEnvironment.
    :vartype static_ip: str
    :ivar arc_configuration: Cluster configuration which determines the ARC cluster components
     types. Eg: Choosing between BuildService kind, FrontEnd Service ArtifactsStorageType etc.
    :vartype arc_configuration: "ArcConfiguration"
    :ivar app_logs_configuration: Cluster configuration which enables the log daemon to export app
     logs to a destination. Currently only "log-analytics" is supported.
    :vartype app_logs_configuration: "AppLogsConfiguration"
    :ivar container_apps_configuration: Cluster configuration for Container Apps Environments to
     configure Dapr Instrumentation Key and VNET Configuration.
    :vartype container_apps_configuration: "ContainerAppsConfiguration"
    :ivar aks_resource_id:
    :vartype aks_resource_id: str
    """

    provisioningState: Union[str, "KubeEnvironmentProvisioningState"]
    """Provisioning state of the Kubernetes Environment. Known values are: \"Succeeded\", \"Failed\",
     \"Canceled\", \"Waiting\", \"InitializationInProgress\", \"InfrastructureSetupInProgress\",
     \"InfrastructureSetupComplete\", \"ScheduledForDelete\", \"UpgradeRequested\", and
     \"UpgradeFailed\"."""
    deploymentErrors: str
    """Any errors that occurred during deployment or deployment validation."""
    internalLoadBalancerEnabled: bool
    """Only visible within Vnet/Subnet."""
    defaultDomain: str
    """Default Domain Name for the cluster."""
    staticIp: str
    """Static IP of the KubeEnvironment."""
    arcConfiguration: "ArcConfiguration"
    """Cluster configuration which determines the ARC cluster components types. Eg: Choosing between
     BuildService kind, FrontEnd Service ArtifactsStorageType etc."""
    appLogsConfiguration: "AppLogsConfiguration"
    """Cluster configuration which enables the log daemon to export app logs to a destination.
     Currently only \"log-analytics\" is supported."""
    containerAppsConfiguration: "ContainerAppsConfiguration"
    """Cluster configuration for Container Apps Environments to configure Dapr Instrumentation Key and
     VNET Configuration."""
    aksResourceID: str


class KubeEnvironmentProfile(TypedDict, total=False):
    """Specification for a Kubernetes Environment to use for this resource.

    :ivar id: Resource ID of the Kubernetes Environment.
    :vartype id: str
    :ivar name: Name of the Kubernetes Environment.
    :vartype name: str
    :ivar type: Resource type of the Kubernetes Environment.
    :vartype type: str
    """

    id: str
    """Resource ID of the Kubernetes Environment."""
    name: str
    """Name of the Kubernetes Environment."""
    type: str
    """Resource type of the Kubernetes Environment."""


class KubeEnvironmentProperties(TypedDict, total=False):
    """KubeEnvironment resource specific properties.

    :ivar provisioning_state: Provisioning state of the Kubernetes Environment. Known values are:
     "Succeeded", "Failed", "Canceled", "Waiting", "InitializationInProgress",
     "InfrastructureSetupInProgress", "InfrastructureSetupComplete", "ScheduledForDelete",
     "UpgradeRequested", and "UpgradeFailed".
    :vartype provisioning_state: Union[str, "KubeEnvironmentProvisioningState"]
    :ivar deployment_errors: Any errors that occurred during deployment or deployment validation.
    :vartype deployment_errors: str
    :ivar internal_load_balancer_enabled: Only visible within Vnet/Subnet.
    :vartype internal_load_balancer_enabled: bool
    :ivar default_domain: Default Domain Name for the cluster.
    :vartype default_domain: str
    :ivar static_ip: Static IP of the KubeEnvironment.
    :vartype static_ip: str
    :ivar environment_type: Type of Kubernetes Environment. Only supported for Container App
     Environments with value as Managed.
    :vartype environment_type: str
    :ivar arc_configuration: Cluster configuration which determines the ARC cluster components
     types. Eg: Choosing between BuildService kind, FrontEnd Service ArtifactsStorageType etc.
    :vartype arc_configuration: "ArcConfiguration"
    :ivar app_logs_configuration: Cluster configuration which enables the log daemon to export app
     logs to a destination. Currently only "log-analytics" is supported.
    :vartype app_logs_configuration: "AppLogsConfiguration"
    :ivar container_apps_configuration: Cluster configuration for Container Apps Environments to
     configure Dapr Instrumentation Key and VNET Configuration.
    :vartype container_apps_configuration: "ContainerAppsConfiguration"
    :ivar aks_resource_id:
    :vartype aks_resource_id: str
    """

    provisioningState: Union[str, "KubeEnvironmentProvisioningState"]
    """Provisioning state of the Kubernetes Environment. Known values are: \"Succeeded\", \"Failed\",
     \"Canceled\", \"Waiting\", \"InitializationInProgress\", \"InfrastructureSetupInProgress\",
     \"InfrastructureSetupComplete\", \"ScheduledForDelete\", \"UpgradeRequested\", and
     \"UpgradeFailed\"."""
    deploymentErrors: str
    """Any errors that occurred during deployment or deployment validation."""
    internalLoadBalancerEnabled: bool
    """Only visible within Vnet/Subnet."""
    defaultDomain: str
    """Default Domain Name for the cluster."""
    staticIp: str
    """Static IP of the KubeEnvironment."""
    environmentType: str
    """Type of Kubernetes Environment. Only supported for Container App Environments with value as
     Managed."""
    arcConfiguration: "ArcConfiguration"
    """Cluster configuration which determines the ARC cluster components types. Eg: Choosing between
     BuildService kind, FrontEnd Service ArtifactsStorageType etc."""
    appLogsConfiguration: "AppLogsConfiguration"
    """Cluster configuration which enables the log daemon to export app logs to a destination.
     Currently only \"log-analytics\" is supported."""
    containerAppsConfiguration: "ContainerAppsConfiguration"
    """Cluster configuration for Container Apps Environments to configure Dapr Instrumentation Key and
     VNET Configuration."""
    aksResourceID: str


class LegacyMicrosoftAccount(TypedDict, total=False):
    """The configuration settings of the legacy Microsoft Account provider.

    :ivar enabled: <code>false</code> if the legacy Microsoft Account provider should not be
     enabled despite the set registration; otherwise, <code>true</code>.
    :vartype enabled: bool
    :ivar registration: The configuration settings of the app registration for the legacy Microsoft
     Account provider.
    :vartype registration: "ClientRegistration"
    :ivar login: The configuration settings of the login flow.
    :vartype login: "LoginScopes"
    :ivar validation: The configuration settings of the legacy Microsoft Account provider token
     validation flow.
    :vartype validation: "AllowedAudiencesValidation"
    """

    enabled: bool
    """<code>false</code> if the legacy Microsoft Account provider should not be enabled despite the
     set registration; otherwise, <code>true</code>."""
    registration: "ClientRegistration"
    """The configuration settings of the app registration for the legacy Microsoft Account provider."""
    login: "LoginScopes"
    """The configuration settings of the login flow."""
    validation: "AllowedAudiencesValidation"
    """The configuration settings of the legacy Microsoft Account provider token validation flow."""


class LogAnalyticsConfiguration(TypedDict, total=False):
    """LogAnalyticsConfiguration.

    :ivar customer_id:
    :vartype customer_id: str
    :ivar shared_key:
    :vartype shared_key: str
    """

    customerId: str
    sharedKey: str


class Login(TypedDict, total=False):
    """The configuration settings of the login flow of users using App Service
    Authentication/Authorization.

    :ivar routes: The routes that specify the endpoints used for login and logout requests.
    :vartype routes: "LoginRoutes"
    :ivar token_store: The configuration settings of the token store.
    :vartype token_store: "TokenStore"
    :ivar preserve_url_fragments_for_logins: <code>true</code> if the fragments from the request
     are preserved after the login request is made; otherwise, <code>false</code>.
    :vartype preserve_url_fragments_for_logins: bool
    :ivar allowed_external_redirect_urls: External URLs that can be redirected to as part of
     logging in or logging out of the app. Note that the query string part of the URL is ignored.
     This is an advanced setting typically only needed by Windows Store application backends. Note
     that URLs within the current domain are always implicitly allowed.
    :vartype allowed_external_redirect_urls: list[str]
    :ivar cookie_expiration: The configuration settings of the session cookie's expiration.
    :vartype cookie_expiration: "CookieExpiration"
    :ivar nonce: The configuration settings of the nonce used in the login flow.
    :vartype nonce: "Nonce"
    """

    routes: "LoginRoutes"
    """The routes that specify the endpoints used for login and logout requests."""
    tokenStore: "TokenStore"
    """The configuration settings of the token store."""
    preserveUrlFragmentsForLogins: bool
    """<code>true</code> if the fragments from the request are preserved after the login request is
     made; otherwise, <code>false</code>."""
    allowedExternalRedirectUrls: list[str]
    """External URLs that can be redirected to as part of logging in or logging out of the app. Note
     that the query string part of the URL is ignored. This is an advanced setting typically only
     needed by Windows Store application backends. Note that URLs within the current domain are
     always implicitly allowed."""
    cookieExpiration: "CookieExpiration"
    """The configuration settings of the session cookie's expiration."""
    nonce: "Nonce"
    """The configuration settings of the nonce used in the login flow."""


class LoginRoutes(TypedDict, total=False):
    """The routes that specify the endpoints used for login and logout requests.

    :ivar logout_endpoint: The endpoint at which a logout request should be made.
    :vartype logout_endpoint: str
    """

    logoutEndpoint: str
    """The endpoint at which a logout request should be made."""


class LoginScopes(TypedDict, total=False):
    """The configuration settings of the login flow, including the scopes that should be requested.

    :ivar scopes: A list of the scopes that should be requested while authenticating.
    :vartype scopes: list[str]
    """

    scopes: list[str]
    """A list of the scopes that should be requested while authenticating."""


class ManagedServiceIdentity(TypedDict, total=False):
    """Managed service identity.

    :ivar type: Type of managed service identity. Known values are: "SystemAssigned",
     "UserAssigned", "SystemAssigned, UserAssigned", and "None".
    :vartype type: Union[str, "ManagedServiceIdentityType"]
    :ivar tenant_id: Tenant of managed service identity.
    :vartype tenant_id: str
    :ivar principal_id: Principal Id of managed service identity.
    :vartype principal_id: str
    :ivar user_assigned_identities: The list of user assigned identities associated with the
     resource. The user identity dictionary key references will be ARM resource ids in the form:
     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
    :vartype user_assigned_identities: dict[str, "UserAssignedIdentity"]
    """

    type: Union[str, "ManagedServiceIdentityType"]
    """Type of managed service identity. Known values are: \"SystemAssigned\", \"UserAssigned\",
     \"SystemAssigned, UserAssigned\", and \"None\"."""
    tenantId: str
    """Tenant of managed service identity."""
    principalId: str
    """Principal Id of managed service identity."""
    userAssignedIdentities: dict[str, "UserAssignedIdentity"]
    """The list of user assigned identities associated with the resource. The user identity dictionary
     key references will be ARM resource ids in the form:
     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}."""


class MigrateMySqlRequest(ProxyOnlyResource):
    """MySQL migration request.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: MigrateMySqlRequest resource specific properties.
    :vartype properties: "MigrateMySqlRequestProperties"
    """

    properties: "MigrateMySqlRequestProperties"
    """MigrateMySqlRequest resource specific properties."""


class MigrateMySqlRequestProperties(TypedDict, total=False):
    """MigrateMySqlRequest resource specific properties.

    :ivar connection_string: Connection string to the remote MySQL database. Required.
    :vartype connection_string: str
    :ivar migration_type: The type of migration operation to be done. Required. Known values are:
     "LocalToRemote" and "RemoteToLocal".
    :vartype migration_type: Union[str, "MySqlMigrationType"]
    """

    connectionString: Required[str]
    """Connection string to the remote MySQL database. Required."""
    migrationType: Required[Union[str, "MySqlMigrationType"]]
    """The type of migration operation to be done. Required. Known values are: \"LocalToRemote\" and
     \"RemoteToLocal\"."""


class MSDeploy(ProxyOnlyResource):
    """MSDeploy ARM PUT information.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: Core resource properties.
    :vartype properties: "MSDeployProperties"
    """

    properties: "MSDeployProperties"
    """Core resource properties."""


class MSDeployCore(TypedDict, total=False):
    """MSDeploy ARM PUT core information.

    :ivar package_uri: Package URI.
    :vartype package_uri: str
    :ivar connection_string: SQL Connection String.
    :vartype connection_string: str
    :ivar db_type: Database Type.
    :vartype db_type: str
    :ivar set_parameters_xml_file_uri: URI of MSDeploy Parameters file. Must not be set if
     SetParameters is used.
    :vartype set_parameters_xml_file_uri: str
    :ivar set_parameters: MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
    :vartype set_parameters: dict[str, str]
    :ivar skip_app_data: Controls whether the MSDeploy operation skips the App_Data directory. If
     set to <code>true</code>, the existing App_Data directory on the destination will not be
     deleted, and any App_Data directory in the source will be ignored. Setting is
     <code>false</code> by default.
    :vartype skip_app_data: bool
    :ivar app_offline: Sets the AppOffline rule while the MSDeploy operation executes. Setting is
     <code>false</code> by default.
    :vartype app_offline: bool
    """

    packageUri: str
    """Package URI."""
    connectionString: str
    """SQL Connection String."""
    dbType: str
    """Database Type."""
    setParametersXmlFileUri: str
    """URI of MSDeploy Parameters file. Must not be set if SetParameters is used."""
    setParameters: dict[str, str]
    """MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used."""
    skipAppData: bool
    """Controls whether the MSDeploy operation skips the App_Data directory. If set to
     <code>true</code>, the existing App_Data directory on the destination will not be deleted, and
     any App_Data directory in the source will be ignored. Setting is <code>false</code> by default."""
    appOffline: bool
    """Sets the AppOffline rule while the MSDeploy operation executes. Setting is <code>false</code>
     by default."""


class MSDeployProperties(MSDeployCore):
    """MSDeploy ARM PUT information properties.

    :ivar package_uri: Package URI.
    :vartype package_uri: str
    :ivar connection_string: SQL Connection String.
    :vartype connection_string: str
    :ivar db_type: Database Type.
    :vartype db_type: str
    :ivar set_parameters_xml_file_uri: URI of MSDeploy Parameters file. Must not be set if
     SetParameters is used.
    :vartype set_parameters_xml_file_uri: str
    :ivar set_parameters: MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
    :vartype set_parameters: dict[str, str]
    :ivar skip_app_data: Controls whether the MSDeploy operation skips the App_Data directory. If
     set to <code>true</code>, the existing App_Data directory on the destination will not be
     deleted, and any App_Data directory in the source will be ignored. Setting is
     <code>false</code> by default.
    :vartype skip_app_data: bool
    :ivar app_offline: Sets the AppOffline rule while the MSDeploy operation executes. Setting is
     <code>false</code> by default.
    :vartype app_offline: bool
    :ivar add_on_packages: List of Add-On packages. Add-On packages implicitly enable the Do Not
     Delete MSDeploy rule.
    :vartype add_on_packages: list["MSDeployCore"]
    """

    addOnPackages: list["MSDeployCore"]
    """List of Add-On packages. Add-On packages implicitly enable the Do Not Delete MSDeploy rule."""


class NameIdentifier(TypedDict, total=False):
    """Identifies an object.

    :ivar name: Name of the object.
    :vartype name: str
    """

    name: str
    """Name of the object."""


class NameValuePair(TypedDict, total=False):
    """Name value pair.

    :ivar name: Pair name.
    :vartype name: str
    :ivar value: Pair value.
    :vartype value: str
    """

    name: str
    """Pair name."""
    value: str
    """Pair value."""


class Nonce(TypedDict, total=False):
    """The configuration settings of the nonce used in the login flow.

    :ivar validate_nonce: <code>false</code> if the nonce should not be validated while completing
     the login flow; otherwise, <code>true</code>.
    :vartype validate_nonce: bool
    :ivar nonce_expiration_interval: The time after the request is made when the nonce should
     expire.
    :vartype nonce_expiration_interval: str
    """

    validateNonce: bool
    """<code>false</code> if the nonce should not be validated while completing the login flow;
     otherwise, <code>true</code>."""
    nonceExpirationInterval: str
    """The time after the request is made when the nonce should expire."""


class OpenAuthenticationAccessPolicies(TypedDict, total=False):
    """AuthenticationPolicy of type Open.

    :ivar policies: Open authentication policies.
    :vartype policies: dict[str, "OpenAuthenticationAccessPolicy"]
    """

    policies: dict[str, "OpenAuthenticationAccessPolicy"]
    """Open authentication policies."""


class OpenAuthenticationAccessPolicy(TypedDict, total=False):
    """Open authentication access policy defined by user.

    :ivar type: Type of provider for OAuth. "AAD"
    :vartype type: Union[str, "OpenAuthenticationProviderType"]
    :ivar claims: The access policy claims.
    :vartype claims: list["OpenAuthenticationPolicyClaim"]
    """

    type: Union[str, "OpenAuthenticationProviderType"]
    """Type of provider for OAuth. \"AAD\""""
    claims: list["OpenAuthenticationPolicyClaim"]
    """The access policy claims."""


class OpenAuthenticationPolicyClaim(TypedDict, total=False):
    """Open authentication policy claim.

    :ivar name: The name of the claim.
    :vartype name: str
    :ivar value: The value of the claim.
    :vartype value: str
    """

    name: str
    """The name of the claim."""
    value: str
    """The value of the claim."""


class OpenIdConnectClientCredential(TypedDict, total=False):
    """The authentication client credentials of the custom Open ID Connect provider.

    :ivar method: The method that should be used to authenticate the user. Default value is
     "ClientSecretPost".
    :vartype method: Literal["ClientSecretPost"]
    :ivar client_secret_setting_name: The app setting that contains the client secret for the
     custom Open ID Connect provider.
    :vartype client_secret_setting_name: str
    """

    method: Literal["ClientSecretPost"]
    """The method that should be used to authenticate the user. Default value is \"ClientSecretPost\"."""
    clientSecretSettingName: str
    """The app setting that contains the client secret for the custom Open ID Connect provider."""


class OpenIdConnectConfig(TypedDict, total=False):
    """The configuration settings of the endpoints used for the custom Open ID Connect provider.

    :ivar authorization_endpoint: The endpoint to be used to make an authorization request.
    :vartype authorization_endpoint: str
    :ivar token_endpoint: The endpoint to be used to request a token.
    :vartype token_endpoint: str
    :ivar issuer: The endpoint that issues the token.
    :vartype issuer: str
    :ivar certification_uri: The endpoint that provides the keys necessary to validate the token.
    :vartype certification_uri: str
    :ivar well_known_open_id_configuration: The endpoint that contains all the configuration
     endpoints for the provider.
    :vartype well_known_open_id_configuration: str
    """

    authorizationEndpoint: str
    """The endpoint to be used to make an authorization request."""
    tokenEndpoint: str
    """The endpoint to be used to request a token."""
    issuer: str
    """The endpoint that issues the token."""
    certificationUri: str
    """The endpoint that provides the keys necessary to validate the token."""
    wellKnownOpenIdConfiguration: str
    """The endpoint that contains all the configuration endpoints for the provider."""


class OpenIdConnectLogin(TypedDict, total=False):
    """The configuration settings of the login flow of the custom Open ID Connect provider.

    :ivar name_claim_type: The name of the claim that contains the users name.
    :vartype name_claim_type: str
    :ivar scopes: A list of the scopes that should be requested while authenticating.
    :vartype scopes: list[str]
    """

    nameClaimType: str
    """The name of the claim that contains the users name."""
    scopes: list[str]
    """A list of the scopes that should be requested while authenticating."""


class OpenIdConnectRegistration(TypedDict, total=False):
    """The configuration settings of the app registration for the custom Open ID Connect provider.

    :ivar client_id: The client id of the custom Open ID Connect provider.
    :vartype client_id: str
    :ivar client_credential: The authentication credentials of the custom Open ID Connect provider.
    :vartype client_credential: "OpenIdConnectClientCredential"
    :ivar open_id_connect_configuration: The configuration settings of the endpoints used for the
     custom Open ID Connect provider.
    :vartype open_id_connect_configuration: "OpenIdConnectConfig"
    """

    clientId: str
    """The client id of the custom Open ID Connect provider."""
    clientCredential: "OpenIdConnectClientCredential"
    """The authentication credentials of the custom Open ID Connect provider."""
    openIdConnectConfiguration: "OpenIdConnectConfig"
    """The configuration settings of the endpoints used for the custom Open ID Connect provider."""


class OutboundVnetRouting(TypedDict, total=False):
    """Outbound traffic options over virtual network.

    :ivar all_traffic: Enables all other routing options defined in OutboundVnetRouting if this
     setting is set to true.
    :vartype all_traffic: bool
    :ivar application_traffic: This causes all outbound traffic to have Virtual Network Security
     Groups and User Defined Routes applied. Previously called VnetRouteAllEnabled.
    :vartype application_traffic: bool
    :ivar content_share_traffic: Enables accessing content over virtual network. Previously called
     VnetContentShareEnabled.
    :vartype content_share_traffic: bool
    :ivar image_pull_traffic: Enables pulling image over Virtual Network. Previously called
     VnetImagePullEnabled.
    :vartype image_pull_traffic: bool
    :ivar backup_restore_traffic: Enables Backup and Restore operations over virtual network.
     Previously called VnetBackupRestoreEnabled.
    :vartype backup_restore_traffic: bool
    """

    allTraffic: bool
    """Enables all other routing options defined in OutboundVnetRouting if this setting is set to
     true."""
    applicationTraffic: bool
    """This causes all outbound traffic to have Virtual Network Security Groups and User Defined
     Routes applied. Previously called VnetRouteAllEnabled."""
    contentShareTraffic: bool
    """Enables accessing content over virtual network. Previously called VnetContentShareEnabled."""
    imagePullTraffic: bool
    """Enables pulling image over Virtual Network. Previously called VnetImagePullEnabled."""
    backupRestoreTraffic: bool
    """Enables Backup and Restore operations over virtual network. Previously called
     VnetBackupRestoreEnabled."""


class PremierAddOn(TrackedResource):
    """Premier add-on.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: The geo-location where the resource lives. Required.
    :vartype location: str
    :ivar properties: PremierAddOn resource specific properties.
    :vartype properties: "PremierAddOnProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "PremierAddOnProperties"
    """PremierAddOn resource specific properties."""
    kind: str
    """Kind of resource."""


class PremierAddOnPatchResource(ProxyOnlyResource):
    """ARM resource for a PremierAddOn.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: PremierAddOnPatchResource resource specific properties.
    :vartype properties: "PremierAddOnPatchResourceProperties"
    """

    properties: "PremierAddOnPatchResourceProperties"
    """PremierAddOnPatchResource resource specific properties."""


class PremierAddOnPatchResourceProperties(TypedDict, total=False):
    """PremierAddOnPatchResource resource specific properties.

    :ivar sku: Premier add on SKU.
    :vartype sku: str
    :ivar product: Premier add on Product.
    :vartype product: str
    :ivar vendor: Premier add on Vendor.
    :vartype vendor: str
    :ivar marketplace_publisher: Premier add on Marketplace publisher.
    :vartype marketplace_publisher: str
    :ivar marketplace_offer: Premier add on Marketplace offer.
    :vartype marketplace_offer: str
    """

    sku: str
    """Premier add on SKU."""
    product: str
    """Premier add on Product."""
    vendor: str
    """Premier add on Vendor."""
    marketplacePublisher: str
    """Premier add on Marketplace publisher."""
    marketplaceOffer: str
    """Premier add on Marketplace offer."""


class PremierAddOnProperties(TypedDict, total=False):
    """PremierAddOn resource specific properties.

    :ivar sku: Premier add on SKU.
    :vartype sku: str
    :ivar product: Premier add on Product.
    :vartype product: str
    :ivar vendor: Premier add on Vendor.
    :vartype vendor: str
    :ivar marketplace_publisher: Premier add on Marketplace publisher.
    :vartype marketplace_publisher: str
    :ivar marketplace_offer: Premier add on Marketplace offer.
    :vartype marketplace_offer: str
    """

    sku: str
    """Premier add on SKU."""
    product: str
    """Premier add on Product."""
    vendor: str
    """Premier add on Vendor."""
    marketplacePublisher: str
    """Premier add on Marketplace publisher."""
    marketplaceOffer: str
    """Premier add on Marketplace offer."""


class PrivateAccess(ProxyResource):
    """Description of the parameters of Private Access for a Web Site.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: PrivateAccess resource specific properties.
    :vartype properties: "PrivateAccessProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "PrivateAccessProperties"
    """PrivateAccess resource specific properties."""
    kind: str
    """Kind of resource."""


class PrivateAccessProperties(TypedDict, total=False):
    """PrivateAccess resource specific properties.

    :ivar enabled: Whether private access is enabled or not.
    :vartype enabled: bool
    :ivar virtual_networks: The Virtual Networks (and subnets) allowed to access the site
     privately.
    :vartype virtual_networks: list["PrivateAccessVirtualNetwork"]
    """

    enabled: bool
    """Whether private access is enabled or not."""
    virtualNetworks: list["PrivateAccessVirtualNetwork"]
    """The Virtual Networks (and subnets) allowed to access the site privately."""


class PrivateAccessSubnet(TypedDict, total=False):
    """Description of a Virtual Network subnet that is useable for private site access.

    :ivar name: The name of the subnet.
    :vartype name: str
    :ivar key: The key (ID) of the subnet.
    :vartype key: int
    """

    name: str
    """The name of the subnet."""
    key: int
    """The key (ID) of the subnet."""


class PrivateAccessVirtualNetwork(TypedDict, total=False):
    """Description of a Virtual Network that is useable for private site access.

    :ivar name: The name of the Virtual Network.
    :vartype name: str
    :ivar key: The key (ID) of the Virtual Network.
    :vartype key: int
    :ivar resource_id: The ARM uri of the Virtual Network.
    :vartype resource_id: str
    :ivar subnets: A List of subnets that access is allowed to on this Virtual Network. An empty
     array (but not null) is interpreted to mean that all subnets are allowed within this Virtual
     Network.
    :vartype subnets: list["PrivateAccessSubnet"]
    """

    name: str
    """The name of the Virtual Network."""
    key: int
    """The key (ID) of the Virtual Network."""
    resourceId: str
    """The ARM uri of the Virtual Network."""
    subnets: list["PrivateAccessSubnet"]
    """A List of subnets that access is allowed to on this Virtual Network. An empty array (but not
     null) is interpreted to mean that all subnets are allowed within this Virtual Network."""


class PrivateLinkConnectionState(TypedDict, total=False):
    """The state of a private link connection.

    :ivar status: Status of a private link connection.
    :vartype status: str
    :ivar description: Description of a private link connection.
    :vartype description: str
    :ivar actions_required: ActionsRequired for a private link connection.
    :vartype actions_required: str
    """

    status: str
    """Status of a private link connection."""
    description: str
    """Description of a private link connection."""
    actionsRequired: str
    """ActionsRequired for a private link connection."""


class PublicCertificate(ProxyResource):
    """Public certificate object.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: PublicCertificate resource specific properties.
    :vartype properties: "PublicCertificateProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "PublicCertificateProperties"
    """PublicCertificate resource specific properties."""
    kind: str
    """Kind of resource."""


class PublicCertificateProperties(TypedDict, total=False):
    """PublicCertificate resource specific properties.

    :ivar blob: Public Certificate byte array.
    :vartype blob: str
    :ivar public_certificate_location: Public Certificate Location. Known values are:
     "CurrentUserMy", "LocalMachineMy", and "Unknown".
    :vartype public_certificate_location: Union[str, "PublicCertificateLocation"]
    :ivar thumbprint: Certificate Thumbprint.
    :vartype thumbprint: str
    """

    blob: str
    """Public Certificate byte array."""
    publicCertificateLocation: Union[str, "PublicCertificateLocation"]
    """Public Certificate Location. Known values are: \"CurrentUserMy\", \"LocalMachineMy\", and
     \"Unknown\"."""
    thumbprint: str
    """Certificate Thumbprint."""


class PushSettings(ProxyOnlyResource):
    """Push settings for the App.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: PushSettings resource specific properties.
    :vartype properties: "PushSettingsProperties"
    """

    properties: "PushSettingsProperties"
    """PushSettings resource specific properties."""


class PushSettingsProperties(TypedDict, total=False):
    """PushSettings resource specific properties.

    :ivar is_push_enabled: Gets or sets a flag indicating whether the Push endpoint is enabled.
     Required.
    :vartype is_push_enabled: bool
    :ivar tag_whitelist_json: Gets or sets a JSON string containing a list of tags that are
     whitelisted for use by the push registration endpoint.
    :vartype tag_whitelist_json: str
    :ivar tags_requiring_auth: Gets or sets a JSON string containing a list of tags that require
     user authentication to be used in the push registration endpoint. Tags can consist of
     alphanumeric characters and the following: '_', '@', '#', '.', ':', '-'. Validation should be
     performed at the PushRequestHandler.
    :vartype tags_requiring_auth: str
    :ivar dynamic_tags_json: Gets or sets a JSON string containing a list of dynamic tags that will
     be evaluated from user claims in the push registration endpoint.
    :vartype dynamic_tags_json: str
    """

    isPushEnabled: Required[bool]
    """Gets or sets a flag indicating whether the Push endpoint is enabled. Required."""
    tagWhitelistJson: str
    """Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push
     registration endpoint."""
    tagsRequiringAuth: str
    """Gets or sets a JSON string containing a list of tags that require user authentication to be
     used in the push registration endpoint. Tags can consist of alphanumeric characters and the
     following: '_', '@', '#', '.', ':', '-'. Validation should be performed at the
     PushRequestHandler."""
    dynamicTagsJson: str
    """Gets or sets a JSON string containing a list of dynamic tags that will be evaluated from user
     claims in the push registration endpoint."""


class RampUpRule(TypedDict, total=False):
    """Routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or
    to gradually change routing % based on performance.

    :ivar action_host_name: Hostname of a slot to which the traffic will be redirected if decided
     to. E.g. myapp-stage.azurewebsites.net.
    :vartype action_host_name: str
    :ivar reroute_percentage: Percentage of the traffic which will be redirected to
     <code>ActionHostName</code>.
    :vartype reroute_percentage: float
    :ivar change_step: In auto ramp up scenario this is the step to add/remove from
     <code>ReroutePercentage</code> until it reaches \\n<code>MinReroutePercentage</code> or
     <code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specified in
     <code>ChangeIntervalInMinutes</code>.\\nCustom decision algorithm can be provided in
     TiPCallback site extension which URL can be specified in
     <code>ChangeDecisionCallbackUrl</code>.
    :vartype change_step: float
    :ivar change_interval_in_minutes: Specifies interval in minutes to reevaluate
     ReroutePercentage.
    :vartype change_interval_in_minutes: int
    :ivar min_reroute_percentage: Specifies lower boundary above which ReroutePercentage will stay.
    :vartype min_reroute_percentage: float
    :ivar max_reroute_percentage: Specifies upper boundary below which ReroutePercentage will stay.
    :vartype max_reroute_percentage: float
    :ivar change_decision_callback_url: Custom decision algorithm can be provided in TiPCallback
     site extension which URL can be specified.
    :vartype change_decision_callback_url: str
    :ivar name: Name of the routing rule. The recommended name would be to point to the slot which
     will receive the traffic in the experiment.
    :vartype name: str
    """

    actionHostName: str
    """Hostname of a slot to which the traffic will be redirected if decided to. E.g.
     myapp-stage.azurewebsites.net."""
    reroutePercentage: float
    """Percentage of the traffic which will be redirected to <code>ActionHostName</code>."""
    changeStep: float
    """In auto ramp up scenario this is the step to add/remove from <code>ReroutePercentage</code>
     until it reaches \n<code>MinReroutePercentage</code> or <code>MaxReroutePercentage</code>. Site
     metrics are checked every N minutes specified in <code>ChangeIntervalInMinutes</code>.\nCustom
     decision algorithm can be provided in TiPCallback site extension which URL can be specified in
     <code>ChangeDecisionCallbackUrl</code>."""
    changeIntervalInMinutes: int
    """Specifies interval in minutes to reevaluate ReroutePercentage."""
    minReroutePercentage: float
    """Specifies lower boundary above which ReroutePercentage will stay."""
    maxReroutePercentage: float
    """Specifies upper boundary below which ReroutePercentage will stay."""
    changeDecisionCallbackUrl: str
    """Custom decision algorithm can be provided in TiPCallback site extension which URL can be
     specified."""
    name: str
    """Name of the routing rule. The recommended name would be to point to the slot which will receive
     the traffic in the experiment."""


class RegenerateActionParameter(TypedDict, total=False):
    """The access key regenerate action content.

    :ivar key_type: The key type. Known values are: "NotSpecified", "Primary", and "Secondary".
    :vartype key_type: Union[str, "KeyType"]
    """

    keyType: Union[str, "KeyType"]
    """The key type. Known values are: \"NotSpecified\", \"Primary\", and \"Secondary\"."""


class RegistryAdapter(TypedDict, total=False):
    """Server farm registry adapter configuration.

    :ivar registry_key: Registry key for the adapter.
    :vartype registry_key: str
    :ivar type: Type of the registry adapter. Known values are: "Binary", "String",
     "Expand_String", "Multi_String", "DWord", and "QWord".
    :vartype type: Union[str, "RegistryAdapterType"]
    :ivar key_vault_secret_reference: Key vault reference to the value that will be placed in the
     registry location.
    :vartype key_vault_secret_reference: "KeyVaultReferenceWithStatus"
    """

    registryKey: str
    """Registry key for the adapter."""
    type: Union[str, "RegistryAdapterType"]
    """Type of the registry adapter. Known values are: \"Binary\", \"String\", \"Expand_String\",
     \"Multi_String\", \"DWord\", and \"QWord\"."""
    keyVaultSecretReference: "KeyVaultReferenceWithStatus"
    """Key vault reference to the value that will be placed in the registry location."""


class RelayServiceConnectionEntity(ProxyResource):
    """Hybrid Connection for an App Service app.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: RelayServiceConnectionEntity resource specific properties.
    :vartype properties: "RelayServiceConnectionEntityProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "RelayServiceConnectionEntityProperties"
    """RelayServiceConnectionEntity resource specific properties."""
    kind: str
    """Kind of resource."""


class RelayServiceConnectionEntityProperties(TypedDict, total=False):
    """RelayServiceConnectionEntity resource specific properties.

    :ivar entity_name:
    :vartype entity_name: str
    :ivar entity_connection_string:
    :vartype entity_connection_string: str
    :ivar resource_type:
    :vartype resource_type: str
    :ivar resource_connection_string:
    :vartype resource_connection_string: str
    :ivar hostname:
    :vartype hostname: str
    :ivar port:
    :vartype port: int
    :ivar biztalk_uri:
    :vartype biztalk_uri: str
    """

    entityName: str
    entityConnectionString: str
    resourceType: str
    resourceConnectionString: str
    hostname: str
    port: int
    biztalkUri: str


class RemotePrivateEndpointConnection(ProxyOnlyResource):
    """A remote private endpoint connection.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: RemotePrivateEndpointConnection resource specific properties.
    :vartype properties: "RemotePrivateEndpointConnectionProperties"
    """

    properties: "RemotePrivateEndpointConnectionProperties"
    """RemotePrivateEndpointConnection resource specific properties."""


class RemotePrivateEndpointConnectionARMResource(ProxyResource):  # pylint: disable=name-too-long
    """Remote Private Endpoint Connection ARM resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: RemotePrivateEndpointConnectionARMResource resource specific properties.
    :vartype properties: "RemotePrivateEndpointConnectionARMResourceProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "RemotePrivateEndpointConnectionARMResourceProperties"
    """RemotePrivateEndpointConnectionARMResource resource specific properties."""
    kind: str
    """Kind of resource."""


class RemotePrivateEndpointConnectionARMResourceProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """RemotePrivateEndpointConnectionARMResource resource specific properties.

    :ivar provisioning_state:
    :vartype provisioning_state: str
    :ivar private_endpoint: PrivateEndpoint of a remote private endpoint connection.
    :vartype private_endpoint: "ArmIdWrapper"
    :ivar private_link_service_connection_state: The state of a private link connection.
    :vartype private_link_service_connection_state: "PrivateLinkConnectionState"
    :ivar ip_addresses: Private IPAddresses mapped to the remote private endpoint.
    :vartype ip_addresses: list[str]
    """

    provisioningState: str
    privateEndpoint: "ArmIdWrapper"
    """PrivateEndpoint of a remote private endpoint connection."""
    privateLinkServiceConnectionState: "PrivateLinkConnectionState"
    """The state of a private link connection."""
    ipAddresses: list[str]
    """Private IPAddresses mapped to the remote private endpoint."""


class RemotePrivateEndpointConnectionProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """RemotePrivateEndpointConnection resource specific properties.

    :ivar provisioning_state:
    :vartype provisioning_state: str
    :ivar private_endpoint: PrivateEndpoint of a remote private endpoint connection.
    :vartype private_endpoint: "ArmIdWrapper"
    :ivar private_link_service_connection_state: The state of a private link connection.
    :vartype private_link_service_connection_state: "PrivateLinkConnectionState"
    :ivar ip_addresses: Private IPAddresses mapped to the remote private endpoint.
    :vartype ip_addresses: list[str]
    """

    provisioningState: str
    privateEndpoint: "ArmIdWrapper"
    """PrivateEndpoint of a remote private endpoint connection."""
    privateLinkServiceConnectionState: "PrivateLinkConnectionState"
    """The state of a private link connection."""
    ipAddresses: list[str]
    """Private IPAddresses mapped to the remote private endpoint."""


class RequestsBasedTrigger(TypedDict, total=False):
    """Trigger based on total requests.

    :ivar count: Request Count.
    :vartype count: int
    :ivar time_interval: Time interval.
    :vartype time_interval: str
    """

    count: int
    """Request Count."""
    timeInterval: str
    """Time interval."""


class ResourceConfig(TypedDict, total=False):
    """Function app resource requirements.

    :ivar cpu: Required CPU in cores, e.g. 0.5.
    :vartype cpu: float
    :ivar memory: Required memory, e.g. "1Gi".
    :vartype memory: str
    """

    cpu: float
    """Required CPU in cores, e.g. 0.5."""
    memory: str
    """Required memory, e.g. \"1Gi\"."""


class ResourceNameAvailabilityRequest(TypedDict, total=False):
    """Resource name availability request content.

    :ivar name: Resource name to verify. Required.
    :vartype name: str
    :ivar type: Resource type used for verification. Required. Known values are: "Site", "Slot",
     "HostingEnvironment", "PublishingUser", "Microsoft.Web/sites", "Microsoft.Web/sites/slots",
     "Microsoft.Web/hostingEnvironments", and "Microsoft.Web/publishingUsers".
    :vartype type: Union[str, "CheckNameResourceTypes"]
    :ivar is_fqdn: Is fully qualified domain name.
    :vartype is_fqdn: bool
    :ivar environment_id: Azure Resource Manager ID of the customer's selected Container Apps
     Environment on which to host the Function app. This must be of the form
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/managedEnvironments/{managedEnvironmentName}.
    :vartype environment_id: str
    """

    name: Required[str]
    """Resource name to verify. Required."""
    type: Required[Union[str, "CheckNameResourceTypes"]]
    """Resource type used for verification. Required. Known values are: \"Site\", \"Slot\",
     \"HostingEnvironment\", \"PublishingUser\", \"Microsoft.Web/sites\",
     \"Microsoft.Web/sites/slots\", \"Microsoft.Web/hostingEnvironments\", and
     \"Microsoft.Web/publishingUsers\"."""
    isFqdn: bool
    """Is fully qualified domain name."""
    environmentId: str
    """Azure Resource Manager ID of the customer's selected Container Apps Environment on which to
     host the Function app. This must be of the form
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/managedEnvironments/{managedEnvironmentName}."""


class ResourceReference(TypedDict, total=False):
    """The resource reference.

    :ivar id: The resource id.
    :vartype id: str
    :ivar name: Gets the resource name.
    :vartype name: str
    :ivar type: Gets the resource type.
    :vartype type: str
    """

    id: str
    """The resource id."""
    name: str
    """Gets the resource name."""
    type: str
    """Gets the resource type."""


class ResponseMessageEnvelopeRemotePrivateEndpointConnection(TypedDict, total=False):  # pylint: disable=name-too-long
    """Message envelope that contains the common Azure resource manager properties and the resource
    provider specific content.

    :ivar id: Resource Id. Typically ID is populated only for responses to GET requests. Caller is
     responsible for passing in this value for GET requests only. For example:
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupId}/providers/Microsoft.Web/sites/{sitename}.
    :vartype id: str
    :ivar name: Name of resource.
    :vartype name: str
    :ivar type: Type of resource e.g "Microsoft.Web/sites".
    :vartype type: str
    :ivar location: Geographical region resource belongs to e.g. SouthCentralUS, SouthEastAsia.
    :vartype location: str
    :ivar tags: Tags associated with resource.
    :vartype tags: dict[str, str]
    :ivar plan: Azure resource manager plan.
    :vartype plan: "ArmPlan"
    :ivar properties: Resource specific properties.
    :vartype properties: "RemotePrivateEndpointConnection"
    :ivar sku: SKU description of the resource.
    :vartype sku: "SkuDescription"
    :ivar status: Azure-AsyncOperation Status info.
    :vartype status: str
    :ivar error: Azure-AsyncOperation Error info.
    :vartype error: "ErrorEntity"
    :ivar identity: MSI resource.
    :vartype identity: "ManagedServiceIdentity"
    :ivar zones: Logical Availability Zones the service is hosted in.
    :vartype zones: list[str]
    """

    id: str
    """Resource Id. Typically ID is populated only for responses to GET requests. Caller is
     responsible for passing in this value for GET requests only. For example:
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupId}/providers/Microsoft.Web/sites/{sitename}."""
    name: str
    """Name of resource."""
    type: str
    """Type of resource e.g \"Microsoft.Web/sites\"."""
    location: str
    """Geographical region resource belongs to e.g. SouthCentralUS, SouthEastAsia."""
    tags: dict[str, str]
    """Tags associated with resource."""
    plan: "ArmPlan"
    """Azure resource manager plan."""
    properties: "RemotePrivateEndpointConnection"
    """Resource specific properties."""
    sku: "SkuDescription"
    """SKU description of the resource."""
    status: str
    """Azure-AsyncOperation Status info."""
    error: "ErrorEntity"
    """Azure-AsyncOperation Error info."""
    identity: "ManagedServiceIdentity"
    """MSI resource."""
    zones: list[str]
    """Logical Availability Zones the service is hosted in."""


class RestoreRequest(ProxyOnlyResource):
    """Description of a restore request.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: RestoreRequest resource specific properties.
    :vartype properties: "RestoreRequestProperties"
    """

    properties: "RestoreRequestProperties"
    """RestoreRequest resource specific properties."""


class RestoreRequestProperties(TypedDict, total=False):
    """RestoreRequest resource specific properties.

    :ivar storage_account_url: SAS URL to the container. Required.
    :vartype storage_account_url: str
    :ivar blob_name: Name of a blob which contains the backup.
    :vartype blob_name: str
    :ivar overwrite: <code>true</code> if the restore operation can overwrite target app;
     otherwise, <code>false</code>. <code>true</code> is needed if trying to restore over an
     existing app. Required.
    :vartype overwrite: bool
    :ivar site_name: Name of an app.
    :vartype site_name: str
    :ivar databases: Collection of databases which should be restored. This list has to match the
     list of databases included in the backup.
    :vartype databases: list["DatabaseBackupSetting"]
    :ivar ignore_conflicting_host_names: Changes a logic when restoring an app with custom domains.
     <code>true</code> to remove custom domains automatically. If <code>false</code>, custom domains
     are added to \\nthe app's object when it is being restored, but that might fail due to
     conflicts during the operation.
    :vartype ignore_conflicting_host_names: bool
    :ivar ignore_databases: Ignore the databases and only restore the site content.
    :vartype ignore_databases: bool
    :ivar app_service_plan: Specify app service plan that will own restored site.
    :vartype app_service_plan: str
    :ivar operation_type: Operation type. Known values are: "Default", "Clone", "Relocation",
     "Snapshot", and "CloudFS".
    :vartype operation_type: Union[str, "BackupRestoreOperationType"]
    :ivar adjust_connection_strings: <code>true</code> if SiteConfig.ConnectionStrings should be
     set in new app; otherwise, <code>false</code>.
    :vartype adjust_connection_strings: bool
    :ivar hosting_environment: App Service Environment name, if needed (only when restoring an app
     to an App Service Environment).
    :vartype hosting_environment: str
    """

    storageAccountUrl: Required[str]
    """SAS URL to the container. Required."""
    blobName: str
    """Name of a blob which contains the backup."""
    overwrite: Required[bool]
    """<code>true</code> if the restore operation can overwrite target app; otherwise,
     <code>false</code>. <code>true</code> is needed if trying to restore over an existing app.
     Required."""
    siteName: str
    """Name of an app."""
    databases: list["DatabaseBackupSetting"]
    """Collection of databases which should be restored. This list has to match the list of databases
     included in the backup."""
    ignoreConflictingHostNames: bool
    """Changes a logic when restoring an app with custom domains. <code>true</code> to remove custom
     domains automatically. If <code>false</code>, custom domains are added to \nthe app's object
     when it is being restored, but that might fail due to conflicts during the operation."""
    ignoreDatabases: bool
    """Ignore the databases and only restore the site content."""
    appServicePlan: str
    """Specify app service plan that will own restored site."""
    operationType: Union[str, "BackupRestoreOperationType"]
    """Operation type. Known values are: \"Default\", \"Clone\", \"Relocation\", \"Snapshot\", and
     \"CloudFS\"."""
    adjustConnectionStrings: bool
    """<code>true</code> if SiteConfig.ConnectionStrings should be set in new app; otherwise,
     <code>false</code>."""
    hostingEnvironment: str
    """App Service Environment name, if needed (only when restoring an app to an App Service
     Environment)."""


class ServerFarmNetworkSettings(TypedDict, total=False):
    """Network settings for an app service plan.

    :ivar virtual_network_subnet_id: Azure Resource Manager ID of the Virtual network and subnet to
     be joined by Regional VNET Integration. This must be of the form
     /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
    :vartype virtual_network_subnet_id: str
    """

    virtualNetworkSubnetId: str
    """Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET
     Integration. This must be of the form
     /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}."""


class Site(TrackedResource):
    """A web app, a mobile app backend, or an API app.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: The geo-location where the resource lives. Required.
    :vartype location: str
    :ivar properties: Site resource specific properties.
    :vartype properties: "SiteProperties"
    :ivar identity: Managed service identity.
    :vartype identity: "ManagedServiceIdentity"
    :ivar extended_location: Extended Location.
    :vartype extended_location: "ExtendedLocation"
    :ivar kind: Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind.
    :vartype kind: str
    """

    properties: "SiteProperties"
    """Site resource specific properties."""
    identity: "ManagedServiceIdentity"
    """Managed service identity."""
    extendedLocation: "ExtendedLocation"
    """Extended Location."""
    kind: str
    """Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind."""


class SiteAuthSettings(ProxyOnlyResource):
    """Configuration settings for the Azure App Service Authentication / Authorization feature.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: SiteAuthSettings resource specific properties.
    :vartype properties: "SiteAuthSettingsProperties"
    """

    properties: "SiteAuthSettingsProperties"
    """SiteAuthSettings resource specific properties."""


class SiteAuthSettingsProperties(TypedDict, total=False):
    """SiteAuthSettings resource specific properties.

    :ivar enabled: <code>true</code> if the Authentication / Authorization feature is enabled for
     the current app; otherwise, <code>false</code>.
    :vartype enabled: bool
    :ivar runtime_version: The RuntimeVersion of the Authentication / Authorization feature in use
     for the current app. The setting in this value can control the behavior of certain features in
     the Authentication / Authorization module.
    :vartype runtime_version: str
    :ivar unauthenticated_client_action: The action to take when an unauthenticated client attempts
     to access the app. Known values are: "RedirectToLoginPage" and "AllowAnonymous".
    :vartype unauthenticated_client_action: Union[str, "UnauthenticatedClientAction"]
    :ivar token_store_enabled: <code>true</code> to durably store platform-specific security tokens
     that are obtained during login flows; otherwise, <code>false</code>. The default is
     <code>false</code>.
    :vartype token_store_enabled: bool
    :ivar allowed_external_redirect_urls: External URLs that can be redirected to as part of
     logging in or logging out of the app. Note that the query string part of the URL is ignored.
     This is an advanced setting typically only needed by Windows Store application backends. Note
     that URLs within the current domain are always implicitly allowed.
    :vartype allowed_external_redirect_urls: list[str]
    :ivar default_provider: The default authentication provider to use when multiple providers are
     configured. This setting is only needed if multiple providers are configured and the
     unauthenticated client action is set to "RedirectToLoginPage". Known values are:
     "AzureActiveDirectory", "Facebook", "Google", "MicrosoftAccount", "Twitter", and "Github".
    :vartype default_provider: Union[str, "BuiltInAuthenticationProvider"]
    :ivar token_refresh_extension_hours: The number of hours after session token expiration that a
     session token can be used to call the token refresh API. The default is 72 hours.
    :vartype token_refresh_extension_hours: float
    :ivar client_id: The Client ID of this relying party application, known as the client_id. This
     setting is required for enabling OpenID Connection authentication with Azure Active Directory
     or other 3rd party OpenID Connect providers. More information on OpenID Connect:
     `http://openid.net/specs/openid-connect-core-1_0.html
     <http://openid.net/specs/openid-connect-core-1_0.html>`_.
    :vartype client_id: str
    :ivar client_secret: The Client Secret of this relying party application (in Azure Active
     Directory, this is also referred to as the Key). This setting is optional. If no client secret
     is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
     Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users. More
     information on OpenID Connect: `http://openid.net/specs/openid-connect-core-1_0.html
     <http://openid.net/specs/openid-connect-core-1_0.html>`_.
    :vartype client_secret: str
    :ivar client_secret_setting_name: The app setting name that contains the client secret of the
     relying party application.
    :vartype client_secret_setting_name: str
    :ivar client_secret_certificate_thumbprint: An alternative to the client secret, that is the
     thumbprint of a certificate used for signing purposes. This property acts as a replacement for
     the Client Secret. It is also optional.
    :vartype client_secret_certificate_thumbprint: str
    :ivar issuer: The OpenID Connect Issuer URI that represents the entity which issues access
     tokens for this application. When using Azure Active Directory, this value is the URI of the
     directory tenant, e.g. ``https://sts.windows.net/{tenant-guid}/``. This URI is a case-sensitive
     identifier for the token issuer. More information on OpenID Connect Discovery:
     `http://openid.net/specs/openid-connect-discovery-1_0.html
     <http://openid.net/specs/openid-connect-discovery-1_0.html>`_.
    :vartype issuer: str
    :ivar validate_issuer: Gets a value indicating whether the issuer should be a valid HTTPS url
     and be validated as such.
    :vartype validate_issuer: bool
    :ivar allowed_audiences: Allowed audience values to consider when validating JSON Web Tokens
     issued by Azure Active Directory. Note that the <code>ClientID</code> value is always
     considered an allowed audience, regardless of this setting.
    :vartype allowed_audiences: list[str]
    :ivar additional_login_params: Login parameters to send to the OpenID Connect authorization
     endpoint when a user logs in. Each parameter must be in the form "key=value".
    :vartype additional_login_params: list[str]
    :ivar aad_claims_authorization: Gets a JSON string containing the Azure AD Acl settings.
    :vartype aad_claims_authorization: str
    :ivar google_client_id: The OpenID Connect Client ID for the Google web application. This
     setting is required for enabling Google Sign-In. Google Sign-In documentation:
     `https://developers.google.com/identity/sign-in/web/
     <https://developers.google.com/identity/sign-in/web/>`_.
    :vartype google_client_id: str
    :ivar google_client_secret: The client secret associated with the Google web application. This
     setting is required for enabling Google Sign-In. Google Sign-In documentation:
     `https://developers.google.com/identity/sign-in/web/
     <https://developers.google.com/identity/sign-in/web/>`_.
    :vartype google_client_secret: str
    :ivar google_client_secret_setting_name: The app setting name that contains the client secret
     associated with the Google web application.
    :vartype google_client_secret_setting_name: str
    :ivar google_o_auth_scopes: The OAuth 2.0 scopes that will be requested as part of Google
     Sign-In authentication. This setting is optional. If not specified, "openid", "profile", and
     "email" are used as default scopes. Google Sign-In documentation:
     `https://developers.google.com/identity/sign-in/web/
     <https://developers.google.com/identity/sign-in/web/>`_.
    :vartype google_o_auth_scopes: list[str]
    :ivar facebook_app_id: The App ID of the Facebook app used for login. This setting is required
     for enabling Facebook Login. Facebook Login documentation:
     `https://developers.facebook.com/docs/facebook-login
     <https://developers.facebook.com/docs/facebook-login>`_.
    :vartype facebook_app_id: str
    :ivar facebook_app_secret: The App Secret of the Facebook app used for Facebook Login. This
     setting is required for enabling Facebook Login. Facebook Login documentation:
     `https://developers.facebook.com/docs/facebook-login
     <https://developers.facebook.com/docs/facebook-login>`_.
    :vartype facebook_app_secret: str
    :ivar facebook_app_secret_setting_name: The app setting name that contains the app secret used
     for Facebook Login.
    :vartype facebook_app_secret_setting_name: str
    :ivar facebook_o_auth_scopes: The OAuth 2.0 scopes that will be requested as part of Facebook
     Login authentication. This setting is optional. Facebook Login documentation:
     `https://developers.facebook.com/docs/facebook-login
     <https://developers.facebook.com/docs/facebook-login>`_.
    :vartype facebook_o_auth_scopes: list[str]
    :ivar git_hub_client_id: The Client Id of the GitHub app used for login. This setting is
     required for enabling Github login.
    :vartype git_hub_client_id: str
    :ivar git_hub_client_secret: The Client Secret of the GitHub app used for Github Login. This
     setting is required for enabling Github login.
    :vartype git_hub_client_secret: str
    :ivar git_hub_client_secret_setting_name: The app setting name that contains the client secret
     of the Github app used for GitHub Login.
    :vartype git_hub_client_secret_setting_name: str
    :ivar git_hub_o_auth_scopes: The OAuth 2.0 scopes that will be requested as part of GitHub
     Login authentication. This setting is optional.
    :vartype git_hub_o_auth_scopes: list[str]
    :ivar twitter_consumer_key: The OAuth 1.0a consumer key of the Twitter application used for
     sign-in. This setting is required for enabling Twitter Sign-In. Twitter Sign-In documentation:
     `https://dev.twitter.com/web/sign-in <https://dev.twitter.com/web/sign-in>`_.
    :vartype twitter_consumer_key: str
    :ivar twitter_consumer_secret: The OAuth 1.0a consumer secret of the Twitter application used
     for sign-in. This setting is required for enabling Twitter Sign-In. Twitter Sign-In
     documentation: `https://dev.twitter.com/web/sign-in <https://dev.twitter.com/web/sign-in>`_.
    :vartype twitter_consumer_secret: str
    :ivar twitter_consumer_secret_setting_name: The app setting name that contains the OAuth 1.0a
     consumer secret of the Twitter application used for sign-in.
    :vartype twitter_consumer_secret_setting_name: str
    :ivar microsoft_account_client_id: The OAuth 2.0 client ID that was created for the app used
     for authentication. This setting is required for enabling Microsoft Account authentication.
     Microsoft Account OAuth documentation: `https://dev.onedrive.com/auth/msa_oauth.htm
     <https://dev.onedrive.com/auth/msa_oauth.htm>`_.
    :vartype microsoft_account_client_id: str
    :ivar microsoft_account_client_secret: The OAuth 2.0 client secret that was created for the app
     used for authentication. This setting is required for enabling Microsoft Account
     authentication. Microsoft Account OAuth documentation:
     `https://dev.onedrive.com/auth/msa_oauth.htm <https://dev.onedrive.com/auth/msa_oauth.htm>`_.
    :vartype microsoft_account_client_secret: str
    :ivar microsoft_account_client_secret_setting_name: The app setting name containing the OAuth
     2.0 client secret that was created for the app used for authentication.
    :vartype microsoft_account_client_secret_setting_name: str
    :ivar microsoft_account_o_auth_scopes: The OAuth 2.0 scopes that will be requested as part of
     Microsoft Account authentication. This setting is optional. If not specified, "wl.basic" is
     used as the default scope. Microsoft Account Scopes and permissions documentation:
     `https://msdn.microsoft.com/en-us/library/dn631845.aspx
     <https://msdn.microsoft.com/en-us/library/dn631845.aspx>`_.
    :vartype microsoft_account_o_auth_scopes: list[str]
    :ivar is_auth_from_file: "true" if the auth config settings should be read from a file, "false"
     otherwise.
    :vartype is_auth_from_file: str
    :ivar auth_file_path: The path of the config file containing auth settings. If the path is
     relative, base will the site's root directory.
    :vartype auth_file_path: str
    :ivar config_version: The ConfigVersion of the Authentication / Authorization feature in use
     for the current app. The setting in this value can control the behavior of the control plane
     for Authentication / Authorization.
    :vartype config_version: str
    """

    enabled: bool
    """<code>true</code> if the Authentication / Authorization feature is enabled for the current app;
     otherwise, <code>false</code>."""
    runtimeVersion: str
    """The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
     The setting in this value can control the behavior of certain features in the Authentication /
     Authorization module."""
    unauthenticatedClientAction: Union[str, "UnauthenticatedClientAction"]
    """The action to take when an unauthenticated client attempts to access the app. Known values are:
     \"RedirectToLoginPage\" and \"AllowAnonymous\"."""
    tokenStoreEnabled: bool
    """<code>true</code> to durably store platform-specific security tokens that are obtained during
     login flows; otherwise, <code>false</code>. The default is <code>false</code>."""
    allowedExternalRedirectUrls: list[str]
    """External URLs that can be redirected to as part of logging in or logging out of the app. Note
     that the query string part of the URL is ignored. This is an advanced setting typically only
     needed by Windows Store application backends. Note that URLs within the current domain are
     always implicitly allowed."""
    defaultProvider: Union[str, "BuiltInAuthenticationProvider"]
    """The default authentication provider to use when multiple providers are configured. This setting
     is only needed if multiple providers are configured and the unauthenticated client action is
     set to \"RedirectToLoginPage\". Known values are: \"AzureActiveDirectory\", \"Facebook\",
     \"Google\", \"MicrosoftAccount\", \"Twitter\", and \"Github\"."""
    tokenRefreshExtensionHours: float
    """The number of hours after session token expiration that a session token can be used to call the
     token refresh API. The default is 72 hours."""
    clientId: str
    """The Client ID of this relying party application, known as the client_id. This setting is
     required for enabling OpenID Connection authentication with Azure Active Directory or other 3rd
     party OpenID Connect providers. More information on OpenID Connect:
     `http://openid.net/specs/openid-connect-core-1_0.html
     <http://openid.net/specs/openid-connect-core-1_0.html>`_."""
    clientSecret: str
    """The Client Secret of this relying party application (in Azure Active Directory, this is also
     referred to as the Key). This setting is optional. If no client secret is configured, the
     OpenID Connect implicit auth flow is used to authenticate end users. Otherwise, the OpenID
     Connect Authorization Code Flow is used to authenticate end users. More information on OpenID
     Connect: `http://openid.net/specs/openid-connect-core-1_0.html
     <http://openid.net/specs/openid-connect-core-1_0.html>`_."""
    clientSecretSettingName: str
    """The app setting name that contains the client secret of the relying party application."""
    clientSecretCertificateThumbprint: str
    """An alternative to the client secret, that is the thumbprint of a certificate used for signing
     purposes. This property acts as a replacement for the Client Secret. It is also optional."""
    issuer: str
    """The OpenID Connect Issuer URI that represents the entity which issues access tokens for this
     application. When using Azure Active Directory, this value is the URI of the directory tenant,
     e.g. ``https://sts.windows.net/{tenant-guid}/``. This URI is a case-sensitive identifier for
     the token issuer. More information on OpenID Connect Discovery:
     `http://openid.net/specs/openid-connect-discovery-1_0.html
     <http://openid.net/specs/openid-connect-discovery-1_0.html>`_."""
    validateIssuer: bool
    """Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as
     such."""
    allowedAudiences: list[str]
    """Allowed audience values to consider when validating JSON Web Tokens issued by Azure Active
     Directory. Note that the <code>ClientID</code> value is always considered an allowed audience,
     regardless of this setting."""
    additionalLoginParams: list[str]
    """Login parameters to send to the OpenID Connect authorization endpoint when a user logs in. Each
     parameter must be in the form \"key=value\"."""
    aadClaimsAuthorization: str
    """Gets a JSON string containing the Azure AD Acl settings."""
    googleClientId: str
    """The OpenID Connect Client ID for the Google web application. This setting is required for
     enabling Google Sign-In. Google Sign-In documentation:
     `https://developers.google.com/identity/sign-in/web/
     <https://developers.google.com/identity/sign-in/web/>`_."""
    googleClientSecret: str
    """The client secret associated with the Google web application. This setting is required for
     enabling Google Sign-In. Google Sign-In documentation:
     `https://developers.google.com/identity/sign-in/web/
     <https://developers.google.com/identity/sign-in/web/>`_."""
    googleClientSecretSettingName: str
    """The app setting name that contains the client secret associated with the Google web
     application."""
    googleOAuthScopes: list[str]
    """The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication. This
     setting is optional. If not specified, \"openid\", \"profile\", and \"email\" are used as
     default scopes. Google Sign-In documentation:
     `https://developers.google.com/identity/sign-in/web/
     <https://developers.google.com/identity/sign-in/web/>`_."""
    facebookAppId: str
    """The App ID of the Facebook app used for login. This setting is required for enabling Facebook
     Login. Facebook Login documentation: `https://developers.facebook.com/docs/facebook-login
     <https://developers.facebook.com/docs/facebook-login>`_."""
    facebookAppSecret: str
    """The App Secret of the Facebook app used for Facebook Login. This setting is required for
     enabling Facebook Login. Facebook Login documentation:
     `https://developers.facebook.com/docs/facebook-login
     <https://developers.facebook.com/docs/facebook-login>`_."""
    facebookAppSecretSettingName: str
    """The app setting name that contains the app secret used for Facebook Login."""
    facebookOAuthScopes: list[str]
    """The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication. This
     setting is optional. Facebook Login documentation:
     `https://developers.facebook.com/docs/facebook-login
     <https://developers.facebook.com/docs/facebook-login>`_."""
    gitHubClientId: str
    """The Client Id of the GitHub app used for login. This setting is required for enabling Github
     login."""
    gitHubClientSecret: str
    """The Client Secret of the GitHub app used for Github Login. This setting is required for
     enabling Github login."""
    gitHubClientSecretSettingName: str
    """The app setting name that contains the client secret of the Github app used for GitHub Login."""
    gitHubOAuthScopes: list[str]
    """The OAuth 2.0 scopes that will be requested as part of GitHub Login authentication. This
     setting is optional."""
    twitterConsumerKey: str
    """The OAuth 1.0a consumer key of the Twitter application used for sign-in. This setting is
     required for enabling Twitter Sign-In. Twitter Sign-In documentation:
     `https://dev.twitter.com/web/sign-in <https://dev.twitter.com/web/sign-in>`_."""
    twitterConsumerSecret: str
    """The OAuth 1.0a consumer secret of the Twitter application used for sign-in. This setting is
     required for enabling Twitter Sign-In. Twitter Sign-In documentation:
     `https://dev.twitter.com/web/sign-in <https://dev.twitter.com/web/sign-in>`_."""
    twitterConsumerSecretSettingName: str
    """The app setting name that contains the OAuth 1.0a consumer secret of the Twitter application
     used for sign-in."""
    microsoftAccountClientId: str
    """The OAuth 2.0 client ID that was created for the app used for authentication. This setting is
     required for enabling Microsoft Account authentication. Microsoft Account OAuth documentation:
     `https://dev.onedrive.com/auth/msa_oauth.htm <https://dev.onedrive.com/auth/msa_oauth.htm>`_."""
    microsoftAccountClientSecret: str
    """The OAuth 2.0 client secret that was created for the app used for authentication. This setting
     is required for enabling Microsoft Account authentication. Microsoft Account OAuth
     documentation: `https://dev.onedrive.com/auth/msa_oauth.htm
     <https://dev.onedrive.com/auth/msa_oauth.htm>`_."""
    microsoftAccountClientSecretSettingName: str
    """The app setting name containing the OAuth 2.0 client secret that was created for the app used
     for authentication."""
    microsoftAccountOAuthScopes: list[str]
    """The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication. This
     setting is optional. If not specified, \"wl.basic\" is used as the default scope. Microsoft
     Account Scopes and permissions documentation:
     `https://msdn.microsoft.com/en-us/library/dn631845.aspx
     <https://msdn.microsoft.com/en-us/library/dn631845.aspx>`_."""
    isAuthFromFile: str
    """\"true\" if the auth config settings should be read from a file, \"false\" otherwise."""
    authFilePath: str
    """The path of the config file containing auth settings. If the path is relative, base will the
     site's root directory."""
    configVersion: str
    """The ConfigVersion of the Authentication / Authorization feature in use for the current app. The
     setting in this value can control the behavior of the control plane for Authentication /
     Authorization."""


class SiteAuthSettingsV2(ProxyResource):
    """Configuration settings for the Azure App Service Authentication / Authorization V2 feature.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: SiteAuthSettingsV2 resource specific properties.
    :vartype properties: "SiteAuthSettingsV2Properties"
    :ivar kind: Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind.
    :vartype kind: str
    """

    properties: "SiteAuthSettingsV2Properties"
    """SiteAuthSettingsV2 resource specific properties."""
    kind: str
    """Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind."""


class SiteAuthSettingsV2Properties(TypedDict, total=False):
    """SiteAuthSettingsV2 resource specific properties.

    :ivar platform: The configuration settings of the platform of App Service
     Authentication/Authorization.
    :vartype platform: "AuthPlatform"
    :ivar global_validation: The configuration settings that determines the validation flow of
     users using App Service Authentication/Authorization.
    :vartype global_validation: "GlobalValidation"
    :ivar identity_providers: The configuration settings of each of the identity providers used to
     configure App Service Authentication/Authorization.
    :vartype identity_providers: "IdentityProviders"
    :ivar login: The configuration settings of the login flow of users using App Service
     Authentication/Authorization.
    :vartype login: "Login"
    :ivar http_settings: The configuration settings of the HTTP requests for authentication and
     authorization requests made against App Service Authentication/Authorization.
    :vartype http_settings: "HttpSettings"
    """

    platform: "AuthPlatform"
    """The configuration settings of the platform of App Service Authentication/Authorization."""
    globalValidation: "GlobalValidation"
    """The configuration settings that determines the validation flow of users using App Service
     Authentication/Authorization."""
    identityProviders: "IdentityProviders"
    """The configuration settings of each of the identity providers used to configure App Service
     Authentication/Authorization."""
    login: "Login"
    """The configuration settings of the login flow of users using App Service
     Authentication/Authorization."""
    httpSettings: "HttpSettings"
    """The configuration settings of the HTTP requests for authentication and authorization requests
     made against App Service Authentication/Authorization."""


class SiteConfig(TypedDict, total=False):
    """Configuration of an App Service app.

    :ivar number_of_workers: Number of workers.
    :vartype number_of_workers: int
    :ivar default_documents: Default documents.
    :vartype default_documents: list[str]
    :ivar net_framework_version: .NET Framework version.
    :vartype net_framework_version: str
    :ivar php_version: Version of PHP.
    :vartype php_version: str
    :ivar python_version: Version of Python.
    :vartype python_version: str
    :ivar node_version: Version of Node.js.
    :vartype node_version: str
    :ivar power_shell_version: Version of PowerShell.
    :vartype power_shell_version: str
    :ivar linux_fx_version: Linux App Framework and version.
    :vartype linux_fx_version: str
    :ivar windows_fx_version: Xenon App Framework and version.
    :vartype windows_fx_version: str
    :ivar request_tracing_enabled: <code>true</code> if request tracing is enabled; otherwise,
     <code>false</code>.
    :vartype request_tracing_enabled: bool
    :ivar request_tracing_expiration_time: Request tracing expiration time.
    :vartype request_tracing_expiration_time: str
    :ivar remote_debugging_enabled: <code>true</code> if remote debugging is enabled; otherwise,
     <code>false</code>.
    :vartype remote_debugging_enabled: bool
    :ivar remote_debugging_version: Remote debugging version.
    :vartype remote_debugging_version: str
    :ivar http_logging_enabled: <code>true</code> if HTTP logging is enabled; otherwise,
     <code>false</code>.
    :vartype http_logging_enabled: bool
    :ivar acr_use_managed_identity_creds: Flag to use Managed Identity Creds for ACR pull.
    :vartype acr_use_managed_identity_creds: bool
    :ivar acr_user_managed_identity_id: If using user managed identity, the user managed identity
     ClientId.
    :vartype acr_user_managed_identity_id: str
    :ivar logs_directory_size_limit: HTTP logs directory size limit.
    :vartype logs_directory_size_limit: int
    :ivar detailed_error_logging_enabled: <code>true</code> if detailed error logging is enabled;
     otherwise, <code>false</code>.
    :vartype detailed_error_logging_enabled: bool
    :ivar publishing_username: Publishing user name.
    :vartype publishing_username: str
    :ivar app_settings: Application settings. This property is not returned in response to normal
     create and read requests since it may contain sensitive information.
    :vartype app_settings: list["NameValuePair"]
    :ivar metadata: Application metadata. This property cannot be retrieved, since it may contain
     secrets.
    :vartype metadata: list["NameValuePair"]
    :ivar connection_strings: Connection strings. This property is not returned in response to
     normal create and read requests since it may contain sensitive information.
    :vartype connection_strings: list["ConnStringInfo"]
    :ivar machine_key: Site MachineKey.
    :vartype machine_key: "SiteMachineKey"
    :ivar handler_mappings: Handler mappings.
    :vartype handler_mappings: list["HandlerMapping"]
    :ivar document_root: Document root.
    :vartype document_root: str
    :ivar scm_type: SCM type. Known values are: "None", "Dropbox", "Tfs", "LocalGit", "GitHub",
     "CodePlexGit", "CodePlexHg", "BitbucketGit", "BitbucketHg", "ExternalGit", "ExternalHg",
     "OneDrive", "VSO", and "VSTSRM".
    :vartype scm_type: Union[str, "ScmType"]
    :ivar use32_bit_worker_process: <code>true</code> to use 32-bit worker process; otherwise,
     <code>false</code>.
    :vartype use32_bit_worker_process: bool
    :ivar web_sockets_enabled: <code>true</code> if WebSocket is enabled; otherwise,
     <code>false</code>.
    :vartype web_sockets_enabled: bool
    :ivar always_on: <code>true</code> if Always On is enabled; otherwise, <code>false</code>.
    :vartype always_on: bool
    :ivar java_version: Java version.
    :vartype java_version: str
    :ivar java_container: Java container.
    :vartype java_container: str
    :ivar java_container_version: Java container version.
    :vartype java_container_version: str
    :ivar app_command_line: App command line to launch.
    :vartype app_command_line: str
    :ivar managed_pipeline_mode: Managed pipeline mode. Known values are: "Integrated" and
     "Classic".
    :vartype managed_pipeline_mode: Union[str, "ManagedPipelineMode"]
    :ivar virtual_applications: Virtual applications.
    :vartype virtual_applications: list["VirtualApplication"]
    :ivar load_balancing: Site load balancing. Known values are: "WeightedRoundRobin",
     "LeastRequests", "LeastResponseTime", "WeightedTotalTraffic", "RequestHash",
     "PerSiteRoundRobin", and "LeastRequestsWithTieBreaker".
    :vartype load_balancing: Union[str, "SiteLoadBalancing"]
    :ivar experiments: This is work around for polymorphic types.
    :vartype experiments: "Experiments"
    :ivar limits: Site limits.
    :vartype limits: "SiteLimits"
    :ivar auto_heal_enabled: <code>true</code> if Auto Heal is enabled; otherwise,
     <code>false</code>.
    :vartype auto_heal_enabled: bool
    :ivar auto_heal_rules: Auto Heal rules.
    :vartype auto_heal_rules: "AutoHealRules"
    :ivar tracing_options: Tracing options.
    :vartype tracing_options: str
    :ivar vnet_name: Virtual Network name.
    :vartype vnet_name: str
    :ivar vnet_route_all_enabled: Virtual Network Route All enabled. This causes all outbound
     traffic to have Virtual Network Security Groups and User Defined Routes applied.
    :vartype vnet_route_all_enabled: bool
    :ivar vnet_private_ports_count: The number of private ports assigned to this app. These will be
     assigned dynamically on runtime.
    :vartype vnet_private_ports_count: int
    :ivar cors: Cross-Origin Resource Sharing (CORS) settings.
    :vartype cors: "CorsSettings"
    :ivar push: Push endpoint settings.
    :vartype push: "PushSettings"
    :ivar api_definition: Information about the formal API definition for the app.
    :vartype api_definition: "ApiDefinitionInfo"
    :ivar api_management_config: Azure API management settings linked to the app.
    :vartype api_management_config: "ApiManagementConfig"
    :ivar auto_swap_slot_name: Auto-swap slot name.
    :vartype auto_swap_slot_name: str
    :ivar local_my_sql_enabled: <code>true</code> to enable local MySQL; otherwise,
     <code>false</code>.
    :vartype local_my_sql_enabled: bool
    :ivar managed_service_identity_id: Managed Service Identity Id.
    :vartype managed_service_identity_id: int
    :ivar x_managed_service_identity_id: Explicit Managed Service Identity Id.
    :vartype x_managed_service_identity_id: int
    :ivar key_vault_reference_identity: Identity to use for Key Vault Reference authentication.
    :vartype key_vault_reference_identity: str
    :ivar ip_security_restrictions: IP security restrictions for main.
    :vartype ip_security_restrictions: list["IpSecurityRestriction"]
    :ivar ip_security_restrictions_default_action: Default action for main access restriction if no
     rules are matched. Known values are: "Allow" and "Deny".
    :vartype ip_security_restrictions_default_action: Union[str, "DefaultAction"]
    :ivar scm_ip_security_restrictions: IP security restrictions for scm.
    :vartype scm_ip_security_restrictions: list["IpSecurityRestriction"]
    :ivar scm_ip_security_restrictions_default_action: Default action for scm access restriction if
     no rules are matched. Known values are: "Allow" and "Deny".
    :vartype scm_ip_security_restrictions_default_action: Union[str, "DefaultAction"]
    :ivar scm_ip_security_restrictions_use_main: IP security restrictions for scm to use main.
    :vartype scm_ip_security_restrictions_use_main: bool
    :ivar http20_enabled: Http20Enabled: configures a web site to allow clients to connect over
     http2.0.
    :vartype http20_enabled: bool
    :ivar http20_proxy_flag: Http20ProxyFlag: Configures a website to allow http2.0 to pass be
     proxied all the way to the app. 0 = disabled, 1 = pass through all http2 traffic, 2 = pass
     through gRPC only.
    :vartype http20_proxy_flag: int
    :ivar min_tls_version: MinTlsVersion: configures the minimum version of TLS required for SSL
     requests. Known values are: "1.0", "1.1", "1.2", and "1.3".
    :vartype min_tls_version: Union[str, "SupportedTlsVersions"]
    :ivar min_tls_cipher_suite: The minimum strength TLS cipher suite allowed for an application.
     Known values are: "TLS_AES_256_GCM_SHA384", "TLS_AES_128_GCM_SHA256",
     "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
     "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
     "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
     "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
     "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_256_GCM_SHA384",
     "TLS_RSA_WITH_AES_128_GCM_SHA256", "TLS_RSA_WITH_AES_256_CBC_SHA256",
     "TLS_RSA_WITH_AES_128_CBC_SHA256", "TLS_RSA_WITH_AES_256_CBC_SHA", and
     "TLS_RSA_WITH_AES_128_CBC_SHA".
    :vartype min_tls_cipher_suite: Union[str, "TlsCipherSuites"]
    :ivar scm_min_tls_version: ScmMinTlsVersion: configures the minimum version of TLS required for
     SSL requests for SCM site. Known values are: "1.0", "1.1", "1.2", and "1.3".
    :vartype scm_min_tls_version: Union[str, "SupportedTlsVersions"]
    :ivar ftps_state: State of FTP / FTPS service. Known values are: "AllAllowed", "FtpsOnly", and
     "Disabled".
    :vartype ftps_state: Union[str, "FtpsState"]
    :ivar pre_warmed_instance_count: Number of preWarmed instances. This setting only applies to
     the Consumption and Elastic Plans.
    :vartype pre_warmed_instance_count: int
    :ivar function_app_scale_limit: Maximum number of workers that a site can scale out to. This
     setting only applies to the Consumption and Elastic Premium Plans.
    :vartype function_app_scale_limit: int
    :ivar elastic_web_app_scale_limit: Maximum number of workers that a site can scale out to. This
     setting only applies to apps in plans where ElasticScaleEnabled is <code>true</code>.
    :vartype elastic_web_app_scale_limit: int
    :ivar health_check_path: Health check path.
    :vartype health_check_path: str
    :ivar functions_runtime_scale_monitoring_enabled: Gets or sets a value indicating whether
     functions runtime scale monitoring is enabled. When enabled, the ScaleController will not
     monitor event sources directly, but will instead call to the runtime to get scale status.
    :vartype functions_runtime_scale_monitoring_enabled: bool
    :ivar website_time_zone: Sets the time zone a site uses for generating timestamps. Compatible
     with Linux and Windows App Service. Setting the WEBSITE_TIME_ZONE app setting takes precedence
     over this config. For Linux, expects tz database values `https://www.iana.org/time-zones
     <https://www.iana.org/time-zones>`_ (for a quick reference see
     `https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
     <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>`_). For Windows, expects one of
     the time zones listed under HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows
     NT\\CurrentVersion\\Time Zones.
    :vartype website_time_zone: str
    :ivar minimum_elastic_instance_count: Number of minimum instance count for a site This setting
     only applies to the Elastic Plans.
    :vartype minimum_elastic_instance_count: int
    :ivar azure_storage_accounts: List of Azure Storage Accounts.
    :vartype azure_storage_accounts: dict[str, "AzureStorageInfoValue"]
    :ivar public_network_access: Property to allow or block all public traffic.
    :vartype public_network_access: str
    """

    numberOfWorkers: int
    """Number of workers."""
    defaultDocuments: list[str]
    """Default documents."""
    netFrameworkVersion: str
    """.NET Framework version."""
    phpVersion: str
    """Version of PHP."""
    pythonVersion: str
    """Version of Python."""
    nodeVersion: str
    """Version of Node.js."""
    powerShellVersion: str
    """Version of PowerShell."""
    linuxFxVersion: str
    """Linux App Framework and version."""
    windowsFxVersion: str
    """Xenon App Framework and version."""
    requestTracingEnabled: bool
    """<code>true</code> if request tracing is enabled; otherwise, <code>false</code>."""
    requestTracingExpirationTime: str
    """Request tracing expiration time."""
    remoteDebuggingEnabled: bool
    """<code>true</code> if remote debugging is enabled; otherwise, <code>false</code>."""
    remoteDebuggingVersion: str
    """Remote debugging version."""
    httpLoggingEnabled: bool
    """<code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>."""
    acrUseManagedIdentityCreds: bool
    """Flag to use Managed Identity Creds for ACR pull."""
    acrUserManagedIdentityID: str
    """If using user managed identity, the user managed identity ClientId."""
    logsDirectorySizeLimit: int
    """HTTP logs directory size limit."""
    detailedErrorLoggingEnabled: bool
    """<code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>."""
    publishingUsername: str
    """Publishing user name."""
    appSettings: list["NameValuePair"]
    """Application settings. This property is not returned in response to normal create and read
     requests since it may contain sensitive information."""
    metadata: list["NameValuePair"]
    """Application metadata. This property cannot be retrieved, since it may contain secrets."""
    connectionStrings: list["ConnStringInfo"]
    """Connection strings. This property is not returned in response to normal create and read
     requests since it may contain sensitive information."""
    machineKey: "SiteMachineKey"
    """Site MachineKey."""
    handlerMappings: list["HandlerMapping"]
    """Handler mappings."""
    documentRoot: str
    """Document root."""
    scmType: Union[str, "ScmType"]
    """SCM type. Known values are: \"None\", \"Dropbox\", \"Tfs\", \"LocalGit\", \"GitHub\",
     \"CodePlexGit\", \"CodePlexHg\", \"BitbucketGit\", \"BitbucketHg\", \"ExternalGit\",
     \"ExternalHg\", \"OneDrive\", \"VSO\", and \"VSTSRM\"."""
    use32BitWorkerProcess: bool
    """<code>true</code> to use 32-bit worker process; otherwise, <code>false</code>."""
    webSocketsEnabled: bool
    """<code>true</code> if WebSocket is enabled; otherwise, <code>false</code>."""
    alwaysOn: bool
    """<code>true</code> if Always On is enabled; otherwise, <code>false</code>."""
    javaVersion: str
    """Java version."""
    javaContainer: str
    """Java container."""
    javaContainerVersion: str
    """Java container version."""
    appCommandLine: str
    """App command line to launch."""
    managedPipelineMode: Union[str, "ManagedPipelineMode"]
    """Managed pipeline mode. Known values are: \"Integrated\" and \"Classic\"."""
    virtualApplications: list["VirtualApplication"]
    """Virtual applications."""
    loadBalancing: Union[str, "SiteLoadBalancing"]
    """Site load balancing. Known values are: \"WeightedRoundRobin\", \"LeastRequests\",
     \"LeastResponseTime\", \"WeightedTotalTraffic\", \"RequestHash\", \"PerSiteRoundRobin\", and
     \"LeastRequestsWithTieBreaker\"."""
    experiments: "Experiments"
    """This is work around for polymorphic types."""
    limits: "SiteLimits"
    """Site limits."""
    autoHealEnabled: bool
    """<code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>."""
    autoHealRules: "AutoHealRules"
    """Auto Heal rules."""
    tracingOptions: str
    """Tracing options."""
    vnetName: str
    """Virtual Network name."""
    vnetRouteAllEnabled: bool
    """Virtual Network Route All enabled. This causes all outbound traffic to have Virtual Network
     Security Groups and User Defined Routes applied."""
    vnetPrivatePortsCount: int
    """The number of private ports assigned to this app. These will be assigned dynamically on
     runtime."""
    cors: "CorsSettings"
    """Cross-Origin Resource Sharing (CORS) settings."""
    push: "PushSettings"
    """Push endpoint settings."""
    apiDefinition: "ApiDefinitionInfo"
    """Information about the formal API definition for the app."""
    apiManagementConfig: "ApiManagementConfig"
    """Azure API management settings linked to the app."""
    autoSwapSlotName: str
    """Auto-swap slot name."""
    localMySqlEnabled: bool
    """<code>true</code> to enable local MySQL; otherwise, <code>false</code>."""
    managedServiceIdentityId: int
    """Managed Service Identity Id."""
    xManagedServiceIdentityId: int
    """Explicit Managed Service Identity Id."""
    keyVaultReferenceIdentity: str
    """Identity to use for Key Vault Reference authentication."""
    ipSecurityRestrictions: list["IpSecurityRestriction"]
    """IP security restrictions for main."""
    ipSecurityRestrictionsDefaultAction: Union[str, "DefaultAction"]
    """Default action for main access restriction if no rules are matched. Known values are: \"Allow\"
     and \"Deny\"."""
    scmIpSecurityRestrictions: list["IpSecurityRestriction"]
    """IP security restrictions for scm."""
    scmIpSecurityRestrictionsDefaultAction: Union[str, "DefaultAction"]
    """Default action for scm access restriction if no rules are matched. Known values are: \"Allow\"
     and \"Deny\"."""
    scmIpSecurityRestrictionsUseMain: bool
    """IP security restrictions for scm to use main."""
    http20Enabled: bool
    """Http20Enabled: configures a web site to allow clients to connect over http2.0."""
    http20ProxyFlag: int
    """Http20ProxyFlag: Configures a website to allow http2.0 to pass be proxied all the way to the
     app. 0 = disabled, 1 = pass through all http2 traffic, 2 = pass through gRPC only."""
    minTlsVersion: Union[str, "SupportedTlsVersions"]
    """MinTlsVersion: configures the minimum version of TLS required for SSL requests. Known values
     are: \"1.0\", \"1.1\", \"1.2\", and \"1.3\"."""
    minTlsCipherSuite: Union[str, "TlsCipherSuites"]
    """The minimum strength TLS cipher suite allowed for an application. Known values are:
     \"TLS_AES_256_GCM_SHA384\", \"TLS_AES_128_GCM_SHA256\",
     \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\",
     \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",
     \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\",
     \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",
     \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\", \"TLS_RSA_WITH_AES_256_GCM_SHA384\",
     \"TLS_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_RSA_WITH_AES_256_CBC_SHA256\",
     \"TLS_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_RSA_WITH_AES_256_CBC_SHA\", and
     \"TLS_RSA_WITH_AES_128_CBC_SHA\"."""
    scmMinTlsVersion: Union[str, "SupportedTlsVersions"]
    """ScmMinTlsVersion: configures the minimum version of TLS required for SSL requests for SCM site.
     Known values are: \"1.0\", \"1.1\", \"1.2\", and \"1.3\"."""
    ftpsState: Union[str, "FtpsState"]
    """State of FTP / FTPS service. Known values are: \"AllAllowed\", \"FtpsOnly\", and \"Disabled\"."""
    preWarmedInstanceCount: int
    """Number of preWarmed instances. This setting only applies to the Consumption and Elastic Plans."""
    functionAppScaleLimit: int
    """Maximum number of workers that a site can scale out to. This setting only applies to the
     Consumption and Elastic Premium Plans."""
    elasticWebAppScaleLimit: int
    """Maximum number of workers that a site can scale out to. This setting only applies to apps in
     plans where ElasticScaleEnabled is <code>true</code>."""
    healthCheckPath: str
    """Health check path."""
    functionsRuntimeScaleMonitoringEnabled: bool
    """Gets or sets a value indicating whether functions runtime scale monitoring is enabled. When
     enabled, the ScaleController will not monitor event sources directly, but will instead call to
     the runtime to get scale status."""
    websiteTimeZone: str
    """Sets the time zone a site uses for generating timestamps. Compatible with Linux and Windows App
     Service. Setting the WEBSITE_TIME_ZONE app setting takes precedence over this config. For
     Linux, expects tz database values `https://www.iana.org/time-zones
     <https://www.iana.org/time-zones>`_ (for a quick reference see
     `https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
     <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>`_). For Windows, expects one of
     the time zones listed under HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows
     NT\\CurrentVersion\\Time Zones."""
    minimumElasticInstanceCount: int
    """Number of minimum instance count for a site This setting only applies to the Elastic Plans."""
    azureStorageAccounts: dict[str, "AzureStorageInfoValue"]
    """List of Azure Storage Accounts."""
    publicNetworkAccess: str
    """Property to allow or block all public traffic."""


class SiteConfigResource(ProxyResource):
    """Web app configuration ARM resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Core resource properties.
    :vartype properties: "SiteConfig"
    :ivar kind: Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind.
    :vartype kind: str
    """

    properties: "SiteConfig"
    """Core resource properties."""
    kind: str
    """Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind."""


class SiteContainer(ProxyResource):
    """Container of a site.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: SiteContainer resource specific properties.
    :vartype properties: "SiteContainerProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "SiteContainerProperties"
    """SiteContainer resource specific properties."""
    kind: str
    """Kind of resource."""


class SiteContainerProperties(TypedDict, total=False):
    """SiteContainer resource specific properties.

    :ivar image: Image Name. Required.
    :vartype image: str
    :ivar target_port: Target Port.
    :vartype target_port: str
    :ivar is_main: <code>true</code> if the container is the main site container;
     <code>false</code> otherwise. Required.
    :vartype is_main: bool
    :ivar start_up_command: StartUp Command.
    :vartype start_up_command: str
    :ivar auth_type: Auth Type. Known values are: "Anonymous", "UserCredentials", "SystemIdentity",
     and "UserAssigned".
    :vartype auth_type: Union[str, "AuthType"]
    :ivar user_name: User Name.
    :vartype user_name: str
    :ivar password_secret: Password Secret.
    :vartype password_secret: str
    :ivar user_managed_identity_client_id: UserManagedIdentity ClientId.
    :vartype user_managed_identity_client_id: str
    :ivar created_time: Created Time.
    :vartype created_time: str
    :ivar last_modified_time: Last Modified Time.
    :vartype last_modified_time: str
    :ivar volume_mounts: List of volume mounts.
    :vartype volume_mounts: list["VolumeMount"]
    :ivar inherit_app_settings_and_connection_strings: <code>true</code> if all AppSettings and
     ConnectionStrings have to be passed to the container as environment variables;
     <code>false</code> otherwise.
    :vartype inherit_app_settings_and_connection_strings: bool
    :ivar environment_variables: List of environment variables.
    :vartype environment_variables: list["EnvironmentVariable"]
    """

    image: Required[str]
    """Image Name. Required."""
    targetPort: str
    """Target Port."""
    isMain: Required[bool]
    """<code>true</code> if the container is the main site container; <code>false</code> otherwise.
     Required."""
    startUpCommand: str
    """StartUp Command."""
    authType: Union[str, "AuthType"]
    """Auth Type. Known values are: \"Anonymous\", \"UserCredentials\", \"SystemIdentity\", and
     \"UserAssigned\"."""
    userName: str
    """User Name."""
    passwordSecret: str
    """Password Secret."""
    userManagedIdentityClientId: str
    """UserManagedIdentity ClientId."""
    createdTime: str
    """Created Time."""
    lastModifiedTime: str
    """Last Modified Time."""
    volumeMounts: list["VolumeMount"]
    """List of volume mounts."""
    inheritAppSettingsAndConnectionStrings: bool
    """<code>true</code> if all AppSettings and ConnectionStrings have to be passed to the container
     as environment variables; <code>false</code> otherwise."""
    environmentVariables: list["EnvironmentVariable"]
    """List of environment variables."""


class SiteDnsConfig(TypedDict, total=False):
    """SiteDnsConfig.

    :ivar dns_servers: List of custom DNS servers to be used by an app for lookups. Maximum 5 dns
     servers can be set.
    :vartype dns_servers: list[str]
    :ivar dns_alt_server: Alternate DNS server to be used by apps. This property replicates the
     WEBSITE_DNS_ALT_SERVER app setting.
    :vartype dns_alt_server: str
    :ivar dns_retry_attempt_timeout: Timeout for a single dns lookup in seconds. Allowed range:
     1-30. Default is 3.
    :vartype dns_retry_attempt_timeout: int
    :ivar dns_retry_attempt_count: Total number of retries for dns lookup. Allowed range: 1-5.
     Default is 3.
    :vartype dns_retry_attempt_count: int
    :ivar dns_max_cache_timeout: Custom time for DNS to be cached in seconds. Allowed range: 0-60.
     Default is 30 seconds. 0 means caching disabled.
    :vartype dns_max_cache_timeout: int
    :ivar dns_legacy_sort_order: Indicates that sites using Virtual network custom DNS servers are
     still sorting the list of DNS servers. Read-Only.
    :vartype dns_legacy_sort_order: bool
    """

    dnsServers: list[str]
    """List of custom DNS servers to be used by an app for lookups. Maximum 5 dns servers can be set."""
    dnsAltServer: str
    """Alternate DNS server to be used by apps. This property replicates the WEBSITE_DNS_ALT_SERVER
     app setting."""
    dnsRetryAttemptTimeout: int
    """Timeout for a single dns lookup in seconds. Allowed range: 1-30. Default is 3."""
    dnsRetryAttemptCount: int
    """Total number of retries for dns lookup. Allowed range: 1-5. Default is 3."""
    dnsMaxCacheTimeout: int
    """Custom time for DNS to be cached in seconds. Allowed range: 0-60. Default is 30 seconds. 0
     means caching disabled."""
    dnsLegacySortOrder: bool
    """Indicates that sites using Virtual network custom DNS servers are still sorting the list of DNS
     servers. Read-Only."""


class SiteLimits(TypedDict, total=False):
    """Metric limits set on an app.

    :ivar max_percentage_cpu: Maximum allowed CPU usage percentage.
    :vartype max_percentage_cpu: float
    :ivar max_memory_in_mb: Maximum allowed memory usage in MB.
    :vartype max_memory_in_mb: int
    :ivar max_disk_size_in_mb: Maximum allowed disk size usage in MB.
    :vartype max_disk_size_in_mb: int
    """

    maxPercentageCpu: float
    """Maximum allowed CPU usage percentage."""
    maxMemoryInMb: int
    """Maximum allowed memory usage in MB."""
    maxDiskSizeInMb: int
    """Maximum allowed disk size usage in MB."""


class SiteLogsConfig(ProxyResource):
    """Configuration of App Service site logs.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: SiteLogsConfig resource specific properties.
    :vartype properties: "SiteLogsConfigProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "SiteLogsConfigProperties"
    """SiteLogsConfig resource specific properties."""
    kind: str
    """Kind of resource."""


class SiteLogsConfigProperties(TypedDict, total=False):
    """SiteLogsConfig resource specific properties.

    :ivar application_logs: Application logs configuration.
    :vartype application_logs: "ApplicationLogsConfig"
    :ivar http_logs: HTTP logs configuration.
    :vartype http_logs: "HttpLogsConfig"
    :ivar failed_requests_tracing: Failed requests tracing configuration.
    :vartype failed_requests_tracing: "EnabledConfig"
    :ivar detailed_error_messages: Detailed error messages configuration.
    :vartype detailed_error_messages: "EnabledConfig"
    """

    applicationLogs: "ApplicationLogsConfig"
    """Application logs configuration."""
    httpLogs: "HttpLogsConfig"
    """HTTP logs configuration."""
    failedRequestsTracing: "EnabledConfig"
    """Failed requests tracing configuration."""
    detailedErrorMessages: "EnabledConfig"
    """Detailed error messages configuration."""


class SiteMachineKey(TypedDict, total=False):
    """MachineKey of an app.

    :ivar validation: MachineKey validation.
    :vartype validation: str
    :ivar validation_key: Validation key.
    :vartype validation_key: str
    :ivar decryption: Algorithm used for decryption.
    :vartype decryption: str
    :ivar decryption_key: Decryption key.
    :vartype decryption_key: str
    """

    validation: str
    """MachineKey validation."""
    validationKey: str
    """Validation key."""
    decryption: str
    """Algorithm used for decryption."""
    decryptionKey: str
    """Decryption key."""


class SitePatchResource(ProxyOnlyResource):
    """ARM resource for a site.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: SitePatchResource resource specific properties.
    :vartype properties: "SitePatchResourceProperties"
    :ivar identity: Managed service identity.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "SitePatchResourceProperties"
    """SitePatchResource resource specific properties."""
    identity: "ManagedServiceIdentity"
    """Managed service identity."""


class SitePatchResourceProperties(TypedDict, total=False):
    """SitePatchResource resource specific properties.

    :ivar state: Current state of the app.
    :vartype state: str
    :ivar host_names: Hostnames associated with the app.
    :vartype host_names: list[str]
    :ivar repository_site_name: Name of the repository site.
    :vartype repository_site_name: str
    :ivar usage_state: State indicating whether the app has exceeded its quota usage. Read-only.
     Known values are: "Normal" and "Exceeded".
    :vartype usage_state: Union[str, "UsageState"]
    :ivar enabled: <code>true</code> if the app is enabled; otherwise, <code>false</code>. Setting
     this value to false disables the app (takes the app offline).
    :vartype enabled: bool
    :ivar enabled_host_names: Enabled hostnames for the app.Hostnames need to be assigned (see
     HostNames) AND enabled. Otherwise, the app is not served on those hostnames.
    :vartype enabled_host_names: list[str]
    :ivar availability_state: Management information availability state for the app. Known values
     are: "Normal", "Limited", and "DisasterRecoveryMode".
    :vartype availability_state: Union[str, "SiteAvailabilityState"]
    :ivar host_name_ssl_states: Hostname SSL states are used to manage the SSL bindings for app's
     hostnames.
    :vartype host_name_ssl_states: list["HostNameSslState"]
    :ivar server_farm_id: Resource ID of the associated App Service plan, formatted as:
     "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
    :vartype server_farm_id: str
    :ivar reserved: <code>true</code> if reserved; otherwise, <code>false</code>.
    :vartype reserved: bool
    :ivar is_xenon: Obsolete: Hyper-V sandbox.
    :vartype is_xenon: bool
    :ivar hyper_v: Hyper-V sandbox.
    :vartype hyper_v: bool
    :ivar last_modified_time_utc: Last time the app was modified, in UTC. Read-only.
    :vartype last_modified_time_utc: str
    :ivar dns_configuration: Property to configure various DNS related settings for a site.
    :vartype dns_configuration: "SiteDnsConfig"
    :ivar site_config: Configuration of the app.
    :vartype site_config: "SiteConfig"
    :ivar traffic_manager_host_names: Azure Traffic Manager hostnames associated with the app.
     Read-only.
    :vartype traffic_manager_host_names: list[str]
    :ivar scm_site_also_stopped: <code>true</code> to stop SCM (KUDU) site when the app is stopped;
     otherwise, <code>false</code>. The default is <code>false</code>.
    :vartype scm_site_also_stopped: bool
    :ivar target_swap_slot: Specifies which deployment slot this app will swap into. Read-only.
    :vartype target_swap_slot: str
    :ivar hosting_environment_profile: App Service Environment to use for the app.
    :vartype hosting_environment_profile: "HostingEnvironmentProfile"
    :ivar client_affinity_enabled: <code>true</code> to enable client affinity; <code>false</code>
     to stop sending session affinity cookies, which route client requests in the same session to
     the same instance. Default is <code>true</code>.
    :vartype client_affinity_enabled: bool
    :ivar client_affinity_proxy_enabled: <code>true</code> to override client affinity cookie
     domain with X-Forwarded-Host request header. <code>false</code> to use default domain. Default
     is <code>false</code>.
    :vartype client_affinity_proxy_enabled: bool
    :ivar client_cert_enabled: <code>true</code> to enable client certificate authentication (TLS
     mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
    :vartype client_cert_enabled: bool
    :ivar client_cert_mode: This composes with ClientCertEnabled setting.

     * ClientCertEnabled: false means ClientCert is ignored.
     * ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
     * ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or
       accepted. Known values are: "Required", "Optional", and "OptionalInteractiveUser".
    :vartype client_cert_mode: Union[str, "ClientCertMode"]
    :ivar client_cert_exclusion_paths: client certificate authentication comma-separated exclusion
     paths.
    :vartype client_cert_exclusion_paths: str
    :ivar host_names_disabled: <code>true</code> to disable the public hostnames of the app;
     otherwise, <code>false</code>.\\n If <code>true</code>, the app is only accessible via API
     management process.
    :vartype host_names_disabled: bool
    :ivar custom_domain_verification_id: Unique identifier that verifies the custom domains
     assigned to the app. Customer will add this id to a txt record for verification.
    :vartype custom_domain_verification_id: str
    :ivar outbound_ip_addresses: List of IP addresses that the app uses for outbound connections
     (e.g. database access). Includes VIPs from tenants that site can be hosted with current
     settings. Read-only.
    :vartype outbound_ip_addresses: str
    :ivar possible_outbound_ip_addresses: List of IP addresses that the app uses for outbound
     connections (e.g. database access). Includes VIPs from all tenants except dataComponent.
     Read-only.
    :vartype possible_outbound_ip_addresses: str
    :ivar container_size: Size of the function container.
    :vartype container_size: int
    :ivar daily_memory_time_quota: Maximum allowed daily memory-time quota (applicable on dynamic
     apps only).
    :vartype daily_memory_time_quota: int
    :ivar suspended_till: App suspended till in case memory-time quota is exceeded.
    :vartype suspended_till: str
    :ivar max_number_of_workers: Maximum number of workers. This only applies to Functions
     container.
    :vartype max_number_of_workers: int
    :ivar cloning_info: If specified during app creation, the app is cloned from a source app.
    :vartype cloning_info: "CloningInfo"
    :ivar resource_group: Name of the resource group the app belongs to. Read-only.
    :vartype resource_group: str
    :ivar is_default_container: <code>true</code> if the app is a default container; otherwise,
     <code>false</code>.
    :vartype is_default_container: bool
    :ivar default_host_name: Default hostname of the app. Read-only.
    :vartype default_host_name: str
    :ivar slot_swap_status: Status of the last deployment slot swap operation.
    :vartype slot_swap_status: "SlotSwapStatus"
    :ivar https_only: HttpsOnly: configures a web site to accept only https requests. Issues
     redirect for http requests.
    :vartype https_only: bool
    :ivar redundancy_mode: Site redundancy mode. Known values are: "None", "Manual", "Failover",
     "ActiveActive", and "GeoRedundant".
    :vartype redundancy_mode: Union[str, "RedundancyMode"]
    :ivar in_progress_operation_id: Specifies an operation id if this site has a pending operation.
    :vartype in_progress_operation_id: str
    :ivar public_network_access: Property to allow or block all public traffic. Allowed Values:
     'Enabled', 'Disabled' or an empty string.
    :vartype public_network_access: str
    :ivar storage_account_required: Checks if Customer provided storage account is required.
    :vartype storage_account_required: bool
    :ivar key_vault_reference_identity: Identity to use for Key Vault Reference authentication.
    :vartype key_vault_reference_identity: str
    :ivar virtual_network_subnet_id: Azure Resource Manager ID of the Virtual network and subnet to
     be joined by Regional VNET Integration. This must be of the form
     /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
    :vartype virtual_network_subnet_id: str
    """

    state: str
    """Current state of the app."""
    hostNames: list[str]
    """Hostnames associated with the app."""
    repositorySiteName: str
    """Name of the repository site."""
    usageState: Union[str, "UsageState"]
    """State indicating whether the app has exceeded its quota usage. Read-only. Known values are:
     \"Normal\" and \"Exceeded\"."""
    enabled: bool
    """<code>true</code> if the app is enabled; otherwise, <code>false</code>. Setting this value to
     false disables the app (takes the app offline)."""
    enabledHostNames: list[str]
    """Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled.
     Otherwise, the app is not served on those hostnames."""
    availabilityState: Union[str, "SiteAvailabilityState"]
    """Management information availability state for the app. Known values are: \"Normal\",
     \"Limited\", and \"DisasterRecoveryMode\"."""
    hostNameSslStates: list["HostNameSslState"]
    """Hostname SSL states are used to manage the SSL bindings for app's hostnames."""
    serverFarmId: str
    """Resource ID of the associated App Service plan, formatted as:
     \"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}\"."""
    reserved: bool
    """<code>true</code> if reserved; otherwise, <code>false</code>."""
    isXenon: bool
    """Obsolete: Hyper-V sandbox."""
    hyperV: bool
    """Hyper-V sandbox."""
    lastModifiedTimeUtc: str
    """Last time the app was modified, in UTC. Read-only."""
    dnsConfiguration: "SiteDnsConfig"
    """Property to configure various DNS related settings for a site."""
    siteConfig: "SiteConfig"
    """Configuration of the app."""
    trafficManagerHostNames: list[str]
    """Azure Traffic Manager hostnames associated with the app. Read-only."""
    scmSiteAlsoStopped: bool
    """<code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise,
     <code>false</code>. The default is <code>false</code>."""
    targetSwapSlot: str
    """Specifies which deployment slot this app will swap into. Read-only."""
    hostingEnvironmentProfile: "HostingEnvironmentProfile"
    """App Service Environment to use for the app."""
    clientAffinityEnabled: bool
    """<code>true</code> to enable client affinity; <code>false</code> to stop sending session
     affinity cookies, which route client requests in the same session to the same instance. Default
     is <code>true</code>."""
    clientAffinityProxyEnabled: bool
    """<code>true</code> to override client affinity cookie domain with X-Forwarded-Host request
     header. <code>false</code> to use default domain. Default is <code>false</code>."""
    clientCertEnabled: bool
    """<code>true</code> to enable client certificate authentication (TLS mutual authentication);
     otherwise, <code>false</code>. Default is <code>false</code>."""
    clientCertMode: Union[str, "ClientCertMode"]
    """This composes with ClientCertEnabled setting.
 
      * ClientCertEnabled: false means ClientCert is ignored.
      * ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
      * ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or
        accepted. Known values are: \"Required\", \"Optional\", and \"OptionalInteractiveUser\"."""
    clientCertExclusionPaths: str
    """client certificate authentication comma-separated exclusion paths."""
    hostNamesDisabled: bool
    """<code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.\n
     If <code>true</code>, the app is only accessible via API management process."""
    customDomainVerificationId: str
    """Unique identifier that verifies the custom domains assigned to the app. Customer will add this
     id to a txt record for verification."""
    outboundIpAddresses: str
    """List of IP addresses that the app uses for outbound connections (e.g. database access).
     Includes VIPs from tenants that site can be hosted with current settings. Read-only."""
    possibleOutboundIpAddresses: str
    """List of IP addresses that the app uses for outbound connections (e.g. database access).
     Includes VIPs from all tenants except dataComponent. Read-only."""
    containerSize: int
    """Size of the function container."""
    dailyMemoryTimeQuota: int
    """Maximum allowed daily memory-time quota (applicable on dynamic apps only)."""
    suspendedTill: str
    """App suspended till in case memory-time quota is exceeded."""
    maxNumberOfWorkers: int
    """Maximum number of workers. This only applies to Functions container."""
    cloningInfo: "CloningInfo"
    """If specified during app creation, the app is cloned from a source app."""
    resourceGroup: str
    """Name of the resource group the app belongs to. Read-only."""
    isDefaultContainer: bool
    """<code>true</code> if the app is a default container; otherwise, <code>false</code>."""
    defaultHostName: str
    """Default hostname of the app. Read-only."""
    slotSwapStatus: "SlotSwapStatus"
    """Status of the last deployment slot swap operation."""
    httpsOnly: bool
    """HttpsOnly: configures a web site to accept only https requests. Issues redirect for http
     requests."""
    redundancyMode: Union[str, "RedundancyMode"]
    """Site redundancy mode. Known values are: \"None\", \"Manual\", \"Failover\", \"ActiveActive\",
     and \"GeoRedundant\"."""
    inProgressOperationId: str
    """Specifies an operation id if this site has a pending operation."""
    publicNetworkAccess: str
    """Property to allow or block all public traffic. Allowed Values: 'Enabled', 'Disabled' or an
     empty string."""
    storageAccountRequired: bool
    """Checks if Customer provided storage account is required."""
    keyVaultReferenceIdentity: str
    """Identity to use for Key Vault Reference authentication."""
    virtualNetworkSubnetId: str
    """Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET
     Integration. This must be of the form
     /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}."""


class SiteProperties(TypedDict, total=False):
    """Site resource specific properties.

    :ivar state: Current state of the app.
    :vartype state: str
    :ivar host_names: Hostnames associated with the app.
    :vartype host_names: list[str]
    :ivar repository_site_name: Name of the repository site.
    :vartype repository_site_name: str
    :ivar usage_state: State indicating whether the app has exceeded its quota usage. Read-only.
     Known values are: "Normal" and "Exceeded".
    :vartype usage_state: Union[str, "UsageState"]
    :ivar enabled: <code>true</code> if the app is enabled; otherwise, <code>false</code>. Setting
     this value to false disables the app (takes the app offline).
    :vartype enabled: bool
    :ivar enabled_host_names: Enabled hostnames for the app.Hostnames need to be assigned (see
     HostNames) AND enabled. Otherwise, the app is not served on those hostnames.
    :vartype enabled_host_names: list[str]
    :ivar availability_state: Management information availability state for the app. Known values
     are: "Normal", "Limited", and "DisasterRecoveryMode".
    :vartype availability_state: Union[str, "SiteAvailabilityState"]
    :ivar host_name_ssl_states: Hostname SSL states are used to manage the SSL bindings for app's
     hostnames.
    :vartype host_name_ssl_states: list["HostNameSslState"]
    :ivar server_farm_id: Resource ID of the associated App Service plan, formatted as:
     "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
    :vartype server_farm_id: str
    :ivar reserved: <code>true</code> if reserved; otherwise, <code>false</code>.
    :vartype reserved: bool
    :ivar is_xenon: Obsolete: Hyper-V sandbox.
    :vartype is_xenon: bool
    :ivar hyper_v: Hyper-V sandbox.
    :vartype hyper_v: bool
    :ivar last_modified_time_utc: Last time the app was modified, in UTC. Read-only.
    :vartype last_modified_time_utc: str
    :ivar dns_configuration: Property to configure various DNS related settings for a site.
    :vartype dns_configuration: "SiteDnsConfig"
    :ivar outbound_vnet_routing: Property to configure various outbound traffic routing options
     over virtual network for a site.
    :vartype outbound_vnet_routing: "OutboundVnetRouting"
    :ivar site_config: Configuration of an App Service app. This property is not returned in
     response to normal create and read requests since it may contain sensitive information.
    :vartype site_config: "SiteConfig"
    :ivar function_app_config: Configuration specific of the Azure Function app.
    :vartype function_app_config: "FunctionAppConfig"
    :ivar dapr_config: Dapr configuration of the app.
    :vartype dapr_config: "DaprConfig"
    :ivar workload_profile_name: Workload profile name for function app to execute on.
    :vartype workload_profile_name: str
    :ivar resource_config: Function app resource requirements.
    :vartype resource_config: "ResourceConfig"
    :ivar traffic_manager_host_names: Azure Traffic Manager hostnames associated with the app.
     Read-only.
    :vartype traffic_manager_host_names: list[str]
    :ivar scm_site_also_stopped: <code>true</code> to stop SCM (KUDU) site when the app is stopped;
     otherwise, <code>false</code>. The default is <code>false</code>.
    :vartype scm_site_also_stopped: bool
    :ivar target_swap_slot: Specifies which deployment slot this app will swap into. Read-only.
    :vartype target_swap_slot: str
    :ivar hosting_environment_profile: App Service Environment to use for the app.
    :vartype hosting_environment_profile: "HostingEnvironmentProfile"
    :ivar client_affinity_enabled: <code>true</code> to enable client affinity; <code>false</code>
     to stop sending session affinity cookies, which route client requests in the same session to
     the same instance. Default is <code>true</code>.
    :vartype client_affinity_enabled: bool
    :ivar client_affinity_partitioning_enabled: <code>true</code> to enable client affinity
     partitioning using CHIPS cookies, this will add the <code>partitioned</code> property to the
     affinity cookies; <code>false</code> to stop sending partitioned affinity cookies. Default is
     <code>false</code>.
    :vartype client_affinity_partitioning_enabled: bool
    :ivar client_affinity_proxy_enabled: <code>true</code> to override client affinity cookie
     domain with X-Forwarded-Host request header. <code>false</code> to use default domain. Default
     is <code>false</code>.
    :vartype client_affinity_proxy_enabled: bool
    :ivar client_cert_enabled: <code>true</code> to enable client certificate authentication (TLS
     mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
    :vartype client_cert_enabled: bool
    :ivar client_cert_mode: This composes with ClientCertEnabled setting.

     * ClientCertEnabled: false means ClientCert is ignored.
     * ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
     * ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or
       accepted. Known values are: "Required", "Optional", and "OptionalInteractiveUser".
    :vartype client_cert_mode: Union[str, "ClientCertMode"]
    :ivar client_cert_exclusion_paths: client certificate authentication comma-separated exclusion
     paths.
    :vartype client_cert_exclusion_paths: str
    :ivar ip_mode: Specifies the IP mode of the app. Known values are: "IPv4", "IPv6", and
     "IPv4AndIPv6".
    :vartype ip_mode: Union[str, "IPMode"]
    :ivar end_to_end_encryption_enabled: Whether to use end to end encryption between the FrontEnd
     and the Worker.
    :vartype end_to_end_encryption_enabled: bool
    :ivar ssh_enabled: Whether to enable ssh access.
    :vartype ssh_enabled: bool
    :ivar host_names_disabled: <code>true</code> to disable the public hostnames of the app;
     otherwise, <code>false</code>. If <code>true</code>, the app is only accessible via API
     management process.
    :vartype host_names_disabled: bool
    :ivar custom_domain_verification_id: Unique identifier that verifies the custom domains
     assigned to the app. Customer will add this id to a txt record for verification.
    :vartype custom_domain_verification_id: str
    :ivar outbound_ip_addresses: List of IP addresses that the app uses for outbound connections
     (e.g. database access). Includes VIPs from tenants that site can be hosted with current
     settings. Read-only.
    :vartype outbound_ip_addresses: str
    :ivar possible_outbound_ip_addresses: List of IP addresses that the app uses for outbound
     connections (e.g. database access). Includes VIPs from all tenants except dataComponent.
     Read-only.
    :vartype possible_outbound_ip_addresses: str
    :ivar container_size: Size of the function container.
    :vartype container_size: int
    :ivar daily_memory_time_quota: Maximum allowed daily memory-time quota (applicable on dynamic
     apps only).
    :vartype daily_memory_time_quota: int
    :ivar suspended_till: App suspended till in case memory-time quota is exceeded.
    :vartype suspended_till: str
    :ivar max_number_of_workers: Maximum number of workers. This only applies to Functions
     container.
    :vartype max_number_of_workers: int
    :ivar cloning_info: If specified during app creation, the app is cloned from a source app.
    :vartype cloning_info: "CloningInfo"
    :ivar resource_group: Name of the resource group the app belongs to. Read-only.
    :vartype resource_group: str
    :ivar is_default_container: <code>true</code> if the app is a default container; otherwise,
     <code>false</code>.
    :vartype is_default_container: bool
    :ivar default_host_name: Default hostname of the app. Read-only.
    :vartype default_host_name: str
    :ivar slot_swap_status: Status of the last deployment slot swap operation.
    :vartype slot_swap_status: "SlotSwapStatus"
    :ivar https_only: HttpsOnly: configures a web site to accept only https requests. Issues
     redirect for http requests.
    :vartype https_only: bool
    :ivar redundancy_mode: Site redundancy mode. Known values are: "None", "Manual", "Failover",
     "ActiveActive", and "GeoRedundant".
    :vartype redundancy_mode: Union[str, "RedundancyMode"]
    :ivar in_progress_operation_id: Specifies an operation id if this site has a pending operation.
    :vartype in_progress_operation_id: str
    :ivar public_network_access: Property to allow or block all public traffic. Allowed Values:
     'Enabled', 'Disabled' or an empty string.
    :vartype public_network_access: str
    :ivar storage_account_required: Checks if Customer provided storage account is required.
    :vartype storage_account_required: bool
    :ivar key_vault_reference_identity: Identity to use for Key Vault Reference authentication.
    :vartype key_vault_reference_identity: str
    :ivar auto_generated_domain_name_label_scope: Specifies the scope of uniqueness for the default
     hostname during resource creation. Known values are: "TenantReuse", "SubscriptionReuse",
     "ResourceGroupReuse", and "NoReuse".
    :vartype auto_generated_domain_name_label_scope: Union[str,
     "AutoGeneratedDomainNameLabelScope"]
    :ivar virtual_network_subnet_id: Azure Resource Manager ID of the Virtual network and subnet to
     be joined by Regional VNET Integration. This must be of the form
     /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
    :vartype virtual_network_subnet_id: str
    :ivar managed_environment_id: Azure Resource Manager ID of the customer's selected Managed
     Environment on which to host this app. This must be of the form
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/managedEnvironments/{managedEnvironmentName}.
    :vartype managed_environment_id: str
    :ivar sku: Current SKU of application based on associated App Service Plan. Some valid SKU
     values are Free, Shared, Basic, Dynamic, FlexConsumption, Standard, Premium, PremiumV2,
     PremiumV3, Isolated, IsolatedV2.
    :vartype sku: str
    """

    state: str
    """Current state of the app."""
    hostNames: list[str]
    """Hostnames associated with the app."""
    repositorySiteName: str
    """Name of the repository site."""
    usageState: Union[str, "UsageState"]
    """State indicating whether the app has exceeded its quota usage. Read-only. Known values are:
     \"Normal\" and \"Exceeded\"."""
    enabled: bool
    """<code>true</code> if the app is enabled; otherwise, <code>false</code>. Setting this value to
     false disables the app (takes the app offline)."""
    enabledHostNames: list[str]
    """Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled.
     Otherwise, the app is not served on those hostnames."""
    availabilityState: Union[str, "SiteAvailabilityState"]
    """Management information availability state for the app. Known values are: \"Normal\",
     \"Limited\", and \"DisasterRecoveryMode\"."""
    hostNameSslStates: list["HostNameSslState"]
    """Hostname SSL states are used to manage the SSL bindings for app's hostnames."""
    serverFarmId: str
    """Resource ID of the associated App Service plan, formatted as:
     \"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}\"."""
    reserved: bool
    """<code>true</code> if reserved; otherwise, <code>false</code>."""
    isXenon: bool
    """Obsolete: Hyper-V sandbox."""
    hyperV: bool
    """Hyper-V sandbox."""
    lastModifiedTimeUtc: str
    """Last time the app was modified, in UTC. Read-only."""
    dnsConfiguration: "SiteDnsConfig"
    """Property to configure various DNS related settings for a site."""
    outboundVnetRouting: "OutboundVnetRouting"
    """Property to configure various outbound traffic routing options over virtual network for a site."""
    siteConfig: "SiteConfig"
    """Configuration of an App Service app. This property is not returned in response to normal create
     and read requests since it may contain sensitive information."""
    functionAppConfig: "FunctionAppConfig"
    """Configuration specific of the Azure Function app."""
    daprConfig: "DaprConfig"
    """Dapr configuration of the app."""
    workloadProfileName: str
    """Workload profile name for function app to execute on."""
    resourceConfig: "ResourceConfig"
    """Function app resource requirements."""
    trafficManagerHostNames: list[str]
    """Azure Traffic Manager hostnames associated with the app. Read-only."""
    scmSiteAlsoStopped: bool
    """<code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise,
     <code>false</code>. The default is <code>false</code>."""
    targetSwapSlot: str
    """Specifies which deployment slot this app will swap into. Read-only."""
    hostingEnvironmentProfile: "HostingEnvironmentProfile"
    """App Service Environment to use for the app."""
    clientAffinityEnabled: bool
    """<code>true</code> to enable client affinity; <code>false</code> to stop sending session
     affinity cookies, which route client requests in the same session to the same instance. Default
     is <code>true</code>."""
    clientAffinityPartitioningEnabled: bool
    """<code>true</code> to enable client affinity partitioning using CHIPS cookies, this will add the
     <code>partitioned</code> property to the affinity cookies; <code>false</code> to stop sending
     partitioned affinity cookies. Default is <code>false</code>."""
    clientAffinityProxyEnabled: bool
    """<code>true</code> to override client affinity cookie domain with X-Forwarded-Host request
     header. <code>false</code> to use default domain. Default is <code>false</code>."""
    clientCertEnabled: bool
    """<code>true</code> to enable client certificate authentication (TLS mutual authentication);
     otherwise, <code>false</code>. Default is <code>false</code>."""
    clientCertMode: Union[str, "ClientCertMode"]
    """This composes with ClientCertEnabled setting.
 
      * ClientCertEnabled: false means ClientCert is ignored.
      * ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
      * ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or
        accepted. Known values are: \"Required\", \"Optional\", and \"OptionalInteractiveUser\"."""
    clientCertExclusionPaths: str
    """client certificate authentication comma-separated exclusion paths."""
    ipMode: Union[str, "IPMode"]
    """Specifies the IP mode of the app. Known values are: \"IPv4\", \"IPv6\", and \"IPv4AndIPv6\"."""
    endToEndEncryptionEnabled: bool
    """Whether to use end to end encryption between the FrontEnd and the Worker."""
    sshEnabled: bool
    """Whether to enable ssh access."""
    hostNamesDisabled: bool
    """<code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>. If
     <code>true</code>, the app is only accessible via API management process."""
    customDomainVerificationId: str
    """Unique identifier that verifies the custom domains assigned to the app. Customer will add this
     id to a txt record for verification."""
    outboundIpAddresses: str
    """List of IP addresses that the app uses for outbound connections (e.g. database access).
     Includes VIPs from tenants that site can be hosted with current settings. Read-only."""
    possibleOutboundIpAddresses: str
    """List of IP addresses that the app uses for outbound connections (e.g. database access).
     Includes VIPs from all tenants except dataComponent. Read-only."""
    containerSize: int
    """Size of the function container."""
    dailyMemoryTimeQuota: int
    """Maximum allowed daily memory-time quota (applicable on dynamic apps only)."""
    suspendedTill: str
    """App suspended till in case memory-time quota is exceeded."""
    maxNumberOfWorkers: int
    """Maximum number of workers. This only applies to Functions container."""
    cloningInfo: "CloningInfo"
    """If specified during app creation, the app is cloned from a source app."""
    resourceGroup: str
    """Name of the resource group the app belongs to. Read-only."""
    isDefaultContainer: bool
    """<code>true</code> if the app is a default container; otherwise, <code>false</code>."""
    defaultHostName: str
    """Default hostname of the app. Read-only."""
    slotSwapStatus: "SlotSwapStatus"
    """Status of the last deployment slot swap operation."""
    httpsOnly: bool
    """HttpsOnly: configures a web site to accept only https requests. Issues redirect for http
     requests."""
    redundancyMode: Union[str, "RedundancyMode"]
    """Site redundancy mode. Known values are: \"None\", \"Manual\", \"Failover\", \"ActiveActive\",
     and \"GeoRedundant\"."""
    inProgressOperationId: str
    """Specifies an operation id if this site has a pending operation."""
    publicNetworkAccess: str
    """Property to allow or block all public traffic. Allowed Values: 'Enabled', 'Disabled' or an
     empty string."""
    storageAccountRequired: bool
    """Checks if Customer provided storage account is required."""
    keyVaultReferenceIdentity: str
    """Identity to use for Key Vault Reference authentication."""
    autoGeneratedDomainNameLabelScope: Union[str, "AutoGeneratedDomainNameLabelScope"]
    """Specifies the scope of uniqueness for the default hostname during resource creation. Known
     values are: \"TenantReuse\", \"SubscriptionReuse\", \"ResourceGroupReuse\", and \"NoReuse\"."""
    virtualNetworkSubnetId: str
    """Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET
     Integration. This must be of the form
     /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}."""
    managedEnvironmentId: str
    """Azure Resource Manager ID of the customer's selected Managed Environment on which to host this
     app. This must be of the form
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/managedEnvironments/{managedEnvironmentName}."""
    sku: str
    """Current SKU of application based on associated App Service Plan. Some valid SKU values are
     Free, Shared, Basic, Dynamic, FlexConsumption, Standard, Premium, PremiumV2, PremiumV3,
     Isolated, IsolatedV2."""


class SiteSourceControl(ProxyResource):
    """Source control configuration for an app.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: SiteSourceControl resource specific properties.
    :vartype properties: "SiteSourceControlProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "SiteSourceControlProperties"
    """SiteSourceControl resource specific properties."""
    kind: str
    """Kind of resource."""


class SiteSourceControlProperties(TypedDict, total=False):
    """SiteSourceControl resource specific properties.

    :ivar repo_url: Repository or source control URL.
    :vartype repo_url: str
    :ivar branch: Name of branch to use for deployment.
    :vartype branch: str
    :ivar is_manual_integration: <code>true</code> to limit to manual integration;
     <code>false</code> to enable continuous integration (which configures webhooks into online
     repos like GitHub).
    :vartype is_manual_integration: bool
    :ivar is_git_hub_action: <code>true</code> if this is deployed via GitHub action.
    :vartype is_git_hub_action: bool
    :ivar deployment_rollback_enabled: <code>true</code> to enable deployment rollback; otherwise,
     <code>false</code>.
    :vartype deployment_rollback_enabled: bool
    :ivar is_mercurial: <code>true</code> for a Mercurial repository; <code>false</code> for a Git
     repository.
    :vartype is_mercurial: bool
    :ivar git_hub_action_configuration: If GitHub Action is selected, than the associated
     configuration.
    :vartype git_hub_action_configuration: "GitHubActionConfiguration"
    """

    repoUrl: str
    """Repository or source control URL."""
    branch: str
    """Name of branch to use for deployment."""
    isManualIntegration: bool
    """<code>true</code> to limit to manual integration; <code>false</code> to enable continuous
     integration (which configures webhooks into online repos like GitHub)."""
    isGitHubAction: bool
    """<code>true</code> if this is deployed via GitHub action."""
    deploymentRollbackEnabled: bool
    """<code>true</code> to enable deployment rollback; otherwise, <code>false</code>."""
    isMercurial: bool
    """<code>true</code> for a Mercurial repository; <code>false</code> for a Git repository."""
    gitHubActionConfiguration: "GitHubActionConfiguration"
    """If GitHub Action is selected, than the associated configuration."""


class SkuCapacity(TypedDict, total=False):
    """Description of the App Service plan scale options.

    :ivar minimum: Minimum number of workers for this App Service plan SKU.
    :vartype minimum: int
    :ivar maximum: Maximum number of workers for this App Service plan SKU.
    :vartype maximum: int
    :ivar elastic_maximum: Maximum number of Elastic workers for this App Service plan SKU.
    :vartype elastic_maximum: int
    :ivar default: Default number of workers for this App Service plan SKU.
    :vartype default: int
    :ivar scale_type: Available scale configurations for an App Service plan.
    :vartype scale_type: str
    """

    minimum: int
    """Minimum number of workers for this App Service plan SKU."""
    maximum: int
    """Maximum number of workers for this App Service plan SKU."""
    elasticMaximum: int
    """Maximum number of Elastic workers for this App Service plan SKU."""
    default: int
    """Default number of workers for this App Service plan SKU."""
    scaleType: str
    """Available scale configurations for an App Service plan."""


class SkuDescription(TypedDict, total=False):
    """Description of a SKU for a scalable resource.

    :ivar name: Name of the resource SKU.
    :vartype name: str
    :ivar tier: Service tier of the resource SKU.
    :vartype tier: str
    :ivar size: Size specifier of the resource SKU.
    :vartype size: str
    :ivar family: Family code of the resource SKU.
    :vartype family: str
    :ivar capacity: Current number of instances assigned to the resource.
    :vartype capacity: int
    :ivar sku_capacity: Min, max, and default scale values of the SKU.
    :vartype sku_capacity: "SkuCapacity"
    :ivar locations: Locations of the SKU.
    :vartype locations: list[str]
    :ivar capabilities: Capabilities of the SKU, e.g., is traffic manager enabled?.
    :vartype capabilities: list["Capability"]
    """

    name: str
    """Name of the resource SKU."""
    tier: str
    """Service tier of the resource SKU."""
    size: str
    """Size specifier of the resource SKU."""
    family: str
    """Family code of the resource SKU."""
    capacity: int
    """Current number of instances assigned to the resource."""
    skuCapacity: "SkuCapacity"
    """Min, max, and default scale values of the SKU."""
    locations: list[str]
    """Locations of the SKU."""
    capabilities: list["Capability"]
    """Capabilities of the SKU, e.g., is traffic manager enabled?."""


class SlotConfigNames(TypedDict, total=False):
    """Names for connection strings, application settings, and external Azure storage account
    configuration identifiers to be marked as sticky to the deployment slot and not moved during a
    swap operation. This is valid for all deployment slots in an app.

    :ivar connection_string_names: List of connection string names.
    :vartype connection_string_names: list[str]
    :ivar app_setting_names: List of application settings names.
    :vartype app_setting_names: list[str]
    :ivar azure_storage_config_names: List of external Azure storage account identifiers.
    :vartype azure_storage_config_names: list[str]
    """

    connectionStringNames: list[str]
    """List of connection string names."""
    appSettingNames: list[str]
    """List of application settings names."""
    azureStorageConfigNames: list[str]
    """List of external Azure storage account identifiers."""


class SlotConfigNamesResource(ProxyResource):
    """Slot Config names azure resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Core resource properties.
    :vartype properties: "SlotConfigNames"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "SlotConfigNames"
    """Core resource properties."""
    kind: str
    """Kind of resource."""


class SlotSwapStatus(TypedDict, total=False):
    """The status of the last successful slot swap operation.

    :ivar timestamp_utc: The time the last successful slot swap completed.
    :vartype timestamp_utc: str
    :ivar source_slot_name: The source slot of the last swap operation.
    :vartype source_slot_name: str
    :ivar destination_slot_name: The destination slot of the last swap operation.
    :vartype destination_slot_name: str
    """

    timestampUtc: str
    """The time the last successful slot swap completed."""
    sourceSlotName: str
    """The source slot of the last swap operation."""
    destinationSlotName: str
    """The destination slot of the last swap operation."""


class SlowRequestsBasedTrigger(TypedDict, total=False):
    """Trigger based on request execution time.

    :ivar time_taken: Time taken.
    :vartype time_taken: str
    :ivar path: Request Path.
    :vartype path: str
    :ivar count: Request Count.
    :vartype count: int
    :ivar time_interval: Time interval.
    :vartype time_interval: str
    """

    timeTaken: str
    """Time taken."""
    path: str
    """Request Path."""
    count: int
    """Request Count."""
    timeInterval: str
    """Time interval."""


class SnapshotRecoverySource(TypedDict, total=False):
    """Specifies the web app that snapshot contents will be retrieved from.

    :ivar location: Geographical location of the source web app, e.g. SouthEastAsia,
     SouthCentralUS.
    :vartype location: str
    :ivar id: ARM resource ID of the source app.
     /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}
     for production slots and
     /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName}
     for other slots.
    :vartype id: str
    """

    location: str
    """Geographical location of the source web app, e.g. SouthEastAsia, SouthCentralUS."""
    id: str
    """ARM resource ID of the source app.
     /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}
     for production slots and
     /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName}
     for other slots."""


class SnapshotRestoreRequest(ProxyOnlyResource):
    """Details about app recovery operation.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: SnapshotRestoreRequest resource specific properties.
    :vartype properties: "SnapshotRestoreRequestProperties"
    """

    properties: "SnapshotRestoreRequestProperties"
    """SnapshotRestoreRequest resource specific properties."""


class SnapshotRestoreRequestProperties(TypedDict, total=False):
    """SnapshotRestoreRequest resource specific properties.

    :ivar snapshot_time: Point in time in which the app restore should be done, formatted as a
     DateTime string.
    :vartype snapshot_time: str
    :ivar recovery_source: Optional. Specifies the web app that snapshot contents will be retrieved
     from. If empty, the targeted web app will be used as the source.
    :vartype recovery_source: "SnapshotRecoverySource"
    :ivar overwrite: If <code>true</code> the restore operation can overwrite source app;
     otherwise, <code>false</code>. Required.
    :vartype overwrite: bool
    :ivar recover_configuration: If true, site configuration, in addition to content, will be
     reverted.
    :vartype recover_configuration: bool
    :ivar ignore_conflicting_host_names: If true, custom hostname conflicts will be ignored when
     recovering to a target web app. This setting is only necessary when RecoverConfiguration is
     enabled.
    :vartype ignore_conflicting_host_names: bool
    :ivar use_dr_secondary: If true, the snapshot is retrieved from DRSecondary endpoint.
    :vartype use_dr_secondary: bool
    """

    snapshotTime: str
    """Point in time in which the app restore should be done, formatted as a DateTime string."""
    recoverySource: "SnapshotRecoverySource"
    """Optional. Specifies the web app that snapshot contents will be retrieved from. If empty, the
     targeted web app will be used as the source."""
    overwrite: Required[bool]
    """If <code>true</code> the restore operation can overwrite source app; otherwise,
     <code>false</code>. Required."""
    recoverConfiguration: bool
    """If true, site configuration, in addition to content, will be reverted."""
    ignoreConflictingHostNames: bool
    """If true, custom hostname conflicts will be ignored when recovering to a target web app. This
     setting is only necessary when RecoverConfiguration is enabled."""
    useDRSecondary: bool
    """If true, the snapshot is retrieved from DRSecondary endpoint."""


class SourceControl(ProxyResource):
    """The source control OAuth token.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: SourceControl resource specific properties.
    :vartype properties: "SourceControlProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "SourceControlProperties"
    """SourceControl resource specific properties."""
    kind: str
    """Kind of resource."""


class SourceControlProperties(TypedDict, total=False):
    """SourceControl resource specific properties.

    :ivar token: OAuth access token.
    :vartype token: str
    :ivar token_secret: OAuth access token secret.
    :vartype token_secret: str
    :ivar refresh_token: OAuth refresh token.
    :vartype refresh_token: str
    :ivar expiration_time: OAuth token expiration.
    :vartype expiration_time: str
    """

    token: str
    """OAuth access token."""
    tokenSecret: str
    """OAuth access token secret."""
    refreshToken: str
    """OAuth refresh token."""
    expirationTime: str
    """OAuth token expiration."""


class StaticSite(TypedDict, total=False):
    """A static site.

    :ivar default_hostname: The default autogenerated hostname for the static site.
    :vartype default_hostname: str
    :ivar repository_url: URL for the repository of the static site.
    :vartype repository_url: str
    :ivar branch: The target branch in the repository.
    :vartype branch: str
    :ivar custom_domains: The custom domains associated with this static site.
    :vartype custom_domains: list[str]
    :ivar repository_token: A user's github repository token. This is used to setup the Github
     Actions workflow file and API secrets.
    :vartype repository_token: str
    :ivar build_properties: Build properties to configure on the repository.
    :vartype build_properties: "StaticSiteBuildProperties"
    :ivar private_endpoint_connections: Private endpoint connections.
    :vartype private_endpoint_connections:
     list["ResponseMessageEnvelopeRemotePrivateEndpointConnection"]
    :ivar staging_environment_policy: State indicating whether staging environments are allowed or
     not allowed for a static web app. Known values are: "Enabled" and "Disabled".
    :vartype staging_environment_policy: Union[str, "StagingEnvironmentPolicy"]
    :ivar allow_config_file_updates: <code>false</code> if config file is locked for this static
     web app; otherwise, <code>true</code>.
    :vartype allow_config_file_updates: bool
    :ivar template_properties: Template options for generating a new repository.
    :vartype template_properties: "StaticSiteTemplateOptions"
    :ivar content_distribution_endpoint: The content distribution endpoint for the static site.
    :vartype content_distribution_endpoint: str
    :ivar key_vault_reference_identity: Identity to use for Key Vault Reference authentication.
    :vartype key_vault_reference_identity: str
    :ivar user_provided_function_apps: User provided function apps registered with the static site.
    :vartype user_provided_function_apps: list["StaticSiteUserProvidedFunctionApp"]
    :ivar linked_backends: Backends linked to the static side.
    :vartype linked_backends: list["StaticSiteLinkedBackend"]
    :ivar provider: The provider that submitted the last deployment to the primary environment of
     the static site.
    :vartype provider: str
    :ivar enterprise_grade_cdn_status: State indicating the status of the enterprise grade CDN
     serving traffic to the static web app. Known values are: "Enabled", "Enabling", "Disabled", and
     "Disabling".
    :vartype enterprise_grade_cdn_status: Union[str, "EnterpriseGradeCdnStatus"]
    :ivar public_network_access: State indicating whether public traffic are allowed or not for a
     static web app. Allowed Values: 'Enabled', 'Disabled' or an empty string.
    :vartype public_network_access: str
    :ivar database_connections: Database connections for the static site.
    :vartype database_connections: list["DatabaseConnectionOverview"]
    """

    defaultHostname: str
    """The default autogenerated hostname for the static site."""
    repositoryUrl: str
    """URL for the repository of the static site."""
    branch: str
    """The target branch in the repository."""
    customDomains: list[str]
    """The custom domains associated with this static site."""
    repositoryToken: str
    """A user's github repository token. This is used to setup the Github Actions workflow file and
     API secrets."""
    buildProperties: "StaticSiteBuildProperties"
    """Build properties to configure on the repository."""
    privateEndpointConnections: list["ResponseMessageEnvelopeRemotePrivateEndpointConnection"]
    """Private endpoint connections."""
    stagingEnvironmentPolicy: Union[str, "StagingEnvironmentPolicy"]
    """State indicating whether staging environments are allowed or not allowed for a static web app.
     Known values are: \"Enabled\" and \"Disabled\"."""
    allowConfigFileUpdates: bool
    """<code>false</code> if config file is locked for this static web app; otherwise,
     <code>true</code>."""
    templateProperties: "StaticSiteTemplateOptions"
    """Template options for generating a new repository."""
    contentDistributionEndpoint: str
    """The content distribution endpoint for the static site."""
    keyVaultReferenceIdentity: str
    """Identity to use for Key Vault Reference authentication."""
    userProvidedFunctionApps: list["StaticSiteUserProvidedFunctionApp"]
    """User provided function apps registered with the static site."""
    linkedBackends: list["StaticSiteLinkedBackend"]
    """Backends linked to the static side."""
    provider: str
    """The provider that submitted the last deployment to the primary environment of the static site."""
    enterpriseGradeCdnStatus: Union[str, "EnterpriseGradeCdnStatus"]
    """State indicating the status of the enterprise grade CDN serving traffic to the static web app.
     Known values are: \"Enabled\", \"Enabling\", \"Disabled\", and \"Disabling\"."""
    publicNetworkAccess: str
    """State indicating whether public traffic are allowed or not for a static web app. Allowed
     Values: 'Enabled', 'Disabled' or an empty string."""
    databaseConnections: list["DatabaseConnectionOverview"]
    """Database connections for the static site."""


class StaticSiteARMResource(TrackedResource):
    """Concrete tracked resource types can be created by aliasing this type using a specific property
    type.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar tags: Resource tags.
    :vartype tags: dict[str, str]
    :ivar location: The geo-location where the resource lives. Required.
    :vartype location: str
    :ivar properties: Core resource properties.
    :vartype properties: "StaticSite"
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar sku: Description of a SKU for a scalable resource.
    :vartype sku: "SkuDescription"
    :ivar identity: Managed service identity.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "StaticSite"
    """Core resource properties."""
    kind: str
    """Kind of resource."""
    sku: "SkuDescription"
    """Description of a SKU for a scalable resource."""
    identity: "ManagedServiceIdentity"
    """Managed service identity."""


class StaticSiteBasicAuthPropertiesARMResource(ProxyResource):
    """Static site basic auth properties ARM resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: StaticSiteBasicAuthPropertiesARMResource resource specific properties.
    :vartype properties: "StaticSiteBasicAuthPropertiesARMResourceProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "StaticSiteBasicAuthPropertiesARMResourceProperties"
    """StaticSiteBasicAuthPropertiesARMResource resource specific properties."""
    kind: str
    """Kind of resource."""


class StaticSiteBasicAuthPropertiesARMResourceProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """StaticSiteBasicAuthPropertiesARMResource resource specific properties.

    :ivar password: The password for basic auth.
    :vartype password: str
    :ivar secret_url: Url to the secret in Key Vault.
    :vartype secret_url: str
    :ivar applicable_environments_mode: State indicating if basic auth is enabled and for what
     environments it is active. Required.
    :vartype applicable_environments_mode: str
    :ivar environments: The list of enabled environments for Basic Auth if
     ApplicableEnvironmentsMode is set to SpecifiedEnvironments.
    :vartype environments: list[str]
    :ivar secret_state: State indicating if basic auth has a secret and what type it is.
    :vartype secret_state: str
    """

    password: str
    """The password for basic auth."""
    secretUrl: str
    """Url to the secret in Key Vault."""
    applicableEnvironmentsMode: Required[str]
    """State indicating if basic auth is enabled and for what environments it is active. Required."""
    environments: list[str]
    """The list of enabled environments for Basic Auth if ApplicableEnvironmentsMode is set to
     SpecifiedEnvironments."""
    secretState: str
    """State indicating if basic auth has a secret and what type it is."""


class StaticSiteBuildProperties(TypedDict, total=False):
    """Build properties for the static site.

    :ivar app_location: The path to the app code within the repository.
    :vartype app_location: str
    :ivar api_location: The path to the api code within the repository.
    :vartype api_location: str
    :ivar app_artifact_location: Deprecated: The path of the app artifacts after building
     (deprecated in favor of OutputLocation).
    :vartype app_artifact_location: str
    :ivar output_location: The output path of the app after building.
    :vartype output_location: str
    :ivar app_build_command: A custom command to run during deployment of the static content
     application.
    :vartype app_build_command: str
    :ivar api_build_command: A custom command to run during deployment of the Azure Functions API
     application.
    :vartype api_build_command: str
    :ivar skip_github_action_workflow_generation: Skip Github Action workflow generation.
    :vartype skip_github_action_workflow_generation: bool
    :ivar github_action_secret_name_override: Github Action secret name override.
    :vartype github_action_secret_name_override: str
    """

    appLocation: str
    """The path to the app code within the repository."""
    apiLocation: str
    """The path to the api code within the repository."""
    appArtifactLocation: str
    """Deprecated: The path of the app artifacts after building (deprecated in favor of
     OutputLocation)."""
    outputLocation: str
    """The output path of the app after building."""
    appBuildCommand: str
    """A custom command to run during deployment of the static content application."""
    apiBuildCommand: str
    """A custom command to run during deployment of the Azure Functions API application."""
    skipGithubActionWorkflowGeneration: bool
    """Skip Github Action workflow generation."""
    githubActionSecretNameOverride: str
    """Github Action secret name override."""


class StaticSiteCustomDomainRequestPropertiesARMResource(ProxyOnlyResource):  # pylint: disable=name-too-long
    """Static Site Custom Domain Request Properties ARM resource.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: StaticSiteCustomDomainRequestPropertiesARMResource resource specific
     properties.
    :vartype properties: "StaticSiteCustomDomainRequestPropertiesARMResourceProperties"
    """

    properties: "StaticSiteCustomDomainRequestPropertiesARMResourceProperties"
    """StaticSiteCustomDomainRequestPropertiesARMResource resource specific properties."""


class StaticSiteCustomDomainRequestPropertiesARMResourceProperties(
    TypedDict, total=False
):  # pylint: disable=name-too-long
    """StaticSiteCustomDomainRequestPropertiesARMResource resource specific properties.

    :ivar validation_method: Validation method for adding a custom domain.
    :vartype validation_method: str
    """

    validationMethod: str
    """Validation method for adding a custom domain."""


class StaticSiteDatabaseConnectionConfigurationFileOverview(TypedDict, total=False):  # pylint: disable=name-too-long
    """A database connection configuration file.

    :ivar file_name: The name of the configuration file.
    :vartype file_name: str
    :ivar contents: The Base64 encoding of the file contents.
    :vartype contents: str
    :ivar type: The type of configuration file.
    :vartype type: str
    """

    fileName: str
    """The name of the configuration file."""
    contents: str
    """The Base64 encoding of the file contents."""
    type: str
    """The type of configuration file."""


class StaticSiteLinkedBackend(TypedDict, total=False):
    """Static Site Linked Backend ARM resource.

    :ivar backend_resource_id: The resource id of the backend linked to the static site.
    :vartype backend_resource_id: str
    :ivar region: The region of the backend linked to the static site.
    :vartype region: str
    :ivar created_on: The date and time on which the backend was linked to the static site.
    :vartype created_on: str
    :ivar provisioning_state: The provisioning state of the linking process.
    :vartype provisioning_state: str
    """

    backendResourceId: str
    """The resource id of the backend linked to the static site."""
    region: str
    """The region of the backend linked to the static site."""
    createdOn: str
    """The date and time on which the backend was linked to the static site."""
    provisioningState: str
    """The provisioning state of the linking process."""


class StaticSiteLinkedBackendARMResource(ProxyResource):
    """Static Site Linked Backend ARM resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: StaticSiteLinkedBackendARMResource resource specific properties.
    :vartype properties: "StaticSiteLinkedBackendARMResourceProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "StaticSiteLinkedBackendARMResourceProperties"
    """StaticSiteLinkedBackendARMResource resource specific properties."""
    kind: str
    """Kind of resource."""


class StaticSiteLinkedBackendARMResourceProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """StaticSiteLinkedBackendARMResource resource specific properties.

    :ivar backend_resource_id: The resource id of the backend linked to the static site.
    :vartype backend_resource_id: str
    :ivar region: The region of the backend linked to the static site.
    :vartype region: str
    :ivar created_on: The date and time on which the backend was linked to the static site.
    :vartype created_on: str
    :ivar provisioning_state: The provisioning state of the linking process.
    :vartype provisioning_state: str
    """

    backendResourceId: str
    """The resource id of the backend linked to the static site."""
    region: str
    """The region of the backend linked to the static site."""
    createdOn: str
    """The date and time on which the backend was linked to the static site."""
    provisioningState: str
    """The provisioning state of the linking process."""


class StaticSitePatchResource(ProxyOnlyResource):
    """ARM resource for a static site when patching.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: Core resource properties.
    :vartype properties: "StaticSite"
    """

    properties: "StaticSite"
    """Core resource properties."""


class StaticSiteResetPropertiesARMResource(ProxyOnlyResource):
    """Static Site Reset Properties ARM resource.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: StaticSiteResetPropertiesARMResource resource specific properties.
    :vartype properties: "StaticSiteResetPropertiesARMResourceProperties"
    """

    properties: "StaticSiteResetPropertiesARMResourceProperties"
    """StaticSiteResetPropertiesARMResource resource specific properties."""


class StaticSiteResetPropertiesARMResourceProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """StaticSiteResetPropertiesARMResource resource specific properties.

    :ivar repository_token: The token which proves admin privileges to the repository.
    :vartype repository_token: str
    :ivar should_update_repository: Determines whether the repository should be updated with the
     new properties.
    :vartype should_update_repository: bool
    """

    repositoryToken: str
    """The token which proves admin privileges to the repository."""
    shouldUpdateRepository: bool
    """Determines whether the repository should be updated with the new properties."""


class StaticSitesWorkflowPreviewRequest(ProxyOnlyResource):
    """Request entity for previewing the Static Site workflow.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: StaticSitesWorkflowPreviewRequest resource specific properties.
    :vartype properties: "StaticSitesWorkflowPreviewRequestProperties"
    """

    properties: "StaticSitesWorkflowPreviewRequestProperties"
    """StaticSitesWorkflowPreviewRequest resource specific properties."""


class StaticSitesWorkflowPreviewRequestProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """StaticSitesWorkflowPreviewRequest resource specific properties.

    :ivar repository_url: URL for the repository of the static site.
    :vartype repository_url: str
    :ivar branch: The target branch in the repository.
    :vartype branch: str
    :ivar build_properties: Build properties to configure on the repository.
    :vartype build_properties: "StaticSiteBuildProperties"
    """

    repositoryUrl: str
    """URL for the repository of the static site."""
    branch: str
    """The target branch in the repository."""
    buildProperties: "StaticSiteBuildProperties"
    """Build properties to configure on the repository."""


class StaticSiteTemplateOptions(TypedDict, total=False):
    """Template Options for the static site.

    :ivar template_repository_url: URL of the template repository. The newly generated repository
     will be based on this one.
    :vartype template_repository_url: str
    :ivar owner: Owner of the newly generated repository.
    :vartype owner: str
    :ivar repository_name: Name of the newly generated repository.
    :vartype repository_name: str
    :ivar description: Description of the newly generated repository.
    :vartype description: str
    :ivar is_private: Whether or not the newly generated repository is a private repository.
     Defaults to false (i.e. public).
    :vartype is_private: bool
    """

    templateRepositoryUrl: str
    """URL of the template repository. The newly generated repository will be based on this one."""
    owner: str
    """Owner of the newly generated repository."""
    repositoryName: str
    """Name of the newly generated repository."""
    description: str
    """Description of the newly generated repository."""
    isPrivate: bool
    """Whether or not the newly generated repository is a private repository. Defaults to false (i.e.
     public)."""


class StaticSiteUserARMResource(ProxyOnlyResource):
    """Static Site User ARM resource.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: StaticSiteUserARMResource resource specific properties.
    :vartype properties: "StaticSiteUserARMResourceProperties"
    """

    properties: "StaticSiteUserARMResourceProperties"
    """StaticSiteUserARMResource resource specific properties."""


class StaticSiteUserARMResourceProperties(TypedDict, total=False):
    """StaticSiteUserARMResource resource specific properties.

    :ivar provider: The identity provider for the static site user.
    :vartype provider: str
    :ivar user_id: The user id for the static site user.
    :vartype user_id: str
    :ivar display_name: The display name for the static site user.
    :vartype display_name: str
    :ivar roles: The roles for the static site user, in free-form string format.
    :vartype roles: str
    """

    provider: str
    """The identity provider for the static site user."""
    userId: str
    """The user id for the static site user."""
    displayName: str
    """The display name for the static site user."""
    roles: str
    """The roles for the static site user, in free-form string format."""


class StaticSiteUserInvitationRequestResource(ProxyOnlyResource):
    """Static sites user roles invitation resource.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: StaticSiteUserInvitationRequestResource resource specific properties.
    :vartype properties: "StaticSiteUserInvitationRequestResourceProperties"
    """

    properties: "StaticSiteUserInvitationRequestResourceProperties"
    """StaticSiteUserInvitationRequestResource resource specific properties."""


class StaticSiteUserInvitationRequestResourceProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """StaticSiteUserInvitationRequestResource resource specific properties.

    :ivar domain: The domain name for the static site custom domain.
    :vartype domain: str
    :ivar provider: The identity provider for the static site user.
    :vartype provider: str
    :ivar user_details: The user id for the static site user.
    :vartype user_details: str
    :ivar roles: The roles for the static site user, in free-form string format.
    :vartype roles: str
    :ivar num_hours_to_expiration: The number of hours the sas token stays valid.
    :vartype num_hours_to_expiration: int
    """

    domain: str
    """The domain name for the static site custom domain."""
    provider: str
    """The identity provider for the static site user."""
    userDetails: str
    """The user id for the static site user."""
    roles: str
    """The roles for the static site user, in free-form string format."""
    numHoursToExpiration: int
    """The number of hours the sas token stays valid."""


class StaticSiteUserProvidedFunctionApp(ProxyOnlyResource):
    """A static site user provided function.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: StaticSiteUserProvidedFunctionApp resource specific properties.
    :vartype properties: "StaticSiteUserProvidedFunctionAppProperties"
    """

    properties: "StaticSiteUserProvidedFunctionAppProperties"
    """StaticSiteUserProvidedFunctionApp resource specific properties."""


class StaticSiteUserProvidedFunctionAppARMResource(ProxyResource):  # pylint: disable=name-too-long
    """Static Site User Provided Function App ARM resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: StaticSiteUserProvidedFunctionAppARMResource resource specific properties.
    :vartype properties: "StaticSiteUserProvidedFunctionAppARMResourceProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "StaticSiteUserProvidedFunctionAppARMResourceProperties"
    """StaticSiteUserProvidedFunctionAppARMResource resource specific properties."""
    kind: str
    """Kind of resource."""


class StaticSiteUserProvidedFunctionAppARMResourceProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """StaticSiteUserProvidedFunctionAppARMResource resource specific properties.

    :ivar function_app_resource_id: The resource id of the function app registered with the static
     site.
    :vartype function_app_resource_id: str
    :ivar function_app_region: The region of the function app registered with the static site.
    :vartype function_app_region: str
    :ivar created_on: The date and time on which the function app was registered with the static
     site.
    :vartype created_on: str
    """

    functionAppResourceId: str
    """The resource id of the function app registered with the static site."""
    functionAppRegion: str
    """The region of the function app registered with the static site."""
    createdOn: str
    """The date and time on which the function app was registered with the static site."""


class StaticSiteUserProvidedFunctionAppProperties(TypedDict, total=False):  # pylint: disable=name-too-long
    """StaticSiteUserProvidedFunctionApp resource specific properties.

    :ivar function_app_resource_id: The resource id of the function app registered with the static
     site.
    :vartype function_app_resource_id: str
    :ivar function_app_region: The region of the function app registered with the static site.
    :vartype function_app_region: str
    :ivar created_on: The date and time on which the function app was registered with the static
     site.
    :vartype created_on: str
    """

    functionAppResourceId: str
    """The resource id of the function app registered with the static site."""
    functionAppRegion: str
    """The region of the function app registered with the static site."""
    createdOn: str
    """The date and time on which the function app was registered with the static site."""


class StaticSiteZipDeployment(TypedDict, total=False):
    """A static site zip deployment.

    :ivar app_zip_url: URL for the zipped app content.
    :vartype app_zip_url: str
    :ivar api_zip_url: URL for the zipped api content.
    :vartype api_zip_url: str
    :ivar deployment_title: A title to label the deployment.
    :vartype deployment_title: str
    :ivar provider: The provider submitting this deployment.
    :vartype provider: str
    :ivar function_language: The language of the api content, if it exists.
    :vartype function_language: str
    """

    appZipUrl: str
    """URL for the zipped app content."""
    apiZipUrl: str
    """URL for the zipped api content."""
    deploymentTitle: str
    """A title to label the deployment."""
    provider: str
    """The provider submitting this deployment."""
    functionLanguage: str
    """The language of the api content, if it exists."""


class StaticSiteZipDeploymentARMResource(ProxyOnlyResource):
    """Static site zip deployment ARM resource.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: Core resource properties.
    :vartype properties: "StaticSiteZipDeployment"
    """

    properties: "StaticSiteZipDeployment"
    """Core resource properties."""


class StatusCodesBasedTrigger(TypedDict, total=False):
    """Trigger based on status code.

    :ivar status: HTTP status code.
    :vartype status: int
    :ivar sub_status: Request Sub Status.
    :vartype sub_status: int
    :ivar win32_status: Win32 error code.
    :vartype win32_status: int
    :ivar count: Request Count.
    :vartype count: int
    :ivar time_interval: Time interval.
    :vartype time_interval: str
    :ivar path: Request Path.
    :vartype path: str
    """

    status: int
    """HTTP status code."""
    subStatus: int
    """Request Sub Status."""
    win32Status: int
    """Win32 error code."""
    count: int
    """Request Count."""
    timeInterval: str
    """Time interval."""
    path: str
    """Request Path."""


class StatusCodesRangeBasedTrigger(TypedDict, total=False):
    """Trigger based on range of status codes.

    :ivar status_codes: HTTP status code.
    :vartype status_codes: str
    :ivar path:
    :vartype path: str
    :ivar count: Request Count.
    :vartype count: int
    :ivar time_interval: Time interval.
    :vartype time_interval: str
    """

    statusCodes: str
    """HTTP status code."""
    path: str
    count: int
    """Request Count."""
    timeInterval: str
    """Time interval."""


class StorageMigrationOptions(ProxyOnlyResource):
    """Options for app content migration.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: StorageMigrationOptions resource specific properties.
    :vartype properties: "StorageMigrationOptionsProperties"
    """

    properties: "StorageMigrationOptionsProperties"
    """StorageMigrationOptions resource specific properties."""


class StorageMigrationOptionsProperties(TypedDict, total=False):
    """StorageMigrationOptions resource specific properties.

    :ivar azurefiles_connection_string: AzureFiles connection string. Required.
    :vartype azurefiles_connection_string: str
    :ivar azurefiles_share: AzureFiles share. Required.
    :vartype azurefiles_share: str
    :ivar switch_site_after_migration: <code>true</code>if the app should be switched over;
     otherwise, <code>false</code>.
    :vartype switch_site_after_migration: bool
    :ivar block_write_access_to_site: <code>true</code> if the app should be read only during copy
     operation; otherwise, <code>false</code>.
    :vartype block_write_access_to_site: bool
    """

    azurefilesConnectionString: Required[str]
    """AzureFiles connection string. Required."""
    azurefilesShare: Required[str]
    """AzureFiles share. Required."""
    switchSiteAfterMigration: bool
    """<code>true</code>if the app should be switched over; otherwise, <code>false</code>."""
    blockWriteAccessToSite: bool
    """<code>true</code> if the app should be read only during copy operation; otherwise,
     <code>false</code>."""


class StorageMount(TypedDict, total=False):
    """Server farm storage mount configuration.

    :ivar name: Name of the storage mount.
    :vartype name: str
    :ivar type: Type of the storage mount. Known values are: "AzureFiles", "LocalStorage", and
     "FileShare".
    :vartype type: Union[str, "StorageMountType"]
    :ivar source: Source of the fileshare/storage.
    :vartype source: str
    :ivar destination_path: Path on worker where storage will be mounted.
    :vartype destination_path: str
    :ivar credentials_key_vault_reference: KV reference to the credentials to connect to the share.
    :vartype credentials_key_vault_reference: "KeyVaultReferenceWithStatus"
    """

    name: str
    """Name of the storage mount."""
    type: Union[str, "StorageMountType"]
    """Type of the storage mount. Known values are: \"AzureFiles\", \"LocalStorage\", and
     \"FileShare\"."""
    source: str
    """Source of the fileshare/storage."""
    destinationPath: str
    """Path on worker where storage will be mounted."""
    credentialsKeyVaultReference: "KeyVaultReferenceWithStatus"
    """KV reference to the credentials to connect to the share."""


class StringDictionary(ProxyOnlyResource):
    """String dictionary resource.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: Settings.
    :vartype properties: dict[str, str]
    """

    properties: dict[str, str]
    """Settings."""


class SwiftVirtualNetwork(ProxyResource):
    """Swift Virtual Network Contract. This is used to enable the new Swift way of doing virtual
    network integration.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: SwiftVirtualNetwork resource specific properties.
    :vartype properties: "SwiftVirtualNetworkProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "SwiftVirtualNetworkProperties"
    """SwiftVirtualNetwork resource specific properties."""
    kind: str
    """Kind of resource."""


class SwiftVirtualNetworkProperties(TypedDict, total=False):
    """SwiftVirtualNetwork resource specific properties.

    :ivar subnet_resource_id: The Virtual Network subnet's resource ID. This is the subnet that
     this Web App will join. This subnet must have a delegation to Microsoft.Web/serverFarms defined
     first.
    :vartype subnet_resource_id: str
    :ivar swift_supported: A flag that specifies if the scale unit this Web App is on supports
     Swift integration.
    :vartype swift_supported: bool
    """

    subnetResourceId: str
    """The Virtual Network subnet's resource ID. This is the subnet that this Web App will join. This
     subnet must have a delegation to Microsoft.Web/serverFarms defined first."""
    swiftSupported: bool
    """A flag that specifies if the scale unit this Web App is on supports Swift integration."""


class SystemData(TypedDict, total=False):
    """Metadata pertaining to creation and last modification of the resource.

    :ivar created_by: The identity that created the resource.
    :vartype created_by: str
    :ivar created_by_type: The type of identity that created the resource. Known values are:
     "User", "Application", "ManagedIdentity", and "Key".
    :vartype created_by_type: Union[str, "CreatedByType"]
    :ivar created_at: The timestamp of resource creation (UTC).
    :vartype created_at: str
    :ivar last_modified_by: The identity that last modified the resource.
    :vartype last_modified_by: str
    :ivar last_modified_by_type: The type of identity that last modified the resource. Known values
     are: "User", "Application", "ManagedIdentity", and "Key".
    :vartype last_modified_by_type: Union[str, "CreatedByType"]
    :ivar last_modified_at: The timestamp of resource last modification (UTC).
    :vartype last_modified_at: str
    """

    createdBy: str
    """The identity that created the resource."""
    createdByType: Union[str, "CreatedByType"]
    """The type of identity that created the resource. Known values are: \"User\", \"Application\",
     \"ManagedIdentity\", and \"Key\"."""
    createdAt: str
    """The timestamp of resource creation (UTC)."""
    lastModifiedBy: str
    """The identity that last modified the resource."""
    lastModifiedByType: Union[str, "CreatedByType"]
    """The type of identity that last modified the resource. Known values are: \"User\",
     \"Application\", \"ManagedIdentity\", and \"Key\"."""
    lastModifiedAt: str
    """The timestamp of resource last modification (UTC)."""


class TokenStore(TypedDict, total=False):
    """The configuration settings of the token store.

    :ivar enabled: <code>true</code> to durably store platform-specific security tokens that are
     obtained during login flows; otherwise, <code>false</code>. The default is <code>false</code>.
    :vartype enabled: bool
    :ivar token_refresh_extension_hours: The number of hours after session token expiration that a
     session token can be used to call the token refresh API. The default is 72 hours.
    :vartype token_refresh_extension_hours: float
    :ivar file_system: The configuration settings of the storage of the tokens if a file system is
     used.
    :vartype file_system: "FileSystemTokenStore"
    :ivar azure_blob_storage: The configuration settings of the storage of the tokens if blob
     storage is used.
    :vartype azure_blob_storage: "BlobStorageTokenStore"
    """

    enabled: bool
    """<code>true</code> to durably store platform-specific security tokens that are obtained during
     login flows; otherwise, <code>false</code>. The default is <code>false</code>."""
    tokenRefreshExtensionHours: float
    """The number of hours after session token expiration that a session token can be used to call the
     token refresh API. The default is 72 hours."""
    fileSystem: "FileSystemTokenStore"
    """The configuration settings of the storage of the tokens if a file system is used."""
    azureBlobStorage: "BlobStorageTokenStore"
    """The configuration settings of the storage of the tokens if blob storage is used."""


class Twitter(TypedDict, total=False):
    """The configuration settings of the Twitter provider.

    :ivar enabled: <code>false</code> if the Twitter provider should not be enabled despite the set
     registration; otherwise, <code>true</code>.
    :vartype enabled: bool
    :ivar registration: The configuration settings of the app registration for the Twitter
     provider.
    :vartype registration: "TwitterRegistration"
    """

    enabled: bool
    """<code>false</code> if the Twitter provider should not be enabled despite the set registration;
     otherwise, <code>true</code>."""
    registration: "TwitterRegistration"
    """The configuration settings of the app registration for the Twitter provider."""


class TwitterRegistration(TypedDict, total=False):
    """The configuration settings of the app registration for the Twitter provider.

    :ivar consumer_key: The OAuth 1.0a consumer key of the Twitter application used for sign-in.
     This setting is required for enabling Twitter Sign-In. Twitter Sign-In documentation:
     `https://dev.twitter.com/web/sign-in <https://dev.twitter.com/web/sign-in>`_.
    :vartype consumer_key: str
    :ivar consumer_secret_setting_name: The app setting name that contains the OAuth 1.0a consumer
     secret of the Twitter application used for sign-in.
    :vartype consumer_secret_setting_name: str
    """

    consumerKey: str
    """The OAuth 1.0a consumer key of the Twitter application used for sign-in. This setting is
     required for enabling Twitter Sign-In. Twitter Sign-In documentation:
     `https://dev.twitter.com/web/sign-in <https://dev.twitter.com/web/sign-in>`_."""
    consumerSecretSettingName: str
    """The app setting name that contains the OAuth 1.0a consumer secret of the Twitter application
     used for sign-in."""


class User(ProxyResource):
    """User credentials used for publishing activity.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: User resource specific properties.
    :vartype properties: "UserProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "UserProperties"
    """User resource specific properties."""
    kind: str
    """Kind of resource."""


class UserAssignedIdentity(TypedDict, total=False):
    """User Assigned identity.

    :ivar principal_id: Principal Id of user assigned identity.
    :vartype principal_id: str
    :ivar client_id: Client Id of user assigned identity.
    :vartype client_id: str
    """

    principalId: str
    """Principal Id of user assigned identity."""
    clientId: str
    """Client Id of user assigned identity."""


class UserProperties(TypedDict, total=False):
    """User resource specific properties.

    :ivar publishing_user_name: Username used for publishing. Required.
    :vartype publishing_user_name: str
    :ivar publishing_password: Password used for publishing.
    :vartype publishing_password: str
    :ivar publishing_password_hash: Password hash used for publishing.
    :vartype publishing_password_hash: str
    :ivar publishing_password_hash_salt: Password hash salt used for publishing.
    :vartype publishing_password_hash_salt: str
    :ivar scm_uri: Url of SCM site.
    :vartype scm_uri: str
    """

    publishingUserName: Required[str]
    """Username used for publishing. Required."""
    publishingPassword: str
    """Password used for publishing."""
    publishingPasswordHash: str
    """Password hash used for publishing."""
    publishingPasswordHashSalt: str
    """Password hash salt used for publishing."""
    scmUri: str
    """Url of SCM site."""


class ValidateProperties(TypedDict, total=False):
    """App properties used for validation.

    :ivar server_farm_id: ARM resource ID of an App Service plan that would host the app.
    :vartype server_farm_id: str
    :ivar sku_name: Name of the target SKU for the App Service plan.
    :vartype sku_name: str
    :ivar need_linux_workers: <code>true</code> if App Service plan is for Linux workers;
     otherwise, <code>false</code>.
    :vartype need_linux_workers: bool
    :ivar is_spot: <code>true</code> if App Service plan is for Spot instances; otherwise,
     <code>false</code>.
    :vartype is_spot: bool
    :ivar capacity: Target capacity of the App Service plan (number of VMs).
    :vartype capacity: int
    :ivar hosting_environment: Name of App Service Environment where app or App Service plan should
     be created.
    :vartype hosting_environment: str
    :ivar is_xenon: <code>true</code> if App Service plan is running as a windows container.
    :vartype is_xenon: bool
    :ivar container_registry_base_url: Base URL of the container registry.
    :vartype container_registry_base_url: str
    :ivar container_registry_username: Username for to access the container registry.
    :vartype container_registry_username: str
    :ivar container_registry_password: Password for to access the container registry.
    :vartype container_registry_password: str
    :ivar container_image_repository: Repository name (image name).
    :vartype container_image_repository: str
    :ivar container_image_tag: Image tag.
    :vartype container_image_tag: str
    :ivar container_image_platform: Platform (windows or linux).
    :vartype container_image_platform: str
    :ivar app_service_environment: App Service Environment Properties.
    :vartype app_service_environment: "AppServiceEnvironment"
    """

    serverFarmId: str
    """ARM resource ID of an App Service plan that would host the app."""
    skuName: str
    """Name of the target SKU for the App Service plan."""
    needLinuxWorkers: bool
    """<code>true</code> if App Service plan is for Linux workers; otherwise, <code>false</code>."""
    isSpot: bool
    """<code>true</code> if App Service plan is for Spot instances; otherwise, <code>false</code>."""
    capacity: int
    """Target capacity of the App Service plan (number of VMs)."""
    hostingEnvironment: str
    """Name of App Service Environment where app or App Service plan should be created."""
    isXenon: bool
    """<code>true</code> if App Service plan is running as a windows container."""
    containerRegistryBaseUrl: str
    """Base URL of the container registry."""
    containerRegistryUsername: str
    """Username for to access the container registry."""
    containerRegistryPassword: str
    """Password for to access the container registry."""
    containerImageRepository: str
    """Repository name (image name)."""
    containerImageTag: str
    """Image tag."""
    containerImagePlatform: str
    """Platform (windows or linux)."""
    appServiceEnvironment: "AppServiceEnvironment"
    """App Service Environment Properties."""


class ValidateRequest(TypedDict, total=False):
    """Resource validation request content.

    :ivar name: Resource name to verify. Required.
    :vartype name: str
    :ivar type: Resource type used for verification. Required. Known values are: "ServerFarm",
     "Site", and "Microsoft.Web/hostingEnvironments".
    :vartype type: Union[str, "ValidateResourceTypes"]
    :ivar location: Expected location of the resource. Required.
    :vartype location: str
    :ivar properties: Properties of the resource to validate. Required.
    :vartype properties: "ValidateProperties"
    """

    name: Required[str]
    """Resource name to verify. Required."""
    type: Required[Union[str, "ValidateResourceTypes"]]
    """Resource type used for verification. Required. Known values are: \"ServerFarm\", \"Site\", and
     \"Microsoft.Web/hostingEnvironments\"."""
    location: Required[str]
    """Expected location of the resource. Required."""
    properties: Required["ValidateProperties"]
    """Properties of the resource to validate. Required."""


class VirtualApplication(TypedDict, total=False):
    """Virtual application in an app.

    :ivar virtual_path: Virtual path.
    :vartype virtual_path: str
    :ivar physical_path: Physical path.
    :vartype physical_path: str
    :ivar preload_enabled: <code>true</code> if preloading is enabled; otherwise,
     <code>false</code>.
    :vartype preload_enabled: bool
    :ivar virtual_directories: Virtual directories for virtual application.
    :vartype virtual_directories: list["VirtualDirectory"]
    """

    virtualPath: str
    """Virtual path."""
    physicalPath: str
    """Physical path."""
    preloadEnabled: bool
    """<code>true</code> if preloading is enabled; otherwise, <code>false</code>."""
    virtualDirectories: list["VirtualDirectory"]
    """Virtual directories for virtual application."""


class VirtualDirectory(TypedDict, total=False):
    """Directory for virtual application.

    :ivar virtual_path: Path to virtual application.
    :vartype virtual_path: str
    :ivar physical_path: Physical path.
    :vartype physical_path: str
    """

    virtualPath: str
    """Path to virtual application."""
    physicalPath: str
    """Physical path."""


class VirtualNetworkProfile(TypedDict, total=False):
    """Specification for using a Virtual Network.

    :ivar id: Resource id of the Virtual Network. Required.
    :vartype id: str
    :ivar name: Name of the Virtual Network (read-only).
    :vartype name: str
    :ivar type: Resource type of the Virtual Network (read-only).
    :vartype type: str
    :ivar subnet: Subnet within the Virtual Network.
    :vartype subnet: str
    """

    id: Required[str]
    """Resource id of the Virtual Network. Required."""
    name: str
    """Name of the Virtual Network (read-only)."""
    type: str
    """Resource type of the Virtual Network (read-only)."""
    subnet: str
    """Subnet within the Virtual Network."""


class VnetGateway(ProxyResource):
    """The Virtual Network gateway contract. This is used to give the Virtual Network gateway access
    to the VPN package.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: VnetGateway resource specific properties.
    :vartype properties: "VnetGatewayProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "VnetGatewayProperties"
    """VnetGateway resource specific properties."""
    kind: str
    """Kind of resource."""


class VnetGatewayProperties(TypedDict, total=False):
    """VnetGateway resource specific properties.

    :ivar vnet_name: The Virtual Network name.
    :vartype vnet_name: str
    :ivar vpn_package_uri: The URI where the VPN package can be downloaded. Required.
    :vartype vpn_package_uri: str
    """

    vnetName: str
    """The Virtual Network name."""
    vpnPackageUri: Required[str]
    """The URI where the VPN package can be downloaded. Required."""


class VnetInfo(TypedDict, total=False):
    """Virtual Network information contract.

    :ivar vnet_resource_id: The Virtual Network's resource ID.
    :vartype vnet_resource_id: str
    :ivar cert_thumbprint: The client certificate thumbprint.
    :vartype cert_thumbprint: str
    :ivar cert_blob: A certificate file (.cer) blob containing the public key of the private key
     used to authenticate a \\nPoint-To-Site VPN connection.
    :vartype cert_blob: str
    :ivar routes: The routes that this Virtual Network connection uses.
    :vartype routes: list["VnetRoute"]
    :ivar resync_required: <code>true</code> if a resync is required; otherwise,
     <code>false</code>.
    :vartype resync_required: bool
    :ivar dns_servers: DNS servers to be used by this Virtual Network. This should be a
     comma-separated list of IP addresses.
    :vartype dns_servers: str
    :ivar is_swift: Flag that is used to denote if this is VNET injection.
    :vartype is_swift: bool
    """

    vnetResourceId: str
    """The Virtual Network's resource ID."""
    certThumbprint: str
    """The client certificate thumbprint."""
    certBlob: str
    """A certificate file (.cer) blob containing the public key of the private key used to
     authenticate a \nPoint-To-Site VPN connection."""
    routes: list["VnetRoute"]
    """The routes that this Virtual Network connection uses."""
    resyncRequired: bool
    """<code>true</code> if a resync is required; otherwise, <code>false</code>."""
    dnsServers: str
    """DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP
     addresses."""
    isSwift: bool
    """Flag that is used to denote if this is VNET injection."""


class VnetInfoResource(ProxyResource):
    """Virtual Network information ARM resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Core resource properties.
    :vartype properties: "VnetInfo"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "VnetInfo"
    """Core resource properties."""
    kind: str
    """Kind of resource."""


class VnetParameters(ProxyOnlyResource):
    """The required set of inputs to validate a VNET.

    :ivar id: Resource Id.
    :vartype id: str
    :ivar name: Resource Name.
    :vartype name: str
    :ivar kind: Kind of resource.
    :vartype kind: str
    :ivar type: Resource type.
    :vartype type: str
    :ivar properties: VnetParameters resource specific properties.
    :vartype properties: "VnetParametersProperties"
    """

    properties: "VnetParametersProperties"
    """VnetParameters resource specific properties."""


class VnetParametersProperties(TypedDict, total=False):
    """VnetParameters resource specific properties.

    :ivar vnet_resource_group: The Resource Group of the VNET to be validated.
    :vartype vnet_resource_group: str
    :ivar vnet_name: The name of the VNET to be validated.
    :vartype vnet_name: str
    :ivar vnet_subnet_name: The subnet name to be validated.
    :vartype vnet_subnet_name: str
    :ivar subnet_resource_id: The ARM Resource ID of the subnet to validate.
    :vartype subnet_resource_id: str
    """

    vnetResourceGroup: str
    """The Resource Group of the VNET to be validated."""
    vnetName: str
    """The name of the VNET to be validated."""
    vnetSubnetName: str
    """The subnet name to be validated."""
    subnetResourceId: str
    """The ARM Resource ID of the subnet to validate."""


class VnetRoute(ProxyResource):
    """Virtual Network route contract used to pass routing information for a Virtual Network.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: VnetRoute resource specific properties.
    :vartype properties: "VnetRouteProperties"
    :ivar kind: Kind of resource.
    :vartype kind: str
    """

    properties: "VnetRouteProperties"
    """VnetRoute resource specific properties."""
    kind: str
    """Kind of resource."""


class VnetRouteProperties(TypedDict, total=False):
    """VnetRoute resource specific properties.

    :ivar start_address: The starting address for this route. This may also include a CIDR
     notation, in which case the end address must not be specified.
    :vartype start_address: str
    :ivar end_address: The ending address for this route. If the start address is specified in CIDR
     notation, this must be omitted.
    :vartype end_address: str
    :ivar route_type: The type of route this is:
     DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
     INHERITED - Routes inherited from the real Virtual Network routes
     STATIC - Static route set on the app only

     These values will be used for syncing an app's routes with those from a Virtual Network. Known
     values are: "DEFAULT", "INHERITED", and "STATIC".
    :vartype route_type: Union[str, "RouteType"]
    """

    startAddress: str
    """The starting address for this route. This may also include a CIDR notation, in which case the
     end address must not be specified."""
    endAddress: str
    """The ending address for this route. If the start address is specified in CIDR notation, this
     must be omitted."""
    routeType: Union[str, "RouteType"]
    """The type of route this is:
     DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
     INHERITED - Routes inherited from the real Virtual Network routes
     STATIC - Static route set on the app only
     
     These values will be used for syncing an app's routes with those from a Virtual Network. Known
     values are: \"DEFAULT\", \"INHERITED\", and \"STATIC\"."""


class VolumeMount(TypedDict, total=False):
    """VolumeMount.

    :ivar volume_sub_path: Sub path in the volume where volume is mounted from. Required.
    :vartype volume_sub_path: str
    :ivar container_mount_path: Target path on the container where volume is mounted on. Required.
    :vartype container_mount_path: str
    :ivar data: Config Data to be mounted on the volume.
    :vartype data: str
    :ivar read_only: Boolean to specify if the mount is read only on the container.
    :vartype read_only: bool
    """

    volumeSubPath: Required[str]
    """Sub path in the volume where volume is mounted from. Required."""
    containerMountPath: Required[str]
    """Target path on the container where volume is mounted on. Required."""
    data: str
    """Config Data to be mounted on the volume."""
    readOnly: bool
    """Boolean to specify if the mount is read only on the container."""


class WorkerPool(TypedDict, total=False):
    """Worker pool of an App Service Environment.

    :ivar worker_size_id: Worker size ID for referencing this worker pool.
    :vartype worker_size_id: int
    :ivar compute_mode: Shared or dedicated app hosting. Known values are: "Shared", "Dedicated",
     and "Dynamic".
    :vartype compute_mode: Union[str, "ComputeModeOptions"]
    :ivar worker_size: VM size of the worker pool instances.
    :vartype worker_size: str
    :ivar worker_count: Number of instances in the worker pool.
    :vartype worker_count: int
    :ivar instance_names: Names of all instances in the worker pool (read only).
    :vartype instance_names: list[str]
    """

    workerSizeId: int
    """Worker size ID for referencing this worker pool."""
    computeMode: Union[str, "ComputeModeOptions"]
    """Shared or dedicated app hosting. Known values are: \"Shared\", \"Dedicated\", and \"Dynamic\"."""
    workerSize: str
    """VM size of the worker pool instances."""
    workerCount: int
    """Number of instances in the worker pool."""
    instanceNames: list[str]
    """Names of all instances in the worker pool (read only)."""


class WorkerPoolResource(ProxyResource):
    """Worker pool of an App Service Environment ARM resource.

    :ivar id: Fully qualified resource ID for the resource. Ex -
     /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
    :vartype id: str
    :ivar name: The name of the resource.
    :vartype name: str
    :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or
     "Microsoft.Storage/storageAccounts".
    :vartype type: str
    :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy
     information.
    :vartype system_data: "SystemData"
    :ivar properties: Core resource properties.
    :vartype properties: "WorkerPool"
    :ivar sku: Description of a SKU for a scalable resource.
    :vartype sku: "SkuDescription"
    :ivar kind: Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind.
    :vartype kind: str
    """

    properties: "WorkerPool"
    """Core resource properties."""
    sku: "SkuDescription"
    """Description of a SKU for a scalable resource."""
    kind: str
    """Kind of resource. If the resource is an app, you can refer to
     `https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference
     <https://github.com/Azure/app-service-linux-docs/blob/master/Things_You_Should_Know/kind_property.md#app-service-resource-kind-reference>`_
     for details supported values for kind."""


class WorkflowResource(TypedDict, total=False):
    """The base resource type.

    :ivar id: The resource id.
    :vartype id: str
    :ivar name: Gets the resource name.
    :vartype name: str
    :ivar type: Gets the resource type.
    :vartype type: str
    :ivar location: The resource location.
    :vartype location: str
    :ivar tags: The resource tags.
    :vartype tags: dict[str, str]
    """

    id: str
    """The resource id."""
    name: str
    """Gets the resource name."""
    type: str
    """Gets the resource type."""
    location: str
    """The resource location."""
    tags: dict[str, str]
    """The resource tags."""


class Workflow(WorkflowResource):
    """The workflow type.

    :ivar id: The resource id.
    :vartype id: str
    :ivar name: Gets the resource name.
    :vartype name: str
    :ivar type: Gets the resource type.
    :vartype type: str
    :ivar location: The resource location.
    :vartype location: str
    :ivar tags: The resource tags.
    :vartype tags: dict[str, str]
    :ivar properties: The workflow properties.
    :vartype properties: "WorkflowProperties"
    :ivar identity: Managed service identity.
    :vartype identity: "ManagedServiceIdentity"
    """

    properties: "WorkflowProperties"
    """The workflow properties."""
    identity: "ManagedServiceIdentity"
    """Managed service identity."""


class WorkflowArtifacts(TypedDict, total=False):
    """The workflow filter.

    :ivar app_settings: Application settings of the workflow.
    :vartype app_settings: Any
    :ivar files: Files of the app.
    :vartype files: dict[str, Any]
    :ivar files_to_delete: Files of the app to delete.
    :vartype files_to_delete: list[str]
    """

    appSettings: Any
    """Application settings of the workflow."""
    files: dict[str, Any]
    """Files of the app."""
    filesToDelete: list[str]
    """Files of the app to delete."""


class WorkflowParameter(TypedDict, total=False):
    """The workflow parameters.

    :ivar type: The type. Known values are: "NotSpecified", "String", "SecureString", "Int",
     "Float", "Bool", "Array", "Object", and "SecureObject".
    :vartype type: Union[str, "ParameterType"]
    :ivar value: The value.
    :vartype value: Any
    :ivar metadata: The metadata.
    :vartype metadata: Any
    :ivar description: The description.
    :vartype description: str
    """

    type: Union[str, "ParameterType"]
    """The type. Known values are: \"NotSpecified\", \"String\", \"SecureString\", \"Int\", \"Float\",
     \"Bool\", \"Array\", \"Object\", and \"SecureObject\"."""
    value: Any
    """The value."""
    metadata: Any
    """The metadata."""
    description: str
    """The description."""


class WorkflowProperties(TypedDict, total=False):
    """The workflow properties.

    :ivar provisioning_state: Gets the provisioning state. Known values are: "NotSpecified",
     "Accepted", "Running", "Ready", "Creating", "Created", "Deleting", "Deleted", "Canceled",
     "Failed", "Succeeded", "Moving", "Updating", "Registering", "Registered", "Unregistering",
     "Unregistered", "Completed", "Renewing", "Pending", "Waiting", and "InProgress".
    :vartype provisioning_state: Union[str, "WorkflowProvisioningState"]
    :ivar created_time: Gets the created time.
    :vartype created_time: str
    :ivar changed_time: Gets the changed time.
    :vartype changed_time: str
    :ivar state: The state. Known values are: "NotSpecified", "Completed", "Enabled", "Disabled",
     "Deleted", and "Suspended".
    :vartype state: Union[str, "WorkflowState"]
    :ivar version: Gets the version.
    :vartype version: str
    :ivar access_endpoint: Gets the access endpoint.
    :vartype access_endpoint: str
    :ivar endpoints_configuration: The endpoints configuration.
    :vartype endpoints_configuration: "FlowEndpointsConfiguration"
    :ivar access_control: The access control configuration.
    :vartype access_control: "FlowAccessControlConfiguration"
    :ivar sku: The sku.
    :vartype sku: "WorkflowSku"
    :ivar integration_account: The integration account.
    :vartype integration_account: "ResourceReference"
    :ivar integration_service_environment: The integration service environment.
    :vartype integration_service_environment: "ResourceReference"
    :ivar definition: The definition.
    :vartype definition: Any
    :ivar parameters: The parameters.
    :vartype parameters: dict[str, "WorkflowParameter"]
    :ivar kind: The workflow kind. Known values are: "Stateful" and "Stateless".
    :vartype kind: Union[str, "Kind"]
    """

    provisioningState: Union[str, "WorkflowProvisioningState"]
    """Gets the provisioning state. Known values are: \"NotSpecified\", \"Accepted\", \"Running\",
     \"Ready\", \"Creating\", \"Created\", \"Deleting\", \"Deleted\", \"Canceled\", \"Failed\",
     \"Succeeded\", \"Moving\", \"Updating\", \"Registering\", \"Registered\", \"Unregistering\",
     \"Unregistered\", \"Completed\", \"Renewing\", \"Pending\", \"Waiting\", and \"InProgress\"."""
    createdTime: str
    """Gets the created time."""
    changedTime: str
    """Gets the changed time."""
    state: Union[str, "WorkflowState"]
    """The state. Known values are: \"NotSpecified\", \"Completed\", \"Enabled\", \"Disabled\",
     \"Deleted\", and \"Suspended\"."""
    version: str
    """Gets the version."""
    accessEndpoint: str
    """Gets the access endpoint."""
    endpointsConfiguration: "FlowEndpointsConfiguration"
    """The endpoints configuration."""
    accessControl: "FlowAccessControlConfiguration"
    """The access control configuration."""
    sku: "WorkflowSku"
    """The sku."""
    integrationAccount: "ResourceReference"
    """The integration account."""
    integrationServiceEnvironment: "ResourceReference"
    """The integration service environment."""
    definition: Any
    """The definition."""
    parameters: dict[str, "WorkflowParameter"]
    """The parameters."""
    kind: Union[str, "Kind"]
    """The workflow kind. Known values are: \"Stateful\" and \"Stateless\"."""


class WorkflowSku(TypedDict, total=False):
    """The sku type.

    :ivar name: The name. Required. Known values are: "NotSpecified", "Free", "Shared", "Basic",
     "Standard", and "Premium".
    :vartype name: Union[str, "WorkflowSkuName"]
    :ivar plan: The reference to plan.
    :vartype plan: "ResourceReference"
    """

    name: Required[Union[str, "WorkflowSkuName"]]
    """The name. Required. Known values are: \"NotSpecified\", \"Free\", \"Shared\", \"Basic\",
     \"Standard\", and \"Premium\"."""
    plan: "ResourceReference"
    """The reference to plan."""
