# 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 RolePermissionType(str, Enum):
    """
    RolePermissionType
    """

    """
    allowed enum values
    """
    OKTA_DOT_APPS_DOT_ASSIGNMENT_DOT_MANAGE = "okta.apps.assignment.manage"
    OKTA_DOT_APPS_DOT_MANAGE = "okta.apps.manage"
    OKTA_DOT_APPS_DOT_MANAGE_FIRST_PARTY_APPS = "okta.apps.manageFirstPartyApps"
    OKTA_DOT_APPS_DOT_READ = "okta.apps.read"
    OKTA_DOT_AUTHZ_SERVERS_DOT_MANAGE = "okta.authzServers.manage"
    OKTA_DOT_AUTHZ_SERVERS_DOT_READ = "okta.authzServers.read"
    OKTA_DOT_CUSTOMIZATIONS_DOT_MANAGE = "okta.customizations.manage"
    OKTA_DOT_CUSTOMIZATIONS_DOT_READ = "okta.customizations.read"
    OKTA_DOT_GOVERNANCE_DOT_ACCESS_CERTIFICATIONS_DOT_MANAGE = (
        "okta.governance.accessCertifications.manage"
    )
    OKTA_DOT_GOVERNANCE_DOT_ACCESS_REQUESTS_DOT_MANAGE = (
        "okta.governance.accessRequests.manage"
    )
    OKTA_DOT_GROUPS_DOT_APP_ASSIGNMENT_DOT_MANAGE = "okta.groups.appAssignment.manage"
    OKTA_DOT_GROUPS_DOT_CREATE = "okta.groups.create"
    OKTA_DOT_GROUPS_DOT_MANAGE = "okta.groups.manage"
    OKTA_DOT_GROUPS_DOT_MEMBERS_DOT_MANAGE = "okta.groups.members.manage"
    OKTA_DOT_GROUPS_DOT_READ = "okta.groups.read"
    OKTA_DOT_IDENTITY_PROVIDERS_DOT_MANAGE = "okta.identityProviders.manage"
    OKTA_DOT_IDENTITY_PROVIDERS_DOT_READ = "okta.identityProviders.read"
    OKTA_DOT_PROFILESOURCES_DOT_IMPORT_DOT_RUN = "okta.profilesources.import.run"
    OKTA_DOT_USERS_DOT_APP_ASSIGNMENT_DOT_MANAGE = "okta.users.appAssignment.manage"
    OKTA_DOT_USERS_DOT_CREATE = "okta.users.create"
    OKTA_DOT_USERS_DOT_CREDENTIALS_DOT_EXPIRE_PASSWORD = (
        "okta.users.credentials.expirePassword"
    )
    OKTA_DOT_USERS_DOT_CREDENTIALS_DOT_MANAGE = "okta.users.credentials.manage"
    OKTA_DOT_USERS_DOT_CREDENTIALS_DOT_RESET_FACTORS = (
        "okta.users.credentials.resetFactors"
    )
    OKTA_DOT_USERS_DOT_CREDENTIALS_DOT_RESET_PASSWORD = (
        "okta.users.credentials.resetPassword"
    )
    OKTA_DOT_USERS_DOT_GROUP_MEMBERSHIP_DOT_MANAGE = "okta.users.groupMembership.manage"
    OKTA_DOT_USERS_DOT_LIFECYCLE_DOT_ACTIVATE = "okta.users.lifecycle.activate"
    OKTA_DOT_USERS_DOT_LIFECYCLE_DOT_CLEAR_SESSIONS = (
        "okta.users.lifecycle.clearSessions"
    )
    OKTA_DOT_USERS_DOT_LIFECYCLE_DOT_DEACTIVATE = "okta.users.lifecycle.deactivate"
    OKTA_DOT_USERS_DOT_LIFECYCLE_DOT_DELETE = "okta.users.lifecycle.delete"
    OKTA_DOT_USERS_DOT_LIFECYCLE_DOT_MANAGE = "okta.users.lifecycle.manage"
    OKTA_DOT_USERS_DOT_LIFECYCLE_DOT_SUSPEND = "okta.users.lifecycle.suspend"
    OKTA_DOT_USERS_DOT_LIFECYCLE_DOT_UNLOCK = "okta.users.lifecycle.unlock"
    OKTA_DOT_USERS_DOT_LIFECYCLE_DOT_UNSUSPEND = "okta.users.lifecycle.unsuspend"
    OKTA_DOT_USERS_DOT_MANAGE = "okta.users.manage"
    OKTA_DOT_USERS_DOT_READ = "okta.users.read"
    OKTA_DOT_USERS_DOT_USERPROFILE_DOT_MANAGE = "okta.users.userprofile.manage"

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