# 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 ProvisioningGroupsAction(str, Enum):
    """
    Provisioning action for the IdP user's group memberships  | Enum     | Description
                                                                                                                    |
                                                                                                                    Existing
                                                                                                                    OKTA_GROUP Memberships                                                                       | Existing APP_GROUP Memberships | Existing BUILT_IN Memberships | | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------ | ----------------------------- | | `APPEND` | Adds a user to any group defined by the IdP as a value of the `sourceAttributeName` array that matches the name of the allow listed group defined in the `filter` | Unchanged                                                                                             | Unchanged                      | Unchanged                     | | `ASSIGN` | Assigns a user to groups defined in the `assignments` array                                                                                                       | Unchanged                                                                                             | Unchanged                      | Unchanged                     | | `NONE`   | Skips processing of group memberships                                                                                                                             | Unchanged                                                                                             | Unchanged                      | Unchanged                     | | `SYNC`   | Group memberships are sourced by the IdP as a value of the `sourceAttributeName` array that matches the name of the group defined in the `filter`                 | Removed if not defined by the IdP in `sourceAttributeName` and matching name of the group in `filter` | Unchanged                      | Unchanged                     |  > **Note:** Group provisioning action is processed independently from profile sourcing. You can sync group memberships through SAML with profile sourcing disabled.   # noqa: E501
    """

    """
    allowed enum values
    """
    APPEND = "APPEND"
    ASSIGN = "ASSIGN"
    NONE = "NONE"
    SYNC = "SYNC"

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