# The Okta software accompanied by this notice is provided pursuant to the following terms:
# Copyright © 2025-Present, Okta, Inc.
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
# License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS
# IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and limitations under the License.
# coding: utf-8

"""
Okta Admin Management

Allows customers to easily access the Okta Management APIs

The version of the OpenAPI document: 5.1.0
Contact: devex-public@okta.com
Generated by OpenAPI Generator (https://openapi-generator.tech)

Do not edit the class manually.
"""  # noqa: E501

from __future__ import annotations

import json
from enum import Enum

from typing_extensions import Self


class UserStatus(str, Enum):
    """
    The current status of the user.  The status of a user changes in response to explicit events, such as admin-driven
    lifecycle changes, user login, or self-service password recovery. Okta doesn't asynchronously sweep through users and
    update their password expiry state, for example. Instead, Okta evaluates password policy at login time, notices the
    password has expired, and moves the user to the expired state. When running reports, remember that the data is valid as
    of the last login or lifecycle event for that user.
    """

    """
    allowed enum values
    """
    ACTIVE = "ACTIVE"
    DEPROVISIONED = "DEPROVISIONED"
    LOCKED_OUT = "LOCKED_OUT"
    PASSWORD_EXPIRED = "PASSWORD_EXPIRED"
    PROVISIONED = "PROVISIONED"
    RECOVERY = "RECOVERY"
    STAGED = "STAGED"
    SUSPENDED = "SUSPENDED"

    @classmethod
    def from_json(cls, json_str: str) -> Self:
        """Create an instance of UserStatus from a JSON string"""
        return cls(json.loads(json_str))
