# coding: utf-8

"""
    OneLogin API

    OpenAPI Specification for OneLogin  # noqa: E501

    The version of the OpenAPI document: 3.1.1
    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 onelogin import schemas  # noqa: F401


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

    Do not edit the class manually.

    The parameters section contains parameterized attributes that have defined at the connector level as well as custom attributes that have been defined specifically for this app. Regardless of how they are defined, all parameters have the following attributes.
Each parameter is an object with the key for the object being set as the parameters short name.
    """


    class MetaOapg:
        
        class properties:
            user_attribute_mappings = schemas.StrSchema
            user_attribute_macros = schemas.StrSchema
            label = schemas.StrSchema
            include_in_saml_assertion = schemas.BoolSchema
            __annotations__ = {
                "user_attribute_mappings": user_attribute_mappings,
                "user_attribute_macros": user_attribute_macros,
                "label": label,
                "include_in_saml_assertion": include_in_saml_assertion,
            }
        additional_properties = schemas.AnyTypeSchema
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["user_attribute_mappings"]) -> MetaOapg.properties.user_attribute_mappings: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["user_attribute_macros"]) -> MetaOapg.properties.user_attribute_macros: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["label"]) -> MetaOapg.properties.label: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["include_in_saml_assertion"]) -> MetaOapg.properties.include_in_saml_assertion: ...
    
    @typing.overload
    def __getitem__(self, name: str) -> MetaOapg.additional_properties: ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["user_attribute_mappings"], typing_extensions.Literal["user_attribute_macros"], typing_extensions.Literal["label"], typing_extensions.Literal["include_in_saml_assertion"], str, ]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["user_attribute_mappings"]) -> typing.Union[MetaOapg.properties.user_attribute_mappings, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["user_attribute_macros"]) -> typing.Union[MetaOapg.properties.user_attribute_macros, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["label"]) -> typing.Union[MetaOapg.properties.label, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["include_in_saml_assertion"]) -> typing.Union[MetaOapg.properties.include_in_saml_assertion, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: str) -> typing.Union[MetaOapg.additional_properties, schemas.Unset]: ...
    
    def get_item_oapg(self, name: typing.Union[typing_extensions.Literal["user_attribute_mappings"], typing_extensions.Literal["user_attribute_macros"], typing_extensions.Literal["label"], typing_extensions.Literal["include_in_saml_assertion"], str, ]):
        return super().get_item_oapg(name)

    def __new__(
        cls,
        *_args: typing.Union[dict, frozendict.frozendict, ],
        user_attribute_mappings: typing.Union[MetaOapg.properties.user_attribute_mappings, str, schemas.Unset] = schemas.unset,
        user_attribute_macros: typing.Union[MetaOapg.properties.user_attribute_macros, str, schemas.Unset] = schemas.unset,
        label: typing.Union[MetaOapg.properties.label, str, schemas.Unset] = schemas.unset,
        include_in_saml_assertion: typing.Union[MetaOapg.properties.include_in_saml_assertion, bool, schemas.Unset] = schemas.unset,
        _configuration: typing.Optional[schemas.Configuration] = None,
        **kwargs: typing.Union[MetaOapg.additional_properties, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, bool, None, list, tuple, bytes, io.FileIO, io.BufferedReader, ],
    ) -> 'AppParameters':
        return super().__new__(
            cls,
            *_args,
            user_attribute_mappings=user_attribute_mappings,
            user_attribute_macros=user_attribute_macros,
            label=label,
            include_in_saml_assertion=include_in_saml_assertion,
            _configuration=_configuration,
            **kwargs,
        )
