# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from . import _utilities
from . import outputs

__all__ = [
    'ApplicationApi',
    'ApplicationApiOauth2PermissionScope',
    'ApplicationAppRole',
    'ApplicationOauth2Permission',
    'ApplicationOptionalClaims',
    'ApplicationOptionalClaimsAccessToken',
    'ApplicationOptionalClaimsIdToken',
    'ApplicationRequiredResourceAccess',
    'ApplicationRequiredResourceAccessResourceAccess',
    'ApplicationWeb',
    'ApplicationWebImplicitGrant',
    'ServicePrincipalAppRole',
    'ServicePrincipalOauth2Permission',
    'ServicePrincipalOauth2PermissionScope',
    'GetApplicationApiResult',
    'GetApplicationApiOauth2PermissionScopeResult',
    'GetApplicationAppRoleResult',
    'GetApplicationOauth2PermissionResult',
    'GetApplicationOptionalClaimsResult',
    'GetApplicationOptionalClaimsAccessTokenResult',
    'GetApplicationOptionalClaimsIdTokenResult',
    'GetApplicationRequiredResourceAccessResult',
    'GetApplicationRequiredResourceAccessResourceAccessResult',
    'GetApplicationWebResult',
    'GetApplicationWebImplicitGrantResult',
    'GetDomainsDomainResult',
    'GetServicePrincipalAppRoleResult',
    'GetServicePrincipalOauth2PermissionResult',
    'GetServicePrincipalOauth2PermissionScopeResult',
    'GetUsersUserResult',
]

@pulumi.output_type
class ApplicationApi(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "oauth2PermissionScopes":
            suggest = "oauth2_permission_scopes"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationApi. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationApi.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationApi.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 oauth2_permission_scopes: Optional[Sequence['outputs.ApplicationApiOauth2PermissionScope']] = None):
        """
        :param Sequence['ApplicationApiOauth2PermissionScopeArgs'] oauth2_permission_scopes: One or more `oauth2_permission_scope` blocks as documented below, to describe delegated permissions exposed by the web API represented by this Application.
        """
        if oauth2_permission_scopes is not None:
            pulumi.set(__self__, "oauth2_permission_scopes", oauth2_permission_scopes)

    @property
    @pulumi.getter(name="oauth2PermissionScopes")
    def oauth2_permission_scopes(self) -> Optional[Sequence['outputs.ApplicationApiOauth2PermissionScope']]:
        """
        One or more `oauth2_permission_scope` blocks as documented below, to describe delegated permissions exposed by the web API represented by this Application.
        """
        return pulumi.get(self, "oauth2_permission_scopes")


