# coding: utf-8

"""
    Vero Public API's

    The VeRO API has methods that allow owners of an intellectual property to report eBay listings that infringe on their intellectual property rights. It contains methods to report a listing, retrieve supported VeRO reason codes, and retrieve the status of submitted and items.  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class ReportItemDetails(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 = {
        'brand': 'str',
        'copy_email_to_rights_owner': 'bool',
        'countries': 'list[str]',
        'detailed_message': 'str',
        'item_id': 'str',
        'message_to_seller': 'str',
        'patent': 'str',
        'regions': 'list[str]',
        'vero_reason_code_id': 'str'
    }

    attribute_map = {
        'brand': 'brand',
        'copy_email_to_rights_owner': 'copyEmailToRightsOwner',
        'countries': 'countries',
        'detailed_message': 'detailedMessage',
        'item_id': 'itemId',
        'message_to_seller': 'messageToSeller',
        'patent': 'patent',
        'regions': 'regions',
        'vero_reason_code_id': 'veroReasonCodeId'
    }

    def __init__(self, brand=None, copy_email_to_rights_owner=None, countries=None, detailed_message=None, item_id=None, message_to_seller=None, patent=None, regions=None, vero_reason_code_id=None):  # noqa: E501
        """ReportItemDetails - a model defined in Swagger"""  # noqa: E501
        self._brand = None
        self._copy_email_to_rights_owner = None
        self._countries = None
        self._detailed_message = None
        self._item_id = None
        self._message_to_seller = None
        self._patent = None
        self._regions = None
        self._vero_reason_code_id = None
        self.discriminator = None
        if brand is not None:
            self.brand = brand
        if copy_email_to_rights_owner is not None:
            self.copy_email_to_rights_owner = copy_email_to_rights_owner
        if countries is not None:
            self.countries = countries
        if detailed_message is not None:
            self.detailed_message = detailed_message
        if item_id is not None:
            self.item_id = item_id
        if message_to_seller is not None:
            self.message_to_seller = message_to_seller
        if patent is not None:
            self.patent = patent
        if regions is not None:
            self.regions = regions
        if vero_reason_code_id is not None:
            self.vero_reason_code_id = vero_reason_code_id

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

        The brand name of the item being reported for VeRO violation.<br><br><b>Max length:</b> 50 characters  # noqa: E501

        :return: The brand of this ReportItemDetails.  # noqa: E501
        :rtype: str
        """
        return self._brand

    @brand.setter
    def brand(self, brand):
        """Sets the brand of this ReportItemDetails.

        The brand name of the item being reported for VeRO violation.<br><br><b>Max length:</b> 50 characters  # noqa: E501

        :param brand: The brand of this ReportItemDetails.  # noqa: E501
        :type: str
        """

        self._brand = brand

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

        If the VeRO Program member wants a copy of the Notice of Claimed Infringement (NOCI) document sent to their email address, this field should be included in the request and set to <code>true</code>. This same document is automatically sent to the seller of the reported item.<br><br>As this field defaults to <code>true</b>, the report will be automatically emailed if this field is omitted.<br><br><b>Default:</b> true  # noqa: E501

        :return: The copy_email_to_rights_owner of this ReportItemDetails.  # noqa: E501
        :rtype: bool
        """
        return self._copy_email_to_rights_owner

    @copy_email_to_rights_owner.setter
    def copy_email_to_rights_owner(self, copy_email_to_rights_owner):
        """Sets the copy_email_to_rights_owner of this ReportItemDetails.

        If the VeRO Program member wants a copy of the Notice of Claimed Infringement (NOCI) document sent to their email address, this field should be included in the request and set to <code>true</code>. This same document is automatically sent to the seller of the reported item.<br><br>As this field defaults to <code>true</b>, the report will be automatically emailed if this field is omitted.<br><br><b>Default:</b> true  # noqa: E501

        :param copy_email_to_rights_owner: The copy_email_to_rights_owner of this ReportItemDetails.  # noqa: E501
        :type: bool
        """

        self._copy_email_to_rights_owner = copy_email_to_rights_owner

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

        If the infringement type stated in the <b>VeroReasonCodeId</b> has anything to do with which country the item is being shipped to, each country that would trigger this infringement type should be specified in this comma-delimited array.<br><br>This field is required when the <b>veroReasonCodeId</b> is <code>9037</code> (Item(s) is unlawful importation of product bearing trademark).  # noqa: E501

        :return: The countries of this ReportItemDetails.  # noqa: E501
        :rtype: list[str]
        """
        return self._countries

    @countries.setter
    def countries(self, countries):
        """Sets the countries of this ReportItemDetails.

        If the infringement type stated in the <b>VeroReasonCodeId</b> has anything to do with which country the item is being shipped to, each country that would trigger this infringement type should be specified in this comma-delimited array.<br><br>This field is required when the <b>veroReasonCodeId</b> is <code>9037</code> (Item(s) is unlawful importation of product bearing trademark).  # noqa: E501

        :param countries: The countries of this ReportItemDetails.  # noqa: E501
        :type: list[str]
        """

        self._countries = countries

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

        This field is used to provide further information about the VeRO reason code.<br><br>This field is required when the <b>veroReasonCodeId</b> is <code>9052</code> or <code>7052</code> (Other - Provide details information in additional information box below).<br><br><b>Max length:</b> 1000 characters  # noqa: E501

        :return: The detailed_message of this ReportItemDetails.  # noqa: E501
        :rtype: str
        """
        return self._detailed_message

    @detailed_message.setter
    def detailed_message(self, detailed_message):
        """Sets the detailed_message of this ReportItemDetails.

        This field is used to provide further information about the VeRO reason code.<br><br>This field is required when the <b>veroReasonCodeId</b> is <code>9052</code> or <code>7052</code> (Other - Provide details information in additional information box below).<br><br><b>Max length:</b> 1000 characters  # noqa: E501

        :param detailed_message: The detailed_message of this ReportItemDetails.  # noqa: E501
        :type: str
        """

        self._detailed_message = detailed_message

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

        The unique identifier of the listing being reported for the alleged infringement.  # noqa: E501

        :return: The item_id of this ReportItemDetails.  # noqa: E501
        :rtype: str
        """
        return self._item_id

    @item_id.setter
    def item_id(self, item_id):
        """Sets the item_id of this ReportItemDetails.

        The unique identifier of the listing being reported for the alleged infringement.  # noqa: E501

        :param item_id: The item_id of this ReportItemDetails.  # noqa: E501
        :type: str
        """

        self._item_id = item_id

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

        This field is used by the VeRO Program member to provide more details to the seller as to why the item is being reported for the alleged infringement.<br><br><b>Max length:</b> 1000 characters  # noqa: E501

        :return: The message_to_seller of this ReportItemDetails.  # noqa: E501
        :rtype: str
        """
        return self._message_to_seller

    @message_to_seller.setter
    def message_to_seller(self, message_to_seller):
        """Sets the message_to_seller of this ReportItemDetails.

        This field is used by the VeRO Program member to provide more details to the seller as to why the item is being reported for the alleged infringement.<br><br><b>Max length:</b> 1000 characters  # noqa: E501

        :param message_to_seller: The message_to_seller of this ReportItemDetails.  # noqa: E501
        :type: str
        """

        self._message_to_seller = message_to_seller

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

        This field is used to specify the number of a product patent that is being violated.<br><br>This field is required when the <b>veroReasonCodeId</b> is <code>9048</code> (Item(s) infringes a valid patent).<br><br><b>Max length:</b> 15 characters  # noqa: E501

        :return: The patent of this ReportItemDetails.  # noqa: E501
        :rtype: str
        """
        return self._patent

    @patent.setter
    def patent(self, patent):
        """Sets the patent of this ReportItemDetails.

        This field is used to specify the number of a product patent that is being violated.<br><br>This field is required when the <b>veroReasonCodeId</b> is <code>9048</code> (Item(s) infringes a valid patent).<br><br><b>Max length:</b> 15 characters  # noqa: E501

        :param patent: The patent of this ReportItemDetails.  # noqa: E501
        :type: str
        """

        self._patent = patent

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

        If the infringement type stated in the <b>veroReasonCodeId</b> has anything to do with which geographical region the item is being shipped to, each region that would trigger this infringement type should be specified in this comma-delimited array.  # noqa: E501

        :return: The regions of this ReportItemDetails.  # noqa: E501
        :rtype: list[str]
        """
        return self._regions

    @regions.setter
    def regions(self, regions):
        """Sets the regions of this ReportItemDetails.

        If the infringement type stated in the <b>veroReasonCodeId</b> has anything to do with which geographical region the item is being shipped to, each region that would trigger this infringement type should be specified in this comma-delimited array.  # noqa: E501

        :param regions: The regions of this ReportItemDetails.  # noqa: E501
        :type: list[str]
        """

        self._regions = regions

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

        The unique identifier for the type of claimed infringement.<br><br>Use <a href=\"/api-docs/commerce/vero/resources/vero_reason_code/methods/getVeroReasonCodes\" target=\"_blank \">getVeroReasonCodes</a> to retrieve a list of valid reason codes for a given eBay site.  # noqa: E501

        :return: The vero_reason_code_id of this ReportItemDetails.  # noqa: E501
        :rtype: str
        """
        return self._vero_reason_code_id

    @vero_reason_code_id.setter
    def vero_reason_code_id(self, vero_reason_code_id):
        """Sets the vero_reason_code_id of this ReportItemDetails.

        The unique identifier for the type of claimed infringement.<br><br>Use <a href=\"/api-docs/commerce/vero/resources/vero_reason_code/methods/getVeroReasonCodes\" target=\"_blank \">getVeroReasonCodes</a> to retrieve a list of valid reason codes for a given eBay site.  # noqa: E501

        :param vero_reason_code_id: The vero_reason_code_id of this ReportItemDetails.  # noqa: E501
        :type: str
        """

        self._vero_reason_code_id = vero_reason_code_id

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

        return self.__dict__ == other.__dict__

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