# coding: utf-8

"""
    Collibra Data Governance Center Core API

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

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

import pprint
import re  # noqa: F401

import six

class ChangeScopeRequest(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 = {
        'public_id': 'str',
        'name': 'str',
        'description': 'str',
        'domain_ids': 'list[str]',
        'community_ids': 'list[str]'
    }

    attribute_map = {
        'public_id': 'publicId',
        'name': 'name',
        'description': 'description',
        'domain_ids': 'domainIds',
        'community_ids': 'communityIds'
    }

    def __init__(self, public_id=None, name=None, description=None, domain_ids=None, community_ids=None):  # noqa: E501
        """ChangeScopeRequest - a model defined in Swagger"""  # noqa: E501
        self._public_id = None
        self._name = None
        self._description = None
        self._domain_ids = None
        self._community_ids = None
        self.discriminator = None
        if public_id is not None:
            self.public_id = public_id
        if name is not None:
            self.name = name
        if description is not None:
            self.description = description
        if domain_ids is not None:
            self.domain_ids = domain_ids
        if community_ids is not None:
            self.community_ids = community_ids

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

        The new public id for the Scope. It must be unique within all Asset Types, Complex Relation Types, Domain Types and Scopes. It should contain only ASCII letters and digits. It must start with an uppercase ASCII character. It must end with \"_C\". WARNING : The public id should only be changed with extreme caution, since it can break existing customizations. The only valid use case is to change it after creation of the type, if no public id was specified, and the generated proposal is not acceptable.  # noqa: E501

        :return: The public_id of this ChangeScopeRequest.  # noqa: E501
        :rtype: str
        """
        return self._public_id

    @public_id.setter
    def public_id(self, public_id):
        """Sets the public_id of this ChangeScopeRequest.

        The new public id for the Scope. It must be unique within all Asset Types, Complex Relation Types, Domain Types and Scopes. It should contain only ASCII letters and digits. It must start with an uppercase ASCII character. It must end with \"_C\". WARNING : The public id should only be changed with extreme caution, since it can break existing customizations. The only valid use case is to change it after creation of the type, if no public id was specified, and the generated proposal is not acceptable.  # noqa: E501

        :param public_id: The public_id of this ChangeScopeRequest.  # noqa: E501
        :type: str
        """

        self._public_id = public_id

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

        The new name for the scope  # noqa: E501

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

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

        The new name for the scope  # noqa: E501

        :param name: The name of this ChangeScopeRequest.  # noqa: E501
        :type: str
        """

        self._name = name

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

        The new description for the scope  # noqa: E501

        :return: The description of this ChangeScopeRequest.  # noqa: E501
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """Sets the description of this ChangeScopeRequest.

        The new description for the scope  # noqa: E501

        :param description: The description of this ChangeScopeRequest.  # noqa: E501
        :type: str
        """

        self._description = description

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

        The new list of IDs of domains that should included in the scope  # noqa: E501

        :return: The domain_ids of this ChangeScopeRequest.  # noqa: E501
        :rtype: list[str]
        """
        return self._domain_ids

    @domain_ids.setter
    def domain_ids(self, domain_ids):
        """Sets the domain_ids of this ChangeScopeRequest.

        The new list of IDs of domains that should included in the scope  # noqa: E501

        :param domain_ids: The domain_ids of this ChangeScopeRequest.  # noqa: E501
        :type: list[str]
        """

        self._domain_ids = domain_ids

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

        The new list of IDs of communities that should included in the scope  # noqa: E501

        :return: The community_ids of this ChangeScopeRequest.  # noqa: E501
        :rtype: list[str]
        """
        return self._community_ids

    @community_ids.setter
    def community_ids(self, community_ids):
        """Sets the community_ids of this ChangeScopeRequest.

        The new list of IDs of communities that should included in the scope  # noqa: E501

        :param community_ids: The community_ids of this ChangeScopeRequest.  # noqa: E501
        :type: list[str]
        """

        self._community_ids = community_ids

    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(ChangeScopeRequest, 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, ChangeScopeRequest):
            return False

        return self.__dict__ == other.__dict__

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