@pulumi.output_type
class ApplicationApiOauth2PermissionScope(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "adminConsentDescription":
            suggest = "admin_consent_description"
        elif key == "adminConsentDisplayName":
            suggest = "admin_consent_display_name"
        elif key == "userConsentDescription":
            suggest = "user_consent_description"
        elif key == "userConsentDisplayName":
            suggest = "user_consent_display_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationApiOauth2PermissionScope. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationApiOauth2PermissionScope.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationApiOauth2PermissionScope.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 id: str,
                 admin_consent_description: Optional[str] = None,
                 admin_consent_display_name: Optional[str] = None,
                 enabled: Optional[bool] = None,
                 type: Optional[str] = None,
                 user_consent_description: Optional[str] = None,
                 user_consent_display_name: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param str id: The unique identifier of the app role. This attribute is computed and cannot be specified manually in this block. If you need to specify a custom `id`, it's recommended to use the ApplicationAppRole resource.
        :param str admin_consent_description: Delegated permission description that appears in all tenant-wide admin consent experiences, intended to be read by an administrator granting the permission on behalf of all users.
        :param str admin_consent_display_name: Display name for the delegated permission, intended to be read by an administrator granting the permission on behalf of all users.
        :param bool enabled: Determines if the app role is enabled: Defaults to `true`.
        :param str type: The type of the application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not be set. **This legacy property is deprecated and will be removed in version 2.0 of the provider**.
        :param str user_consent_description: Delegated permission description that appears in the end user consent experience, intended to be read by a user consenting on their own behalf.
        :param str user_consent_display_name: Display name for the delegated permission that appears in the end user consent experience.
        :param str value: The value that is used for the `roles` claim in ID tokens and OAuth 2.0 access tokens that are authenticating an assigned service or user principal.
        """
        pulumi.set(__self__, "id", id)
        if admin_consent_description is not None:
            pulumi.set(__self__, "admin_consent_description", admin_consent_description)
        if admin_consent_display_name is not None:
            pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if user_consent_description is not None:
            pulumi.set(__self__, "user_consent_description", user_consent_description)
        if user_consent_display_name is not None:
            pulumi.set(__self__, "user_consent_display_name", user_consent_display_name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The unique identifier of the app role. This attribute is computed and cannot be specified manually in this block. If you need to specify a custom `id`, it's recommended to use the ApplicationAppRole resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="adminConsentDescription")
    def admin_consent_description(self) -> Optional[str]:
        """
        Delegated permission description that appears in all tenant-wide admin consent experiences, intended to be read by an administrator granting the permission on behalf of all users.
        """
        return pulumi.get(self, "admin_consent_description")

    @property
    @pulumi.getter(name="adminConsentDisplayName")
    def admin_consent_display_name(self) -> Optional[str]:
        """
        Display name for the delegated permission, intended to be read by an administrator granting the permission on behalf of all users.
        """
        return pulumi.get(self, "admin_consent_display_name")

    @property
    @pulumi.getter
    def enabled(self) -> Optional[bool]:
        """
        Determines if the app role is enabled: Defaults to `true`.
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        The type of the application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not be set. **This legacy property is deprecated and will be removed in version 2.0 of the provider**.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="userConsentDescription")
    def user_consent_description(self) -> Optional[str]:
        """
        Delegated permission description that appears in the end user consent experience, intended to be read by a user consenting on their own behalf.
        """
        return pulumi.get(self, "user_consent_description")

    @property
    @pulumi.getter(name="userConsentDisplayName")
    def user_consent_display_name(self) -> Optional[str]:
        """
        Display name for the delegated permission that appears in the end user consent experience.
        """
        return pulumi.get(self, "user_consent_display_name")

    @property
    @pulumi.getter
    def value(self) -> Optional[str]:
        """
        The value that is used for the `roles` claim in ID tokens and OAuth 2.0 access tokens that are authenticating an assigned service or user principal.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class ApplicationAppRole(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowedMemberTypes":
            suggest = "allowed_member_types"
        elif key == "displayName":
            suggest = "display_name"
        elif key == "isEnabled":
            suggest = "is_enabled"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationAppRole. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationAppRole.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationAppRole.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allowed_member_types: Sequence[str],
                 description: str,
                 display_name: str,
                 enabled: Optional[bool] = None,
                 id: Optional[str] = None,
                 is_enabled: Optional[bool] = None,
                 value: Optional[str] = None):
        """
        :param Sequence[str] allowed_member_types: Specifies whether this app role definition can be assigned to users and groups by setting to `User`, or to other applications (that are accessing this application in a standalone scenario) by setting to `Application`, or to both.
        :param str description: Description of the app role that appears when the role is being assigned and, if the role functions as an application permissions, during the consent experiences.
        :param str display_name: Display name for the app role that appears during app role assignment and in consent experiences.
        :param bool enabled: Determines if the app role is enabled: Defaults to `true`.
        :param str id: The unique identifier of the app role. This attribute is computed and cannot be specified manually in this block. If you need to specify a custom `id`, it's recommended to use the ApplicationAppRole resource.
        :param bool is_enabled: Determines if the permission is enabled: defaults to `true`.
        :param str value: The value that is used for the `roles` claim in ID tokens and OAuth 2.0 access tokens that are authenticating an assigned service or user principal.
        """
        pulumi.set(__self__, "allowed_member_types", allowed_member_types)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if is_enabled is not None:
            pulumi.set(__self__, "is_enabled", is_enabled)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="allowedMemberTypes")
    def allowed_member_types(self) -> Sequence[str]:
        """
        Specifies whether this app role definition can be assigned to users and groups by setting to `User`, or to other applications (that are accessing this application in a standalone scenario) by setting to `Application`, or to both.
        """
        return pulumi.get(self, "allowed_member_types")

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        Description of the app role that appears when the role is being assigned and, if the role functions as an application permissions, during the consent experiences.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        Display name for the app role that appears during app role assignment and in consent experiences.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def enabled(self) -> Optional[bool]:
        """
        Determines if the app role is enabled: Defaults to `true`.
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        The unique identifier of the app role. This attribute is computed and cannot be specified manually in this block. If you need to specify a custom `id`, it's recommended to use the ApplicationAppRole resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> Optional[bool]:
        """
        Determines if the permission is enabled: defaults to `true`.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter
    def value(self) -> Optional[str]:
        """
        The value that is used for the `roles` claim in ID tokens and OAuth 2.0 access tokens that are authenticating an assigned service or user principal.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class ApplicationOauth2Permission(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "adminConsentDescription":
            suggest = "admin_consent_description"
        elif key == "adminConsentDisplayName":
            suggest = "admin_consent_display_name"
        elif key == "isEnabled":
            suggest = "is_enabled"
        elif key == "userConsentDescription":
            suggest = "user_consent_description"
        elif key == "userConsentDisplayName":
            suggest = "user_consent_display_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationOauth2Permission. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationOauth2Permission.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationOauth2Permission.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 admin_consent_description: Optional[str] = None,
                 admin_consent_display_name: Optional[str] = None,
                 id: Optional[str] = None,
                 is_enabled: Optional[bool] = None,
                 type: Optional[str] = None,
                 user_consent_description: Optional[str] = None,
                 user_consent_display_name: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param str admin_consent_description: Delegated permission description that appears in all tenant-wide admin consent experiences, intended to be read by an administrator granting the permission on behalf of all users.
        :param str admin_consent_display_name: Display name for the delegated permission, intended to be read by an administrator granting the permission on behalf of all users.
        :param str id: The unique identifier of the app role. This attribute is computed and cannot be specified manually in this block. If you need to specify a custom `id`, it's recommended to use the ApplicationAppRole resource.
        :param bool is_enabled: Determines if the permission is enabled: defaults to `true`.
        :param str type: The type of the application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not be set. **This legacy property is deprecated and will be removed in version 2.0 of the provider**.
        :param str user_consent_description: Delegated permission description that appears in the end user consent experience, intended to be read by a user consenting on their own behalf.
        :param str user_consent_display_name: Display name for the delegated permission that appears in the end user consent experience.
        :param str value: The value that is used for the `roles` claim in ID tokens and OAuth 2.0 access tokens that are authenticating an assigned service or user principal.
        """
        if admin_consent_description is not None:
            pulumi.set(__self__, "admin_consent_description", admin_consent_description)
        if admin_consent_display_name is not None:
            pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if is_enabled is not None:
            pulumi.set(__self__, "is_enabled", is_enabled)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if user_consent_description is not None:
            pulumi.set(__self__, "user_consent_description", user_consent_description)
        if user_consent_display_name is not None:
            pulumi.set(__self__, "user_consent_display_name", user_consent_display_name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="adminConsentDescription")
    def admin_consent_description(self) -> Optional[str]:
        """
        Delegated permission description that appears in all tenant-wide admin consent experiences, intended to be read by an administrator granting the permission on behalf of all users.
        """
        return pulumi.get(self, "admin_consent_description")

    @property
    @pulumi.getter(name="adminConsentDisplayName")
    def admin_consent_display_name(self) -> Optional[str]:
        """
        Display name for the delegated permission, intended to be read by an administrator granting the permission on behalf of all users.
        """
        return pulumi.get(self, "admin_consent_display_name")

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        The unique identifier of the app role. This attribute is computed and cannot be specified manually in this block. If you need to specify a custom `id`, it's recommended to use the ApplicationAppRole resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> Optional[bool]:
        """
        Determines if the permission is enabled: defaults to `true`.
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        The type of the application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not be set. **This legacy property is deprecated and will be removed in version 2.0 of the provider**.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="userConsentDescription")
    def user_consent_description(self) -> Optional[str]:
        """
        Delegated permission description that appears in the end user consent experience, intended to be read by a user consenting on their own behalf.
        """
        return pulumi.get(self, "user_consent_description")

    @property
    @pulumi.getter(name="userConsentDisplayName")
    def user_consent_display_name(self) -> Optional[str]:
        """
        Display name for the delegated permission that appears in the end user consent experience.
        """
        return pulumi.get(self, "user_consent_display_name")

    @property
    @pulumi.getter
    def value(self) -> Optional[str]:
        """
        The value that is used for the `roles` claim in ID tokens and OAuth 2.0 access tokens that are authenticating an assigned service or user principal.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class ApplicationOptionalClaims(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "accessTokens":
            suggest = "access_tokens"
        elif key == "idTokens":
            suggest = "id_tokens"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationOptionalClaims. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationOptionalClaims.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationOptionalClaims.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 access_tokens: Optional[Sequence['outputs.ApplicationOptionalClaimsAccessToken']] = None,
                 id_tokens: Optional[Sequence['outputs.ApplicationOptionalClaimsIdToken']] = None):
        if access_tokens is not None:
            pulumi.set(__self__, "access_tokens", access_tokens)
        if id_tokens is not None:
            pulumi.set(__self__, "id_tokens", id_tokens)

    @property
    @pulumi.getter(name="accessTokens")
    def access_tokens(self) -> Optional[Sequence['outputs.ApplicationOptionalClaimsAccessToken']]:
        return pulumi.get(self, "access_tokens")

    @property
    @pulumi.getter(name="idTokens")
    def id_tokens(self) -> Optional[Sequence['outputs.ApplicationOptionalClaimsIdToken']]:
        return pulumi.get(self, "id_tokens")


@pulumi.output_type
class ApplicationOptionalClaimsAccessToken(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "additionalProperties":
            suggest = "additional_properties"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationOptionalClaimsAccessToken. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationOptionalClaimsAccessToken.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationOptionalClaimsAccessToken.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: str,
                 additional_properties: Optional[Sequence[str]] = None,
                 essential: Optional[bool] = None,
                 source: Optional[str] = None):
        """
        :param str name: The name of the optional claim.
        :param Sequence[str] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim.
        :param bool essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience.
        :param str source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object.
        """
        pulumi.set(__self__, "name", name)
        if additional_properties is not None:
            pulumi.set(__self__, "additional_properties", additional_properties)
        if essential is not None:
            pulumi.set(__self__, "essential", essential)
        if source is not None:
            pulumi.set(__self__, "source", source)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the optional claim.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="additionalProperties")
    def additional_properties(self) -> Optional[Sequence[str]]:
        """
        List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim.
        """
        return pulumi.get(self, "additional_properties")

    @property
    @pulumi.getter
    def essential(self) -> Optional[bool]:
        """
        Whether the claim specified by the client is necessary to ensure a smooth authorization experience.
        """
        return pulumi.get(self, "essential")

    @property
    @pulumi.getter
    def source(self) -> Optional[str]:
        """
        The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object.
        """
        return pulumi.get(self, "source")


@pulumi.output_type
class ApplicationOptionalClaimsIdToken(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "additionalProperties":
            suggest = "additional_properties"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationOptionalClaimsIdToken. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationOptionalClaimsIdToken.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationOptionalClaimsIdToken.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: str,
                 additional_properties: Optional[Sequence[str]] = None,
                 essential: Optional[bool] = None,
                 source: Optional[str] = None):
        """
        :param str name: The name of the optional claim.
        :param Sequence[str] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim.
        :param bool essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience.
        :param str source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object.
        """
        pulumi.set(__self__, "name", name)
        if additional_properties is not None:
            pulumi.set(__self__, "additional_properties", additional_properties)
        if essential is not None:
            pulumi.set(__self__, "essential", essential)
        if source is not None:
            pulumi.set(__self__, "source", source)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the optional claim.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="additionalProperties")
    def additional_properties(self) -> Optional[Sequence[str]]:
        """
        List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim.
        """
        return pulumi.get(self, "additional_properties")

    @property
    @pulumi.getter
    def essential(self) -> Optional[bool]:
        """
        Whether the claim specified by the client is necessary to ensure a smooth authorization experience.
        """
        return pulumi.get(self, "essential")

    @property
    @pulumi.getter
    def source(self) -> Optional[str]:
        """
        The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object.
        """
        return pulumi.get(self, "source")


@pulumi.output_type
class ApplicationRequiredResourceAccess(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "resourceAccesses":
            suggest = "resource_accesses"
        elif key == "resourceAppId":
            suggest = "resource_app_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationRequiredResourceAccess. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationRequiredResourceAccess.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationRequiredResourceAccess.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 resource_accesses: Sequence['outputs.ApplicationRequiredResourceAccessResourceAccess'],
                 resource_app_id: str):
        """
        :param Sequence['ApplicationRequiredResourceAccessResourceAccessArgs'] resource_accesses: A collection of `resource_access` blocks as documented below, describing OAuth2.0 permission scopes and app roles that the application requires from the specified resource.
        :param str resource_app_id: The unique identifier for the resource that the application requires access to. This should be the Application ID of the target application.
        """
        pulumi.set(__self__, "resource_accesses", resource_accesses)
        pulumi.set(__self__, "resource_app_id", resource_app_id)

    @property
    @pulumi.getter(name="resourceAccesses")
    def resource_accesses(self) -> Sequence['outputs.ApplicationRequiredResourceAccessResourceAccess']:
        """
        A collection of `resource_access` blocks as documented below, describing OAuth2.0 permission scopes and app roles that the application requires from the specified resource.
        """
        return pulumi.get(self, "resource_accesses")

    @property
    @pulumi.getter(name="resourceAppId")
    def resource_app_id(self) -> str:
        """
        The unique identifier for the resource that the application requires access to. This should be the Application ID of the target application.
        """
        return pulumi.get(self, "resource_app_id")


@pulumi.output_type
class ApplicationRequiredResourceAccessResourceAccess(dict):
    def __init__(__self__, *,
                 id: str,
                 type: str):
        """
        :param str id: The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes.
        :param str type: Specifies whether the `id` property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Specifies whether the `id` property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class ApplicationWeb(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "homepageUrl":
            suggest = "homepage_url"
        elif key == "implicitGrant":
            suggest = "implicit_grant"
        elif key == "logoutUrl":
            suggest = "logout_url"
        elif key == "redirectUris":
            suggest = "redirect_uris"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationWeb. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationWeb.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationWeb.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 homepage_url: Optional[str] = None,
                 implicit_grant: Optional['outputs.ApplicationWebImplicitGrant'] = None,
                 logout_url: Optional[str] = None,
                 redirect_uris: Optional[Sequence[str]] = None):
        """
        :param str homepage_url: Home page or landing page of the application.
        :param 'ApplicationWebImplicitGrantArgs' implicit_grant: An `implicit_grant` block as documented above.
        :param str logout_url: The URL that will be used by Microsoft's authorization service to sign out a user using front-channel, back-channel or SAML logout protocols.
        :param Sequence[str] redirect_uris: A list of URLs where user tokens are sent for sign-in, or the redirect URIs where OAuth 2.0 authorization codes and access tokens are sent.
        """
        if homepage_url is not None:
            pulumi.set(__self__, "homepage_url", homepage_url)
        if implicit_grant is not None:
            pulumi.set(__self__, "implicit_grant", implicit_grant)
        if logout_url is not None:
            pulumi.set(__self__, "logout_url", logout_url)
        if redirect_uris is not None:
            pulumi.set(__self__, "redirect_uris", redirect_uris)

    @property
    @pulumi.getter(name="homepageUrl")
    def homepage_url(self) -> Optional[str]:
        """
        Home page or landing page of the application.
        """
        return pulumi.get(self, "homepage_url")

    @property
    @pulumi.getter(name="implicitGrant")
    def implicit_grant(self) -> Optional['outputs.ApplicationWebImplicitGrant']:
        """
        An `implicit_grant` block as documented above.
        """
        return pulumi.get(self, "implicit_grant")

    @property
    @pulumi.getter(name="logoutUrl")
    def logout_url(self) -> Optional[str]:
        """
        The URL that will be used by Microsoft's authorization service to sign out a user using front-channel, back-channel or SAML logout protocols.
        """
        return pulumi.get(self, "logout_url")

    @property
    @pulumi.getter(name="redirectUris")
    def redirect_uris(self) -> Optional[Sequence[str]]:
        """
        A list of URLs where user tokens are sent for sign-in, or the redirect URIs where OAuth 2.0 authorization codes and access tokens are sent.
        """
        return pulumi.get(self, "redirect_uris")


