# coding: utf-8

"""
    Nexus Repository Manager REST API

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from nexus_api_python_client.configuration import Configuration


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

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'name': 'str',
        'protocol': 'str',
        'use_trust_store': 'bool',
        'host': 'str',
        'port': 'int',
        'search_base': 'str',
        'auth_scheme': 'str',
        'auth_realm': 'str',
        'auth_username': 'str',
        'connection_timeout_seconds': 'int',
        'connection_retry_delay_seconds': 'int',
        'max_incidents_count': 'int',
        'user_base_dn': 'str',
        'user_subtree': 'bool',
        'user_object_class': 'str',
        'user_ldap_filter': 'str',
        'user_id_attribute': 'str',
        'user_real_name_attribute': 'str',
        'user_email_address_attribute': 'str',
        'user_password_attribute': 'str',
        'ldap_groups_as_roles': 'bool',
        'group_type': 'str',
        'group_base_dn': 'str',
        'group_subtree': 'bool',
        'group_object_class': 'str',
        'group_id_attribute': 'str',
        'group_member_attribute': 'str',
        'group_member_format': 'str',
        'user_member_of_attribute': 'str',
        'auth_password': 'str'
    }

    attribute_map = {
        'name': 'name',
        'protocol': 'protocol',
        'use_trust_store': 'useTrustStore',
        'host': 'host',
        'port': 'port',
        'search_base': 'searchBase',
        'auth_scheme': 'authScheme',
        'auth_realm': 'authRealm',
        'auth_username': 'authUsername',
        'connection_timeout_seconds': 'connectionTimeoutSeconds',
        'connection_retry_delay_seconds': 'connectionRetryDelaySeconds',
        'max_incidents_count': 'maxIncidentsCount',
        'user_base_dn': 'userBaseDn',
        'user_subtree': 'userSubtree',
        'user_object_class': 'userObjectClass',
        'user_ldap_filter': 'userLdapFilter',
        'user_id_attribute': 'userIdAttribute',
        'user_real_name_attribute': 'userRealNameAttribute',
        'user_email_address_attribute': 'userEmailAddressAttribute',
        'user_password_attribute': 'userPasswordAttribute',
        'ldap_groups_as_roles': 'ldapGroupsAsRoles',
        'group_type': 'groupType',
        'group_base_dn': 'groupBaseDn',
        'group_subtree': 'groupSubtree',
        'group_object_class': 'groupObjectClass',
        'group_id_attribute': 'groupIdAttribute',
        'group_member_attribute': 'groupMemberAttribute',
        'group_member_format': 'groupMemberFormat',
        'user_member_of_attribute': 'userMemberOfAttribute',
        'auth_password': 'authPassword'
    }

    def __init__(self, name=None, protocol=None, use_trust_store=None, host=None, port=None, search_base=None, auth_scheme=None, auth_realm=None, auth_username=None, connection_timeout_seconds=None, connection_retry_delay_seconds=None, max_incidents_count=None, user_base_dn=None, user_subtree=None, user_object_class=None, user_ldap_filter=None, user_id_attribute=None, user_real_name_attribute=None, user_email_address_attribute=None, user_password_attribute=None, ldap_groups_as_roles=None, group_type=None, group_base_dn=None, group_subtree=None, group_object_class=None, group_id_attribute=None, group_member_attribute=None, group_member_format=None, user_member_of_attribute=None, auth_password=None, local_vars_configuration=None):  # noqa: E501
        """CreateLdapServerXo - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._name = None
        self._protocol = None
        self._use_trust_store = None
        self._host = None
        self._port = None
        self._search_base = None
        self._auth_scheme = None
        self._auth_realm = None
        self._auth_username = None
        self._connection_timeout_seconds = None
        self._connection_retry_delay_seconds = None
        self._max_incidents_count = None
        self._user_base_dn = None
        self._user_subtree = None
        self._user_object_class = None
        self._user_ldap_filter = None
        self._user_id_attribute = None
        self._user_real_name_attribute = None
        self._user_email_address_attribute = None
        self._user_password_attribute = None
        self._ldap_groups_as_roles = None
        self._group_type = None
        self._group_base_dn = None
        self._group_subtree = None
        self._group_object_class = None
        self._group_id_attribute = None
        self._group_member_attribute = None
        self._group_member_format = None
        self._user_member_of_attribute = None
        self._auth_password = None
        self.discriminator = None

        self.name = name
        self.protocol = protocol
        if use_trust_store is not None:
            self.use_trust_store = use_trust_store
        self.host = host
        self.port = port
        self.search_base = search_base
        self.auth_scheme = auth_scheme
        if auth_realm is not None:
            self.auth_realm = auth_realm
        if auth_username is not None:
            self.auth_username = auth_username
        self.connection_timeout_seconds = connection_timeout_seconds
        self.connection_retry_delay_seconds = connection_retry_delay_seconds
        self.max_incidents_count = max_incidents_count
        if user_base_dn is not None:
            self.user_base_dn = user_base_dn
        if user_subtree is not None:
            self.user_subtree = user_subtree
        if user_object_class is not None:
            self.user_object_class = user_object_class
        if user_ldap_filter is not None:
            self.user_ldap_filter = user_ldap_filter
        if user_id_attribute is not None:
            self.user_id_attribute = user_id_attribute
        if user_real_name_attribute is not None:
            self.user_real_name_attribute = user_real_name_attribute
        if user_email_address_attribute is not None:
            self.user_email_address_attribute = user_email_address_attribute
        if user_password_attribute is not None:
            self.user_password_attribute = user_password_attribute
        if ldap_groups_as_roles is not None:
            self.ldap_groups_as_roles = ldap_groups_as_roles
        self.group_type = group_type
        if group_base_dn is not None:
            self.group_base_dn = group_base_dn
        if group_subtree is not None:
            self.group_subtree = group_subtree
        if group_object_class is not None:
            self.group_object_class = group_object_class
        if group_id_attribute is not None:
            self.group_id_attribute = group_id_attribute
        if group_member_attribute is not None:
            self.group_member_attribute = group_member_attribute
        if group_member_format is not None:
            self.group_member_format = group_member_format
        if user_member_of_attribute is not None:
            self.user_member_of_attribute = user_member_of_attribute
        self.auth_password = auth_password

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

        LDAP server name  # noqa: E501

        :return: The name of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this CreateLdapServerXo.

        LDAP server name  # noqa: E501

        :param name: The name of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if self.local_vars_configuration.client_side_validation and name is None:  # noqa: E501
            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501

        self._name = name

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

        LDAP server connection Protocol to use  # noqa: E501

        :return: The protocol of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._protocol

    @protocol.setter
    def protocol(self, protocol):
        """Sets the protocol of this CreateLdapServerXo.

        LDAP server connection Protocol to use  # noqa: E501

        :param protocol: The protocol of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if self.local_vars_configuration.client_side_validation and protocol is None:  # noqa: E501
            raise ValueError("Invalid value for `protocol`, must not be `None`")  # noqa: E501
        allowed_values = ["ldap", "ldaps"]  # noqa: E501
        if self.local_vars_configuration.client_side_validation and protocol not in allowed_values:  # noqa: E501
            raise ValueError(
                "Invalid value for `protocol` ({0}), must be one of {1}"  # noqa: E501
                .format(protocol, allowed_values)
            )

        self._protocol = protocol

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

        Whether to use certificates stored in NXRM's truststore  # noqa: E501

        :return: The use_trust_store of this CreateLdapServerXo.  # noqa: E501
        :rtype: bool
        """
        return self._use_trust_store

    @use_trust_store.setter
    def use_trust_store(self, use_trust_store):
        """Sets the use_trust_store of this CreateLdapServerXo.

        Whether to use certificates stored in NXRM's truststore  # noqa: E501

        :param use_trust_store: The use_trust_store of this CreateLdapServerXo.  # noqa: E501
        :type: bool
        """

        self._use_trust_store = use_trust_store

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

        LDAP server connection hostname  # noqa: E501

        :return: The host of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._host

    @host.setter
    def host(self, host):
        """Sets the host of this CreateLdapServerXo.

        LDAP server connection hostname  # noqa: E501

        :param host: The host of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if self.local_vars_configuration.client_side_validation and host is None:  # noqa: E501
            raise ValueError("Invalid value for `host`, must not be `None`")  # noqa: E501

        self._host = host

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

        LDAP server connection port to use  # noqa: E501

        :return: The port of this CreateLdapServerXo.  # noqa: E501
        :rtype: int
        """
        return self._port

    @port.setter
    def port(self, port):
        """Sets the port of this CreateLdapServerXo.

        LDAP server connection port to use  # noqa: E501

        :param port: The port of this CreateLdapServerXo.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and port is None:  # noqa: E501
            raise ValueError("Invalid value for `port`, must not be `None`")  # noqa: E501

        self._port = port

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

        LDAP location to be added to the connection URL  # noqa: E501

        :return: The search_base of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._search_base

    @search_base.setter
    def search_base(self, search_base):
        """Sets the search_base of this CreateLdapServerXo.

        LDAP location to be added to the connection URL  # noqa: E501

        :param search_base: The search_base of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if self.local_vars_configuration.client_side_validation and search_base is None:  # noqa: E501
            raise ValueError("Invalid value for `search_base`, must not be `None`")  # noqa: E501

        self._search_base = search_base

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

        Authentication scheme used for connecting to LDAP server  # noqa: E501

        :return: The auth_scheme of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._auth_scheme

    @auth_scheme.setter
    def auth_scheme(self, auth_scheme):
        """Sets the auth_scheme of this CreateLdapServerXo.

        Authentication scheme used for connecting to LDAP server  # noqa: E501

        :param auth_scheme: The auth_scheme of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if self.local_vars_configuration.client_side_validation and auth_scheme is None:  # noqa: E501
            raise ValueError("Invalid value for `auth_scheme`, must not be `None`")  # noqa: E501
        allowed_values = ["NONE", "SIMPLE", "DIGEST_MD5", "CRAM_MD5"]  # noqa: E501
        if self.local_vars_configuration.client_side_validation and auth_scheme not in allowed_values:  # noqa: E501
            raise ValueError(
                "Invalid value for `auth_scheme` ({0}), must be one of {1}"  # noqa: E501
                .format(auth_scheme, allowed_values)
            )

        self._auth_scheme = auth_scheme

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

        The SASL realm to bind to. Required if authScheme is CRAM_MD5 or DIGEST_MD5  # noqa: E501

        :return: The auth_realm of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._auth_realm

    @auth_realm.setter
    def auth_realm(self, auth_realm):
        """Sets the auth_realm of this CreateLdapServerXo.

        The SASL realm to bind to. Required if authScheme is CRAM_MD5 or DIGEST_MD5  # noqa: E501

        :param auth_realm: The auth_realm of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """

        self._auth_realm = auth_realm

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

        This must be a fully qualified username if simple authentication is used. Required if authScheme other than none.  # noqa: E501

        :return: The auth_username of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._auth_username

    @auth_username.setter
    def auth_username(self, auth_username):
        """Sets the auth_username of this CreateLdapServerXo.

        This must be a fully qualified username if simple authentication is used. Required if authScheme other than none.  # noqa: E501

        :param auth_username: The auth_username of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """

        self._auth_username = auth_username

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

        How long to wait before timeout  # noqa: E501

        :return: The connection_timeout_seconds of this CreateLdapServerXo.  # noqa: E501
        :rtype: int
        """
        return self._connection_timeout_seconds

    @connection_timeout_seconds.setter
    def connection_timeout_seconds(self, connection_timeout_seconds):
        """Sets the connection_timeout_seconds of this CreateLdapServerXo.

        How long to wait before timeout  # noqa: E501

        :param connection_timeout_seconds: The connection_timeout_seconds of this CreateLdapServerXo.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and connection_timeout_seconds is None:  # noqa: E501
            raise ValueError("Invalid value for `connection_timeout_seconds`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                connection_timeout_seconds is not None and connection_timeout_seconds > 3600):  # noqa: E501
            raise ValueError("Invalid value for `connection_timeout_seconds`, must be a value less than or equal to `3600`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                connection_timeout_seconds is not None and connection_timeout_seconds < 1):  # noqa: E501
            raise ValueError("Invalid value for `connection_timeout_seconds`, must be a value greater than or equal to `1`")  # noqa: E501

        self._connection_timeout_seconds = connection_timeout_seconds

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

        How long to wait before retrying  # noqa: E501

        :return: The connection_retry_delay_seconds of this CreateLdapServerXo.  # noqa: E501
        :rtype: int
        """
        return self._connection_retry_delay_seconds

    @connection_retry_delay_seconds.setter
    def connection_retry_delay_seconds(self, connection_retry_delay_seconds):
        """Sets the connection_retry_delay_seconds of this CreateLdapServerXo.

        How long to wait before retrying  # noqa: E501

        :param connection_retry_delay_seconds: The connection_retry_delay_seconds of this CreateLdapServerXo.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and connection_retry_delay_seconds is None:  # noqa: E501
            raise ValueError("Invalid value for `connection_retry_delay_seconds`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                connection_retry_delay_seconds is not None and connection_retry_delay_seconds < 0):  # noqa: E501
            raise ValueError("Invalid value for `connection_retry_delay_seconds`, must be a value greater than or equal to `0`")  # noqa: E501

        self._connection_retry_delay_seconds = connection_retry_delay_seconds

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

        How many retry attempts  # noqa: E501

        :return: The max_incidents_count of this CreateLdapServerXo.  # noqa: E501
        :rtype: int
        """
        return self._max_incidents_count

    @max_incidents_count.setter
    def max_incidents_count(self, max_incidents_count):
        """Sets the max_incidents_count of this CreateLdapServerXo.

        How many retry attempts  # noqa: E501

        :param max_incidents_count: The max_incidents_count of this CreateLdapServerXo.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and max_incidents_count is None:  # noqa: E501
            raise ValueError("Invalid value for `max_incidents_count`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                max_incidents_count is not None and max_incidents_count < 0):  # noqa: E501
            raise ValueError("Invalid value for `max_incidents_count`, must be a value greater than or equal to `0`")  # noqa: E501

        self._max_incidents_count = max_incidents_count

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

        The relative DN where user objects are found (e.g. ou=people). This value will have the Search base DN value appended to form the full User search base DN.  # noqa: E501

        :return: The user_base_dn of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._user_base_dn

    @user_base_dn.setter
    def user_base_dn(self, user_base_dn):
        """Sets the user_base_dn of this CreateLdapServerXo.

        The relative DN where user objects are found (e.g. ou=people). This value will have the Search base DN value appended to form the full User search base DN.  # noqa: E501

        :param user_base_dn: The user_base_dn of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """

        self._user_base_dn = user_base_dn

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

        Are users located in structures below the user base DN?  # noqa: E501

        :return: The user_subtree of this CreateLdapServerXo.  # noqa: E501
        :rtype: bool
        """
        return self._user_subtree

    @user_subtree.setter
    def user_subtree(self, user_subtree):
        """Sets the user_subtree of this CreateLdapServerXo.

        Are users located in structures below the user base DN?  # noqa: E501

        :param user_subtree: The user_subtree of this CreateLdapServerXo.  # noqa: E501
        :type: bool
        """

        self._user_subtree = user_subtree

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

        LDAP class for user objects  # noqa: E501

        :return: The user_object_class of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._user_object_class

    @user_object_class.setter
    def user_object_class(self, user_object_class):
        """Sets the user_object_class of this CreateLdapServerXo.

        LDAP class for user objects  # noqa: E501

        :param user_object_class: The user_object_class of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """

        self._user_object_class = user_object_class

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

        LDAP search filter to limit user search  # noqa: E501

        :return: The user_ldap_filter of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._user_ldap_filter

    @user_ldap_filter.setter
    def user_ldap_filter(self, user_ldap_filter):
        """Sets the user_ldap_filter of this CreateLdapServerXo.

        LDAP search filter to limit user search  # noqa: E501

        :param user_ldap_filter: The user_ldap_filter of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """

        self._user_ldap_filter = user_ldap_filter

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

        This is used to find a user given its user ID  # noqa: E501

        :return: The user_id_attribute of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._user_id_attribute

    @user_id_attribute.setter
    def user_id_attribute(self, user_id_attribute):
        """Sets the user_id_attribute of this CreateLdapServerXo.

        This is used to find a user given its user ID  # noqa: E501

        :param user_id_attribute: The user_id_attribute of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """

        self._user_id_attribute = user_id_attribute

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

        This is used to find a real name given the user ID  # noqa: E501

        :return: The user_real_name_attribute of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._user_real_name_attribute

    @user_real_name_attribute.setter
    def user_real_name_attribute(self, user_real_name_attribute):
        """Sets the user_real_name_attribute of this CreateLdapServerXo.

        This is used to find a real name given the user ID  # noqa: E501

        :param user_real_name_attribute: The user_real_name_attribute of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """

        self._user_real_name_attribute = user_real_name_attribute

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

        This is used to find an email address given the user ID  # noqa: E501

        :return: The user_email_address_attribute of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._user_email_address_attribute

    @user_email_address_attribute.setter
    def user_email_address_attribute(self, user_email_address_attribute):
        """Sets the user_email_address_attribute of this CreateLdapServerXo.

        This is used to find an email address given the user ID  # noqa: E501

        :param user_email_address_attribute: The user_email_address_attribute of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """

        self._user_email_address_attribute = user_email_address_attribute

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

        If this field is blank the user will be authenticated against a bind with the LDAP server  # noqa: E501

        :return: The user_password_attribute of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._user_password_attribute

    @user_password_attribute.setter
    def user_password_attribute(self, user_password_attribute):
        """Sets the user_password_attribute of this CreateLdapServerXo.

        If this field is blank the user will be authenticated against a bind with the LDAP server  # noqa: E501

        :param user_password_attribute: The user_password_attribute of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """

        self._user_password_attribute = user_password_attribute

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

        Denotes whether LDAP assigned roles are used as NXRM roles  # noqa: E501

        :return: The ldap_groups_as_roles of this CreateLdapServerXo.  # noqa: E501
        :rtype: bool
        """
        return self._ldap_groups_as_roles

    @ldap_groups_as_roles.setter
    def ldap_groups_as_roles(self, ldap_groups_as_roles):
        """Sets the ldap_groups_as_roles of this CreateLdapServerXo.

        Denotes whether LDAP assigned roles are used as NXRM roles  # noqa: E501

        :param ldap_groups_as_roles: The ldap_groups_as_roles of this CreateLdapServerXo.  # noqa: E501
        :type: bool
        """

        self._ldap_groups_as_roles = ldap_groups_as_roles

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

        Defines a type of groups used: static (a group contains a list of users) or dynamic (a user contains a list of groups). Required if ldapGroupsAsRoles is true.  # noqa: E501

        :return: The group_type of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._group_type

    @group_type.setter
    def group_type(self, group_type):
        """Sets the group_type of this CreateLdapServerXo.

        Defines a type of groups used: static (a group contains a list of users) or dynamic (a user contains a list of groups). Required if ldapGroupsAsRoles is true.  # noqa: E501

        :param group_type: The group_type of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if self.local_vars_configuration.client_side_validation and group_type is None:  # noqa: E501
            raise ValueError("Invalid value for `group_type`, must not be `None`")  # noqa: E501
        allowed_values = ["static", "dynamic"]  # noqa: E501
        if self.local_vars_configuration.client_side_validation and group_type not in allowed_values:  # noqa: E501
            raise ValueError(
                "Invalid value for `group_type` ({0}), must be one of {1}"  # noqa: E501
                .format(group_type, allowed_values)
            )

        self._group_type = group_type

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

        The relative DN where group objects are found (e.g. ou=Group). This value will have the Search base DN value appended to form the full Group search base DN.  # noqa: E501

        :return: The group_base_dn of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._group_base_dn

    @group_base_dn.setter
    def group_base_dn(self, group_base_dn):
        """Sets the group_base_dn of this CreateLdapServerXo.

        The relative DN where group objects are found (e.g. ou=Group). This value will have the Search base DN value appended to form the full Group search base DN.  # noqa: E501

        :param group_base_dn: The group_base_dn of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """

        self._group_base_dn = group_base_dn

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

        Are groups located in structures below the group base DN  # noqa: E501

        :return: The group_subtree of this CreateLdapServerXo.  # noqa: E501
        :rtype: bool
        """
        return self._group_subtree

    @group_subtree.setter
    def group_subtree(self, group_subtree):
        """Sets the group_subtree of this CreateLdapServerXo.

        Are groups located in structures below the group base DN  # noqa: E501

        :param group_subtree: The group_subtree of this CreateLdapServerXo.  # noqa: E501
        :type: bool
        """

        self._group_subtree = group_subtree

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

        LDAP class for group objects. Required if groupType is static  # noqa: E501

        :return: The group_object_class of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._group_object_class

    @group_object_class.setter
    def group_object_class(self, group_object_class):
        """Sets the group_object_class of this CreateLdapServerXo.

        LDAP class for group objects. Required if groupType is static  # noqa: E501

        :param group_object_class: The group_object_class of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if (self.local_vars_configuration.client_side_validation and
                group_object_class is not None and len(group_object_class) > 0):
            raise ValueError("Invalid value for `group_object_class`, length must be less than or equal to `0`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                group_object_class is not None and len(group_object_class) < 0):
            raise ValueError("Invalid value for `group_object_class`, length must be greater than or equal to `0`")  # noqa: E501

        self._group_object_class = group_object_class

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

        This field specifies the attribute of the Object class that defines the Group ID. Required if groupType is static  # noqa: E501

        :return: The group_id_attribute of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._group_id_attribute

    @group_id_attribute.setter
    def group_id_attribute(self, group_id_attribute):
        """Sets the group_id_attribute of this CreateLdapServerXo.

        This field specifies the attribute of the Object class that defines the Group ID. Required if groupType is static  # noqa: E501

        :param group_id_attribute: The group_id_attribute of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if (self.local_vars_configuration.client_side_validation and
                group_id_attribute is not None and len(group_id_attribute) > 0):
            raise ValueError("Invalid value for `group_id_attribute`, length must be less than or equal to `0`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                group_id_attribute is not None and len(group_id_attribute) < 0):
            raise ValueError("Invalid value for `group_id_attribute`, length must be greater than or equal to `0`")  # noqa: E501

        self._group_id_attribute = group_id_attribute

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

        LDAP attribute containing the usernames for the group. Required if groupType is static  # noqa: E501

        :return: The group_member_attribute of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._group_member_attribute

    @group_member_attribute.setter
    def group_member_attribute(self, group_member_attribute):
        """Sets the group_member_attribute of this CreateLdapServerXo.

        LDAP attribute containing the usernames for the group. Required if groupType is static  # noqa: E501

        :param group_member_attribute: The group_member_attribute of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if (self.local_vars_configuration.client_side_validation and
                group_member_attribute is not None and len(group_member_attribute) > 0):
            raise ValueError("Invalid value for `group_member_attribute`, length must be less than or equal to `0`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                group_member_attribute is not None and len(group_member_attribute) < 0):
            raise ValueError("Invalid value for `group_member_attribute`, length must be greater than or equal to `0`")  # noqa: E501

        self._group_member_attribute = group_member_attribute

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

        The format of user ID stored in the group member attribute. Required if groupType is static  # noqa: E501

        :return: The group_member_format of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._group_member_format

    @group_member_format.setter
    def group_member_format(self, group_member_format):
        """Sets the group_member_format of this CreateLdapServerXo.

        The format of user ID stored in the group member attribute. Required if groupType is static  # noqa: E501

        :param group_member_format: The group_member_format of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if (self.local_vars_configuration.client_side_validation and
                group_member_format is not None and len(group_member_format) > 0):
            raise ValueError("Invalid value for `group_member_format`, length must be less than or equal to `0`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                group_member_format is not None and len(group_member_format) < 0):
            raise ValueError("Invalid value for `group_member_format`, length must be greater than or equal to `0`")  # noqa: E501

        self._group_member_format = group_member_format

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

        Set this to the attribute used to store the attribute which holds groups DN in the user object. Required if groupType is dynamic  # noqa: E501

        :return: The user_member_of_attribute of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._user_member_of_attribute

    @user_member_of_attribute.setter
    def user_member_of_attribute(self, user_member_of_attribute):
        """Sets the user_member_of_attribute of this CreateLdapServerXo.

        Set this to the attribute used to store the attribute which holds groups DN in the user object. Required if groupType is dynamic  # noqa: E501

        :param user_member_of_attribute: The user_member_of_attribute of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if (self.local_vars_configuration.client_side_validation and
                user_member_of_attribute is not None and len(user_member_of_attribute) > 0):
            raise ValueError("Invalid value for `user_member_of_attribute`, length must be less than or equal to `0`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                user_member_of_attribute is not None and len(user_member_of_attribute) < 0):
            raise ValueError("Invalid value for `user_member_of_attribute`, length must be greater than or equal to `0`")  # noqa: E501

        self._user_member_of_attribute = user_member_of_attribute

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

        The password to bind with. Required if authScheme other than none.  # noqa: E501

        :return: The auth_password of this CreateLdapServerXo.  # noqa: E501
        :rtype: str
        """
        return self._auth_password

    @auth_password.setter
    def auth_password(self, auth_password):
        """Sets the auth_password of this CreateLdapServerXo.

        The password to bind with. Required if authScheme other than none.  # noqa: E501

        :param auth_password: The auth_password of this CreateLdapServerXo.  # noqa: E501
        :type: str
        """
        if self.local_vars_configuration.client_side_validation and auth_password is None:  # noqa: E501
            raise ValueError("Invalid value for `auth_password`, must not be `None`")  # noqa: E501

        self._auth_password = auth_password

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

        for attr, _ in six.iteritems(self.openapi_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

        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, CreateLdapServerXo):
            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, CreateLdapServerXo):
            return True

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