# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from . import _utilities
from . import outputs
from ._inputs import *

__all__ = ['AppArgs', 'App']

@pulumi.input_type
class AppArgs:
    def __init__(__self__, *,
                 budget_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 compute_size: Optional[pulumi.Input[_builtins.str]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 git_repository: Optional[pulumi.Input['AppGitRepositoryArgs']] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 no_compute: Optional[pulumi.Input[_builtins.bool]] = None,
                 provider_config: Optional[pulumi.Input['AppProviderConfigArgs']] = None,
                 resources: Optional[pulumi.Input[Sequence[pulumi.Input['AppResourceArgs']]]] = None,
                 space: Optional[pulumi.Input[_builtins.str]] = None,
                 telemetry_export_destinations: Optional[pulumi.Input[Sequence[pulumi.Input['AppTelemetryExportDestinationArgs']]]] = None,
                 usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 user_api_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None):
        """
        The set of arguments for constructing a App resource.
        :param pulumi.Input[_builtins.str] budget_policy_id: The Budget Policy ID set for this resource.
        :param pulumi.Input[_builtins.str] compute_size: A string specifying compute size for the App. Possible values are `MEDIUM`, `LARGE`.
        :param pulumi.Input[_builtins.str] description: The description of the app.
        :param pulumi.Input[_builtins.str] name: The name of the app. The name must contain only lowercase alphanumeric characters and hyphens. It must be unique within the workspace.
        :param pulumi.Input[Sequence[pulumi.Input['AppResourceArgs']]] resources: A list of resources that the app have access to.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] user_api_scopes: A list of api scopes granted to the user access token.
        """
        if budget_policy_id is not None:
            pulumi.set(__self__, "budget_policy_id", budget_policy_id)
        if compute_size is not None:
            pulumi.set(__self__, "compute_size", compute_size)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if git_repository is not None:
            pulumi.set(__self__, "git_repository", git_repository)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if no_compute is not None:
            pulumi.set(__self__, "no_compute", no_compute)
        if provider_config is not None:
            pulumi.set(__self__, "provider_config", provider_config)
        if resources is not None:
            pulumi.set(__self__, "resources", resources)
        if space is not None:
            pulumi.set(__self__, "space", space)
        if telemetry_export_destinations is not None:
            pulumi.set(__self__, "telemetry_export_destinations", telemetry_export_destinations)
        if usage_policy_id is not None:
            pulumi.set(__self__, "usage_policy_id", usage_policy_id)
        if user_api_scopes is not None:
            pulumi.set(__self__, "user_api_scopes", user_api_scopes)

    @_builtins.property
    @pulumi.getter(name="budgetPolicyId")
    def budget_policy_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The Budget Policy ID set for this resource.
        """
        return pulumi.get(self, "budget_policy_id")

    @budget_policy_id.setter
    def budget_policy_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "budget_policy_id", value)

    @_builtins.property
    @pulumi.getter(name="computeSize")
    def compute_size(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A string specifying compute size for the App. Possible values are `MEDIUM`, `LARGE`.
        """
        return pulumi.get(self, "compute_size")

    @compute_size.setter
    def compute_size(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "compute_size", value)

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The description of the app.
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "description", value)

    @_builtins.property
    @pulumi.getter(name="gitRepository")
    def git_repository(self) -> Optional[pulumi.Input['AppGitRepositoryArgs']]:
        return pulumi.get(self, "git_repository")

    @git_repository.setter
    def git_repository(self, value: Optional[pulumi.Input['AppGitRepositoryArgs']]):
        pulumi.set(self, "git_repository", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The name of the app. The name must contain only lowercase alphanumeric characters and hyphens. It must be unique within the workspace.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "name", value)

    @_builtins.property
    @pulumi.getter(name="noCompute")
    def no_compute(self) -> Optional[pulumi.Input[_builtins.bool]]:
        return pulumi.get(self, "no_compute")

    @no_compute.setter
    def no_compute(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "no_compute", value)

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> Optional[pulumi.Input['AppProviderConfigArgs']]:
        return pulumi.get(self, "provider_config")

    @provider_config.setter
    def provider_config(self, value: Optional[pulumi.Input['AppProviderConfigArgs']]):
        pulumi.set(self, "provider_config", value)

    @_builtins.property
    @pulumi.getter
    def resources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AppResourceArgs']]]]:
        """
        A list of resources that the app have access to.
        """
        return pulumi.get(self, "resources")

    @resources.setter
    def resources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['AppResourceArgs']]]]):
        pulumi.set(self, "resources", value)

    @_builtins.property
    @pulumi.getter
    def space(self) -> Optional[pulumi.Input[_builtins.str]]:
        return pulumi.get(self, "space")

    @space.setter
    def space(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "space", value)

    @_builtins.property
    @pulumi.getter(name="telemetryExportDestinations")
    def telemetry_export_destinations(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AppTelemetryExportDestinationArgs']]]]:
        return pulumi.get(self, "telemetry_export_destinations")

    @telemetry_export_destinations.setter
    def telemetry_export_destinations(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['AppTelemetryExportDestinationArgs']]]]):
        pulumi.set(self, "telemetry_export_destinations", value)

    @_builtins.property
    @pulumi.getter(name="usagePolicyId")
    def usage_policy_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        return pulumi.get(self, "usage_policy_id")

    @usage_policy_id.setter
    def usage_policy_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "usage_policy_id", value)

    @_builtins.property
    @pulumi.getter(name="userApiScopes")
    def user_api_scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of api scopes granted to the user access token.
        """
        return pulumi.get(self, "user_api_scopes")

    @user_api_scopes.setter
    def user_api_scopes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "user_api_scopes", value)


@pulumi.input_type
class _AppState:
    def __init__(__self__, *,
                 active_deployment: Optional[pulumi.Input['AppActiveDeploymentArgs']] = None,
                 app_status: Optional[pulumi.Input['AppAppStatusArgs']] = None,
                 budget_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 compute_size: Optional[pulumi.Input[_builtins.str]] = None,
                 compute_status: Optional[pulumi.Input['AppComputeStatusArgs']] = None,
                 create_time: Optional[pulumi.Input[_builtins.str]] = None,
                 creator: Optional[pulumi.Input[_builtins.str]] = None,
                 default_source_code_path: Optional[pulumi.Input[_builtins.str]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 effective_budget_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 effective_usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 effective_user_api_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 git_repository: Optional[pulumi.Input['AppGitRepositoryArgs']] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 no_compute: Optional[pulumi.Input[_builtins.bool]] = None,
                 oauth2_app_client_id: Optional[pulumi.Input[_builtins.str]] = None,
                 oauth2_app_integration_id: Optional[pulumi.Input[_builtins.str]] = None,
                 pending_deployment: Optional[pulumi.Input['AppPendingDeploymentArgs']] = None,
                 provider_config: Optional[pulumi.Input['AppProviderConfigArgs']] = None,
                 resources: Optional[pulumi.Input[Sequence[pulumi.Input['AppResourceArgs']]]] = None,
                 service_principal_client_id: Optional[pulumi.Input[_builtins.str]] = None,
                 service_principal_id: Optional[pulumi.Input[_builtins.int]] = None,
                 service_principal_name: Optional[pulumi.Input[_builtins.str]] = None,
                 space: Optional[pulumi.Input[_builtins.str]] = None,
                 telemetry_export_destinations: Optional[pulumi.Input[Sequence[pulumi.Input['AppTelemetryExportDestinationArgs']]]] = None,
                 update_time: Optional[pulumi.Input[_builtins.str]] = None,
                 updater: Optional[pulumi.Input[_builtins.str]] = None,
                 url: Optional[pulumi.Input[_builtins.str]] = None,
                 usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 user_api_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None):
        """
        Input properties used for looking up and filtering App resources.
        :param pulumi.Input['AppAppStatusArgs'] app_status: attribute
        :param pulumi.Input[_builtins.str] budget_policy_id: The Budget Policy ID set for this resource.
        :param pulumi.Input[_builtins.str] compute_size: A string specifying compute size for the App. Possible values are `MEDIUM`, `LARGE`.
        :param pulumi.Input['AppComputeStatusArgs'] compute_status: attribute
        :param pulumi.Input[_builtins.str] create_time: The creation time of the app.
        :param pulumi.Input[_builtins.str] creator: The email of the user that created the app.
        :param pulumi.Input[_builtins.str] default_source_code_path: The default workspace file system path of the source code from which app deployment are created. This field tracks the workspace source code path of the last active deployment.
        :param pulumi.Input[_builtins.str] description: The description of the app.
        :param pulumi.Input[_builtins.str] effective_budget_policy_id: The effective budget policy ID.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] effective_user_api_scopes: A list of effective api scopes granted to the user access token.
        :param pulumi.Input[_builtins.str] name: The name of the app. The name must contain only lowercase alphanumeric characters and hyphens. It must be unique within the workspace.
        :param pulumi.Input[Sequence[pulumi.Input['AppResourceArgs']]] resources: A list of resources that the app have access to.
        :param pulumi.Input[_builtins.str] service_principal_client_id: client_id (application_id) of the app service principal
        :param pulumi.Input[_builtins.int] service_principal_id: id of the app service principal
        :param pulumi.Input[_builtins.str] service_principal_name: name of the app service principal
        :param pulumi.Input[_builtins.str] update_time: The update time of the app.
        :param pulumi.Input[_builtins.str] updater: The email of the user that last updated the app.
        :param pulumi.Input[_builtins.str] url: The URL of the app once it is deployed.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] user_api_scopes: A list of api scopes granted to the user access token.
        """
        if active_deployment is not None:
            pulumi.set(__self__, "active_deployment", active_deployment)
        if app_status is not None:
            pulumi.set(__self__, "app_status", app_status)
        if budget_policy_id is not None:
            pulumi.set(__self__, "budget_policy_id", budget_policy_id)
        if compute_size is not None:
            pulumi.set(__self__, "compute_size", compute_size)
        if compute_status is not None:
            pulumi.set(__self__, "compute_status", compute_status)
        if create_time is not None:
            pulumi.set(__self__, "create_time", create_time)
        if creator is not None:
            pulumi.set(__self__, "creator", creator)
        if default_source_code_path is not None:
            pulumi.set(__self__, "default_source_code_path", default_source_code_path)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if effective_budget_policy_id is not None:
            pulumi.set(__self__, "effective_budget_policy_id", effective_budget_policy_id)
        if effective_usage_policy_id is not None:
            pulumi.set(__self__, "effective_usage_policy_id", effective_usage_policy_id)
        if effective_user_api_scopes is not None:
            pulumi.set(__self__, "effective_user_api_scopes", effective_user_api_scopes)
        if git_repository is not None:
            pulumi.set(__self__, "git_repository", git_repository)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if no_compute is not None:
            pulumi.set(__self__, "no_compute", no_compute)
        if oauth2_app_client_id is not None:
            pulumi.set(__self__, "oauth2_app_client_id", oauth2_app_client_id)
        if oauth2_app_integration_id is not None:
            pulumi.set(__self__, "oauth2_app_integration_id", oauth2_app_integration_id)
        if pending_deployment is not None:
            pulumi.set(__self__, "pending_deployment", pending_deployment)
        if provider_config is not None:
            pulumi.set(__self__, "provider_config", provider_config)
        if resources is not None:
            pulumi.set(__self__, "resources", resources)
        if service_principal_client_id is not None:
            pulumi.set(__self__, "service_principal_client_id", service_principal_client_id)
        if service_principal_id is not None:
            pulumi.set(__self__, "service_principal_id", service_principal_id)
        if service_principal_name is not None:
            pulumi.set(__self__, "service_principal_name", service_principal_name)
        if space is not None:
            pulumi.set(__self__, "space", space)
        if telemetry_export_destinations is not None:
            pulumi.set(__self__, "telemetry_export_destinations", telemetry_export_destinations)
        if update_time is not None:
            pulumi.set(__self__, "update_time", update_time)
        if updater is not None:
            pulumi.set(__self__, "updater", updater)
        if url is not None:
            pulumi.set(__self__, "url", url)
        if usage_policy_id is not None:
            pulumi.set(__self__, "usage_policy_id", usage_policy_id)
        if user_api_scopes is not None:
            pulumi.set(__self__, "user_api_scopes", user_api_scopes)

    @_builtins.property
    @pulumi.getter(name="activeDeployment")
    def active_deployment(self) -> Optional[pulumi.Input['AppActiveDeploymentArgs']]:
        return pulumi.get(self, "active_deployment")

    @active_deployment.setter
    def active_deployment(self, value: Optional[pulumi.Input['AppActiveDeploymentArgs']]):
        pulumi.set(self, "active_deployment", value)

    @_builtins.property
    @pulumi.getter(name="appStatus")
    def app_status(self) -> Optional[pulumi.Input['AppAppStatusArgs']]:
        """
        attribute
        """
        return pulumi.get(self, "app_status")

    @app_status.setter
    def app_status(self, value: Optional[pulumi.Input['AppAppStatusArgs']]):
        pulumi.set(self, "app_status", value)

    @_builtins.property
    @pulumi.getter(name="budgetPolicyId")
    def budget_policy_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The Budget Policy ID set for this resource.
        """
        return pulumi.get(self, "budget_policy_id")

    @budget_policy_id.setter
    def budget_policy_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "budget_policy_id", value)

    @_builtins.property
    @pulumi.getter(name="computeSize")
    def compute_size(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        A string specifying compute size for the App. Possible values are `MEDIUM`, `LARGE`.
        """
        return pulumi.get(self, "compute_size")

    @compute_size.setter
    def compute_size(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "compute_size", value)

    @_builtins.property
    @pulumi.getter(name="computeStatus")
    def compute_status(self) -> Optional[pulumi.Input['AppComputeStatusArgs']]:
        """
        attribute
        """
        return pulumi.get(self, "compute_status")

    @compute_status.setter
    def compute_status(self, value: Optional[pulumi.Input['AppComputeStatusArgs']]):
        pulumi.set(self, "compute_status", value)

    @_builtins.property
    @pulumi.getter(name="createTime")
    def create_time(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The creation time of the app.
        """
        return pulumi.get(self, "create_time")

    @create_time.setter
    def create_time(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "create_time", value)

    @_builtins.property
    @pulumi.getter
    def creator(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The email of the user that created the app.
        """
        return pulumi.get(self, "creator")

    @creator.setter
    def creator(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "creator", value)

    @_builtins.property
    @pulumi.getter(name="defaultSourceCodePath")
    def default_source_code_path(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The default workspace file system path of the source code from which app deployment are created. This field tracks the workspace source code path of the last active deployment.
        """
        return pulumi.get(self, "default_source_code_path")

    @default_source_code_path.setter
    def default_source_code_path(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "default_source_code_path", value)

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The description of the app.
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "description", value)

    @_builtins.property
    @pulumi.getter(name="effectiveBudgetPolicyId")
    def effective_budget_policy_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The effective budget policy ID.
        """
        return pulumi.get(self, "effective_budget_policy_id")

    @effective_budget_policy_id.setter
    def effective_budget_policy_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "effective_budget_policy_id", value)

    @_builtins.property
    @pulumi.getter(name="effectiveUsagePolicyId")
    def effective_usage_policy_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        return pulumi.get(self, "effective_usage_policy_id")

    @effective_usage_policy_id.setter
    def effective_usage_policy_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "effective_usage_policy_id", value)

    @_builtins.property
    @pulumi.getter(name="effectiveUserApiScopes")
    def effective_user_api_scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of effective api scopes granted to the user access token.
        """
        return pulumi.get(self, "effective_user_api_scopes")

    @effective_user_api_scopes.setter
    def effective_user_api_scopes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "effective_user_api_scopes", value)

    @_builtins.property
    @pulumi.getter(name="gitRepository")
    def git_repository(self) -> Optional[pulumi.Input['AppGitRepositoryArgs']]:
        return pulumi.get(self, "git_repository")

    @git_repository.setter
    def git_repository(self, value: Optional[pulumi.Input['AppGitRepositoryArgs']]):
        pulumi.set(self, "git_repository", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The name of the app. The name must contain only lowercase alphanumeric characters and hyphens. It must be unique within the workspace.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "name", value)

    @_builtins.property
    @pulumi.getter(name="noCompute")
    def no_compute(self) -> Optional[pulumi.Input[_builtins.bool]]:
        return pulumi.get(self, "no_compute")

    @no_compute.setter
    def no_compute(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "no_compute", value)

    @_builtins.property
    @pulumi.getter(name="oauth2AppClientId")
    def oauth2_app_client_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        return pulumi.get(self, "oauth2_app_client_id")

    @oauth2_app_client_id.setter
    def oauth2_app_client_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "oauth2_app_client_id", value)

    @_builtins.property
    @pulumi.getter(name="oauth2AppIntegrationId")
    def oauth2_app_integration_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        return pulumi.get(self, "oauth2_app_integration_id")

    @oauth2_app_integration_id.setter
    def oauth2_app_integration_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "oauth2_app_integration_id", value)

    @_builtins.property
    @pulumi.getter(name="pendingDeployment")
    def pending_deployment(self) -> Optional[pulumi.Input['AppPendingDeploymentArgs']]:
        return pulumi.get(self, "pending_deployment")

    @pending_deployment.setter
    def pending_deployment(self, value: Optional[pulumi.Input['AppPendingDeploymentArgs']]):
        pulumi.set(self, "pending_deployment", value)

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> Optional[pulumi.Input['AppProviderConfigArgs']]:
        return pulumi.get(self, "provider_config")

    @provider_config.setter
    def provider_config(self, value: Optional[pulumi.Input['AppProviderConfigArgs']]):
        pulumi.set(self, "provider_config", value)

    @_builtins.property
    @pulumi.getter
    def resources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AppResourceArgs']]]]:
        """
        A list of resources that the app have access to.
        """
        return pulumi.get(self, "resources")

    @resources.setter
    def resources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['AppResourceArgs']]]]):
        pulumi.set(self, "resources", value)

    @_builtins.property
    @pulumi.getter(name="servicePrincipalClientId")
    def service_principal_client_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        client_id (application_id) of the app service principal
        """
        return pulumi.get(self, "service_principal_client_id")

    @service_principal_client_id.setter
    def service_principal_client_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "service_principal_client_id", value)

    @_builtins.property
    @pulumi.getter(name="servicePrincipalId")
    def service_principal_id(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        id of the app service principal
        """
        return pulumi.get(self, "service_principal_id")

    @service_principal_id.setter
    def service_principal_id(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "service_principal_id", value)

    @_builtins.property
    @pulumi.getter(name="servicePrincipalName")
    def service_principal_name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        name of the app service principal
        """
        return pulumi.get(self, "service_principal_name")

    @service_principal_name.setter
    def service_principal_name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "service_principal_name", value)

    @_builtins.property
    @pulumi.getter
    def space(self) -> Optional[pulumi.Input[_builtins.str]]:
        return pulumi.get(self, "space")

    @space.setter
    def space(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "space", value)

    @_builtins.property
    @pulumi.getter(name="telemetryExportDestinations")
    def telemetry_export_destinations(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AppTelemetryExportDestinationArgs']]]]:
        return pulumi.get(self, "telemetry_export_destinations")

    @telemetry_export_destinations.setter
    def telemetry_export_destinations(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['AppTelemetryExportDestinationArgs']]]]):
        pulumi.set(self, "telemetry_export_destinations", value)

    @_builtins.property
    @pulumi.getter(name="updateTime")
    def update_time(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The update time of the app.
        """
        return pulumi.get(self, "update_time")

    @update_time.setter
    def update_time(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "update_time", value)

    @_builtins.property
    @pulumi.getter
    def updater(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The email of the user that last updated the app.
        """
        return pulumi.get(self, "updater")

    @updater.setter
    def updater(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "updater", value)

    @_builtins.property
    @pulumi.getter
    def url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The URL of the app once it is deployed.
        """
        return pulumi.get(self, "url")

    @url.setter
    def url(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "url", value)

    @_builtins.property
    @pulumi.getter(name="usagePolicyId")
    def usage_policy_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        return pulumi.get(self, "usage_policy_id")

    @usage_policy_id.setter
    def usage_policy_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "usage_policy_id", value)

    @_builtins.property
    @pulumi.getter(name="userApiScopes")
    def user_api_scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of api scopes granted to the user access token.
        """
        return pulumi.get(self, "user_api_scopes")

    @user_api_scopes.setter
    def user_api_scopes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "user_api_scopes", value)


@pulumi.type_token("databricks:index/app:App")
class App(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 budget_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 compute_size: Optional[pulumi.Input[_builtins.str]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 git_repository: Optional[pulumi.Input[Union['AppGitRepositoryArgs', 'AppGitRepositoryArgsDict']]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 no_compute: Optional[pulumi.Input[_builtins.bool]] = None,
                 provider_config: Optional[pulumi.Input[Union['AppProviderConfigArgs', 'AppProviderConfigArgsDict']]] = None,
                 resources: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AppResourceArgs', 'AppResourceArgsDict']]]]] = None,
                 space: Optional[pulumi.Input[_builtins.str]] = None,
                 telemetry_export_destinations: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AppTelemetryExportDestinationArgs', 'AppTelemetryExportDestinationArgsDict']]]]] = None,
                 usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 user_api_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 __props__=None):
        """
        [Databricks Apps](https://docs.databricks.com/en/dev-tools/databricks-apps/index.html) run directly on a customer's Databricks instance, integrate with their data, use and extend Databricks services, and enable users to interact through single sign-on. This resource creates the application but does not handle app deployment, which should be handled separately as part of your CI/CD pipeline.

        > This resource can only be used with a workspace-level provider!

        ## Example Usage

        ```python
        import pulumi
        import pulumi_databricks as databricks

        this = databricks.App("this",
            name="my-custom-app",
            description="My app",
            resources=[
                {
                    "name": "sql-warehouse",
                    "sql_warehouse": {
                        "id": "e9ca293f79a74b5c",
                        "permission": "CAN_MANAGE",
                    },
                },
                {
                    "name": "serving-endpoint",
                    "serving_endpoint": {
                        "name": "databricks-meta-llama-3-1-70b-instruct",
                        "permission": "CAN_MANAGE",
                    },
                },
                {
                    "name": "job",
                    "job": {
                        "id": "1234",
                        "permission": "CAN_MANAGE",
                    },
                },
            ])
        ```

        ## Related Resources

        The following resources are used in the same context:

        * SqlEndpoint to manage Databricks SQL [Endpoints](https://docs.databricks.com/sql/admin/sql-endpoints.html).
        * ModelServing to serve this model on a Databricks serving endpoint.
        * Secret to manage [secrets](https://docs.databricks.com/security/secrets/index.html#secrets-user-guide) in Databricks workspace.
        * Job to manage [Databricks Jobs](https://docs.databricks.com/jobs.html) to run non-interactive code.

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[_builtins.str] budget_policy_id: The Budget Policy ID set for this resource.
        :param pulumi.Input[_builtins.str] compute_size: A string specifying compute size for the App. Possible values are `MEDIUM`, `LARGE`.
        :param pulumi.Input[_builtins.str] description: The description of the app.
        :param pulumi.Input[_builtins.str] name: The name of the app. The name must contain only lowercase alphanumeric characters and hyphens. It must be unique within the workspace.
        :param pulumi.Input[Sequence[pulumi.Input[Union['AppResourceArgs', 'AppResourceArgsDict']]]] resources: A list of resources that the app have access to.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] user_api_scopes: A list of api scopes granted to the user access token.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: Optional[AppArgs] = None,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        [Databricks Apps](https://docs.databricks.com/en/dev-tools/databricks-apps/index.html) run directly on a customer's Databricks instance, integrate with their data, use and extend Databricks services, and enable users to interact through single sign-on. This resource creates the application but does not handle app deployment, which should be handled separately as part of your CI/CD pipeline.

        > This resource can only be used with a workspace-level provider!

        ## Example Usage

        ```python
        import pulumi
        import pulumi_databricks as databricks

        this = databricks.App("this",
            name="my-custom-app",
            description="My app",
            resources=[
                {
                    "name": "sql-warehouse",
                    "sql_warehouse": {
                        "id": "e9ca293f79a74b5c",
                        "permission": "CAN_MANAGE",
                    },
                },
                {
                    "name": "serving-endpoint",
                    "serving_endpoint": {
                        "name": "databricks-meta-llama-3-1-70b-instruct",
                        "permission": "CAN_MANAGE",
                    },
                },
                {
                    "name": "job",
                    "job": {
                        "id": "1234",
                        "permission": "CAN_MANAGE",
                    },
                },
            ])
        ```

        ## Related Resources

        The following resources are used in the same context:

        * SqlEndpoint to manage Databricks SQL [Endpoints](https://docs.databricks.com/sql/admin/sql-endpoints.html).
        * ModelServing to serve this model on a Databricks serving endpoint.
        * Secret to manage [secrets](https://docs.databricks.com/security/secrets/index.html#secrets-user-guide) in Databricks workspace.
        * Job to manage [Databricks Jobs](https://docs.databricks.com/jobs.html) to run non-interactive code.

        :param str resource_name: The name of the resource.
        :param AppArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(AppArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 budget_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 compute_size: Optional[pulumi.Input[_builtins.str]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 git_repository: Optional[pulumi.Input[Union['AppGitRepositoryArgs', 'AppGitRepositoryArgsDict']]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 no_compute: Optional[pulumi.Input[_builtins.bool]] = None,
                 provider_config: Optional[pulumi.Input[Union['AppProviderConfigArgs', 'AppProviderConfigArgsDict']]] = None,
                 resources: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AppResourceArgs', 'AppResourceArgsDict']]]]] = None,
                 space: Optional[pulumi.Input[_builtins.str]] = None,
                 telemetry_export_destinations: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AppTelemetryExportDestinationArgs', 'AppTelemetryExportDestinationArgsDict']]]]] = None,
                 usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 user_api_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = AppArgs.__new__(AppArgs)

            __props__.__dict__["budget_policy_id"] = budget_policy_id
            __props__.__dict__["compute_size"] = compute_size
            __props__.__dict__["description"] = description
            __props__.__dict__["git_repository"] = git_repository
            __props__.__dict__["name"] = name
            __props__.__dict__["no_compute"] = no_compute
            __props__.__dict__["provider_config"] = provider_config
            __props__.__dict__["resources"] = resources
            __props__.__dict__["space"] = space
            __props__.__dict__["telemetry_export_destinations"] = telemetry_export_destinations
            __props__.__dict__["usage_policy_id"] = usage_policy_id
            __props__.__dict__["user_api_scopes"] = user_api_scopes
            __props__.__dict__["active_deployment"] = None
            __props__.__dict__["app_status"] = None
            __props__.__dict__["compute_status"] = None
            __props__.__dict__["create_time"] = None
            __props__.__dict__["creator"] = None
            __props__.__dict__["default_source_code_path"] = None
            __props__.__dict__["effective_budget_policy_id"] = None
            __props__.__dict__["effective_usage_policy_id"] = None
            __props__.__dict__["effective_user_api_scopes"] = None
            __props__.__dict__["oauth2_app_client_id"] = None
            __props__.__dict__["oauth2_app_integration_id"] = None
            __props__.__dict__["pending_deployment"] = None
            __props__.__dict__["service_principal_client_id"] = None
            __props__.__dict__["service_principal_id"] = None
            __props__.__dict__["service_principal_name"] = None
            __props__.__dict__["update_time"] = None
            __props__.__dict__["updater"] = None
            __props__.__dict__["url"] = None
        super(App, __self__).__init__(
            'databricks:index/app:App',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            active_deployment: Optional[pulumi.Input[Union['AppActiveDeploymentArgs', 'AppActiveDeploymentArgsDict']]] = None,
            app_status: Optional[pulumi.Input[Union['AppAppStatusArgs', 'AppAppStatusArgsDict']]] = None,
            budget_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
            compute_size: Optional[pulumi.Input[_builtins.str]] = None,
            compute_status: Optional[pulumi.Input[Union['AppComputeStatusArgs', 'AppComputeStatusArgsDict']]] = None,
            create_time: Optional[pulumi.Input[_builtins.str]] = None,
            creator: Optional[pulumi.Input[_builtins.str]] = None,
            default_source_code_path: Optional[pulumi.Input[_builtins.str]] = None,
            description: Optional[pulumi.Input[_builtins.str]] = None,
            effective_budget_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
            effective_usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
            effective_user_api_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
            git_repository: Optional[pulumi.Input[Union['AppGitRepositoryArgs', 'AppGitRepositoryArgsDict']]] = None,
            name: Optional[pulumi.Input[_builtins.str]] = None,
            no_compute: Optional[pulumi.Input[_builtins.bool]] = None,
            oauth2_app_client_id: Optional[pulumi.Input[_builtins.str]] = None,
            oauth2_app_integration_id: Optional[pulumi.Input[_builtins.str]] = None,
            pending_deployment: Optional[pulumi.Input[Union['AppPendingDeploymentArgs', 'AppPendingDeploymentArgsDict']]] = None,
            provider_config: Optional[pulumi.Input[Union['AppProviderConfigArgs', 'AppProviderConfigArgsDict']]] = None,
            resources: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AppResourceArgs', 'AppResourceArgsDict']]]]] = None,
            service_principal_client_id: Optional[pulumi.Input[_builtins.str]] = None,
            service_principal_id: Optional[pulumi.Input[_builtins.int]] = None,
            service_principal_name: Optional[pulumi.Input[_builtins.str]] = None,
            space: Optional[pulumi.Input[_builtins.str]] = None,
            telemetry_export_destinations: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AppTelemetryExportDestinationArgs', 'AppTelemetryExportDestinationArgsDict']]]]] = None,
            update_time: Optional[pulumi.Input[_builtins.str]] = None,
            updater: Optional[pulumi.Input[_builtins.str]] = None,
            url: Optional[pulumi.Input[_builtins.str]] = None,
            usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
            user_api_scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None) -> 'App':
        """
        Get an existing App resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Union['AppAppStatusArgs', 'AppAppStatusArgsDict']] app_status: attribute
        :param pulumi.Input[_builtins.str] budget_policy_id: The Budget Policy ID set for this resource.
        :param pulumi.Input[_builtins.str] compute_size: A string specifying compute size for the App. Possible values are `MEDIUM`, `LARGE`.
        :param pulumi.Input[Union['AppComputeStatusArgs', 'AppComputeStatusArgsDict']] compute_status: attribute
        :param pulumi.Input[_builtins.str] create_time: The creation time of the app.
        :param pulumi.Input[_builtins.str] creator: The email of the user that created the app.
        :param pulumi.Input[_builtins.str] default_source_code_path: The default workspace file system path of the source code from which app deployment are created. This field tracks the workspace source code path of the last active deployment.
        :param pulumi.Input[_builtins.str] description: The description of the app.
        :param pulumi.Input[_builtins.str] effective_budget_policy_id: The effective budget policy ID.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] effective_user_api_scopes: A list of effective api scopes granted to the user access token.
        :param pulumi.Input[_builtins.str] name: The name of the app. The name must contain only lowercase alphanumeric characters and hyphens. It must be unique within the workspace.
        :param pulumi.Input[Sequence[pulumi.Input[Union['AppResourceArgs', 'AppResourceArgsDict']]]] resources: A list of resources that the app have access to.
        :param pulumi.Input[_builtins.str] service_principal_client_id: client_id (application_id) of the app service principal
        :param pulumi.Input[_builtins.int] service_principal_id: id of the app service principal
        :param pulumi.Input[_builtins.str] service_principal_name: name of the app service principal
        :param pulumi.Input[_builtins.str] update_time: The update time of the app.
        :param pulumi.Input[_builtins.str] updater: The email of the user that last updated the app.
        :param pulumi.Input[_builtins.str] url: The URL of the app once it is deployed.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] user_api_scopes: A list of api scopes granted to the user access token.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _AppState.__new__(_AppState)

        __props__.__dict__["active_deployment"] = active_deployment
        __props__.__dict__["app_status"] = app_status
        __props__.__dict__["budget_policy_id"] = budget_policy_id
        __props__.__dict__["compute_size"] = compute_size
        __props__.__dict__["compute_status"] = compute_status
        __props__.__dict__["create_time"] = create_time
        __props__.__dict__["creator"] = creator
        __props__.__dict__["default_source_code_path"] = default_source_code_path
        __props__.__dict__["description"] = description
        __props__.__dict__["effective_budget_policy_id"] = effective_budget_policy_id
        __props__.__dict__["effective_usage_policy_id"] = effective_usage_policy_id
        __props__.__dict__["effective_user_api_scopes"] = effective_user_api_scopes
        __props__.__dict__["git_repository"] = git_repository
        __props__.__dict__["name"] = name
        __props__.__dict__["no_compute"] = no_compute
        __props__.__dict__["oauth2_app_client_id"] = oauth2_app_client_id
        __props__.__dict__["oauth2_app_integration_id"] = oauth2_app_integration_id
        __props__.__dict__["pending_deployment"] = pending_deployment
        __props__.__dict__["provider_config"] = provider_config
        __props__.__dict__["resources"] = resources
        __props__.__dict__["service_principal_client_id"] = service_principal_client_id
        __props__.__dict__["service_principal_id"] = service_principal_id
        __props__.__dict__["service_principal_name"] = service_principal_name
        __props__.__dict__["space"] = space
        __props__.__dict__["telemetry_export_destinations"] = telemetry_export_destinations
        __props__.__dict__["update_time"] = update_time
        __props__.__dict__["updater"] = updater
        __props__.__dict__["url"] = url
        __props__.__dict__["usage_policy_id"] = usage_policy_id
        __props__.__dict__["user_api_scopes"] = user_api_scopes
        return App(resource_name, opts=opts, __props__=__props__)

    @_builtins.property
    @pulumi.getter(name="activeDeployment")
    def active_deployment(self) -> pulumi.Output['outputs.AppActiveDeployment']:
        return pulumi.get(self, "active_deployment")

    @_builtins.property
    @pulumi.getter(name="appStatus")
    def app_status(self) -> pulumi.Output['outputs.AppAppStatus']:
        """
        attribute
        """
        return pulumi.get(self, "app_status")

    @_builtins.property
    @pulumi.getter(name="budgetPolicyId")
    def budget_policy_id(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        The Budget Policy ID set for this resource.
        """
        return pulumi.get(self, "budget_policy_id")

    @_builtins.property
    @pulumi.getter(name="computeSize")
    def compute_size(self) -> pulumi.Output[_builtins.str]:
        """
        A string specifying compute size for the App. Possible values are `MEDIUM`, `LARGE`.
        """
        return pulumi.get(self, "compute_size")

    @_builtins.property
    @pulumi.getter(name="computeStatus")
    def compute_status(self) -> pulumi.Output['outputs.AppComputeStatus']:
        """
        attribute
        """
        return pulumi.get(self, "compute_status")

    @_builtins.property
    @pulumi.getter(name="createTime")
    def create_time(self) -> pulumi.Output[_builtins.str]:
        """
        The creation time of the app.
        """
        return pulumi.get(self, "create_time")

    @_builtins.property
    @pulumi.getter
    def creator(self) -> pulumi.Output[_builtins.str]:
        """
        The email of the user that created the app.
        """
        return pulumi.get(self, "creator")

    @_builtins.property
    @pulumi.getter(name="defaultSourceCodePath")
    def default_source_code_path(self) -> pulumi.Output[_builtins.str]:
        """
        The default workspace file system path of the source code from which app deployment are created. This field tracks the workspace source code path of the last active deployment.
        """
        return pulumi.get(self, "default_source_code_path")

    @_builtins.property
    @pulumi.getter
    def description(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        The description of the app.
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter(name="effectiveBudgetPolicyId")
    def effective_budget_policy_id(self) -> pulumi.Output[_builtins.str]:
        """
        The effective budget policy ID.
        """
        return pulumi.get(self, "effective_budget_policy_id")

    @_builtins.property
    @pulumi.getter(name="effectiveUsagePolicyId")
    def effective_usage_policy_id(self) -> pulumi.Output[_builtins.str]:
        return pulumi.get(self, "effective_usage_policy_id")

    @_builtins.property
    @pulumi.getter(name="effectiveUserApiScopes")
    def effective_user_api_scopes(self) -> pulumi.Output[Sequence[_builtins.str]]:
        """
        A list of effective api scopes granted to the user access token.
        """
        return pulumi.get(self, "effective_user_api_scopes")

    @_builtins.property
    @pulumi.getter(name="gitRepository")
    def git_repository(self) -> pulumi.Output[Optional['outputs.AppGitRepository']]:
        return pulumi.get(self, "git_repository")

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Output[_builtins.str]:
        """
        The name of the app. The name must contain only lowercase alphanumeric characters and hyphens. It must be unique within the workspace.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="noCompute")
    def no_compute(self) -> pulumi.Output[Optional[_builtins.bool]]:
        return pulumi.get(self, "no_compute")

    @_builtins.property
    @pulumi.getter(name="oauth2AppClientId")
    def oauth2_app_client_id(self) -> pulumi.Output[_builtins.str]:
        return pulumi.get(self, "oauth2_app_client_id")

    @_builtins.property
    @pulumi.getter(name="oauth2AppIntegrationId")
    def oauth2_app_integration_id(self) -> pulumi.Output[_builtins.str]:
        return pulumi.get(self, "oauth2_app_integration_id")

    @_builtins.property
    @pulumi.getter(name="pendingDeployment")
    def pending_deployment(self) -> pulumi.Output['outputs.AppPendingDeployment']:
        return pulumi.get(self, "pending_deployment")

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> pulumi.Output[Optional['outputs.AppProviderConfig']]:
        return pulumi.get(self, "provider_config")

    @_builtins.property
    @pulumi.getter
    def resources(self) -> pulumi.Output[Optional[Sequence['outputs.AppResource']]]:
        """
        A list of resources that the app have access to.
        """
        return pulumi.get(self, "resources")

    @_builtins.property
    @pulumi.getter(name="servicePrincipalClientId")
    def service_principal_client_id(self) -> pulumi.Output[_builtins.str]:
        """
        client_id (application_id) of the app service principal
        """
        return pulumi.get(self, "service_principal_client_id")

    @_builtins.property
    @pulumi.getter(name="servicePrincipalId")
    def service_principal_id(self) -> pulumi.Output[_builtins.int]:
        """
        id of the app service principal
        """
        return pulumi.get(self, "service_principal_id")

    @_builtins.property
    @pulumi.getter(name="servicePrincipalName")
    def service_principal_name(self) -> pulumi.Output[_builtins.str]:
        """
        name of the app service principal
        """
        return pulumi.get(self, "service_principal_name")

    @_builtins.property
    @pulumi.getter
    def space(self) -> pulumi.Output[Optional[_builtins.str]]:
        return pulumi.get(self, "space")

    @_builtins.property
    @pulumi.getter(name="telemetryExportDestinations")
    def telemetry_export_destinations(self) -> pulumi.Output[Optional[Sequence['outputs.AppTelemetryExportDestination']]]:
        return pulumi.get(self, "telemetry_export_destinations")

    @_builtins.property
    @pulumi.getter(name="updateTime")
    def update_time(self) -> pulumi.Output[_builtins.str]:
        """
        The update time of the app.
        """
        return pulumi.get(self, "update_time")

    @_builtins.property
    @pulumi.getter
    def updater(self) -> pulumi.Output[_builtins.str]:
        """
        The email of the user that last updated the app.
        """
        return pulumi.get(self, "updater")

    @_builtins.property
    @pulumi.getter
    def url(self) -> pulumi.Output[_builtins.str]:
        """
        The URL of the app once it is deployed.
        """
        return pulumi.get(self, "url")

    @_builtins.property
    @pulumi.getter(name="usagePolicyId")
    def usage_policy_id(self) -> pulumi.Output[Optional[_builtins.str]]:
        return pulumi.get(self, "usage_policy_id")

    @_builtins.property
    @pulumi.getter(name="userApiScopes")
    def user_api_scopes(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
        """
        A list of api scopes granted to the user access token.
        """
        return pulumi.get(self, "user_api_scopes")