@pulumi.output_type
class ApplicationWebImplicitGrant(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "accessTokenIssuanceEnabled":
            suggest = "access_token_issuance_enabled"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApplicationWebImplicitGrant. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApplicationWebImplicitGrant.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApplicationWebImplicitGrant.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 access_token_issuance_enabled: Optional[bool] = None):
        """
        :param bool access_token_issuance_enabled: Whether this web application can request an access token using OAuth 2.0 implicit flow.
        """
        if access_token_issuance_enabled is not None:
            pulumi.set(__self__, "access_token_issuance_enabled", access_token_issuance_enabled)

    @property
    @pulumi.getter(name="accessTokenIssuanceEnabled")
    def access_token_issuance_enabled(self) -> Optional[bool]:
        """
        Whether this web application can request an access token using OAuth 2.0 implicit flow.
        """
        return pulumi.get(self, "access_token_issuance_enabled")


@pulumi.output_type
class ServicePrincipalAppRole(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowedMemberTypes":
            suggest = "allowed_member_types"
        elif key == "displayName":
            suggest = "display_name"
        elif key == "isEnabled":
            suggest = "is_enabled"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ServicePrincipalAppRole. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ServicePrincipalAppRole.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ServicePrincipalAppRole.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allowed_member_types: Optional[Sequence[str]] = None,
                 description: Optional[str] = None,
                 display_name: Optional[str] = None,
                 enabled: Optional[bool] = None,
                 id: Optional[str] = None,
                 is_enabled: Optional[bool] = None,
                 value: Optional[str] = None):
        """
        :param Sequence[str] allowed_member_types: Specifies whether this app role definition can be assigned to users and groups, or to other applications (that are accessing this application in daemon service scenarios). Possible values are: `User` and `Application`, or both.
        :param str description: Permission help text that appears in the admin app assignment and consent experiences.
        :param str display_name: Display name for the permission that appears in the admin consent and app assignment experiences.
        :param bool enabled: Is this permission enabled?
        :param str id: The unique identifier for one of the `OAuth2Permission`.
        :param bool is_enabled: Is this permission enabled?
        :param str value: The name of this permission.
        """
        if allowed_member_types is not None:
            pulumi.set(__self__, "allowed_member_types", allowed_member_types)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if is_enabled is not None:
            pulumi.set(__self__, "is_enabled", is_enabled)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="allowedMemberTypes")
    def allowed_member_types(self) -> Optional[Sequence[str]]:
        """
        Specifies whether this app role definition can be assigned to users and groups, or to other applications (that are accessing this application in daemon service scenarios). Possible values are: `User` and `Application`, or both.
        """
        return pulumi.get(self, "allowed_member_types")

    @property
    @pulumi.getter
    def description(self) -> Optional[str]:
        """
        Permission help text that appears in the admin app assignment and consent experiences.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[str]:
        """
        Display name for the permission that appears in the admin consent and app assignment experiences.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def enabled(self) -> Optional[bool]:
        """
        Is this permission enabled?
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        The unique identifier for one of the `OAuth2Permission`.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> Optional[bool]:
        """
        Is this permission enabled?
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter
    def value(self) -> Optional[str]:
        """
        The name of this permission.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class ServicePrincipalOauth2Permission(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "adminConsentDescription":
            suggest = "admin_consent_description"
        elif key == "adminConsentDisplayName":
            suggest = "admin_consent_display_name"
        elif key == "isEnabled":
            suggest = "is_enabled"
        elif key == "userConsentDescription":
            suggest = "user_consent_description"
        elif key == "userConsentDisplayName":
            suggest = "user_consent_display_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ServicePrincipalOauth2Permission. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ServicePrincipalOauth2Permission.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ServicePrincipalOauth2Permission.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 admin_consent_description: Optional[str] = None,
                 admin_consent_display_name: Optional[str] = None,
                 id: Optional[str] = None,
                 is_enabled: Optional[bool] = None,
                 type: Optional[str] = None,
                 user_consent_description: Optional[str] = None,
                 user_consent_display_name: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param str admin_consent_description: The description of the admin consent.
        :param str admin_consent_display_name: The display name of the admin consent.
        :param str id: The unique identifier for one of the `OAuth2Permission`.
        :param bool is_enabled: Is this permission enabled?
        :param str type: The type of the permission.
        :param str user_consent_description: The description of the user consent.
        :param str user_consent_display_name: The display name of the user consent.
        :param str value: The name of this permission.
        """
        if admin_consent_description is not None:
            pulumi.set(__self__, "admin_consent_description", admin_consent_description)
        if admin_consent_display_name is not None:
            pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if is_enabled is not None:
            pulumi.set(__self__, "is_enabled", is_enabled)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if user_consent_description is not None:
            pulumi.set(__self__, "user_consent_description", user_consent_description)
        if user_consent_display_name is not None:
            pulumi.set(__self__, "user_consent_display_name", user_consent_display_name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="adminConsentDescription")
    def admin_consent_description(self) -> Optional[str]:
        """
        The description of the admin consent.
        """
        return pulumi.get(self, "admin_consent_description")

    @property
    @pulumi.getter(name="adminConsentDisplayName")
    def admin_consent_display_name(self) -> Optional[str]:
        """
        The display name of the admin consent.
        """
        return pulumi.get(self, "admin_consent_display_name")

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        The unique identifier for one of the `OAuth2Permission`.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> Optional[bool]:
        """
        Is this permission enabled?
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        The type of the permission.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="userConsentDescription")
    def user_consent_description(self) -> Optional[str]:
        """
        The description of the user consent.
        """
        return pulumi.get(self, "user_consent_description")

    @property
    @pulumi.getter(name="userConsentDisplayName")
    def user_consent_display_name(self) -> Optional[str]:
        """
        The display name of the user consent.
        """
        return pulumi.get(self, "user_consent_display_name")

    @property
    @pulumi.getter
    def value(self) -> Optional[str]:
        """
        The name of this permission.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class ServicePrincipalOauth2PermissionScope(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "adminConsentDescription":
            suggest = "admin_consent_description"
        elif key == "adminConsentDisplayName":
            suggest = "admin_consent_display_name"
        elif key == "userConsentDescription":
            suggest = "user_consent_description"
        elif key == "userConsentDisplayName":
            suggest = "user_consent_display_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ServicePrincipalOauth2PermissionScope. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ServicePrincipalOauth2PermissionScope.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ServicePrincipalOauth2PermissionScope.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 admin_consent_description: Optional[str] = None,
                 admin_consent_display_name: Optional[str] = None,
                 enabled: Optional[bool] = None,
                 id: Optional[str] = None,
                 type: Optional[str] = None,
                 user_consent_description: Optional[str] = None,
                 user_consent_display_name: Optional[str] = None,
                 value: Optional[str] = None):
        """
        :param str admin_consent_description: The description of the admin consent.
        :param str admin_consent_display_name: The display name of the admin consent.
        :param bool enabled: Is this permission enabled?
        :param str id: The unique identifier for one of the `OAuth2Permission`.
        :param str type: The type of the permission.
        :param str user_consent_description: The description of the user consent.
        :param str user_consent_display_name: The display name of the user consent.
        :param str value: The name of this permission.
        """
        if admin_consent_description is not None:
            pulumi.set(__self__, "admin_consent_description", admin_consent_description)
        if admin_consent_display_name is not None:
            pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if user_consent_description is not None:
            pulumi.set(__self__, "user_consent_description", user_consent_description)
        if user_consent_display_name is not None:
            pulumi.set(__self__, "user_consent_display_name", user_consent_display_name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="adminConsentDescription")
    def admin_consent_description(self) -> Optional[str]:
        """
        The description of the admin consent.
        """
        return pulumi.get(self, "admin_consent_description")

    @property
    @pulumi.getter(name="adminConsentDisplayName")
    def admin_consent_display_name(self) -> Optional[str]:
        """
        The display name of the admin consent.
        """
        return pulumi.get(self, "admin_consent_display_name")

    @property
    @pulumi.getter
    def enabled(self) -> Optional[bool]:
        """
        Is this permission enabled?
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        The unique identifier for one of the `OAuth2Permission`.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        The type of the permission.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="userConsentDescription")
    def user_consent_description(self) -> Optional[str]:
        """
        The description of the user consent.
        """
        return pulumi.get(self, "user_consent_description")

    @property
    @pulumi.getter(name="userConsentDisplayName")
    def user_consent_display_name(self) -> Optional[str]:
        """
        The display name of the user consent.
        """
        return pulumi.get(self, "user_consent_display_name")

    @property
    @pulumi.getter
    def value(self) -> Optional[str]:
        """
        The name of this permission.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetApplicationApiResult(dict):
    def __init__(__self__, *,
                 oauth2_permission_scopes: Sequence['outputs.GetApplicationApiOauth2PermissionScopeResult']):
        pulumi.set(__self__, "oauth2_permission_scopes", oauth2_permission_scopes)

    @property
    @pulumi.getter(name="oauth2PermissionScopes")
    def oauth2_permission_scopes(self) -> Sequence['outputs.GetApplicationApiOauth2PermissionScopeResult']:
        return pulumi.get(self, "oauth2_permission_scopes")


