# coding: utf-8

"""
    Collibra Data Governance Center Core API

    <p>The Core REST API allows you to create your own integrations with Collibra Data Governance Center.</p><p><i>Create custom applications to help users get access to the right data.</i></p>  # noqa: E501

    The version of the OpenAPI document: 2.0
    Generated by: https://openapi-generator.tech
"""

from datetime import date, datetime  # noqa: F401
import decimal  # noqa: F401
import functools  # noqa: F401
import io  # noqa: F401
import re  # noqa: F401
import typing  # noqa: F401
import typing_extensions  # noqa: F401
import uuid  # noqa: F401

import frozendict  # noqa: F401

from collibra_core import schemas  # noqa: F401


class NamedDescribedWorkflowStartEventType(
    schemas.DictSchema
):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.

    Describes workflow start event with human-readable name and description.
    """


    class MetaOapg:
        
        class properties:
            
            
            class eventType(
                schemas.EnumBase,
                schemas.StrSchema
            ):
            
            
                class MetaOapg:
                    enum_value_to_name = {
                        "ASSET_ADDED": "ASSET_ADDED",
                        "ASSET_REMOVED": "ASSET_REMOVED",
                        "ASSET_STATUS_CHANGED": "ASSET_STATUS_CHANGED",
                        "ASSET_DOMAIN_CHANGED": "ASSET_DOMAIN_CHANGED",
                        "ASSET_TYPE_CHANGED": "ASSET_TYPE_CHANGED",
                        "ASSET_ATTRIBUTE_CHANGED": "ASSET_ATTRIBUTE_CHANGED",
                        "ASSET_NAME_CHANGED": "ASSET_NAME_CHANGED",
                        "ASSET_DISPLAY_NAME_CHANGED": "ASSET_DISPLAY_NAME_CHANGED",
                        "ASSET_ATTRIBUTE_ADDED": "ASSET_ATTRIBUTE_ADDED",
                        "ASSET_ATTRIBUTE_REMOVED": "ASSET_ATTRIBUTE_REMOVED",
                        "DOMAIN_ADDED": "DOMAIN_ADDED",
                        "DOMAIN_REMOVED": "DOMAIN_REMOVED",
                        "ROLE_GRANTED": "ROLE_GRANTED",
                        "ROLE_REVOKED": "ROLE_REVOKED",
                        "WORKFLOW_STARTED": "WORKFLOW_STARTED",
                        "WORKFLOW_CANCELED": "WORKFLOW_CANCELED",
                        "WORKLFLOW_ESCALATION": "WORKLFLOW_ESCALATION",
                        "WORKFLOW_TASK_COMPLETED": "WORKFLOW_TASK_COMPLETED",
                        "USER_ADDED": "USER_ADDED",
                        "USER_REMOVED": "USER_REMOVED",
                        "USER_DISABLED": "USER_DISABLED",
                        "COMMENT_ADDED": "COMMENT_ADDED",
                        "COMMENT_REMOVED": "COMMENT_REMOVED",
                        "COMMENT_CHANGED": "COMMENT_CHANGED",
                        "RELATION_ADDED_AND_ASSET_IS_SOURCE": "RELATION_ADDED_AND_ASSET_IS_SOURCE",
                        "RELATION_REMOVED_AND_ASSET_WAS_SOURCE": "RELATION_REMOVED_AND_ASSET_WAS_SOURCE",
                        "RELATION_ADDED_AND_ASSET_IS_TARGET": "RELATION_ADDED_AND_ASSET_IS_TARGET",
                        "RELATION_REMOVED_AND_ASSET_WAS_TARGET": "RELATION_REMOVED_AND_ASSET_WAS_TARGET",
                        "TAG_ASSIGN_CHANGED": "TAG_ASSIGN_CHANGED",
                        "CLASSIFICATION_MATCH_ACCEPTED": "CLASSIFICATION_MATCH_ACCEPTED",
                        "CLASSIFICATION_MATCH_REJECTED": "CLASSIFICATION_MATCH_REJECTED",
                        "CLASSIFICATION_MATCH_ADDED": "CLASSIFICATION_MATCH_ADDED",
                        "CLASSIFICATION_MATCH_REMOVED": "CLASSIFICATION_MATCH_REMOVED",
                        "CLASSIFICATION_MATCH_UPDATED": "CLASSIFICATION_MATCH_UPDATED",
                        "DATABASE_REGISTRATION_COMPLETED": "DATABASE_REGISTRATION_COMPLETED",
                        "DATABASE_REGISTRATION_FAILED": "DATABASE_REGISTRATION_FAILED",
                    }
                
                @schemas.classproperty
                def ASSET_ADDED(cls):
                    return cls("ASSET_ADDED")
                
                @schemas.classproperty
                def ASSET_REMOVED(cls):
                    return cls("ASSET_REMOVED")
                
                @schemas.classproperty
                def ASSET_STATUS_CHANGED(cls):
                    return cls("ASSET_STATUS_CHANGED")
                
                @schemas.classproperty
                def ASSET_DOMAIN_CHANGED(cls):
                    return cls("ASSET_DOMAIN_CHANGED")
                
                @schemas.classproperty
                def ASSET_TYPE_CHANGED(cls):
                    return cls("ASSET_TYPE_CHANGED")
                
                @schemas.classproperty
                def ASSET_ATTRIBUTE_CHANGED(cls):
                    return cls("ASSET_ATTRIBUTE_CHANGED")
                
                @schemas.classproperty
                def ASSET_NAME_CHANGED(cls):
                    return cls("ASSET_NAME_CHANGED")
                
                @schemas.classproperty
                def ASSET_DISPLAY_NAME_CHANGED(cls):
                    return cls("ASSET_DISPLAY_NAME_CHANGED")
                
                @schemas.classproperty
                def ASSET_ATTRIBUTE_ADDED(cls):
                    return cls("ASSET_ATTRIBUTE_ADDED")
                
                @schemas.classproperty
                def ASSET_ATTRIBUTE_REMOVED(cls):
                    return cls("ASSET_ATTRIBUTE_REMOVED")
                
                @schemas.classproperty
                def DOMAIN_ADDED(cls):
                    return cls("DOMAIN_ADDED")
                
                @schemas.classproperty
                def DOMAIN_REMOVED(cls):
                    return cls("DOMAIN_REMOVED")
                
                @schemas.classproperty
                def ROLE_GRANTED(cls):
                    return cls("ROLE_GRANTED")
                
                @schemas.classproperty
                def ROLE_REVOKED(cls):
                    return cls("ROLE_REVOKED")
                
                @schemas.classproperty
                def WORKFLOW_STARTED(cls):
                    return cls("WORKFLOW_STARTED")
                
                @schemas.classproperty
                def WORKFLOW_CANCELED(cls):
                    return cls("WORKFLOW_CANCELED")
                
                @schemas.classproperty
                def WORKLFLOW_ESCALATION(cls):
                    return cls("WORKLFLOW_ESCALATION")
                
                @schemas.classproperty
                def WORKFLOW_TASK_COMPLETED(cls):
                    return cls("WORKFLOW_TASK_COMPLETED")
                
                @schemas.classproperty
                def USER_ADDED(cls):
                    return cls("USER_ADDED")
                
                @schemas.classproperty
                def USER_REMOVED(cls):
                    return cls("USER_REMOVED")
                
                @schemas.classproperty
                def USER_DISABLED(cls):
                    return cls("USER_DISABLED")
                
                @schemas.classproperty
                def COMMENT_ADDED(cls):
                    return cls("COMMENT_ADDED")
                
                @schemas.classproperty
                def COMMENT_REMOVED(cls):
                    return cls("COMMENT_REMOVED")
                
                @schemas.classproperty
                def COMMENT_CHANGED(cls):
                    return cls("COMMENT_CHANGED")
                
                @schemas.classproperty
                def RELATION_ADDED_AND_ASSET_IS_SOURCE(cls):
                    return cls("RELATION_ADDED_AND_ASSET_IS_SOURCE")
                
                @schemas.classproperty
                def RELATION_REMOVED_AND_ASSET_WAS_SOURCE(cls):
                    return cls("RELATION_REMOVED_AND_ASSET_WAS_SOURCE")
                
                @schemas.classproperty
                def RELATION_ADDED_AND_ASSET_IS_TARGET(cls):
                    return cls("RELATION_ADDED_AND_ASSET_IS_TARGET")
                
                @schemas.classproperty
                def RELATION_REMOVED_AND_ASSET_WAS_TARGET(cls):
                    return cls("RELATION_REMOVED_AND_ASSET_WAS_TARGET")
                
                @schemas.classproperty
                def TAG_ASSIGN_CHANGED(cls):
                    return cls("TAG_ASSIGN_CHANGED")
                
                @schemas.classproperty
                def CLASSIFICATION_MATCH_ACCEPTED(cls):
                    return cls("CLASSIFICATION_MATCH_ACCEPTED")
                
                @schemas.classproperty
                def CLASSIFICATION_MATCH_REJECTED(cls):
                    return cls("CLASSIFICATION_MATCH_REJECTED")
                
                @schemas.classproperty
                def CLASSIFICATION_MATCH_ADDED(cls):
                    return cls("CLASSIFICATION_MATCH_ADDED")
                
                @schemas.classproperty
                def CLASSIFICATION_MATCH_REMOVED(cls):
                    return cls("CLASSIFICATION_MATCH_REMOVED")
                
                @schemas.classproperty
                def CLASSIFICATION_MATCH_UPDATED(cls):
                    return cls("CLASSIFICATION_MATCH_UPDATED")
                
                @schemas.classproperty
                def DATABASE_REGISTRATION_COMPLETED(cls):
                    return cls("DATABASE_REGISTRATION_COMPLETED")
                
                @schemas.classproperty
                def DATABASE_REGISTRATION_FAILED(cls):
                    return cls("DATABASE_REGISTRATION_FAILED")
            name = schemas.StrSchema
            description = schemas.StrSchema
            __annotations__ = {
                "eventType": eventType,
                "name": name,
                "description": description,
            }
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["eventType"]) -> MetaOapg.properties.eventType: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["name"]) -> MetaOapg.properties.name: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["description"]) -> MetaOapg.properties.description: ...
    
    @typing.overload
    def __getitem__(self, name: str) -> schemas.UnsetAnyTypeSchema: ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["eventType", "name", "description", ], str]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["eventType"]) -> typing.Union[MetaOapg.properties.eventType, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["name"]) -> typing.Union[MetaOapg.properties.name, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["description"]) -> typing.Union[MetaOapg.properties.description, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: str) -> typing.Union[schemas.UnsetAnyTypeSchema, schemas.Unset]: ...
    
    def get_item_oapg(self, name: typing.Union[typing_extensions.Literal["eventType", "name", "description", ], str]):
        return super().get_item_oapg(name)
    

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        eventType: typing.Union[MetaOapg.properties.eventType, str, schemas.Unset] = schemas.unset,
        name: typing.Union[MetaOapg.properties.name, str, schemas.Unset] = schemas.unset,
        description: typing.Union[MetaOapg.properties.description, str, schemas.Unset] = schemas.unset,
        _configuration: typing.Optional[schemas.Configuration] = None,
        **kwargs: typing.Union[schemas.AnyTypeSchema, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes],
    ) -> 'NamedDescribedWorkflowStartEventType':
        return super().__new__(
            cls,
            *args,
            eventType=eventType,
            name=name,
            description=description,
            _configuration=_configuration,
            **kwargs,
        )
