# coding: utf-8

"""
    Harbor API

    These APIs provide services for manipulating Harbor project.  # noqa: E501

    OpenAPI spec version: 2.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from harbor_client.configuration import Configuration


class Configurations(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'auth_mode': 'str',
        'ldap_base_dn': 'str',
        'ldap_filter': 'str',
        'ldap_group_base_dn': 'str',
        'ldap_group_admin_dn': 'str',
        'ldap_group_attribute_name': 'str',
        'ldap_group_search_filter': 'str',
        'ldap_group_search_scope': 'int',
        'ldap_scope': 'int',
        'ldap_search_dn': 'str',
        'ldap_search_password': 'str',
        'ldap_timeout': 'int',
        'ldap_uid': 'str',
        'ldap_url': 'str',
        'ldap_verify_cert': 'bool',
        'ldap_group_membership_attribute': 'str',
        'project_creation_restriction': 'str',
        'read_only': 'bool',
        'self_registration': 'bool',
        'token_expiration': 'int',
        'uaa_client_id': 'str',
        'uaa_client_secret': 'str',
        'uaa_endpoint': 'str',
        'uaa_verify_cert': 'bool',
        'http_authproxy_endpoint': 'str',
        'http_authproxy_tokenreview_endpoint': 'str',
        'http_authproxy_admin_groups': 'str',
        'http_authproxy_admin_usernames': 'str',
        'http_authproxy_verify_cert': 'bool',
        'http_authproxy_skip_search': 'bool',
        'http_authproxy_server_certificate': 'str',
        'oidc_name': 'str',
        'oidc_endpoint': 'str',
        'oidc_client_id': 'str',
        'oidc_client_secret': 'str',
        'oidc_groups_claim': 'str',
        'oidc_admin_group': 'str',
        'oidc_group_filter': 'str',
        'oidc_scope': 'str',
        'oidc_user_claim': 'str',
        'oidc_verify_cert': 'bool',
        'oidc_auto_onboard': 'bool',
        'oidc_extra_redirect_parms': 'str',
        'robot_token_duration': 'int',
        'robot_name_prefix': 'str',
        'notification_enable': 'bool',
        'quota_per_project_enable': 'bool',
        'storage_per_project': 'int',
        'audit_log_forward_endpoint': 'str',
        'skip_audit_log_database': 'bool',
        'session_timeout': 'int'
    }

    attribute_map = {
        'auth_mode': 'auth_mode',
        'ldap_base_dn': 'ldap_base_dn',
        'ldap_filter': 'ldap_filter',
        'ldap_group_base_dn': 'ldap_group_base_dn',
        'ldap_group_admin_dn': 'ldap_group_admin_dn',
        'ldap_group_attribute_name': 'ldap_group_attribute_name',
        'ldap_group_search_filter': 'ldap_group_search_filter',
        'ldap_group_search_scope': 'ldap_group_search_scope',
        'ldap_scope': 'ldap_scope',
        'ldap_search_dn': 'ldap_search_dn',
        'ldap_search_password': 'ldap_search_password',
        'ldap_timeout': 'ldap_timeout',
        'ldap_uid': 'ldap_uid',
        'ldap_url': 'ldap_url',
        'ldap_verify_cert': 'ldap_verify_cert',
        'ldap_group_membership_attribute': 'ldap_group_membership_attribute',
        'project_creation_restriction': 'project_creation_restriction',
        'read_only': 'read_only',
        'self_registration': 'self_registration',
        'token_expiration': 'token_expiration',
        'uaa_client_id': 'uaa_client_id',
        'uaa_client_secret': 'uaa_client_secret',
        'uaa_endpoint': 'uaa_endpoint',
        'uaa_verify_cert': 'uaa_verify_cert',
        'http_authproxy_endpoint': 'http_authproxy_endpoint',
        'http_authproxy_tokenreview_endpoint': 'http_authproxy_tokenreview_endpoint',
        'http_authproxy_admin_groups': 'http_authproxy_admin_groups',
        'http_authproxy_admin_usernames': 'http_authproxy_admin_usernames',
        'http_authproxy_verify_cert': 'http_authproxy_verify_cert',
        'http_authproxy_skip_search': 'http_authproxy_skip_search',
        'http_authproxy_server_certificate': 'http_authproxy_server_certificate',
        'oidc_name': 'oidc_name',
        'oidc_endpoint': 'oidc_endpoint',
        'oidc_client_id': 'oidc_client_id',
        'oidc_client_secret': 'oidc_client_secret',
        'oidc_groups_claim': 'oidc_groups_claim',
        'oidc_admin_group': 'oidc_admin_group',
        'oidc_group_filter': 'oidc_group_filter',
        'oidc_scope': 'oidc_scope',
        'oidc_user_claim': 'oidc_user_claim',
        'oidc_verify_cert': 'oidc_verify_cert',
        'oidc_auto_onboard': 'oidc_auto_onboard',
        'oidc_extra_redirect_parms': 'oidc_extra_redirect_parms',
        'robot_token_duration': 'robot_token_duration',
        'robot_name_prefix': 'robot_name_prefix',
        'notification_enable': 'notification_enable',
        'quota_per_project_enable': 'quota_per_project_enable',
        'storage_per_project': 'storage_per_project',
        'audit_log_forward_endpoint': 'audit_log_forward_endpoint',
        'skip_audit_log_database': 'skip_audit_log_database',
        'session_timeout': 'session_timeout'
    }

    def __init__(self, auth_mode=None, ldap_base_dn=None, ldap_filter=None, ldap_group_base_dn=None, ldap_group_admin_dn=None, ldap_group_attribute_name=None, ldap_group_search_filter=None, ldap_group_search_scope=None, ldap_scope=None, ldap_search_dn=None, ldap_search_password=None, ldap_timeout=None, ldap_uid=None, ldap_url=None, ldap_verify_cert=None, ldap_group_membership_attribute=None, project_creation_restriction=None, read_only=None, self_registration=None, token_expiration=None, uaa_client_id=None, uaa_client_secret=None, uaa_endpoint=None, uaa_verify_cert=None, http_authproxy_endpoint=None, http_authproxy_tokenreview_endpoint=None, http_authproxy_admin_groups=None, http_authproxy_admin_usernames=None, http_authproxy_verify_cert=None, http_authproxy_skip_search=None, http_authproxy_server_certificate=None, oidc_name=None, oidc_endpoint=None, oidc_client_id=None, oidc_client_secret=None, oidc_groups_claim=None, oidc_admin_group=None, oidc_group_filter=None, oidc_scope=None, oidc_user_claim=None, oidc_verify_cert=None, oidc_auto_onboard=None, oidc_extra_redirect_parms=None, robot_token_duration=None, robot_name_prefix=None, notification_enable=None, quota_per_project_enable=None, storage_per_project=None, audit_log_forward_endpoint=None, skip_audit_log_database=None, session_timeout=None, _configuration=None):  # noqa: E501
        """Configurations - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._auth_mode = None
        self._ldap_base_dn = None
        self._ldap_filter = None
        self._ldap_group_base_dn = None
        self._ldap_group_admin_dn = None
        self._ldap_group_attribute_name = None
        self._ldap_group_search_filter = None
        self._ldap_group_search_scope = None
        self._ldap_scope = None
        self._ldap_search_dn = None
        self._ldap_search_password = None
        self._ldap_timeout = None
        self._ldap_uid = None
        self._ldap_url = None
        self._ldap_verify_cert = None
        self._ldap_group_membership_attribute = None
        self._project_creation_restriction = None
        self._read_only = None
        self._self_registration = None
        self._token_expiration = None
        self._uaa_client_id = None
        self._uaa_client_secret = None
        self._uaa_endpoint = None
        self._uaa_verify_cert = None
        self._http_authproxy_endpoint = None
        self._http_authproxy_tokenreview_endpoint = None
        self._http_authproxy_admin_groups = None
        self._http_authproxy_admin_usernames = None
        self._http_authproxy_verify_cert = None
        self._http_authproxy_skip_search = None
        self._http_authproxy_server_certificate = None
        self._oidc_name = None
        self._oidc_endpoint = None
        self._oidc_client_id = None
        self._oidc_client_secret = None
        self._oidc_groups_claim = None
        self._oidc_admin_group = None
        self._oidc_group_filter = None
        self._oidc_scope = None
        self._oidc_user_claim = None
        self._oidc_verify_cert = None
        self._oidc_auto_onboard = None
        self._oidc_extra_redirect_parms = None
        self._robot_token_duration = None
        self._robot_name_prefix = None
        self._notification_enable = None
        self._quota_per_project_enable = None
        self._storage_per_project = None
        self._audit_log_forward_endpoint = None
        self._skip_audit_log_database = None
        self._session_timeout = None
        self.discriminator = None

        if auth_mode is not None:
            self.auth_mode = auth_mode
        if ldap_base_dn is not None:
            self.ldap_base_dn = ldap_base_dn
        if ldap_filter is not None:
            self.ldap_filter = ldap_filter
        if ldap_group_base_dn is not None:
            self.ldap_group_base_dn = ldap_group_base_dn
        if ldap_group_admin_dn is not None:
            self.ldap_group_admin_dn = ldap_group_admin_dn
        if ldap_group_attribute_name is not None:
            self.ldap_group_attribute_name = ldap_group_attribute_name
        if ldap_group_search_filter is not None:
            self.ldap_group_search_filter = ldap_group_search_filter
        if ldap_group_search_scope is not None:
            self.ldap_group_search_scope = ldap_group_search_scope
        if ldap_scope is not None:
            self.ldap_scope = ldap_scope
        if ldap_search_dn is not None:
            self.ldap_search_dn = ldap_search_dn
        if ldap_search_password is not None:
            self.ldap_search_password = ldap_search_password
        if ldap_timeout is not None:
            self.ldap_timeout = ldap_timeout
        if ldap_uid is not None:
            self.ldap_uid = ldap_uid
        if ldap_url is not None:
            self.ldap_url = ldap_url
        if ldap_verify_cert is not None:
            self.ldap_verify_cert = ldap_verify_cert
        if ldap_group_membership_attribute is not None:
            self.ldap_group_membership_attribute = ldap_group_membership_attribute
        if project_creation_restriction is not None:
            self.project_creation_restriction = project_creation_restriction
        if read_only is not None:
            self.read_only = read_only
        if self_registration is not None:
            self.self_registration = self_registration
        if token_expiration is not None:
            self.token_expiration = token_expiration
        if uaa_client_id is not None:
            self.uaa_client_id = uaa_client_id
        if uaa_client_secret is not None:
            self.uaa_client_secret = uaa_client_secret
        if uaa_endpoint is not None:
            self.uaa_endpoint = uaa_endpoint
        if uaa_verify_cert is not None:
            self.uaa_verify_cert = uaa_verify_cert
        if http_authproxy_endpoint is not None:
            self.http_authproxy_endpoint = http_authproxy_endpoint
        if http_authproxy_tokenreview_endpoint is not None:
            self.http_authproxy_tokenreview_endpoint = http_authproxy_tokenreview_endpoint
        if http_authproxy_admin_groups is not None:
            self.http_authproxy_admin_groups = http_authproxy_admin_groups
        if http_authproxy_admin_usernames is not None:
            self.http_authproxy_admin_usernames = http_authproxy_admin_usernames
        if http_authproxy_verify_cert is not None:
            self.http_authproxy_verify_cert = http_authproxy_verify_cert
        if http_authproxy_skip_search is not None:
            self.http_authproxy_skip_search = http_authproxy_skip_search
        if http_authproxy_server_certificate is not None:
            self.http_authproxy_server_certificate = http_authproxy_server_certificate
        if oidc_name is not None:
            self.oidc_name = oidc_name
        if oidc_endpoint is not None:
            self.oidc_endpoint = oidc_endpoint
        if oidc_client_id is not None:
            self.oidc_client_id = oidc_client_id
        if oidc_client_secret is not None:
            self.oidc_client_secret = oidc_client_secret
        if oidc_groups_claim is not None:
            self.oidc_groups_claim = oidc_groups_claim
        if oidc_admin_group is not None:
            self.oidc_admin_group = oidc_admin_group
        if oidc_group_filter is not None:
            self.oidc_group_filter = oidc_group_filter
        if oidc_scope is not None:
            self.oidc_scope = oidc_scope
        if oidc_user_claim is not None:
            self.oidc_user_claim = oidc_user_claim
        if oidc_verify_cert is not None:
            self.oidc_verify_cert = oidc_verify_cert
        if oidc_auto_onboard is not None:
            self.oidc_auto_onboard = oidc_auto_onboard
        if oidc_extra_redirect_parms is not None:
            self.oidc_extra_redirect_parms = oidc_extra_redirect_parms
        if robot_token_duration is not None:
            self.robot_token_duration = robot_token_duration
        if robot_name_prefix is not None:
            self.robot_name_prefix = robot_name_prefix
        if notification_enable is not None:
            self.notification_enable = notification_enable
        if quota_per_project_enable is not None:
            self.quota_per_project_enable = quota_per_project_enable
        if storage_per_project is not None:
            self.storage_per_project = storage_per_project
        if audit_log_forward_endpoint is not None:
            self.audit_log_forward_endpoint = audit_log_forward_endpoint
        if skip_audit_log_database is not None:
            self.skip_audit_log_database = skip_audit_log_database
        if session_timeout is not None:
            self.session_timeout = session_timeout

    @property
    def auth_mode(self):
        """Gets the auth_mode of this Configurations.  # noqa: E501

        The auth mode of current system, such as \"db_auth\", \"ldap_auth\", \"oidc_auth\"  # noqa: E501

        :return: The auth_mode of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._auth_mode

    @auth_mode.setter
    def auth_mode(self, auth_mode):
        """Sets the auth_mode of this Configurations.

        The auth mode of current system, such as \"db_auth\", \"ldap_auth\", \"oidc_auth\"  # noqa: E501

        :param auth_mode: The auth_mode of this Configurations.  # noqa: E501
        :type: str
        """

        self._auth_mode = auth_mode

    @property
    def ldap_base_dn(self):
        """Gets the ldap_base_dn of this Configurations.  # noqa: E501

        The Base DN for LDAP binding.  # noqa: E501

        :return: The ldap_base_dn of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._ldap_base_dn

    @ldap_base_dn.setter
    def ldap_base_dn(self, ldap_base_dn):
        """Sets the ldap_base_dn of this Configurations.

        The Base DN for LDAP binding.  # noqa: E501

        :param ldap_base_dn: The ldap_base_dn of this Configurations.  # noqa: E501
        :type: str
        """

        self._ldap_base_dn = ldap_base_dn

    @property
    def ldap_filter(self):
        """Gets the ldap_filter of this Configurations.  # noqa: E501

        The filter for LDAP search  # noqa: E501

        :return: The ldap_filter of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._ldap_filter

    @ldap_filter.setter
    def ldap_filter(self, ldap_filter):
        """Sets the ldap_filter of this Configurations.

        The filter for LDAP search  # noqa: E501

        :param ldap_filter: The ldap_filter of this Configurations.  # noqa: E501
        :type: str
        """

        self._ldap_filter = ldap_filter

    @property
    def ldap_group_base_dn(self):
        """Gets the ldap_group_base_dn of this Configurations.  # noqa: E501

        The base DN to search LDAP group.  # noqa: E501

        :return: The ldap_group_base_dn of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._ldap_group_base_dn

    @ldap_group_base_dn.setter
    def ldap_group_base_dn(self, ldap_group_base_dn):
        """Sets the ldap_group_base_dn of this Configurations.

        The base DN to search LDAP group.  # noqa: E501

        :param ldap_group_base_dn: The ldap_group_base_dn of this Configurations.  # noqa: E501
        :type: str
        """

        self._ldap_group_base_dn = ldap_group_base_dn

    @property
    def ldap_group_admin_dn(self):
        """Gets the ldap_group_admin_dn of this Configurations.  # noqa: E501

        Specify the ldap group which have the same privilege with Harbor admin  # noqa: E501

        :return: The ldap_group_admin_dn of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._ldap_group_admin_dn

    @ldap_group_admin_dn.setter
    def ldap_group_admin_dn(self, ldap_group_admin_dn):
        """Sets the ldap_group_admin_dn of this Configurations.

        Specify the ldap group which have the same privilege with Harbor admin  # noqa: E501

        :param ldap_group_admin_dn: The ldap_group_admin_dn of this Configurations.  # noqa: E501
        :type: str
        """

        self._ldap_group_admin_dn = ldap_group_admin_dn

    @property
    def ldap_group_attribute_name(self):
        """Gets the ldap_group_attribute_name of this Configurations.  # noqa: E501

        The attribute which is used as identity of the LDAP group, default is cn.'  # noqa: E501

        :return: The ldap_group_attribute_name of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._ldap_group_attribute_name

    @ldap_group_attribute_name.setter
    def ldap_group_attribute_name(self, ldap_group_attribute_name):
        """Sets the ldap_group_attribute_name of this Configurations.

        The attribute which is used as identity of the LDAP group, default is cn.'  # noqa: E501

        :param ldap_group_attribute_name: The ldap_group_attribute_name of this Configurations.  # noqa: E501
        :type: str
        """

        self._ldap_group_attribute_name = ldap_group_attribute_name

    @property
    def ldap_group_search_filter(self):
        """Gets the ldap_group_search_filter of this Configurations.  # noqa: E501

        The filter to search the ldap group  # noqa: E501

        :return: The ldap_group_search_filter of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._ldap_group_search_filter

    @ldap_group_search_filter.setter
    def ldap_group_search_filter(self, ldap_group_search_filter):
        """Sets the ldap_group_search_filter of this Configurations.

        The filter to search the ldap group  # noqa: E501

        :param ldap_group_search_filter: The ldap_group_search_filter of this Configurations.  # noqa: E501
        :type: str
        """

        self._ldap_group_search_filter = ldap_group_search_filter

    @property
    def ldap_group_search_scope(self):
        """Gets the ldap_group_search_scope of this Configurations.  # noqa: E501

        The scope to search ldap group. ''0-LDAP_SCOPE_BASE, 1-LDAP_SCOPE_ONELEVEL, 2-LDAP_SCOPE_SUBTREE''  # noqa: E501

        :return: The ldap_group_search_scope of this Configurations.  # noqa: E501
        :rtype: int
        """
        return self._ldap_group_search_scope

    @ldap_group_search_scope.setter
    def ldap_group_search_scope(self, ldap_group_search_scope):
        """Sets the ldap_group_search_scope of this Configurations.

        The scope to search ldap group. ''0-LDAP_SCOPE_BASE, 1-LDAP_SCOPE_ONELEVEL, 2-LDAP_SCOPE_SUBTREE''  # noqa: E501

        :param ldap_group_search_scope: The ldap_group_search_scope of this Configurations.  # noqa: E501
        :type: int
        """

        self._ldap_group_search_scope = ldap_group_search_scope

    @property
    def ldap_scope(self):
        """Gets the ldap_scope of this Configurations.  # noqa: E501

        The scope to search ldap users,'0-LDAP_SCOPE_BASE, 1-LDAP_SCOPE_ONELEVEL, 2-LDAP_SCOPE_SUBTREE'  # noqa: E501

        :return: The ldap_scope of this Configurations.  # noqa: E501
        :rtype: int
        """
        return self._ldap_scope

    @ldap_scope.setter
    def ldap_scope(self, ldap_scope):
        """Sets the ldap_scope of this Configurations.

        The scope to search ldap users,'0-LDAP_SCOPE_BASE, 1-LDAP_SCOPE_ONELEVEL, 2-LDAP_SCOPE_SUBTREE'  # noqa: E501

        :param ldap_scope: The ldap_scope of this Configurations.  # noqa: E501
        :type: int
        """

        self._ldap_scope = ldap_scope

    @property
    def ldap_search_dn(self):
        """Gets the ldap_search_dn of this Configurations.  # noqa: E501

        The DN of the user to do the search.  # noqa: E501

        :return: The ldap_search_dn of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._ldap_search_dn

    @ldap_search_dn.setter
    def ldap_search_dn(self, ldap_search_dn):
        """Sets the ldap_search_dn of this Configurations.

        The DN of the user to do the search.  # noqa: E501

        :param ldap_search_dn: The ldap_search_dn of this Configurations.  # noqa: E501
        :type: str
        """

        self._ldap_search_dn = ldap_search_dn

    @property
    def ldap_search_password(self):
        """Gets the ldap_search_password of this Configurations.  # noqa: E501

        The password of the ldap search dn  # noqa: E501

        :return: The ldap_search_password of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._ldap_search_password

    @ldap_search_password.setter
    def ldap_search_password(self, ldap_search_password):
        """Sets the ldap_search_password of this Configurations.

        The password of the ldap search dn  # noqa: E501

        :param ldap_search_password: The ldap_search_password of this Configurations.  # noqa: E501
        :type: str
        """

        self._ldap_search_password = ldap_search_password

    @property
    def ldap_timeout(self):
        """Gets the ldap_timeout of this Configurations.  # noqa: E501

        Timeout in seconds for connection to LDAP server  # noqa: E501

        :return: The ldap_timeout of this Configurations.  # noqa: E501
        :rtype: int
        """
        return self._ldap_timeout

    @ldap_timeout.setter
    def ldap_timeout(self, ldap_timeout):
        """Sets the ldap_timeout of this Configurations.

        Timeout in seconds for connection to LDAP server  # noqa: E501

        :param ldap_timeout: The ldap_timeout of this Configurations.  # noqa: E501
        :type: int
        """

        self._ldap_timeout = ldap_timeout

    @property
    def ldap_uid(self):
        """Gets the ldap_uid of this Configurations.  # noqa: E501

        The attribute which is used as identity for the LDAP binding, such as \"CN\" or \"SAMAccountname\"  # noqa: E501

        :return: The ldap_uid of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._ldap_uid

    @ldap_uid.setter
    def ldap_uid(self, ldap_uid):
        """Sets the ldap_uid of this Configurations.

        The attribute which is used as identity for the LDAP binding, such as \"CN\" or \"SAMAccountname\"  # noqa: E501

        :param ldap_uid: The ldap_uid of this Configurations.  # noqa: E501
        :type: str
        """

        self._ldap_uid = ldap_uid

    @property
    def ldap_url(self):
        """Gets the ldap_url of this Configurations.  # noqa: E501

        The URL of LDAP server  # noqa: E501

        :return: The ldap_url of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._ldap_url

    @ldap_url.setter
    def ldap_url(self, ldap_url):
        """Sets the ldap_url of this Configurations.

        The URL of LDAP server  # noqa: E501

        :param ldap_url: The ldap_url of this Configurations.  # noqa: E501
        :type: str
        """

        self._ldap_url = ldap_url

    @property
    def ldap_verify_cert(self):
        """Gets the ldap_verify_cert of this Configurations.  # noqa: E501

        Whether verify your OIDC server certificate, disable it if your OIDC server is hosted via self-hosted certificate.  # noqa: E501

        :return: The ldap_verify_cert of this Configurations.  # noqa: E501
        :rtype: bool
        """
        return self._ldap_verify_cert

    @ldap_verify_cert.setter
    def ldap_verify_cert(self, ldap_verify_cert):
        """Sets the ldap_verify_cert of this Configurations.

        Whether verify your OIDC server certificate, disable it if your OIDC server is hosted via self-hosted certificate.  # noqa: E501

        :param ldap_verify_cert: The ldap_verify_cert of this Configurations.  # noqa: E501
        :type: bool
        """

        self._ldap_verify_cert = ldap_verify_cert

    @property
    def ldap_group_membership_attribute(self):
        """Gets the ldap_group_membership_attribute of this Configurations.  # noqa: E501

        The user attribute to identify the group membership  # noqa: E501

        :return: The ldap_group_membership_attribute of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._ldap_group_membership_attribute

    @ldap_group_membership_attribute.setter
    def ldap_group_membership_attribute(self, ldap_group_membership_attribute):
        """Sets the ldap_group_membership_attribute of this Configurations.

        The user attribute to identify the group membership  # noqa: E501

        :param ldap_group_membership_attribute: The ldap_group_membership_attribute of this Configurations.  # noqa: E501
        :type: str
        """

        self._ldap_group_membership_attribute = ldap_group_membership_attribute

    @property
    def project_creation_restriction(self):
        """Gets the project_creation_restriction of this Configurations.  # noqa: E501

        Indicate who can create projects, it could be ''adminonly'' or ''everyone''.  # noqa: E501

        :return: The project_creation_restriction of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._project_creation_restriction

    @project_creation_restriction.setter
    def project_creation_restriction(self, project_creation_restriction):
        """Sets the project_creation_restriction of this Configurations.

        Indicate who can create projects, it could be ''adminonly'' or ''everyone''.  # noqa: E501

        :param project_creation_restriction: The project_creation_restriction of this Configurations.  # noqa: E501
        :type: str
        """

        self._project_creation_restriction = project_creation_restriction

    @property
    def read_only(self):
        """Gets the read_only of this Configurations.  # noqa: E501

        The flag to indicate whether Harbor is in readonly mode.  # noqa: E501

        :return: The read_only of this Configurations.  # noqa: E501
        :rtype: bool
        """
        return self._read_only

    @read_only.setter
    def read_only(self, read_only):
        """Sets the read_only of this Configurations.

        The flag to indicate whether Harbor is in readonly mode.  # noqa: E501

        :param read_only: The read_only of this Configurations.  # noqa: E501
        :type: bool
        """

        self._read_only = read_only

    @property
    def self_registration(self):
        """Gets the self_registration of this Configurations.  # noqa: E501

        Whether the Harbor instance supports self-registration.  If it''s set to false, admin need to add user to the instance.  # noqa: E501

        :return: The self_registration of this Configurations.  # noqa: E501
        :rtype: bool
        """
        return self._self_registration

    @self_registration.setter
    def self_registration(self, self_registration):
        """Sets the self_registration of this Configurations.

        Whether the Harbor instance supports self-registration.  If it''s set to false, admin need to add user to the instance.  # noqa: E501

        :param self_registration: The self_registration of this Configurations.  # noqa: E501
        :type: bool
        """

        self._self_registration = self_registration

    @property
    def token_expiration(self):
        """Gets the token_expiration of this Configurations.  # noqa: E501

        The expiration time of the token for internal Registry, in minutes.  # noqa: E501

        :return: The token_expiration of this Configurations.  # noqa: E501
        :rtype: int
        """
        return self._token_expiration

    @token_expiration.setter
    def token_expiration(self, token_expiration):
        """Sets the token_expiration of this Configurations.

        The expiration time of the token for internal Registry, in minutes.  # noqa: E501

        :param token_expiration: The token_expiration of this Configurations.  # noqa: E501
        :type: int
        """

        self._token_expiration = token_expiration

    @property
    def uaa_client_id(self):
        """Gets the uaa_client_id of this Configurations.  # noqa: E501

        The client id of UAA  # noqa: E501

        :return: The uaa_client_id of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._uaa_client_id

    @uaa_client_id.setter
    def uaa_client_id(self, uaa_client_id):
        """Sets the uaa_client_id of this Configurations.

        The client id of UAA  # noqa: E501

        :param uaa_client_id: The uaa_client_id of this Configurations.  # noqa: E501
        :type: str
        """

        self._uaa_client_id = uaa_client_id

    @property
    def uaa_client_secret(self):
        """Gets the uaa_client_secret of this Configurations.  # noqa: E501

        The client secret of the UAA  # noqa: E501

        :return: The uaa_client_secret of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._uaa_client_secret

    @uaa_client_secret.setter
    def uaa_client_secret(self, uaa_client_secret):
        """Sets the uaa_client_secret of this Configurations.

        The client secret of the UAA  # noqa: E501

        :param uaa_client_secret: The uaa_client_secret of this Configurations.  # noqa: E501
        :type: str
        """

        self._uaa_client_secret = uaa_client_secret

    @property
    def uaa_endpoint(self):
        """Gets the uaa_endpoint of this Configurations.  # noqa: E501

        The endpoint of the UAA  # noqa: E501

        :return: The uaa_endpoint of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._uaa_endpoint

    @uaa_endpoint.setter
    def uaa_endpoint(self, uaa_endpoint):
        """Sets the uaa_endpoint of this Configurations.

        The endpoint of the UAA  # noqa: E501

        :param uaa_endpoint: The uaa_endpoint of this Configurations.  # noqa: E501
        :type: str
        """

        self._uaa_endpoint = uaa_endpoint

    @property
    def uaa_verify_cert(self):
        """Gets the uaa_verify_cert of this Configurations.  # noqa: E501

        Verify the certificate in UAA server  # noqa: E501

        :return: The uaa_verify_cert of this Configurations.  # noqa: E501
        :rtype: bool
        """
        return self._uaa_verify_cert

    @uaa_verify_cert.setter
    def uaa_verify_cert(self, uaa_verify_cert):
        """Sets the uaa_verify_cert of this Configurations.

        Verify the certificate in UAA server  # noqa: E501

        :param uaa_verify_cert: The uaa_verify_cert of this Configurations.  # noqa: E501
        :type: bool
        """

        self._uaa_verify_cert = uaa_verify_cert

    @property
    def http_authproxy_endpoint(self):
        """Gets the http_authproxy_endpoint of this Configurations.  # noqa: E501

        The endpoint of the HTTP auth  # noqa: E501

        :return: The http_authproxy_endpoint of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._http_authproxy_endpoint

    @http_authproxy_endpoint.setter
    def http_authproxy_endpoint(self, http_authproxy_endpoint):
        """Sets the http_authproxy_endpoint of this Configurations.

        The endpoint of the HTTP auth  # noqa: E501

        :param http_authproxy_endpoint: The http_authproxy_endpoint of this Configurations.  # noqa: E501
        :type: str
        """

        self._http_authproxy_endpoint = http_authproxy_endpoint

    @property
    def http_authproxy_tokenreview_endpoint(self):
        """Gets the http_authproxy_tokenreview_endpoint of this Configurations.  # noqa: E501

        The token review endpoint  # noqa: E501

        :return: The http_authproxy_tokenreview_endpoint of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._http_authproxy_tokenreview_endpoint

    @http_authproxy_tokenreview_endpoint.setter
    def http_authproxy_tokenreview_endpoint(self, http_authproxy_tokenreview_endpoint):
        """Sets the http_authproxy_tokenreview_endpoint of this Configurations.

        The token review endpoint  # noqa: E501

        :param http_authproxy_tokenreview_endpoint: The http_authproxy_tokenreview_endpoint of this Configurations.  # noqa: E501
        :type: str
        """

        self._http_authproxy_tokenreview_endpoint = http_authproxy_tokenreview_endpoint

    @property
    def http_authproxy_admin_groups(self):
        """Gets the http_authproxy_admin_groups of this Configurations.  # noqa: E501

        The group which has the harbor admin privileges  # noqa: E501

        :return: The http_authproxy_admin_groups of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._http_authproxy_admin_groups

    @http_authproxy_admin_groups.setter
    def http_authproxy_admin_groups(self, http_authproxy_admin_groups):
        """Sets the http_authproxy_admin_groups of this Configurations.

        The group which has the harbor admin privileges  # noqa: E501

        :param http_authproxy_admin_groups: The http_authproxy_admin_groups of this Configurations.  # noqa: E501
        :type: str
        """

        self._http_authproxy_admin_groups = http_authproxy_admin_groups

    @property
    def http_authproxy_admin_usernames(self):
        """Gets the http_authproxy_admin_usernames of this Configurations.  # noqa: E501

        The username which has the harbor admin privileges  # noqa: E501

        :return: The http_authproxy_admin_usernames of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._http_authproxy_admin_usernames

    @http_authproxy_admin_usernames.setter
    def http_authproxy_admin_usernames(self, http_authproxy_admin_usernames):
        """Sets the http_authproxy_admin_usernames of this Configurations.

        The username which has the harbor admin privileges  # noqa: E501

        :param http_authproxy_admin_usernames: The http_authproxy_admin_usernames of this Configurations.  # noqa: E501
        :type: str
        """

        self._http_authproxy_admin_usernames = http_authproxy_admin_usernames

    @property
    def http_authproxy_verify_cert(self):
        """Gets the http_authproxy_verify_cert of this Configurations.  # noqa: E501

        Verify the HTTP auth provider's certificate  # noqa: E501

        :return: The http_authproxy_verify_cert of this Configurations.  # noqa: E501
        :rtype: bool
        """
        return self._http_authproxy_verify_cert

    @http_authproxy_verify_cert.setter
    def http_authproxy_verify_cert(self, http_authproxy_verify_cert):
        """Sets the http_authproxy_verify_cert of this Configurations.

        Verify the HTTP auth provider's certificate  # noqa: E501

        :param http_authproxy_verify_cert: The http_authproxy_verify_cert of this Configurations.  # noqa: E501
        :type: bool
        """

        self._http_authproxy_verify_cert = http_authproxy_verify_cert

    @property
    def http_authproxy_skip_search(self):
        """Gets the http_authproxy_skip_search of this Configurations.  # noqa: E501

        Search user before onboard  # noqa: E501

        :return: The http_authproxy_skip_search of this Configurations.  # noqa: E501
        :rtype: bool
        """
        return self._http_authproxy_skip_search

    @http_authproxy_skip_search.setter
    def http_authproxy_skip_search(self, http_authproxy_skip_search):
        """Sets the http_authproxy_skip_search of this Configurations.

        Search user before onboard  # noqa: E501

        :param http_authproxy_skip_search: The http_authproxy_skip_search of this Configurations.  # noqa: E501
        :type: bool
        """

        self._http_authproxy_skip_search = http_authproxy_skip_search

    @property
    def http_authproxy_server_certificate(self):
        """Gets the http_authproxy_server_certificate of this Configurations.  # noqa: E501

        The certificate of the HTTP auth provider  # noqa: E501

        :return: The http_authproxy_server_certificate of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._http_authproxy_server_certificate

    @http_authproxy_server_certificate.setter
    def http_authproxy_server_certificate(self, http_authproxy_server_certificate):
        """Sets the http_authproxy_server_certificate of this Configurations.

        The certificate of the HTTP auth provider  # noqa: E501

        :param http_authproxy_server_certificate: The http_authproxy_server_certificate of this Configurations.  # noqa: E501
        :type: str
        """

        self._http_authproxy_server_certificate = http_authproxy_server_certificate

    @property
    def oidc_name(self):
        """Gets the oidc_name of this Configurations.  # noqa: E501

        The OIDC provider name  # noqa: E501

        :return: The oidc_name of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._oidc_name

    @oidc_name.setter
    def oidc_name(self, oidc_name):
        """Sets the oidc_name of this Configurations.

        The OIDC provider name  # noqa: E501

        :param oidc_name: The oidc_name of this Configurations.  # noqa: E501
        :type: str
        """

        self._oidc_name = oidc_name

    @property
    def oidc_endpoint(self):
        """Gets the oidc_endpoint of this Configurations.  # noqa: E501

        The endpoint of the OIDC provider  # noqa: E501

        :return: The oidc_endpoint of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._oidc_endpoint

    @oidc_endpoint.setter
    def oidc_endpoint(self, oidc_endpoint):
        """Sets the oidc_endpoint of this Configurations.

        The endpoint of the OIDC provider  # noqa: E501

        :param oidc_endpoint: The oidc_endpoint of this Configurations.  # noqa: E501
        :type: str
        """

        self._oidc_endpoint = oidc_endpoint

    @property
    def oidc_client_id(self):
        """Gets the oidc_client_id of this Configurations.  # noqa: E501

        The client ID of the OIDC provider  # noqa: E501

        :return: The oidc_client_id of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._oidc_client_id

    @oidc_client_id.setter
    def oidc_client_id(self, oidc_client_id):
        """Sets the oidc_client_id of this Configurations.

        The client ID of the OIDC provider  # noqa: E501

        :param oidc_client_id: The oidc_client_id of this Configurations.  # noqa: E501
        :type: str
        """

        self._oidc_client_id = oidc_client_id

    @property
    def oidc_client_secret(self):
        """Gets the oidc_client_secret of this Configurations.  # noqa: E501

        The OIDC provider secret  # noqa: E501

        :return: The oidc_client_secret of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._oidc_client_secret

    @oidc_client_secret.setter
    def oidc_client_secret(self, oidc_client_secret):
        """Sets the oidc_client_secret of this Configurations.

        The OIDC provider secret  # noqa: E501

        :param oidc_client_secret: The oidc_client_secret of this Configurations.  # noqa: E501
        :type: str
        """

        self._oidc_client_secret = oidc_client_secret

    @property
    def oidc_groups_claim(self):
        """Gets the oidc_groups_claim of this Configurations.  # noqa: E501

        The attribute claims the group name  # noqa: E501

        :return: The oidc_groups_claim of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._oidc_groups_claim

    @oidc_groups_claim.setter
    def oidc_groups_claim(self, oidc_groups_claim):
        """Sets the oidc_groups_claim of this Configurations.

        The attribute claims the group name  # noqa: E501

        :param oidc_groups_claim: The oidc_groups_claim of this Configurations.  # noqa: E501
        :type: str
        """

        self._oidc_groups_claim = oidc_groups_claim

    @property
    def oidc_admin_group(self):
        """Gets the oidc_admin_group of this Configurations.  # noqa: E501

        The OIDC group which has the harbor admin privileges  # noqa: E501

        :return: The oidc_admin_group of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._oidc_admin_group

    @oidc_admin_group.setter
    def oidc_admin_group(self, oidc_admin_group):
        """Sets the oidc_admin_group of this Configurations.

        The OIDC group which has the harbor admin privileges  # noqa: E501

        :param oidc_admin_group: The oidc_admin_group of this Configurations.  # noqa: E501
        :type: str
        """

        self._oidc_admin_group = oidc_admin_group

    @property
    def oidc_group_filter(self):
        """Gets the oidc_group_filter of this Configurations.  # noqa: E501

        The OIDC group filter which filters out the group name doesn't match the regular expression  # noqa: E501

        :return: The oidc_group_filter of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._oidc_group_filter

    @oidc_group_filter.setter
    def oidc_group_filter(self, oidc_group_filter):
        """Sets the oidc_group_filter of this Configurations.

        The OIDC group filter which filters out the group name doesn't match the regular expression  # noqa: E501

        :param oidc_group_filter: The oidc_group_filter of this Configurations.  # noqa: E501
        :type: str
        """

        self._oidc_group_filter = oidc_group_filter

    @property
    def oidc_scope(self):
        """Gets the oidc_scope of this Configurations.  # noqa: E501

        The scope of the OIDC provider  # noqa: E501

        :return: The oidc_scope of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._oidc_scope

    @oidc_scope.setter
    def oidc_scope(self, oidc_scope):
        """Sets the oidc_scope of this Configurations.

        The scope of the OIDC provider  # noqa: E501

        :param oidc_scope: The oidc_scope of this Configurations.  # noqa: E501
        :type: str
        """

        self._oidc_scope = oidc_scope

    @property
    def oidc_user_claim(self):
        """Gets the oidc_user_claim of this Configurations.  # noqa: E501

        The attribute claims the username  # noqa: E501

        :return: The oidc_user_claim of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._oidc_user_claim

    @oidc_user_claim.setter
    def oidc_user_claim(self, oidc_user_claim):
        """Sets the oidc_user_claim of this Configurations.

        The attribute claims the username  # noqa: E501

        :param oidc_user_claim: The oidc_user_claim of this Configurations.  # noqa: E501
        :type: str
        """

        self._oidc_user_claim = oidc_user_claim

    @property
    def oidc_verify_cert(self):
        """Gets the oidc_verify_cert of this Configurations.  # noqa: E501

        Verify the OIDC provider's certificate'  # noqa: E501

        :return: The oidc_verify_cert of this Configurations.  # noqa: E501
        :rtype: bool
        """
        return self._oidc_verify_cert

    @oidc_verify_cert.setter
    def oidc_verify_cert(self, oidc_verify_cert):
        """Sets the oidc_verify_cert of this Configurations.

        Verify the OIDC provider's certificate'  # noqa: E501

        :param oidc_verify_cert: The oidc_verify_cert of this Configurations.  # noqa: E501
        :type: bool
        """

        self._oidc_verify_cert = oidc_verify_cert

    @property
    def oidc_auto_onboard(self):
        """Gets the oidc_auto_onboard of this Configurations.  # noqa: E501

        Auto onboard the OIDC user  # noqa: E501

        :return: The oidc_auto_onboard of this Configurations.  # noqa: E501
        :rtype: bool
        """
        return self._oidc_auto_onboard

    @oidc_auto_onboard.setter
    def oidc_auto_onboard(self, oidc_auto_onboard):
        """Sets the oidc_auto_onboard of this Configurations.

        Auto onboard the OIDC user  # noqa: E501

        :param oidc_auto_onboard: The oidc_auto_onboard of this Configurations.  # noqa: E501
        :type: bool
        """

        self._oidc_auto_onboard = oidc_auto_onboard

    @property
    def oidc_extra_redirect_parms(self):
        """Gets the oidc_extra_redirect_parms of this Configurations.  # noqa: E501

        Extra parameters to add when redirect request to OIDC provider  # noqa: E501

        :return: The oidc_extra_redirect_parms of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._oidc_extra_redirect_parms

    @oidc_extra_redirect_parms.setter
    def oidc_extra_redirect_parms(self, oidc_extra_redirect_parms):
        """Sets the oidc_extra_redirect_parms of this Configurations.

        Extra parameters to add when redirect request to OIDC provider  # noqa: E501

        :param oidc_extra_redirect_parms: The oidc_extra_redirect_parms of this Configurations.  # noqa: E501
        :type: str
        """

        self._oidc_extra_redirect_parms = oidc_extra_redirect_parms

    @property
    def robot_token_duration(self):
        """Gets the robot_token_duration of this Configurations.  # noqa: E501

        The robot account token duration in days  # noqa: E501

        :return: The robot_token_duration of this Configurations.  # noqa: E501
        :rtype: int
        """
        return self._robot_token_duration

    @robot_token_duration.setter
    def robot_token_duration(self, robot_token_duration):
        """Sets the robot_token_duration of this Configurations.

        The robot account token duration in days  # noqa: E501

        :param robot_token_duration: The robot_token_duration of this Configurations.  # noqa: E501
        :type: int
        """

        self._robot_token_duration = robot_token_duration

    @property
    def robot_name_prefix(self):
        """Gets the robot_name_prefix of this Configurations.  # noqa: E501

        The rebot account name prefix  # noqa: E501

        :return: The robot_name_prefix of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._robot_name_prefix

    @robot_name_prefix.setter
    def robot_name_prefix(self, robot_name_prefix):
        """Sets the robot_name_prefix of this Configurations.

        The rebot account name prefix  # noqa: E501

        :param robot_name_prefix: The robot_name_prefix of this Configurations.  # noqa: E501
        :type: str
        """

        self._robot_name_prefix = robot_name_prefix

    @property
    def notification_enable(self):
        """Gets the notification_enable of this Configurations.  # noqa: E501

        Enable notification  # noqa: E501

        :return: The notification_enable of this Configurations.  # noqa: E501
        :rtype: bool
        """
        return self._notification_enable

    @notification_enable.setter
    def notification_enable(self, notification_enable):
        """Sets the notification_enable of this Configurations.

        Enable notification  # noqa: E501

        :param notification_enable: The notification_enable of this Configurations.  # noqa: E501
        :type: bool
        """

        self._notification_enable = notification_enable

    @property
    def quota_per_project_enable(self):
        """Gets the quota_per_project_enable of this Configurations.  # noqa: E501

        Enable quota per project  # noqa: E501

        :return: The quota_per_project_enable of this Configurations.  # noqa: E501
        :rtype: bool
        """
        return self._quota_per_project_enable

    @quota_per_project_enable.setter
    def quota_per_project_enable(self, quota_per_project_enable):
        """Sets the quota_per_project_enable of this Configurations.

        Enable quota per project  # noqa: E501

        :param quota_per_project_enable: The quota_per_project_enable of this Configurations.  # noqa: E501
        :type: bool
        """

        self._quota_per_project_enable = quota_per_project_enable

    @property
    def storage_per_project(self):
        """Gets the storage_per_project of this Configurations.  # noqa: E501

        The storage quota per project  # noqa: E501

        :return: The storage_per_project of this Configurations.  # noqa: E501
        :rtype: int
        """
        return self._storage_per_project

    @storage_per_project.setter
    def storage_per_project(self, storage_per_project):
        """Sets the storage_per_project of this Configurations.

        The storage quota per project  # noqa: E501

        :param storage_per_project: The storage_per_project of this Configurations.  # noqa: E501
        :type: int
        """

        self._storage_per_project = storage_per_project

    @property
    def audit_log_forward_endpoint(self):
        """Gets the audit_log_forward_endpoint of this Configurations.  # noqa: E501

        The audit log forward endpoint  # noqa: E501

        :return: The audit_log_forward_endpoint of this Configurations.  # noqa: E501
        :rtype: str
        """
        return self._audit_log_forward_endpoint

    @audit_log_forward_endpoint.setter
    def audit_log_forward_endpoint(self, audit_log_forward_endpoint):
        """Sets the audit_log_forward_endpoint of this Configurations.

        The audit log forward endpoint  # noqa: E501

        :param audit_log_forward_endpoint: The audit_log_forward_endpoint of this Configurations.  # noqa: E501
        :type: str
        """

        self._audit_log_forward_endpoint = audit_log_forward_endpoint

    @property
    def skip_audit_log_database(self):
        """Gets the skip_audit_log_database of this Configurations.  # noqa: E501

        Skip audit log database  # noqa: E501

        :return: The skip_audit_log_database of this Configurations.  # noqa: E501
        :rtype: bool
        """
        return self._skip_audit_log_database

    @skip_audit_log_database.setter
    def skip_audit_log_database(self, skip_audit_log_database):
        """Sets the skip_audit_log_database of this Configurations.

        Skip audit log database  # noqa: E501

        :param skip_audit_log_database: The skip_audit_log_database of this Configurations.  # noqa: E501
        :type: bool
        """

        self._skip_audit_log_database = skip_audit_log_database

    @property
    def session_timeout(self):
        """Gets the session_timeout of this Configurations.  # noqa: E501

        The session timeout for harbor, in minutes.  # noqa: E501

        :return: The session_timeout of this Configurations.  # noqa: E501
        :rtype: int
        """
        return self._session_timeout

    @session_timeout.setter
    def session_timeout(self, session_timeout):
        """Sets the session_timeout of this Configurations.

        The session timeout for harbor, in minutes.  # noqa: E501

        :param session_timeout: The session_timeout of this Configurations.  # noqa: E501
        :type: int
        """

        self._session_timeout = session_timeout

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(Configurations, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, Configurations):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, Configurations):
            return True

        return self.to_dict() != other.to_dict()