@pulumi.output_type
class GetApplicationApiOauth2PermissionScopeResult(dict):
    def __init__(__self__, *,
                 admin_consent_description: str,
                 admin_consent_display_name: str,
                 enabled: bool,
                 id: str,
                 is_enabled: bool,
                 type: str,
                 user_consent_description: str,
                 user_consent_display_name: str,
                 value: str):
        """
        :param str admin_consent_description: The description of the admin consent
        :param str admin_consent_display_name: The display name of the admin consent
        :param bool enabled: (Optional) Determines if the permission scope is enabled.
        :param str id: The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes.
        :param bool is_enabled: Is this permission enabled?
        :param str type: Specifies whether the `id` property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`.
        :param str user_consent_description: The description of the user consent
        :param str user_consent_display_name: The display name of the user consent
        :param str value: The name of this permission
        """
        pulumi.set(__self__, "admin_consent_description", admin_consent_description)
        pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "user_consent_description", user_consent_description)
        pulumi.set(__self__, "user_consent_display_name", user_consent_display_name)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="adminConsentDescription")
    def admin_consent_description(self) -> str:
        """
        The description of the admin consent
        """
        return pulumi.get(self, "admin_consent_description")

    @property
    @pulumi.getter(name="adminConsentDisplayName")
    def admin_consent_display_name(self) -> str:
        """
        The display name of the admin consent
        """
        return pulumi.get(self, "admin_consent_display_name")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (Optional) Determines if the permission scope is enabled.
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Is this permission enabled?
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Specifies whether the `id` property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="userConsentDescription")
    def user_consent_description(self) -> str:
        """
        The description of the user consent
        """
        return pulumi.get(self, "user_consent_description")

    @property
    @pulumi.getter(name="userConsentDisplayName")
    def user_consent_display_name(self) -> str:
        """
        The display name of the user consent
        """
        return pulumi.get(self, "user_consent_display_name")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        The name of this permission
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetApplicationAppRoleResult(dict):
    def __init__(__self__, *,
                 allowed_member_types: Sequence[str],
                 description: str,
                 display_name: str,
                 enabled: bool,
                 id: str,
                 is_enabled: bool,
                 value: str):
        """
        :param Sequence[str] allowed_member_types: Specifies whether this app role definition can be assigned to users and groups, or to other applications (that are accessing this application in a standalone scenario). Possible values are: `User` and `Application`, or both.
        :param str description: Description of the app role that appears when the role is being assigned and, if the role functions as an application permissions, during the consent experiences.
        :param str display_name: Specifies the display name of the application.
        :param bool enabled: (Optional) Determines if the permission scope is enabled.
        :param str id: The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes.
        :param bool is_enabled: Is this permission enabled?
        :param str value: The name of this permission
        """
        pulumi.set(__self__, "allowed_member_types", allowed_member_types)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="allowedMemberTypes")
    def allowed_member_types(self) -> Sequence[str]:
        """
        Specifies whether this app role definition can be assigned to users and groups, or to other applications (that are accessing this application in a standalone scenario). Possible values are: `User` and `Application`, or both.
        """
        return pulumi.get(self, "allowed_member_types")

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        Description of the app role that appears when the role is being assigned and, if the role functions as an application permissions, during the consent experiences.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        Specifies the display name of the application.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (Optional) Determines if the permission scope is enabled.
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Is this permission enabled?
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        The name of this permission
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetApplicationOauth2PermissionResult(dict):
    def __init__(__self__, *,
                 admin_consent_description: str,
                 admin_consent_display_name: str,
                 enabled: bool,
                 id: str,
                 is_enabled: bool,
                 type: str,
                 user_consent_description: str,
                 user_consent_display_name: str,
                 value: str):
        """
        :param str admin_consent_description: The description of the admin consent
        :param str admin_consent_display_name: The display name of the admin consent
        :param bool enabled: (Optional) Determines if the permission scope is enabled.
        :param str id: The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes.
        :param bool is_enabled: Is this permission enabled?
        :param str type: Specifies whether the `id` property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`.
        :param str user_consent_description: The description of the user consent
        :param str user_consent_display_name: The display name of the user consent
        :param str value: The name of this permission
        """
        pulumi.set(__self__, "admin_consent_description", admin_consent_description)
        pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "user_consent_description", user_consent_description)
        pulumi.set(__self__, "user_consent_display_name", user_consent_display_name)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="adminConsentDescription")
    def admin_consent_description(self) -> str:
        """
        The description of the admin consent
        """
        return pulumi.get(self, "admin_consent_description")

    @property
    @pulumi.getter(name="adminConsentDisplayName")
    def admin_consent_display_name(self) -> str:
        """
        The display name of the admin consent
        """
        return pulumi.get(self, "admin_consent_display_name")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        (Optional) Determines if the permission scope is enabled.
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Is this permission enabled?
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Specifies whether the `id` property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`.
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="userConsentDescription")
    def user_consent_description(self) -> str:
        """
        The description of the user consent
        """
        return pulumi.get(self, "user_consent_description")

    @property
    @pulumi.getter(name="userConsentDisplayName")
    def user_consent_display_name(self) -> str:
        """
        The display name of the user consent
        """
        return pulumi.get(self, "user_consent_display_name")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        The name of this permission
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetApplicationOptionalClaimsResult(dict):
    def __init__(__self__, *,
                 access_tokens: Optional[Sequence['outputs.GetApplicationOptionalClaimsAccessTokenResult']] = None,
                 id_tokens: Optional[Sequence['outputs.GetApplicationOptionalClaimsIdTokenResult']] = None):
        if access_tokens is not None:
            pulumi.set(__self__, "access_tokens", access_tokens)
        if id_tokens is not None:
            pulumi.set(__self__, "id_tokens", id_tokens)

    @property
    @pulumi.getter(name="accessTokens")
    def access_tokens(self) -> Optional[Sequence['outputs.GetApplicationOptionalClaimsAccessTokenResult']]:
        return pulumi.get(self, "access_tokens")

    @property
    @pulumi.getter(name="idTokens")
    def id_tokens(self) -> Optional[Sequence['outputs.GetApplicationOptionalClaimsIdTokenResult']]:
        return pulumi.get(self, "id_tokens")


@pulumi.output_type
class GetApplicationOptionalClaimsAccessTokenResult(dict):
    def __init__(__self__, *,
                 name: str,
                 additional_properties: Optional[Sequence[str]] = None,
                 essential: Optional[bool] = None,
                 source: Optional[str] = None):
        """
        :param str name: The name of the optional claim.
        :param Sequence[str] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim.
        :param bool essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience.
        :param str source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object.
        """
        pulumi.set(__self__, "name", name)
        if additional_properties is not None:
            pulumi.set(__self__, "additional_properties", additional_properties)
        if essential is not None:
            pulumi.set(__self__, "essential", essential)
        if source is not None:
            pulumi.set(__self__, "source", source)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the optional claim.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="additionalProperties")
    def additional_properties(self) -> Optional[Sequence[str]]:
        """
        List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim.
        """
        return pulumi.get(self, "additional_properties")

    @property
    @pulumi.getter
    def essential(self) -> Optional[bool]:
        """
        Whether the claim specified by the client is necessary to ensure a smooth authorization experience.
        """
        return pulumi.get(self, "essential")

    @property
    @pulumi.getter
    def source(self) -> Optional[str]:
        """
        The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object.
        """
        return pulumi.get(self, "source")


@pulumi.output_type
class GetApplicationOptionalClaimsIdTokenResult(dict):
    def __init__(__self__, *,
                 name: str,
                 additional_properties: Optional[Sequence[str]] = None,
                 essential: Optional[bool] = None,
                 source: Optional[str] = None):
        """
        :param str name: The name of the optional claim.
        :param Sequence[str] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim.
        :param bool essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience.
        :param str source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object.
        """
        pulumi.set(__self__, "name", name)
        if additional_properties is not None:
            pulumi.set(__self__, "additional_properties", additional_properties)
        if essential is not None:
            pulumi.set(__self__, "essential", essential)
        if source is not None:
            pulumi.set(__self__, "source", source)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the optional claim.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="additionalProperties")
    def additional_properties(self) -> Optional[Sequence[str]]:
        """
        List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim.
        """
        return pulumi.get(self, "additional_properties")

    @property
    @pulumi.getter
    def essential(self) -> Optional[bool]:
        """
        Whether the claim specified by the client is necessary to ensure a smooth authorization experience.
        """
        return pulumi.get(self, "essential")

    @property
    @pulumi.getter
    def source(self) -> Optional[str]:
        """
        The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object.
        """
        return pulumi.get(self, "source")


@pulumi.output_type
class GetApplicationRequiredResourceAccessResult(dict):
    def __init__(__self__, *,
                 resource_accesses: Sequence['outputs.GetApplicationRequiredResourceAccessResourceAccessResult'],
                 resource_app_id: str):
        """
        :param Sequence['GetApplicationRequiredResourceAccessResourceAccessArgs'] resource_accesses: A collection of `resource_access` blocks as documented below, describing OAuth2.0 permission scopes and app roles that the application requires from the specified resource.
        :param str resource_app_id: The unique identifier for the resource that the application requires access to. This is the Application ID of the target application.
        """
        pulumi.set(__self__, "resource_accesses", resource_accesses)
        pulumi.set(__self__, "resource_app_id", resource_app_id)

    @property
    @pulumi.getter(name="resourceAccesses")
    def resource_accesses(self) -> Sequence['outputs.GetApplicationRequiredResourceAccessResourceAccessResult']:
        """
        A collection of `resource_access` blocks as documented below, describing OAuth2.0 permission scopes and app roles that the application requires from the specified resource.
        """
        return pulumi.get(self, "resource_accesses")

    @property
    @pulumi.getter(name="resourceAppId")
    def resource_app_id(self) -> str:
        """
        The unique identifier for the resource that the application requires access to. This is the Application ID of the target application.
        """
        return pulumi.get(self, "resource_app_id")


@pulumi.output_type
class GetApplicationRequiredResourceAccessResourceAccessResult(dict):
    def __init__(__self__, *,
                 id: str,
                 type: str):
        """
        :param str id: The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes.
        :param str type: Specifies whether the `id` property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Specifies whether the `id` property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetApplicationWebResult(dict):
    def __init__(__self__, *,
                 homepage_url: str,
                 implicit_grants: Sequence['outputs.GetApplicationWebImplicitGrantResult'],
                 logout_url: str,
                 redirect_uris: Sequence[str]):
        """
        :param str homepage_url: Home page or landing page of the application.
        :param Sequence['GetApplicationWebImplicitGrantArgs'] implicit_grants: An `implicit_grant` block as documented above.
        :param str logout_url: The URL that will be used by Microsoft's authorization service to sign out a user using front-channel, back-channel or SAML logout protocols.
        :param Sequence[str] redirect_uris: A list of URLs where user tokens are sent for sign-in, or the redirect URIs where OAuth 2.0 authorization codes and access tokens are sent.
        """
        pulumi.set(__self__, "homepage_url", homepage_url)
        pulumi.set(__self__, "implicit_grants", implicit_grants)
        pulumi.set(__self__, "logout_url", logout_url)
        pulumi.set(__self__, "redirect_uris", redirect_uris)

    @property
    @pulumi.getter(name="homepageUrl")
    def homepage_url(self) -> str:
        """
        Home page or landing page of the application.
        """
        return pulumi.get(self, "homepage_url")

    @property
    @pulumi.getter(name="implicitGrants")
    def implicit_grants(self) -> Sequence['outputs.GetApplicationWebImplicitGrantResult']:
        """
        An `implicit_grant` block as documented above.
        """
        return pulumi.get(self, "implicit_grants")

    @property
    @pulumi.getter(name="logoutUrl")
    def logout_url(self) -> str:
        """
        The URL that will be used by Microsoft's authorization service to sign out a user using front-channel, back-channel or SAML logout protocols.
        """
        return pulumi.get(self, "logout_url")

    @property
    @pulumi.getter(name="redirectUris")
    def redirect_uris(self) -> Sequence[str]:
        """
        A list of URLs where user tokens are sent for sign-in, or the redirect URIs where OAuth 2.0 authorization codes and access tokens are sent.
        """
        return pulumi.get(self, "redirect_uris")


@pulumi.output_type
class GetApplicationWebImplicitGrantResult(dict):
    def __init__(__self__, *,
                 access_token_issuance_enabled: bool):
        """
        :param bool access_token_issuance_enabled: Whether this web application can request an access token using OAuth 2.0 implicit flow.
        """
        pulumi.set(__self__, "access_token_issuance_enabled", access_token_issuance_enabled)

    @property
    @pulumi.getter(name="accessTokenIssuanceEnabled")
    def access_token_issuance_enabled(self) -> bool:
        """
        Whether this web application can request an access token using OAuth 2.0 implicit flow.
        """
        return pulumi.get(self, "access_token_issuance_enabled")


@pulumi.output_type
class GetDomainsDomainResult(dict):
    def __init__(__self__, *,
                 authentication_type: str,
                 domain_name: str,
                 is_default: bool,
                 is_initial: bool,
                 is_verified: bool):
        """
        :param str authentication_type: The authentication type of the domain (Managed or Federated).
        :param str domain_name: The name of the domain.
        :param bool is_default: `True` if this is the default domain that is used for user creation.
        :param bool is_initial: `True` if this is the initial domain created by Azure Active Directory.
        :param bool is_verified: `True` if the domain has completed domain ownership verification.
        """
        pulumi.set(__self__, "authentication_type", authentication_type)
        pulumi.set(__self__, "domain_name", domain_name)
        pulumi.set(__self__, "is_default", is_default)
        pulumi.set(__self__, "is_initial", is_initial)
        pulumi.set(__self__, "is_verified", is_verified)

    @property
    @pulumi.getter(name="authenticationType")
    def authentication_type(self) -> str:
        """
        The authentication type of the domain (Managed or Federated).
        """
        return pulumi.get(self, "authentication_type")

    @property
    @pulumi.getter(name="domainName")
    def domain_name(self) -> str:
        """
        The name of the domain.
        """
        return pulumi.get(self, "domain_name")

    @property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> bool:
        """
        `True` if this is the default domain that is used for user creation.
        """
        return pulumi.get(self, "is_default")

    @property
    @pulumi.getter(name="isInitial")
    def is_initial(self) -> bool:
        """
        `True` if this is the initial domain created by Azure Active Directory.
        """
        return pulumi.get(self, "is_initial")

    @property
    @pulumi.getter(name="isVerified")
    def is_verified(self) -> bool:
        """
        `True` if the domain has completed domain ownership verification.
        """
        return pulumi.get(self, "is_verified")


@pulumi.output_type
class GetServicePrincipalAppRoleResult(dict):
    def __init__(__self__, *,
                 allowed_member_types: Sequence[str],
                 description: str,
                 display_name: str,
                 enabled: bool,
                 id: str,
                 is_enabled: bool,
                 value: str):
        """
        :param Sequence[str] allowed_member_types: Specifies whether this app role definition can be assigned to users and groups, or to other applications (that are accessing this application in daemon service scenarios). Possible values are: `User` and `Application`, or both.
        :param str description: Permission help text that appears in the admin app assignment and consent experiences.
        :param str display_name: The Display Name of the Azure AD Application associated with this Service Principal.
        :param bool enabled: Is this permission enabled?
        :param str id: The unique identifier for one of the `OAuth2Permission`
        :param bool is_enabled: Is this permission enabled?
        :param str value: The name of this permission
        """
        pulumi.set(__self__, "allowed_member_types", allowed_member_types)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="allowedMemberTypes")
    def allowed_member_types(self) -> Sequence[str]:
        """
        Specifies whether this app role definition can be assigned to users and groups, or to other applications (that are accessing this application in daemon service scenarios). Possible values are: `User` and `Application`, or both.
        """
        return pulumi.get(self, "allowed_member_types")

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        Permission help text that appears in the admin app assignment and consent experiences.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The Display Name of the Azure AD Application associated with this Service Principal.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        Is this permission enabled?
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The unique identifier for one of the `OAuth2Permission`
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Is this permission enabled?
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        The name of this permission
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetServicePrincipalOauth2PermissionResult(dict):
    def __init__(__self__, *,
                 admin_consent_description: str,
                 admin_consent_display_name: str,
                 id: str,
                 is_enabled: bool,
                 type: str,
                 user_consent_description: str,
                 user_consent_display_name: str,
                 value: str):
        """
        :param str admin_consent_description: The description of the admin consent
        :param str admin_consent_display_name: The display name of the admin consent
        :param str id: The unique identifier for one of the `OAuth2Permission`
        :param bool is_enabled: Is this permission enabled?
        :param str type: The type of the permission
        :param str user_consent_description: The description of the user consent
        :param str user_consent_display_name: The display name of the user consent
        :param str value: The name of this permission
        """
        pulumi.set(__self__, "admin_consent_description", admin_consent_description)
        pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_enabled", is_enabled)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "user_consent_description", user_consent_description)
        pulumi.set(__self__, "user_consent_display_name", user_consent_display_name)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="adminConsentDescription")
    def admin_consent_description(self) -> str:
        """
        The description of the admin consent
        """
        return pulumi.get(self, "admin_consent_description")

    @property
    @pulumi.getter(name="adminConsentDisplayName")
    def admin_consent_display_name(self) -> str:
        """
        The display name of the admin consent
        """
        return pulumi.get(self, "admin_consent_display_name")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The unique identifier for one of the `OAuth2Permission`
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="isEnabled")
    def is_enabled(self) -> bool:
        """
        Is this permission enabled?
        """
        return pulumi.get(self, "is_enabled")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        The type of the permission
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="userConsentDescription")
    def user_consent_description(self) -> str:
        """
        The description of the user consent
        """
        return pulumi.get(self, "user_consent_description")

    @property
    @pulumi.getter(name="userConsentDisplayName")
    def user_consent_display_name(self) -> str:
        """
        The display name of the user consent
        """
        return pulumi.get(self, "user_consent_display_name")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        The name of this permission
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetServicePrincipalOauth2PermissionScopeResult(dict):
    def __init__(__self__, *,
                 admin_consent_description: str,
                 admin_consent_display_name: str,
                 enabled: bool,
                 id: str,
                 type: str,
                 user_consent_description: str,
                 user_consent_display_name: str,
                 value: str):
        """
        :param str admin_consent_description: The description of the admin consent
        :param str admin_consent_display_name: The display name of the admin consent
        :param bool enabled: Is this permission enabled?
        :param str id: The unique identifier for one of the `OAuth2Permission`
        :param str type: The type of the permission
        :param str user_consent_description: The description of the user consent
        :param str user_consent_display_name: The display name of the user consent
        :param str value: The name of this permission
        """
        pulumi.set(__self__, "admin_consent_description", admin_consent_description)
        pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name)
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "user_consent_description", user_consent_description)
        pulumi.set(__self__, "user_consent_display_name", user_consent_display_name)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter(name="adminConsentDescription")
    def admin_consent_description(self) -> str:
        """
        The description of the admin consent
        """
        return pulumi.get(self, "admin_consent_description")

    @property
    @pulumi.getter(name="adminConsentDisplayName")
    def admin_consent_display_name(self) -> str:
        """
        The display name of the admin consent
        """
        return pulumi.get(self, "admin_consent_display_name")

    @property
    @pulumi.getter
    def enabled(self) -> bool:
        """
        Is this permission enabled?
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The unique identifier for one of the `OAuth2Permission`
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        The type of the permission
        """
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="userConsentDescription")
    def user_consent_description(self) -> str:
        """
        The description of the user consent
        """
        return pulumi.get(self, "user_consent_description")

    @property
    @pulumi.getter(name="userConsentDisplayName")
    def user_consent_display_name(self) -> str:
        """
        The display name of the user consent
        """
        return pulumi.get(self, "user_consent_display_name")

    @property
    @pulumi.getter
    def value(self) -> str:
        """
        The name of this permission
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetUsersUserResult(dict):
    def __init__(__self__, *,
                 account_enabled: bool,
                 display_name: str,
                 immutable_id: str,
                 mail: str,
                 mail_nickname: str,
                 object_id: str,
                 onpremises_immutable_id: str,
                 onpremises_sam_account_name: str,
                 onpremises_user_principal_name: str,
                 usage_location: str,
                 user_principal_name: str):
        """
        :param bool account_enabled: `True` if the account is enabled; otherwise `False`.
        :param str display_name: The Display Name of the Azure AD User.
        :param str immutable_id: (**Deprecated**) The value used to associate an on-premises Active Directory user account with their Azure AD user object. Deprecated in favour of `onpremises_immutable_id`.
        :param str mail: The primary email address of the Azure AD User.
        :param str mail_nickname: The email alias of the Azure AD User.
        :param str object_id: The Object ID of the Azure AD User.
        :param str onpremises_immutable_id: The value used to associate an on-premises Active Directory user account with their Azure AD user object.
        :param str onpremises_sam_account_name: The on-premise SAM account name of the Azure AD User.
        :param str onpremises_user_principal_name: The on-premise user principal name of the Azure AD User.
        :param str usage_location: The usage location of the Azure AD User.
        :param str user_principal_name: The User Principal Name of the Azure AD User.
        """
        pulumi.set(__self__, "account_enabled", account_enabled)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "immutable_id", immutable_id)
        pulumi.set(__self__, "mail", mail)
        pulumi.set(__self__, "mail_nickname", mail_nickname)
        pulumi.set(__self__, "object_id", object_id)
        pulumi.set(__self__, "onpremises_immutable_id", onpremises_immutable_id)
        pulumi.set(__self__, "onpremises_sam_account_name", onpremises_sam_account_name)
        pulumi.set(__self__, "onpremises_user_principal_name", onpremises_user_principal_name)
        pulumi.set(__self__, "usage_location", usage_location)
        pulumi.set(__self__, "user_principal_name", user_principal_name)

    @property
    @pulumi.getter(name="accountEnabled")
    def account_enabled(self) -> bool:
        """
        `True` if the account is enabled; otherwise `False`.
        """
        return pulumi.get(self, "account_enabled")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        The Display Name of the Azure AD User.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="immutableId")
    def immutable_id(self) -> str:
        """
        (**Deprecated**) The value used to associate an on-premises Active Directory user account with their Azure AD user object. Deprecated in favour of `onpremises_immutable_id`.
        """
        return pulumi.get(self, "immutable_id")

    @property
    @pulumi.getter
    def mail(self) -> str:
        """
        The primary email address of the Azure AD User.
        """
        return pulumi.get(self, "mail")

    @property
    @pulumi.getter(name="mailNickname")
    def mail_nickname(self) -> str:
        """
        The email alias of the Azure AD User.
        """
        return pulumi.get(self, "mail_nickname")

    @property
    @pulumi.getter(name="objectId")
    def object_id(self) -> str:
        """
        The Object ID of the Azure AD User.
        """
        return pulumi.get(self, "object_id")

    @property
    @pulumi.getter(name="onpremisesImmutableId")
    def onpremises_immutable_id(self) -> str:
        """
        The value used to associate an on-premises Active Directory user account with their Azure AD user object.
        """
        return pulumi.get(self, "onpremises_immutable_id")

    @property
    @pulumi.getter(name="onpremisesSamAccountName")
    def onpremises_sam_account_name(self) -> str:
        """
        The on-premise SAM account name of the Azure AD User.
        """
        return pulumi.get(self, "onpremises_sam_account_name")

    @property
    @pulumi.getter(name="onpremisesUserPrincipalName")
    def onpremises_user_principal_name(self) -> str:
        """
        The on-premise user principal name of the Azure AD User.
        """
        return pulumi.get(self, "onpremises_user_principal_name")

    @property
    @pulumi.getter(name="usageLocation")
    def usage_location(self) -> str:
        """
        The usage location of the Azure AD User.
        """
        return pulumi.get(self, "usage_location")

    @property
    @pulumi.getter(name="userPrincipalName")
    def user_principal_name(self) -> str:
        """
        The User Principal Name of the Azure AD User.
        """
        return pulumi.get(self, "user_principal_name")


