# 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 RoleType(str, Enum):
    """
    | Role type                    | Description                                                 |
    |------------------------------|-------------------------------------------------------------| |
    ACCESS_CERTIFICATIONS_ADMIN  | Access Certifications Administrator IAM-based standard role | | ACCESS_REQUESTS_ADMIN
       | Access Requests Administrator IAM-based standard role       | | API_ACCESS_MANAGEMENT_ADMIN  | Access Management
       Administrator standard role               | | APP_ADMIN                    | Application Administrator standard role
                          | | CUSTOM                       | Custom admin role                                           | |
                          GROUP_MEMBERSHIP_ADMIN       | Group Membership Administrator standard role                | |
                          HELP_DESK_ADMIN              | Help Desk Administrator standard role                       | |
                          ORG_ADMIN                    | Organizational Administrator standard role                  | |
                          READ_ONLY_ADMIN              | Read-Only Administrator standard role                       | |
                          REPORT_ADMIN                 | Report Administrator standard role                          | |
                          SUPER_ADMIN                  | Super Administrator standard role                           | |
                          USER_ADMIN                   | User Administrator standard role                            | |
                          WORKFLOWS_ADMIN              | Workflows Administrator IAM-based standard role             |
    """

    """
    allowed enum values
    """
    ACCESS_CERTIFICATIONS_ADMIN = "ACCESS_CERTIFICATIONS_ADMIN"
    ACCESS_REQUESTS_ADMIN = "ACCESS_REQUESTS_ADMIN"
    API_ACCESS_MANAGEMENT_ADMIN = "API_ACCESS_MANAGEMENT_ADMIN"
    APP_ADMIN = "APP_ADMIN"
    CUSTOM = "CUSTOM"
    GROUP_MEMBERSHIP_ADMIN = "GROUP_MEMBERSHIP_ADMIN"
    HELP_DESK_ADMIN = "HELP_DESK_ADMIN"
    ORG_ADMIN = "ORG_ADMIN"
    READ_ONLY_ADMIN = "READ_ONLY_ADMIN"
    REPORT_ADMIN = "REPORT_ADMIN"
    SUPER_ADMIN = "SUPER_ADMIN"
    USER_ADMIN = "USER_ADMIN"
    WORKFLOWS_ADMIN = "WORKFLOWS_ADMIN"

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