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

from enum import Enum
from azure.core import CaseInsensitiveEnumMeta


class AccessRecommendationType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The feature- generated recommendation shown to the reviewer."""

    APPROVE = "Approve"
    """Approve."""
    DENY = "Deny"
    """Deny."""
    NO_INFO_AVAILABLE = "NoInfoAvailable"
    """NoInfoAvailable."""


class AccessReviewActorIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The identity type : user/servicePrincipal."""

    USER = "user"
    """user."""
    SERVICE_PRINCIPAL = "servicePrincipal"
    """servicePrincipal."""


class AccessReviewApplyResult(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The outcome of applying the decision."""

    NEW = "New"
    """New."""
    APPLYING = "Applying"
    """Applying."""
    APPLIED_SUCCESSFULLY = "AppliedSuccessfully"
    """AppliedSuccessfully."""
    APPLIED_WITH_UNKNOWN_FAILURE = "AppliedWithUnknownFailure"
    """AppliedWithUnknownFailure."""
    APPLIED_SUCCESSFULLY_BUT_OBJECT_NOT_FOUND = "AppliedSuccessfullyButObjectNotFound"
    """AppliedSuccessfullyButObjectNotFound."""
    APPLY_NOT_SUPPORTED = "ApplyNotSupported"
    """ApplyNotSupported."""


class AccessReviewDecisionInsightType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of insight."""

    USER_SIGN_IN_INSIGHT = "userSignInInsight"
    """userSignInInsight."""


class AccessReviewDecisionPrincipalResourceMembershipType(  # pylint: disable=name-too-long
    str, Enum, metaclass=CaseInsensitiveEnumMeta
):
    """Type of AccessReviewDecisionPrincipalResourceMembershipType."""

    DIRECT = "direct"
    """direct."""
    INDIRECT = "indirect"
    """indirect."""


class AccessReviewHistoryDefinitionStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """This read-only field specifies the of the requested review history data. This is either
    requested, in-progress, done or error.
    """

    REQUESTED = "Requested"
    """Requested."""
    IN_PROGRESS = "InProgress"
    """InProgress."""
    DONE = "Done"
    """Done."""
    ERROR = "Error"
    """Error."""


class AccessReviewInstanceReviewersType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """This field specifies the type of reviewers for a review. Usually for a review, reviewers are
    explicitly assigned. However, in some cases, the reviewers may not be assigned and instead be
    chosen dynamically. For example managers review or self review.
    """

    ASSIGNED = "Assigned"
    """Assigned."""
    SELF = "Self"
    """Self."""
    MANAGERS = "Managers"
    """Managers."""


class AccessReviewInstanceStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """This read-only field specifies the status of an access review instance."""

    NOT_STARTED = "NotStarted"
    """NotStarted."""
    IN_PROGRESS = "InProgress"
    """InProgress."""
    COMPLETED = "Completed"
    """Completed."""
    APPLIED = "Applied"
    """Applied."""
    INITIALIZING = "Initializing"
    """Initializing."""
    APPLYING = "Applying"
    """Applying."""
    COMPLETING = "Completing"
    """Completing."""
    SCHEDULED = "Scheduled"
    """Scheduled."""
    AUTO_REVIEWING = "AutoReviewing"
    """AutoReviewing."""
    AUTO_REVIEWED = "AutoReviewed"
    """AutoReviewed."""
    STARTING = "Starting"
    """Starting."""


class AccessReviewRecurrencePatternType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The recurrence type : weekly, monthly, etc."""

    WEEKLY = "weekly"
    """weekly."""
    ABSOLUTE_MONTHLY = "absoluteMonthly"
    """absoluteMonthly."""


class AccessReviewRecurrenceRangeType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The recurrence range type. The possible values are: endDate, noEnd, numbered."""

    END_DATE = "endDate"
    """endDate."""
    NO_END = "noEnd"
    """noEnd."""
    NUMBERED = "numbered"
    """numbered."""


class AccessReviewResult(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Represents a reviewer's decision for a given review."""

    APPROVE = "Approve"
    """Approve."""
    DENY = "Deny"
    """Deny."""
    NOT_REVIEWED = "NotReviewed"
    """NotReviewed."""
    DONT_KNOW = "DontKnow"
    """DontKnow."""
    NOT_NOTIFIED = "NotNotified"
    """NotNotified."""


class AccessReviewReviewerType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The identity type : user/servicePrincipal."""

    USER = "user"
    """user."""
    SERVICE_PRINCIPAL = "servicePrincipal"
    """servicePrincipal."""


class AccessReviewScheduleDefinitionReviewersType(  # pylint: disable=name-too-long
    str, Enum, metaclass=CaseInsensitiveEnumMeta
):
    """This field specifies the type of reviewers for a review. Usually for a review, reviewers are
    explicitly assigned. However, in some cases, the reviewers may not be assigned and instead be
    chosen dynamically. For example managers review or self review.
    """

    ASSIGNED = "Assigned"
    """Assigned."""
    SELF = "Self"
    """Self."""
    MANAGERS = "Managers"
    """Managers."""


class AccessReviewScheduleDefinitionStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """This read-only field specifies the status of an accessReview."""

    NOT_STARTED = "NotStarted"
    """NotStarted."""
    IN_PROGRESS = "InProgress"
    """InProgress."""
    COMPLETED = "Completed"
    """Completed."""
    APPLIED = "Applied"
    """Applied."""
    INITIALIZING = "Initializing"
    """Initializing."""
    APPLYING = "Applying"
    """Applying."""
    COMPLETING = "Completing"
    """Completing."""
    SCHEDULED = "Scheduled"
    """Scheduled."""
    AUTO_REVIEWING = "AutoReviewing"
    """AutoReviewing."""
    AUTO_REVIEWED = "AutoReviewed"
    """AutoReviewed."""
    STARTING = "Starting"
    """Starting."""


class AccessReviewScopeAssignmentState(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The role assignment state eligible/active to review."""

    ELIGIBLE = "eligible"
    """eligible."""
    ACTIVE = "active"
    """active."""


class AccessReviewScopePrincipalType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The identity type user/servicePrincipal to review."""

    USER = "user"
    """user."""
    GUEST_USER = "guestUser"
    """guestUser."""
    SERVICE_PRINCIPAL = "servicePrincipal"
    """servicePrincipal."""
    USER_GROUP = "user,group"
    """user,group."""
    REDEEMED_GUEST_USER = "redeemedGuestUser"
    """redeemedGuestUser."""


class ApprovalMode(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of rule."""

    SINGLE_STAGE = "SingleStage"
    """SingleStage."""
    SERIAL = "Serial"
    """Serial."""
    PARALLEL = "Parallel"
    """Parallel."""
    NO_APPROVAL = "NoApproval"
    """NoApproval."""


class AssignmentType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Assignment type of the role assignment schedule."""

    ACTIVATED = "Activated"
    """Activated."""
    ASSIGNED = "Assigned"
    """Assigned."""


class CommonUserType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of user."""

    USER = "User"
    """User."""
    GROUP = "Group"
    """Group."""


class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The kind of entity that created the resource."""

    USER = "User"
    """The entity was created by a user."""
    APPLICATION = "Application"
    """The entity was created by an application."""
    MANAGED_IDENTITY = "ManagedIdentity"
    """The entity was created by a managed identity."""
    KEY = "Key"
    """The entity was created by a key."""


class DecisionResourceType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of resource."""

    AZURE_ROLE = "azureRole"
    """azureRole."""


class DecisionTargetType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of decision target : User/ServicePrincipal."""

    USER = "user"
    """user."""
    SERVICE_PRINCIPAL = "servicePrincipal"
    """servicePrincipal."""


class DefaultDecisionType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """This specifies the behavior for the autoReview feature when an access review completes."""

    APPROVE = "Approve"
    """Approve."""
    DENY = "Deny"
    """Deny."""
    RECOMMENDATION = "Recommendation"
    """Recommendation."""


class DenyAssignmentEffect(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The effect of the deny assignment. 'enforced' blocks access, 'audit' logs without blocking."""

    ENFORCED = "enforced"
    """enforced."""
    AUDIT = "audit"
    """audit."""


class EnablementRules(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of enablement rule."""

    MULTI_FACTOR_AUTHENTICATION = "MultiFactorAuthentication"
    """MultiFactorAuthentication."""
    JUSTIFICATION = "Justification"
    """Justification."""
    TICKETING = "Ticketing"
    """Ticketing."""


class ExcludedPrincipalTypes(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of ExcludedPrincipalTypes."""

    SERVICE_PRINCIPALS_AS_TARGET = "ServicePrincipalsAsTarget"
    """ServicePrincipalsAsTarget."""
    SERVICE_PRINCIPALS_AS_REQUESTOR = "ServicePrincipalsAsRequestor"
    """ServicePrincipalsAsRequestor."""


class MemberType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Membership type of the role assignment schedule."""

    INHERITED = "Inherited"
    """Inherited."""
    DIRECT = "Direct"
    """Direct."""
    GROUP = "Group"
    """Group."""


class NotificationDeliveryMechanism(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of notification."""

    EMAIL = "Email"
    """Email."""


class NotificationLevel(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The notification level."""

    NONE = "None"
    """None."""
    CRITICAL = "Critical"
    """Critical."""
    ALL = "All"
    """All."""


class PIMOnlyMode(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Determines whether the setting is enabled, disabled or report only."""

    DISABLED = "Disabled"
    """Disabled."""
    ENABLED = "Enabled"
    """Enabled."""
    REPORT_ONLY = "ReportOnly"
    """ReportOnly."""


class PrincipalType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The principal type of the assigned principal ID."""

    USER = "User"
    """User."""
    GROUP = "Group"
    """Group."""
    SERVICE_PRINCIPAL = "ServicePrincipal"
    """ServicePrincipal."""
    FOREIGN_GROUP = "ForeignGroup"
    """ForeignGroup."""
    DEVICE = "Device"
    """Device."""


class RecipientType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The recipient type."""

    REQUESTOR = "Requestor"
    """Requestor."""
    APPROVER = "Approver"
    """Approver."""
    ADMIN = "Admin"
    """Admin."""


class RecordAllDecisionsResult(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The decision to make. Approvers can take action of Approve/Deny."""

    APPROVE = "Approve"
    """Approve."""
    DENY = "Deny"
    """Deny."""


class RequestType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the role assignment schedule request. Eg: SelfActivate, AdminAssign etc."""

    ADMIN_ASSIGN = "AdminAssign"
    """AdminAssign."""
    ADMIN_REMOVE = "AdminRemove"
    """AdminRemove."""
    ADMIN_UPDATE = "AdminUpdate"
    """AdminUpdate."""
    ADMIN_EXTEND = "AdminExtend"
    """AdminExtend."""
    ADMIN_RENEW = "AdminRenew"
    """AdminRenew."""
    SELF_ACTIVATE = "SelfActivate"
    """SelfActivate."""
    SELF_DEACTIVATE = "SelfDeactivate"
    """SelfDeactivate."""
    SELF_EXTEND = "SelfExtend"
    """SelfExtend."""
    SELF_RENEW = "SelfRenew"
    """SelfRenew."""


class RoleManagementPolicyRuleType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of rule."""

    ROLE_MANAGEMENT_POLICY_APPROVAL_RULE = "RoleManagementPolicyApprovalRule"
    """RoleManagementPolicyApprovalRule."""
    ROLE_MANAGEMENT_POLICY_AUTHENTICATION_CONTEXT_RULE = "RoleManagementPolicyAuthenticationContextRule"
    """RoleManagementPolicyAuthenticationContextRule."""
    ROLE_MANAGEMENT_POLICY_ENABLEMENT_RULE = "RoleManagementPolicyEnablementRule"
    """RoleManagementPolicyEnablementRule."""
    ROLE_MANAGEMENT_POLICY_EXPIRATION_RULE = "RoleManagementPolicyExpirationRule"
    """RoleManagementPolicyExpirationRule."""
    ROLE_MANAGEMENT_POLICY_NOTIFICATION_RULE = "RoleManagementPolicyNotificationRule"
    """RoleManagementPolicyNotificationRule."""
    ROLE_MANAGEMENT_POLICY_PIM_ONLY_MODE_RULE = "RoleManagementPolicyPimOnlyModeRule"
    """RoleManagementPolicyPimOnlyModeRule."""


class SeverityLevel(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Severity level of the alert."""

    LOW = "Low"
    """Low."""
    MEDIUM = "Medium"
    """Medium."""
    HIGH = "High"
    """High."""


class Status(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The status of the role assignment schedule."""

    ACCEPTED = "Accepted"
    """Accepted."""
    PENDING_EVALUATION = "PendingEvaluation"
    """PendingEvaluation."""
    GRANTED = "Granted"
    """Granted."""
    DENIED = "Denied"
    """Denied."""
    PENDING_PROVISIONING = "PendingProvisioning"
    """PendingProvisioning."""
    PROVISIONED = "Provisioned"
    """Provisioned."""
    PENDING_REVOCATION = "PendingRevocation"
    """PendingRevocation."""
    REVOKED = "Revoked"
    """Revoked."""
    CANCELED = "Canceled"
    """Canceled."""
    FAILED = "Failed"
    """Failed."""
    PENDING_APPROVAL_PROVISIONING = "PendingApprovalProvisioning"
    """PendingApprovalProvisioning."""
    PENDING_APPROVAL = "PendingApproval"
    """PendingApproval."""
    FAILED_AS_RESOURCE_IS_LOCKED = "FailedAsResourceIsLocked"
    """FailedAsResourceIsLocked."""
    PENDING_ADMIN_DECISION = "PendingAdminDecision"
    """PendingAdminDecision."""
    ADMIN_APPROVED = "AdminApproved"
    """AdminApproved."""
    ADMIN_DENIED = "AdminDenied"
    """AdminDenied."""
    TIMED_OUT = "TimedOut"
    """TimedOut."""
    PROVISIONING_STARTED = "ProvisioningStarted"
    """ProvisioningStarted."""
    INVALID = "Invalid"
    """Invalid."""
    PENDING_SCHEDULE_CREATION = "PendingScheduleCreation"
    """PendingScheduleCreation."""
    SCHEDULE_CREATED = "ScheduleCreated"
    """ScheduleCreated."""
    PENDING_EXTERNAL_PROVISIONING = "PendingExternalProvisioning"
    """PendingExternalProvisioning."""


class Type(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of the role assignment schedule expiration."""

    AFTER_DURATION = "AfterDuration"
    """AfterDuration."""
    AFTER_DATE_TIME = "AfterDateTime"
    """AfterDateTime."""
    NO_EXPIRATION = "NoExpiration"
    """NoExpiration."""


class UserType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of user."""

    USER = "User"
    """User."""
    GROUP = "Group"
    """Group."""
    SERVICE_PRINCIPAL = "ServicePrincipal"
    """ServicePrincipal."""
