# coding: utf-8

"""
    Classified Leads API

    The <b>Leads API</b> lets sellers return leads generated by their classified ad listings and includes any contact information that prospective buyers have submitted. A seller can retrieve leads for listed items for a specified marketplace optionally filtered by specified search criteria. Use this resource to retrieve sales-lead information for classified ad listings. For additional information on classified adds, see <a href=\"https://www.ebay.com/help/selling/listings/listing-tips/selling-classified-ads?id=4167\" target=\"_blank\">Selling with Classified Ads</a>.<p>The <b>getClassifiedLeadsByItemId</b> method retrieves leads for a specific classified ad listing, while <b>getAllClassifiedLeads</b> method retrieves leads for all active classified ad listings.</p><p><span class=\"tablenote\"><b>Note:</b> This is a <a href=\"https://developer.ebay.com/api-docs/static/versioning.html#limited\" target=\"_blank\"> <img src=\"/cms/img/docs/partners-api.svg\" class=\"legend-icon partners-icon\" title=\"Limited Release\"  alt=\"Limited Release\" />(Limited Release)</a> API available only to select developers approved by business units. For information on how to obtain access to this API in production, please contact eBay support.</span></p>  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class ClassifiedLeadResponses(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 = {
        'additional_information': 'str',
        'contact_information': 'ContactInformation',
        'email': 'str',
        'external_email': 'str',
        'financing_answer': 'bool',
        'lead_fee': 'LeadFee',
        'lead_status': 'str',
        'member_message': 'MemberMessage',
        'submitted_time': 'str',
        'trade_in_make': 'str',
        'trade_in_model': 'str',
        'trade_in_year': 'str',
        'user_id': 'str'
    }

    attribute_map = {
        'additional_information': 'additionalInformation',
        'contact_information': 'contactInformation',
        'email': 'email',
        'external_email': 'externalEmail',
        'financing_answer': 'financingAnswer',
        'lead_fee': 'leadFee',
        'lead_status': 'leadStatus',
        'member_message': 'memberMessage',
        'submitted_time': 'submittedTime',
        'trade_in_make': 'tradeInMake',
        'trade_in_model': 'tradeInModel',
        'trade_in_year': 'tradeInYear',
        'user_id': 'userId'
    }

    def __init__(self, additional_information=None, contact_information=None, email=None, external_email=None, financing_answer=None, lead_fee=None, lead_status=None, member_message=None, submitted_time=None, trade_in_make=None, trade_in_model=None, trade_in_year=None, user_id=None):  # noqa: E501
        """ClassifiedLeadResponses - a model defined in Swagger"""  # noqa: E501
        self._additional_information = None
        self._contact_information = None
        self._email = None
        self._external_email = None
        self._financing_answer = None
        self._lead_fee = None
        self._lead_status = None
        self._member_message = None
        self._submitted_time = None
        self._trade_in_make = None
        self._trade_in_model = None
        self._trade_in_year = None
        self._user_id = None
        self.discriminator = None
        if additional_information is not None:
            self.additional_information = additional_information
        if contact_information is not None:
            self.contact_information = contact_information
        if email is not None:
            self.email = email
        if external_email is not None:
            self.external_email = external_email
        if financing_answer is not None:
            self.financing_answer = financing_answer
        if lead_fee is not None:
            self.lead_fee = lead_fee
        if lead_status is not None:
            self.lead_status = lead_status
        if member_message is not None:
            self.member_message = member_message
        if submitted_time is not None:
            self.submitted_time = submitted_time
        if trade_in_make is not None:
            self.trade_in_make = trade_in_make
        if trade_in_model is not None:
            self.trade_in_model = trade_in_model
        if trade_in_year is not None:
            self.trade_in_year = trade_in_year
        if user_id is not None:
            self.user_id = user_id

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

        This field shows the first message that was sent from the prospective buyer to the seller. This will be the same content as in the <b>memberMessageExchange.question.body</b> field, if returned. <br><br><span class=\"tablenote\"> <strong>Note:</strong> Retrieve the <b>memberMessageExchange</b> container to retrieve the entire exchange between the seller and the prospective buyer (all messages).</span>  # noqa: E501

        :return: The additional_information of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: str
        """
        return self._additional_information

    @additional_information.setter
    def additional_information(self, additional_information):
        """Sets the additional_information of this ClassifiedLeadResponses.

        This field shows the first message that was sent from the prospective buyer to the seller. This will be the same content as in the <b>memberMessageExchange.question.body</b> field, if returned. <br><br><span class=\"tablenote\"> <strong>Note:</strong> Retrieve the <b>memberMessageExchange</b> container to retrieve the entire exchange between the seller and the prospective buyer (all messages).</span>  # noqa: E501

        :param additional_information: The additional_information of this ClassifiedLeadResponses.  # noqa: E501
        :type: str
        """

        self._additional_information = additional_information

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


        :return: The contact_information of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: ContactInformation
        """
        return self._contact_information

    @contact_information.setter
    def contact_information(self, contact_information):
        """Sets the contact_information of this ClassifiedLeadResponses.


        :param contact_information: The contact_information of this ClassifiedLeadResponses.  # noqa: E501
        :type: ContactInformation
        """

        self._contact_information = contact_information

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

        Email address for the prospective buyer, if that buyer was logged in to eBay.  # noqa: E501

        :return: The email of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: str
        """
        return self._email

    @email.setter
    def email(self, email):
        """Sets the email of this ClassifiedLeadResponses.

        Email address for the prospective buyer, if that buyer was logged in to eBay.  # noqa: E501

        :param email: The email of this ClassifiedLeadResponses.  # noqa: E501
        :type: str
        """

        self._email = email

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

        Email address for the prospective buyer as entered in the lead form on the <b>View Item</b> page. Provides a way for sellers to contact prospective buyers who choose not to log in to eBay. This applies to only eBay Motors and eBay Motors categories.  # noqa: E501

        :return: The external_email of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: str
        """
        return self._external_email

    @external_email.setter
    def external_email(self, external_email):
        """Sets the external_email of this ClassifiedLeadResponses.

        Email address for the prospective buyer as entered in the lead form on the <b>View Item</b> page. Provides a way for sellers to contact prospective buyers who choose not to log in to eBay. This applies to only eBay Motors and eBay Motors categories.  # noqa: E501

        :param external_email: The external_email of this ClassifiedLeadResponses.  # noqa: E501
        :type: str
        """

        self._external_email = external_email

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

        Boolean that indicates if a prospective buyer answered whether or not they would like financing. Entered on the lead form on the <b>View Item</b> page. Applies to eBay Motors and Motors categories only.  # noqa: E501

        :return: The financing_answer of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: bool
        """
        return self._financing_answer

    @financing_answer.setter
    def financing_answer(self, financing_answer):
        """Sets the financing_answer of this ClassifiedLeadResponses.

        Boolean that indicates if a prospective buyer answered whether or not they would like financing. Entered on the lead form on the <b>View Item</b> page. Applies to eBay Motors and Motors categories only.  # noqa: E501

        :param financing_answer: The financing_answer of this ClassifiedLeadResponses.  # noqa: E501
        :type: bool
        """

        self._financing_answer = financing_answer

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


        :return: The lead_fee of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: LeadFee
        """
        return self._lead_fee

    @lead_fee.setter
    def lead_fee(self, lead_fee):
        """Sets the lead_fee of this ClassifiedLeadResponses.


        :param lead_fee: The lead_fee of this ClassifiedLeadResponses.  # noqa: E501
        :type: LeadFee
        """

        self._lead_fee = lead_fee

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

        The enumeration value in this field indicates whether or not the seller has responded to the lead, or if this is new. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/sell/leads/types/api:LeadStatus'>eBay API documentation</a>  # noqa: E501

        :return: The lead_status of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: str
        """
        return self._lead_status

    @lead_status.setter
    def lead_status(self, lead_status):
        """Sets the lead_status of this ClassifiedLeadResponses.

        The enumeration value in this field indicates whether or not the seller has responded to the lead, or if this is new. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/sell/leads/types/api:LeadStatus'>eBay API documentation</a>  # noqa: E501

        :param lead_status: The lead_status of this ClassifiedLeadResponses.  # noqa: E501
        :type: str
        """

        self._lead_status = lead_status

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


        :return: The member_message of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: MemberMessage
        """
        return self._member_message

    @member_message.setter
    def member_message(self, member_message):
        """Sets the member_message of this ClassifiedLeadResponses.


        :param member_message: The member_message of this ClassifiedLeadResponses.  # noqa: E501
        :type: MemberMessage
        """

        self._member_message = member_message

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

        Date and time (in GMT) that the lead was submitted.  # noqa: E501

        :return: The submitted_time of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: str
        """
        return self._submitted_time

    @submitted_time.setter
    def submitted_time(self, submitted_time):
        """Sets the submitted_time of this ClassifiedLeadResponses.

        Date and time (in GMT) that the lead was submitted.  # noqa: E501

        :param submitted_time: The submitted_time of this ClassifiedLeadResponses.  # noqa: E501
        :type: str
        """

        self._submitted_time = submitted_time

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

        The make of the vehicle the prospective buyer would like to trade in. Entered on the lead form on the <b>View Item</b> page. Applies to eBay Motors and Motors categories only.  # noqa: E501

        :return: The trade_in_make of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: str
        """
        return self._trade_in_make

    @trade_in_make.setter
    def trade_in_make(self, trade_in_make):
        """Sets the trade_in_make of this ClassifiedLeadResponses.

        The make of the vehicle the prospective buyer would like to trade in. Entered on the lead form on the <b>View Item</b> page. Applies to eBay Motors and Motors categories only.  # noqa: E501

        :param trade_in_make: The trade_in_make of this ClassifiedLeadResponses.  # noqa: E501
        :type: str
        """

        self._trade_in_make = trade_in_make

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

        The model of the vehicle the prospective buyer would like to trade in. Entered on the lead form on the <b>View Item</b> page. Applies to eBay Motors and Motors categories only.  # noqa: E501

        :return: The trade_in_model of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: str
        """
        return self._trade_in_model

    @trade_in_model.setter
    def trade_in_model(self, trade_in_model):
        """Sets the trade_in_model of this ClassifiedLeadResponses.

        The model of the vehicle the prospective buyer would like to trade in. Entered on the lead form on the <b>View Item</b> page. Applies to eBay Motors and Motors categories only.  # noqa: E501

        :param trade_in_model: The trade_in_model of this ClassifiedLeadResponses.  # noqa: E501
        :type: str
        """

        self._trade_in_model = trade_in_model

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

        The year of the vehicle the prospective buyer would like to trade in. Entered on the lead form on the <b>View Item</b> page. Applies to eBay Motors and Motors categories only.  # noqa: E501

        :return: The trade_in_year of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: str
        """
        return self._trade_in_year

    @trade_in_year.setter
    def trade_in_year(self, trade_in_year):
        """Sets the trade_in_year of this ClassifiedLeadResponses.

        The year of the vehicle the prospective buyer would like to trade in. Entered on the lead form on the <b>View Item</b> page. Applies to eBay Motors and Motors categories only.  # noqa: E501

        :param trade_in_year: The trade_in_year of this ClassifiedLeadResponses.  # noqa: E501
        :type: str
        """

        self._trade_in_year = trade_in_year

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

        The eBay user ID of the user who is interested in the seller's item.  # noqa: E501

        :return: The user_id of this ClassifiedLeadResponses.  # noqa: E501
        :rtype: str
        """
        return self._user_id

    @user_id.setter
    def user_id(self, user_id):
        """Sets the user_id of this ClassifiedLeadResponses.

        The eBay user ID of the user who is interested in the seller's item.  # noqa: E501

        :param user_id: The user_id of this ClassifiedLeadResponses.  # noqa: E501
        :type: str
        """

        self._user_id = user_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(ClassifiedLeadResponses, 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, ClassifiedLeadResponses):
            return False

        return self.__dict__ == other.__dict__

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